liuyuqi-dellpc 6 years ago
commit
cbb98b83bf
96 changed files with 34288 additions and 0 deletions
  1. 50 0
      404.php
  2. 63 0
      archive.php
  3. 0 0
      assets/css/index.html
  4. 447 0
      assets/css/normalize.css
  5. 113 0
      assets/css/pen-author.css
  6. 218 0
      assets/css/pen-backend.css
  7. 513 0
      assets/css/pen-base.css
  8. 106 0
      assets/css/pen-bottom.css
  9. 83 0
      assets/css/pen-buttons.css
  10. 242 0
      assets/css/pen-comments.css
  11. 768 0
      assets/css/pen-content.css
  12. 27 0
      assets/css/pen-editor.css
  13. 8 0
      assets/css/pen-fonts.css
  14. 299 0
      assets/css/pen-footer.css
  15. 103 0
      assets/css/pen-forms.css
  16. 340 0
      assets/css/pen-general.css
  17. 512 0
      assets/css/pen-header.css
  18. 281 0
      assets/css/pen-layout.css
  19. 254 0
      assets/css/pen-menus.css
  20. 871 0
      assets/css/pen-navigation.css
  21. 128 0
      assets/css/pen-pagination.css
  22. 124 0
      assets/css/pen-search-bar.css
  23. 151 0
      assets/css/pen-share.css
  24. 313 0
      assets/css/pen-thumbnails.css
  25. 50 0
      assets/css/pen-top.css
  26. 218 0
      assets/css/pen-typography.css
  27. 560 0
      assets/css/pen-widgets.css
  28. 3623 0
      assets/css/plugins/animate.css
  29. 0 0
      assets/css/plugins/index.html
  30. 67 0
      assets/css/plugins/jquery.scrollbar.css
  31. 165 0
      assets/css/plugins/jquery.slicknav.css
  32. BIN
      assets/fonts/fontawesome/fontawesome.eot
  33. BIN
      assets/fonts/fontawesome/fontawesome.woff
  34. 0 0
      assets/fonts/fontawesome/index.html
  35. 9 0
      assets/fonts/fontawesome/license.txt
  36. 0 0
      assets/fonts/index.html
  37. 0 0
      assets/index.html
  38. 0 0
      assets/js/index.html
  39. 178 0
      assets/js/pen-backend.js
  40. 147 0
      assets/js/pen-customize-main.js
  41. 1382 0
      assets/js/pen-customize-preview.js
  42. 4 0
      assets/js/pen-google-fonts.js
  43. 422 0
      assets/js/pen-scripts.js
  44. 292 0
      assets/js/plugins/autosize.js
  45. 78 0
      assets/js/plugins/base64.js
  46. 339 0
      assets/js/plugins/html5.js
  47. 0 0
      assets/js/plugins/index.html
  48. 192 0
      assets/js/plugins/jquery.are-you-sure.js
  49. 205 0
      assets/js/plugins/jquery.easing.js
  50. 42 0
      assets/js/plugins/jquery.fittext.js
  51. 589 0
      assets/js/plugins/jquery.slicknav.js
  52. 276 0
      assets/js/plugins/jquery.superfish.js
  53. 662 0
      assets/js/plugins/jquery.waypoints.js
  54. 454 0
      assets/js/plugins/modernizr.js
  55. 237 0
      assets/js/plugins/respond.js
  56. 227 0
      assets/js/plugins/shards.js
  57. 1376 0
      assets/js/plugins/trianglify.js
  58. 37 0
      assets/js/skip-link-focus-fix.js
  59. 124 0
      comments.php
  60. 111 0
      footer.php
  61. 22 0
      functions.php
  62. 177 0
      header.php
  63. 193 0
      include/assets.php
  64. 516 0
      include/color.php
  65. 56 0
      include/compress.php
  66. 3165 0
      include/configure.php
  67. 1583 0
      include/content.php
  68. 3987 0
      include/customize.php
  69. 1311 0
      include/general.php
  70. 1078 0
      include/html.php
  71. 0 0
      include/index.html
  72. 302 0
      include/sanitize.php
  73. 182 0
      include/sidebars.php
  74. 15 0
      include/typography.php
  75. 165 0
      include/widgets.php
  76. 70 0
      index.php
  77. 0 0
      languages/index.html
  78. 2336 0
      languages/pen.pot
  79. 33 0
      page.php
  80. 36 0
      partials/content-copyright.php
  81. 82 0
      partials/content-footer.php
  82. 61 0
      partials/content-none.php
  83. 113 0
      partials/content-page.php
  84. 25 0
      partials/content-pagination.php
  85. 86 0
      partials/content-search-footer.php
  86. 56 0
      partials/content-search.php
  87. 101 0
      partials/content-thumbnail.php
  88. 126 0
      partials/content.php
  89. 0 0
      partials/index.html
  90. 37 0
      partials/site-navigation.php
  91. 52 0
      partials/site-title.php
  92. 135 0
      readme.txt
  93. BIN
      screenshot.png
  94. 67 0
      search.php
  95. 28 0
      single.php
  96. 12 0
      style.css

+ 50 - 0
404.php

@@ -0,0 +1,50 @@
+<?php
+/**
+ * The template for displaying 404 pages (not found).
+ *
+ * @link https://codex.wordpress.org/Creating_an_Error_404_Page
+ *
+ * @package Pen
+ */
+
+get_header(); ?>
+<div id="primary" class="content-area">
+	<main id="main" class="<?php echo esc_attr( pen_content_classes() ); ?>" role="main">
+		<section class="error-404 not-found">
+			<header class="page-header">
+				<h1 class="page-title">
+<?php
+esc_html_e( 'Oops! That page can&rsquo;t be found.', 'pen' );
+?>
+				</h1>
+			</header><!-- .page-header -->
+			<div class="page-content clearfix">
+				<div class="pen_content_wrapper">
+					<p>
+<?php
+esc_html_e( 'It looks like nothing was found at this location, sorry!', 'pen' );
+?>
+					</p>
+<?php
+if ( ! pen_html_search_box() ) {
+	?>
+					<div id="error-404-search">
+	<?php
+	get_search_form();
+	?>
+					</div>
+	<?php
+}
+?>
+				</div>
+			</div><!-- .page-content -->
+		</section><!-- .error-404 -->
+	</main><!-- #main -->
+<?php
+if ( is_singular() ) {
+	pen_html_jump_menu( 'content' );
+}
+?>
+</div><!-- #primary -->
+<?php
+get_footer();

+ 63 - 0
archive.php

@@ -0,0 +1,63 @@
+<?php
+/**
+ * The template for displaying archive pages.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+get_header(); ?>
+<div id="primary" class="content-area">
+	<main id="main" class="<?php echo esc_attr( pen_content_classes() ); ?>" role="main">
+		<div class="pen_article_wrapper">
+<?php
+if ( have_posts() ) {
+	?>
+			<header class="page-header">
+				<h1 class="page-title">
+	<?php
+	echo get_the_archive_title(); /* phpcs:ignore */
+	?>
+				</h1>
+	<?php
+	the_archive_description( '<div class="archive-description">', '</div>' );
+	?>
+			</header><!-- .page-header -->
+	<?php
+	$content_list_type = pen_list_type();
+	if ( 'masonry' === $content_list_type ) {
+		?>
+			<div id="pen_masonry">
+		<?php
+	}
+	/* Start the Loop */
+	while ( have_posts() ) {
+		the_post();
+		/**
+		 * Include the Post-Format-specific template for the content.
+		 * If you want to override this in a child theme, then include a file
+		 * called content-___.php (where ___ is the Post Format name) and that will be used instead.
+		 */
+		get_template_part( 'partials/content', get_post_format() );
+	}
+	if ( 'masonry' === $content_list_type ) {
+		?>
+			</div>
+		<?php
+	}
+	get_template_part( 'partials/content', 'pagination' );
+} else {
+	get_template_part( 'partials/content', 'none' );
+}
+?>
+		</div>
+	</main><!-- #main -->
+<?php
+if ( ! is_singular() ) {
+	pen_html_jump_menu( 'list' );
+}
+?>
+</div><!-- #primary -->
+<?php
+get_footer();

+ 0 - 0
assets/css/index.html


+ 447 - 0
assets/css/normalize.css

@@ -0,0 +1,447 @@
+/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
+
+/* Document
+	 ========================================================================== */
+
+/**
+ * 1. Correct the line height in all browsers.
+ * 2. Prevent adjustments of font size after orientation changes in
+ *    IE on Windows Phone and in iOS.
+ */
+
+html {
+	line-height: 1.15; /* 1 */
+	-ms-text-size-adjust: 100%; /* 2 */
+	-webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/* Sections
+	 ========================================================================== */
+
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+
+body {
+	margin: 0;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+article,
+aside,
+footer,
+header,
+nav,
+section {
+	display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+
+h1 {
+	font-size: 2em;
+	margin: 0.67em 0;
+}
+
+/* Grouping content
+	 ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in IE.
+ */
+
+figcaption,
+figure,
+main { /* 1 */
+	display: block;
+}
+
+/**
+ * Add the correct margin in IE 8.
+ */
+
+figure {
+	margin: 1em 40px;
+}
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+
+hr {
+	box-sizing: content-box; /* 1 */
+	height: 0; /* 1 */
+	overflow: visible; /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+pre {
+	font-family: monospace, monospace; /* 1 */
+	font-size: 1em; /* 2 */
+}
+
+/* Text-level semantics
+	 ========================================================================== */
+
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+ */
+
+a {
+	background-color: transparent; /* 1 */
+	-webkit-text-decoration-skip: objects; /* 2 */
+}
+
+/**
+ * 1. Remove the bottom border in Chrome 57- and Firefox 39-.
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+
+abbr[title] {
+	border-bottom: none; /* 1 */
+	text-decoration: underline; /* 2 */
+	text-decoration: underline dotted; /* 2 */
+}
+
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
+
+b,
+strong {
+	font-weight: inherit;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+
+b,
+strong {
+	font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+
+code,
+kbd,
+samp {
+	font-family: monospace, monospace; /* 1 */
+	font-size: 1em; /* 2 */
+}
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+
+dfn {
+	font-style: italic;
+}
+
+/**
+ * Add the correct background and color in IE 9-.
+ */
+
+mark {
+	background-color: #ff0;
+	color: #000;
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+
+small {
+	font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+
+sub,
+sup {
+	font-size: 75%;
+	line-height: 0;
+	position: relative;
+	vertical-align: baseline;
+}
+
+sub {
+	bottom: -0.25em;
+}
+
+sup {
+	top: -0.5em;
+}
+
+/* Embedded content
+	 ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+audio,
+video {
+	display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+
+audio:not([controls]) {
+	display: none;
+	height: 0;
+}
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+
+img {
+	border-style: none;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+
+svg:not(:root) {
+	overflow: hidden;
+}
+
+/* Forms
+	 ========================================================================== */
+
+/**
+ * 1. Change the font styles in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+	font-family: sans-serif; /* 1 */
+	font-size: 100%; /* 1 */
+	line-height: 1.15; /* 1 */
+	margin: 0; /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+
+button,
+input { /* 1 */
+	overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+
+button,
+select { /* 1 */
+	text-transform: none;
+}
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ *    controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+
+button,
+html [type="button"], /* 1 */
+[type="reset"],
+[type="submit"] {
+	-webkit-appearance: button; /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+	border-style: none;
+	padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+	outline: 1px dotted ButtonText;
+}
+
+/**
+ * Correct the padding in Firefox.
+ */
+
+fieldset {
+	padding: 0.35em 0.75em 0.625em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ *    `fieldset` elements in all browsers.
+ */
+
+legend {
+	box-sizing: border-box; /* 1 */
+	color: inherit; /* 2 */
+	display: table; /* 1 */
+	max-width: 100%; /* 1 */
+	padding: 0; /* 3 */
+	white-space: normal; /* 1 */
+}
+
+/**
+ * 1. Add the correct display in IE 9-.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+
+progress {
+	display: inline-block; /* 1 */
+	vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+
+textarea {
+	overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+
+[type="checkbox"],
+[type="radio"] {
+	box-sizing: border-box; /* 1 */
+	padding: 0; /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+	height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+
+[type="search"] {
+	-webkit-appearance: textfield; /* 1 */
+	outline-offset: -2px; /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+ */
+
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+	-webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+
+::-webkit-file-upload-button {
+	-webkit-appearance: button; /* 1 */
+	font: inherit; /* 2 */
+}
+
+/* Interactive
+	 ========================================================================== */
+
+/*
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ */
+
+details, /* 1 */
+menu {
+	display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+
+summary {
+	display: list-item;
+}
+
+/* Scripting
+	 ========================================================================== */
+
+/**
+ * Add the correct display in IE 9-.
+ */
+
+canvas {
+	display: inline-block;
+}
+
+/**
+ * Add the correct display in IE.
+ */
+
+template {
+	display: none;
+}
+
+/* Hidden
+	 ========================================================================== */
+
+/**
+ * Add the correct display in IE 10-.
+ */
+
+[hidden] {
+	display: none;
+}

+ 113 - 0
assets/css/pen-author.css

@@ -0,0 +1,113 @@
+#primary .pen_author_profile {
+	float: left;
+	margin: 2em 0 0;
+	padding: 2em 1em 0;
+	position: relative;
+	width: 100%;
+	z-index: 10;
+}
+#primary .pen_author_profile:before {
+	background: -ms-linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(0,0,0,0.5) 50%, rgba(255,255,255,0) 100%);
+	background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(0,0,0,0.5) 50%, rgba(255,255,255,0) 100%);
+	content: "";
+	height: 1px;
+	left: 0;
+	opacity: 0.3;
+	position: absolute;
+	top: 0;
+	width: 100%;
+}
+#primary .pen_author_profile a:focus,
+#primary .pen_author_profile a:hover,
+#primary .pen_author_profile a:active {
+	text-decoration: none;
+}
+body.pen_list_plain #primary .pen_author_profile,
+body.pen_list_masonry #primary .pen_author_profile {
+	border-bottom: 0 none;
+	font-size: 0.857em;
+}
+#primary .pen_author_profile.pen_has_avatar {
+	min-height: 100px;
+	padding-left: 130px;
+}
+#primary .pen_author_profile .pen_author_avatar {
+	background: #fff;
+	border: 1px solid rgba(170,170,170,0.5);
+	height: 90px;
+	left: 1em;
+	overflow: hidden;
+	position: absolute;
+	top: 1em;
+	width: 90px;
+}
+body.pen_round_corners #primary .pen_author_profile .pen_author_avatar {
+	border-radius: 50%;
+}
+body.pen_masonry_columns_4 #primary .pen_author_profile {
+	margin: 90px 0 0;
+}
+body.pen_masonry_columns_4 #primary .pen_author_profile.pen_has_avatar {
+	padding: 30px 1em 1em;
+}
+body.pen_masonry_columns_4 #primary .pen_author_profile .pen_author_avatar {
+	left: 50%;
+	top: -70px;
+	transform: translateX(-50%);
+}
+body.pen_masonry_columns_4 #primary .pen_author_profile .pen_author_about h3,
+body.pen_masonry_columns_5 #primary .pen_author_profile .pen_author_about h3 {
+	text-align: center;
+	width: 100%;
+}
+body.pen_masonry_columns_5 #primary .pen_author_profile {
+	margin: 100px 0 0;
+}
+body.pen_masonry_columns_5 #primary .pen_author_profile.pen_has_avatar {
+	padding: 50px 1em 1em;
+}
+body.pen_masonry_columns_5 #primary .pen_author_profile .pen_author_avatar {
+	left: 50%;
+	top: -80px;
+	transform: translateX(-50%);
+}
+#primary .pen_author_profile .pen_author_about h3 {
+	margin: 0;
+}
+#primary .pen_author_profile .pen_author_about h3:before {
+	display: none;
+}
+#primary .pen_author_profile .pen_author_about p {
+	font-size: 0.857em;
+}
+#primary .pen_author_profile .pen_author_about .pen_author_url {
+	display: inline-block;
+	font-size: 0.857em;
+	margin: 0 0 0.5em;
+}
+@media only screen and (min-width:728px) {
+	body.single #primary .pen_author_profile .pen_author_about.pen_no_description,
+	body.pen_list_plain #primary .pen_author_profile .pen_author_about.pen_no_description {
+		left: 0;
+		position: absolute;
+		top: 50%;
+		transform: translateY(-50%);
+	}
+	body.single #primary .pen_author_profile.pen_has_avatar .pen_author_about.pen_no_description,
+	body.pen_list_plain #primary .pen_author_profile.pen_has_avatar .pen_author_about.pen_no_description {
+		padding: 0 0 0 120px;
+	}
+}
+@media only screen and (max-width:728px) {
+	#primary .pen_author_profile {
+		margin: 100px 0 0;
+	}
+	#primary .pen_author_profile.pen_has_avatar {
+		padding: 50px 1em 1em;
+	}
+	#primary .pen_author_profile .pen_author_avatar {
+		left: 50%;
+		top: -80px;
+		transform: translateX(-50%);
+	}
+}

+ 218 - 0
assets/css/pen-backend.css

@@ -0,0 +1,218 @@
+body.no-js #pen_post_meta {
+	margin: 1em 0 0;
+}
+#pen_post_meta,
+#pen_post_meta .pen_post_meta_options,
+#pen_post_meta .pen_post_meta_container,
+#pen_meta_box_footer {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	float: left;
+	width: 100%;
+}
+body.no-js #pen_meta_box #pen_meta_tools {
+	display: none;
+}
+#pen_meta_box #pen_meta_tools {
+	margin: 0 0 1em;
+}
+#pen_meta_box #pen_meta_tools,
+#pen_meta_box #pen_meta_tools .pen_meta_tool.pen_expanded {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	float: left;
+	width: 100%;
+}
+#pen_meta_box #pen_meta_tools .pen_meta_tool_close:before,
+#pen_meta_box #pen_meta_tools #pen_meta_tool_overview:before {
+	content: "\f158";
+	font-family: "dashicons";
+	font-weight: normal;
+	vertical-align: bottom;
+}
+#pen_meta_box #pen_meta_tools > .button,
+#pen_meta_box #pen_meta_tools #pen_meta_tool_overview:before {
+	margin: 0 0.25em 0 0;
+}
+#pen_meta_box #pen_meta_tools #pen_meta_tool_overview:before {
+	content: "\f504";
+}
+#pen_meta_box #pen_meta_tools > .button {
+	float: left;
+}
+#pen_meta_box #pen_meta_tools .pen_meta_tool.pen_expanded {
+	background: #f7f7f7;
+	border: 1px solid #ddd;
+	border-radius: 5px;
+	box-shadow: 1px 1px 2px rgba(0,0,0,0.2);
+	display: block;
+	margin: 1em 0 0;
+	padding: 1em;
+	position: relative;
+}
+#pen_meta_box #pen_meta_tools .pen_meta_tool .pen_meta_tool_close {
+	position: absolute;
+	right: 1em;
+	top: 1em;
+}
+#pen_meta_box #pen_meta_tools table {
+	background: rgba(255,255,255,0.75);
+	border: 1px solid #ccc;
+	border-collapse: collapse;
+	box-shadow: 1px 1px 2px rgba(0,0,0,0.3);
+	margin: 1em 0;
+	min-width: 400px;
+	text-transform: capitalize;
+}
+#pen_meta_box #pen_meta_tools table tr {
+	cursor: pointer;
+}
+#pen_meta_box #pen_meta_tools table th,
+#pen_meta_box #pen_meta_tools table td {
+	border: 1px solid #fff;
+}
+#pen_meta_box #pen_meta_tools table th {
+	background: #ddd;
+	padding: 1em;
+	text-align: left;
+}
+#pen_meta_box #pen_meta_tools table td {
+	padding: 0.5em 1em;
+}
+#pen_meta_box #pen_meta_tools table tr.pen_active td {
+	background: #eaeaea;
+}
+#pen_post_meta .postbox {
+	margin: 0 0 5px;
+}
+#pen_post_meta .postbox:last-child {
+	margin: 0;
+}
+#pen_post_meta .pen_post_meta_container {
+	padding: 1em;
+}
+#pen_post_meta h3 {
+	background: #e0e0e0;
+	background: -ms-linear-gradient(325deg, #f0f0f0 0%, #e0e0e0 100%);
+	background: linear-gradient(125deg, #f0f0f0 0%, #e0e0e0 100%);
+	margin: 0;
+	padding: 0.5em 1em;
+	position: relative;
+}
+body.js #pen_post_meta h3 {
+	cursor: pointer;
+}
+#pen_post_meta h3 .handlediv {
+	position: absolute;
+	right: 0;
+	top: 0;
+}
+#pen_post_meta fieldset {
+	border-top: 1px solid #ddd;
+	margin: 0 0 0.5em;
+	padding: 0 0 0.5em;
+}
+#pen_post_meta fieldset:last-child {
+	margin: 0;
+}
+#pen_post_meta fieldset legend {
+	background: #eee;
+	border: 1px solid #ddd;
+	border-radius: 3px;
+	font-weight: bold;
+	margin: 0;
+	padding: 0.5em 1em 0.5em 1.5em;
+	position: relative;
+}
+#pen_post_meta fieldset legend:before {
+	color: #aaa;
+	content: "\f139";
+	font-family: "dashicons";
+	font-size: 1.5em;
+	left: 0;
+	position: absolute;
+	top: 50%;
+	transform: translateY(-50%);
+}
+#pen_post_meta label {
+	font-weight: bold;
+	line-height: 1;
+	white-space: nowrap;
+}
+#pen_post_meta label + select {
+	margin: 5px 0 0;
+}
+#pen_post_meta .pen_wrap {
+	background: rgba(255,255,255,0.75);
+	border: 1px solid #fff;
+	border-radius: 5px;
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+	float: left;
+	margin: 5px 2% 0 0;
+	padding: 7px 10px;
+	transition: background-color .1s, border-color .1s, color .1s;
+	width: 18%;
+}
+#pen_post_meta .pen_sidebars .pen_wrap {
+	width: 31.33%;
+}
+#side-sortables #pen_post_meta .pen_wrap,
+#side-sortables #pen_post_meta .pen_sidebars .pen_wrap {
+	margin-left: 0;
+	margin-right: 0;
+	width: 100%;
+}
+#pen_post_meta .pen_wrap.pen_post_meta_enable {
+	background: #dcf3df;
+	border: 1px solid #89d291;
+	color: #005d0c;
+}
+#pen_post_meta .pen_wrap.pen_post_meta_disable {
+	background: #ffe3e3;
+	border: 1px solid #e4aaaa;
+	color: #c30000;
+}
+#pen_meta_box .pen_only {
+	background: #7f7f7f;
+	border-radius: 100px;
+	box-shadow: 1px 1px 3px rgba(0,0,0,0.75) inset;
+	color: #fff;
+	cursor: help;
+	display: inline-block;
+	font-size: 0.857em;
+	font-weight: bold;
+	margin: 0 5px 0 0;
+	padding-left: 5px;
+	padding-right: 5px;
+	text-shadow: 1px 1px 3px rgba(0,0,0,0.5);
+}
+#pen_meta_box_footer {
+	border-top: 1px solid #ccc;
+	margin: 1em 0 0;
+	padding: 1em 0 0;
+	text-align: right;
+}
+#pen_meta_box_footer label {
+	vertical-align: baseline;
+}
+#pen_meta_box_footer .pen_left {
+	float: left;
+}
+#pen_meta_box_footer .pen_right {
+	float: right;
+}
+#pen_meta_box_footer .pen_order:after {
+	content: "\f344";
+	font-family: "dashicons";
+	margin: 0 0 0 1em;
+	vertical-align: bottom;
+}
+@media only screen and (max-width:1024px) {
+	#pen_post_meta .pen_sidebars .pen_wrap {
+		width: 100%;
+	}
+}

+ 513 - 0
assets/css/pen-base.css

@@ -0,0 +1,513 @@
+/*--------------------------------------------------------------
+>>> TABLE OF CONTENTS:
+----------------------------------------------------------------
+# Typography
+# Elements
+# Forms
+# Navigation
+	## Links
+	## Menus
+# Accessibility
+# Alignments
+# Clearings
+# Widgets
+# Content
+	## Posts and pages
+	## Comments
+# Infinite scroll
+# Media
+	## Captions
+	## Galleries
+--------------------------------------------------------------*/
+/*--------------------------------------------------------------
+# Typography
+--------------------------------------------------------------*/
+body,
+button,
+input,
+select,
+optgroup,
+textarea {
+	color: #404040;
+	font-family: sans-serif;
+	font-size: 14px;
+	line-height: 1.5;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+	clear: both;
+	display: block;
+}
+p {
+	margin: 0 0 1.5em;
+}
+p:last-child {
+	margin-bottom: 0;
+}
+dfn,
+cite,
+em,
+i {
+	font-style: italic;
+}
+blockquote {
+	margin: 0 1.5em;
+}
+address {
+	margin: 0 0 1.5em;
+}
+pre {
+	background: #eee;
+	font-family: "Courier 10 Pitch", Courier, monospace;
+	font-size: 1em;
+	line-height: 1.6;
+	margin-bottom: 1.6em;
+	max-width: 100%;
+	overflow: auto;
+	padding: 1.6em;
+}
+code,
+kbd,
+tt,
+var {
+	font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
+	font-size: 1em;
+}
+abbr,
+acronym {
+	border-bottom: 1px dotted #666;
+	cursor: help;
+}
+mark,
+ins {
+	background: #fff9c0;
+	text-decoration: none;
+}
+big {
+	font-size: 125%;
+}
+/*--------------------------------------------------------------
+# Elements
+--------------------------------------------------------------*/
+html {
+	box-sizing: border-box;
+}
+*,
+*:before,
+*:after { /* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
+	box-sizing: inherit;
+}
+body {
+	background: #fff; /* Fallback for when there is no custom background color defined. */
+	overflow-x: hidden;
+}
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+	content: "";
+}
+blockquote,
+q {
+	quotes: "" "";
+}
+hr {
+	background-color: rgba(170,170,170,0.5);
+	border: 0;
+	height: 1px;
+	margin-bottom: 1.5em;
+}
+ul,
+ol {
+	margin: 0 0 1.5em 3em;
+}
+ul {
+	list-style: disc;
+}
+ol {
+	list-style: decimal;
+}
+li > ul,
+li > ol {
+	margin-bottom: 0;
+	margin-left: 1.5em;
+}
+dt {
+	font-weight: bold;
+}
+dd {
+	margin: 0 1.5em 1.5em;
+}
+img {
+	height: auto; /* Make sure images are scaled correctly. */
+	max-width: 100%; /* Adhere to container width. */
+}
+figure {
+	margin: 1em 0; /* Extra wide images within figure tags don't overflow the content area. */
+}
+table {
+	margin: 0 0 1.5em;
+	width: 100%;
+}
+/*--------------------------------------------------------------
+# Forms
+--------------------------------------------------------------*/
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+	background: #ffffff;
+	border: 1px solid;
+	border-color: #ccc #ccc #bbb;
+	color: #333;
+	color: rgba(0,0,0,0.8);
+	font-size: 0.857em;
+	line-height: 1;
+	padding: .6em 1em .4em;
+}
+button:hover,
+input[type="button"]:hover,
+input[type="reset"]:hover,
+input[type="submit"]:hover {
+	border-color: #ccc #bbb #aaa;
+}
+button:focus,
+input[type="button"]:focus,
+input[type="reset"]:focus,
+input[type="submit"]:focus,
+button:active,
+input[type="button"]:active,
+input[type="reset"]:active,
+input[type="submit"]:active {
+	border-color: #aaa #bbb #bbb;
+}
+input[type="text"],
+input[type="email"],
+input[type="url"],
+input[type="password"],
+input[type="search"],
+input[type="number"],
+input[type="tel"],
+input[type="range"],
+input[type="date"],
+input[type="month"],
+input[type="week"],
+input[type="time"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="color"],
+textarea {
+	background: rgba(255,255,255,0.75);
+	color: #333;
+	border: 1px solid rgba(0,0,0,0.5);
+}
+select {
+	border: 1px solid rgba(0,0,0,0.5);
+}
+input[type="text"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="password"]:focus,
+input[type="search"]:focus,
+input[type="number"]:focus,
+input[type="tel"]:focus,
+input[type="range"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="week"]:focus,
+input[type="time"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="color"]:focus,
+textarea:focus {
+	color: #111;
+}
+input[type="text"],
+input[type="email"],
+input[type="url"],
+input[type="password"],
+input[type="search"],
+input[type="number"],
+input[type="tel"],
+input[type="range"],
+input[type="date"],
+input[type="month"],
+input[type="week"],
+input[type="time"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="color"] {
+	padding: 3px;
+}
+textarea {
+	padding-left: 3px;
+	width: 100%;
+}
+/*--------------------------------------------------------------
+# Navigation
+--------------------------------------------------------------*/
+/*--------------------------------------------------------------
+## Links
+--------------------------------------------------------------*/
+a {
+	color: #0087cc;
+}
+a:visited {
+	color: #5c2e95;
+}
+a:hover,
+a:focus,
+a:active {
+	color: #18b1e7;
+}
+a:focus {
+	outline: thin dotted;
+}
+a:hover,
+a:active {
+	outline: 0;
+}
+/*--------------------------------------------------------------
+## Menus
+--------------------------------------------------------------*/
+.site-main .comment-navigation,
+.site-main .posts-navigation,
+.site-main .post-navigation {
+	margin: 0 0 1.5em;
+	overflow: hidden;
+}
+.comment-navigation .nav-previous,
+.posts-navigation .nav-previous,
+.post-navigation .nav-previous {
+	float: left;
+	width: 50%;
+}
+.comment-navigation .nav-next,
+.posts-navigation .nav-next,
+.post-navigation .nav-next {
+	float: right;
+	text-align: right;
+	width: 50%;
+}
+/*--------------------------------------------------------------
+# Accessibility
+--------------------------------------------------------------*/
+/* Text meant only for screen readers. */
+.screen-reader-text {
+	clip: rect(1px, 1px, 1px, 1px);
+	position: absolute !important;
+	height: 1px;
+	width: 1px;
+	overflow: hidden;
+	word-wrap: normal !important; /* Many screen reader and browser combinations announce broken words as they would appear visually. */
+}
+.screen-reader-text:focus {
+	background-color: #f1f1f1;
+	clip: auto !important;
+	color: #21759b;
+	display: block;
+	font-size: 1em;
+	font-weight: bold;
+	height: auto;
+	left: 5px;
+	line-height: normal;
+	padding: 15px 23px 14px;
+	text-decoration: none;
+	top: 5px;
+	width: auto;
+	z-index: 100000; /* Above WP toolbar. */
+}
+/* Do not show the outline on the skip link target. */
+#content[tabindex="-1"]:focus {
+	outline: 0;
+}
+/*--------------------------------------------------------------
+# Alignments
+--------------------------------------------------------------*/
+.alignleft {
+	display: inline;
+	float: left;
+	margin: 1em 1.5em;
+	margin-left: 0;
+}
+.alignright {
+	display: inline;
+	float: right;
+	margin: 1em 1.5em;
+	margin-right: 0;
+}
+.aligncenter {
+	clear: both;
+	display: block;
+	margin: 1em;
+	margin-left: auto;
+	margin-right: auto;
+}
+/*--------------------------------------------------------------
+# Clearings
+--------------------------------------------------------------*/
+.clear:before,
+.clear:after,
+.entry-content:before,
+.entry-content:after,
+.comment-content:before,
+.comment-content:after,
+.site-header:before,
+.site-header:after,
+.site-content:before,
+.site-content:after,
+.site-footer:before,
+.site-footer:after {
+	content: "";
+	display: table;
+	table-layout: fixed;
+}
+.clear:after,
+.entry-content:after,
+.comment-content:after,
+.site-header:after,
+.site-content:after,
+.site-footer:after {
+	clear: both;
+}
+/*--------------------------------------------------------------
+# Widgets
+--------------------------------------------------------------*/
+.widget {
+	margin: 0 0 1.5em;
+}
+.widget:last-child {
+	margin: 0;
+}
+/* Make sure select elements fit in widgets. */
+.widget select {
+	max-width: 100%;
+}
+/*--------------------------------------------------------------
+# Content
+--------------------------------------------------------------*/
+/*--------------------------------------------------------------
+## Posts and pages
+--------------------------------------------------------------*/
+.post,
+.page {
+	margin: 0 0 1.5em;
+}
+.posted-on time.updated {
+	display: none;
+}
+.posted-on time.published {
+	display: inline-block;
+}
+.page-content,
+.entry-content,
+.entry-summary {
+	margin: 1.5em 0 0;
+}
+.page-links {
+	clear: both;
+	margin: 0 0 1.5em;
+}
+/*--------------------------------------------------------------
+## Comments
+--------------------------------------------------------------*/
+.comment-content a {
+	word-wrap: break-word;
+}
+.bypostauthor {
+	display: block;
+}
+/*--------------------------------------------------------------
+# Infinite scroll
+--------------------------------------------------------------*/
+/* Globally hidden elements when Infinite Scroll is supported and in use. */
+.infinite-scroll .posts-navigation, /* Older / Newer Posts Navigation (always hidden) */
+.infinite-scroll.neverending .site-footer { /* Theme Footer (when set to scrolling) */
+	display: none;
+}
+/* When Infinite Scroll has reached its end we need to re-display elements that were hidden (via .neverending) before. */
+.infinity-end.neverending .site-footer {
+	display: block;
+}
+/*--------------------------------------------------------------
+# Media
+--------------------------------------------------------------*/
+.page-content .wp-smiley,
+.entry-content .wp-smiley,
+.comment-content .wp-smiley {
+	border: none;
+	margin-bottom: 0;
+	margin-top: 0;
+	padding: 0;
+}
+/* Make sure embeds and iframes fit their containers. */
+embed,
+iframe,
+object {
+	max-width: 100%;
+}
+/* Make sure logo link wraps around logo image. */
+.custom-logo-link{
+	display: inline-block;
+}
+/*--------------------------------------------------------------
+## Captions
+--------------------------------------------------------------*/
+.wp-caption {
+	margin-bottom: 1.5em;
+	max-width: 100%;
+}
+.wp-caption img[class*="wp-image-"] {
+	display: block;
+	margin-left: auto;
+	margin-right: auto;
+}
+.wp-caption .wp-caption-text {
+	margin: 0.8075em 0;
+}
+.wp-caption-text {
+	text-align: center;
+}
+/*--------------------------------------------------------------
+## Galleries
+--------------------------------------------------------------*/
+.gallery {
+	margin-bottom: 1.5em;
+}
+.gallery-item {
+	display: inline-block;
+	text-align: center;
+	vertical-align: top;
+	width: 100%;
+}
+.gallery-columns-2 .gallery-item {
+	max-width: 50%;
+}
+.gallery-columns-3 .gallery-item {
+	max-width: 33.33333%;
+}
+.gallery-columns-4 .gallery-item {
+	max-width: 25%;
+}
+.gallery-columns-5 .gallery-item {
+	max-width: 20%;
+}
+.gallery-columns-6 .gallery-item {
+	max-width: 16.66667%;
+}
+.gallery-columns-7 .gallery-item {
+	max-width: 14.28571%;
+}
+.gallery-columns-8 .gallery-item {
+	max-width: 12.5%;
+}
+.gallery-columns-9 .gallery-item {
+	max-width: 11.11111%;
+}
+.gallery-caption {
+	display: block;
+}

+ 106 - 0
assets/css/pen-bottom.css

@@ -0,0 +1,106 @@
+#pen_bottom {
+	color: #fefefe;
+	font-size: 0.857em;
+	margin: 1em 0 0;
+	padding: 2em;
+	position: relative;
+	text-shadow: 1px 1px 2px rgba(0,0,0,0.75);
+}
+#pen_bottom.pen_not_transparent {
+	background: #1f1f1f;
+}
+body.pen_round_corners #pen_bottom {
+	border-radius: 5px 5px 0 0;
+}
+body.pen_drop_shadow #pen_bottom.pen_not_transparent {
+	box-shadow: 0 0 20px rgba(0,0,0,0.4);
+}
+#pen_bottom a {
+	color: #0087cc;
+}
+#pen_bottom a:focus,
+#pen_bottom a:hover,
+#pen_bottom a:active {
+	text-decoration: none;
+}
+#pen_bottom input[type="date"],
+#pen_bottom input[type="email"],
+#pen_bottom input[type="file"],
+#pen_bottom input[type="number"],
+#pen_bottom input[type="tel"],
+#pen_bottom input[type="time"],
+#pen_bottom input[type="text"],
+#pen_bottom option,
+#pen_bottom select,
+#pen_bottom textarea {
+	background: -ms-linear-gradient(top, #1f1f1f 0%, #2f2f2f 100%);
+	background: linear-gradient(to bottom, #1f1f1f 0%, #2f2f2f 100%);
+	color: #ccc;
+}
+#pen_bottom .widget {
+	float: left;
+	width: 100%;
+}
+@media only screen and (min-width:728px) {
+	#pen_bottom .widget:nth-child(1):nth-last-child(5),
+	#pen_bottom .widget:nth-child(2):nth-last-child(4),
+	#pen_bottom .widget:nth-child(3):nth-last-child(3),
+	#pen_bottom .widget:nth-child(4):nth-last-child(2),
+	#pen_bottom .widget:nth-child(5):nth-last-child(1) {
+		margin-left: 1%;
+		margin-right: 1%;
+		width: 18%;
+	}
+	#pen_bottom .widget:nth-child(1):nth-last-child(4),
+	#pen_bottom .widget:nth-child(2):nth-last-child(3),
+	#pen_bottom .widget:nth-child(3):nth-last-child(2),
+	#pen_bottom .widget:nth-child(4):nth-last-child(1) {
+		margin-left: 1%;
+		margin-right: 1%;
+		width: 23%;
+	}
+	#pen_bottom .widget:nth-child(1):nth-last-child(3),
+	#pen_bottom .widget:nth-child(2):nth-last-child(2),
+	#pen_bottom .widget:nth-child(3):nth-last-child(1) {
+		margin-left: 1%;
+		margin-right: 1%;
+		width: 31.33%;
+	}
+	#pen_bottom .widget:nth-child(1):nth-last-child(2),
+	#pen_bottom .widget:nth-child(2):nth-last-child(1) {
+		margin-left: 1%;
+		margin-right: 1%;
+		width: 47.9%;
+	}
+}
+#pen_bottom .widget h3.widget-title {
+	margin-top: 0;
+}
+#pen_bottom .widget.pen_widget_dark h3.widget-title,
+#pen_bottom .widget.pen_widget_light h3.widget-title {
+	padding: 0.5em 1em !important;
+}
+#pen_bottom .widget ul {
+	margin: 0;
+	padding: 0 0 0 1em;
+}
+#pen_bottom ul.menu {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	position: relative;
+}
+#pen_bottom ul.menu:before {
+	background: -ms-linear-gradient(270deg, rgba(120,120,120,0) 0%, rgba(120,120,120,0.2) 50%, rgba(120,120,120,0) 100%);
+	background: linear-gradient(180deg, rgba(120,120,120,0) 0%, rgba(120,120,120,0.2) 50%, rgba(120,120,120,0) 100%);
+	content: "";
+	height: 100%;
+	left: 0;
+	position: absolute;
+	top: 0;
+	width: 1px;
+}
+#pen_bottom ul.menu a {
+	display: block;
+	padding: 0.5em 2em;
+}

+ 83 - 0
assets/css/pen-buttons.css

@@ -0,0 +1,83 @@
+#primary .pen_button,
+#primary .comments-link a,
+#primary a.post-edit-link,
+#primary .comment-list a.comment-edit-link,
+#primary .comment-list .reply a,
+#primary input[type="submit"],
+#primary .entry-footer .tags-links a,
+#cancel-comment-reply-link,
+#content .page-links a,
+#content .comment-navigation a,
+#content .posts-navigation a,
+#content .post-navigation a,
+#content .wp-pagenavi a,
+#content .wp-pagenavi span {
+	background: #0090ff;
+	background: -ms-linear-gradient(90deg, #135abf 0%, #0090ff 100%);
+	background: linear-gradient(0deg, #135abf 0%, #0090ff 100%);
+	border: 0 none !important;
+	color: #fff !important;
+	float: left;
+	font-family: "robotobold";
+	font-weight: normal;
+	margin: 0 0 1em;
+	padding: 0.75em 2em !important;
+	text-align: center;
+	text-decoration: none !important;
+	text-transform: capitalize;
+	width: 100%;
+}
+body.pen_drop_shadow #primary .pen_button,
+body.pen_drop_shadow #primary .comments-link a,
+body.pen_drop_shadow #primary a.post-edit-link,
+body.pen_drop_shadow #primary .comment-list a.comment-edit-link,
+body.pen_drop_shadow #primary .comment-list .reply a,
+body.pen_drop_shadow #primary input[type="submit"],
+body.pen_drop_shadow #primary .entry-footer .tags-links a,
+body.pen_drop_shadow #cancel-comment-reply-link,
+body.pen_drop_shadow #content .page-links a,
+body.pen_drop_shadow #content .comment-navigation a,
+body.pen_drop_shadow #content .posts-navigation a,
+body.pen_drop_shadow #content .post-navigation a,
+body.pen_drop_shadow #content .wp-pagenavi a,
+body.pen_drop_shadow #content .wp-pagenavi span {
+	box-shadow: 1px 1px 1px rgba(255,255,255,0.2) inset, -1px -1px 1px rgba(0,0,0,0.2) inset, 1px 1px 0 rgba(0,0,0,0.25);
+	text-shadow: 1px 1px 2px rgba(0,0,0,0.4);
+}
+body.pen_round_corners #primary .pen_button,
+body.pen_round_corners #primary .comments-link a,
+body.pen_round_corners #primary a.post-edit-link,
+body.pen_round_corners #primary .comment-list a.comment-edit-link,
+body.pen_round_corners #primary .comment-list .reply a,
+body.pen_round_corners #primary input[type="submit"],
+body.pen_round_corners #primary .entry-footer .tags-links a,
+body.pen_round_corners #cancel-comment-reply-link,
+body.pen_round_corners #content .page-links a,
+body.pen_round_corners #content .comment-navigation a,
+body.pen_round_corners #content .posts-navigation a,
+body.pen_round_corners #content .post-navigation a,
+body.pen_round_corners #content .wp-pagenavi a,
+body.pen_round_corners #content .wp-pagenavi span {
+	border-radius: 50px;
+}
+#primary input[type="submit"] {
+	font-size: 1em !important;
+}
+#primary .pen_button:active,
+#primary .comments-link a:active,
+#primary a.post-edit-link:active,
+#primary .comment-list a.comment-edit-link:active,
+#primary .comment-list .reply a:active,
+#primary input[type="submit"]:active,
+#primary .entry-footer .tags-links a:active,
+#cancel-comment-reply-link:active,
+#content .entry-content input[type="submit"]:active,
+#content .page-links a:active,
+#content .comment-navigation a:active,
+#content .posts-navigation a:active,
+#content .post-navigation a:active,
+#content .wp-pagenavi span,
+#content .wp-pagenavi .current {
+	background: #135abf;
+	text-decoration: none;
+}

+ 242 - 0
assets/css/pen-comments.css

@@ -0,0 +1,242 @@
+#comments {
+	background: rgba(255,255,255,0.95);
+	color: #333;
+	font-size: 0.857em;
+	list-style: none;
+	overflow: hidden;
+	margin: 0;
+	padding: 2em;
+	position: relative;
+}
+body.pen_drop_shadow #comments {
+	box-shadow: 0 5px 10px rgba(0,0,0,0.4), 0 0 5px rgba(0,0,0,0.4);
+}
+body.pen_round_corners #comments {
+	border-radius: 5px;
+}
+#comments h2 {
+	font-weight: bold;
+	padding: 0 0 1em;
+}
+#comments ol.comment-list,
+#comments ol.children,
+#comments ol.comment-list li {
+	float: left;
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+}
+#comments ol.comment-list li {
+	min-height: 48px;
+}
+#comments ol.comment-list > li {
+	background: rgba(170,170,170,0.1);
+	box-shadow: 0 0 7px rgba(0,0,0,0.2);
+	float: left;
+	margin: 0 0 2em;
+	position: relative;
+	padding: 2em;
+	width: 100%;
+}
+body.pen_round_corners #comments ol.comment-list > li {
+	border-radius: 3px;
+}
+#comments ol.comment-list > li:last-child {
+	margin: 0;
+}
+#comments ol.comment-list ol.children {
+	margin: 3em 0 0;
+}
+#comments ol.comment-list div.comment-author {
+	float: left;
+	margin: 0;
+	width: 100%;
+}
+#comments ol.comment-list div.comment-author .photo {
+	background: #fff;
+	box-shadow: 0 0 7px rgba(0,0,0,0.2);
+	float: left;
+	height: 70px;
+	margin: -40px 1em 1em;
+	overflow: hidden;
+	position: relative;
+	width: 70px;
+}
+body.pen_round_corners #comments ol.comment-list div.comment-author .photo {
+	border-radius: 50%;
+}
+#comments ol.comment-list div.comment-author cite {
+	clear: left;
+	float: left;
+	font-style: normal;
+}
+#comments ol.comment-list div.comment-author .says {
+	margin: 0 0 0 5px;
+}
+#comments ol.comment-list div.comment-author b {
+	clear: left;
+}
+#comments ol.comment-list div.comment-author b,
+#comments ol.comment-list div.comment-author .says {
+	float: left;
+}
+#comments ol.comment-list div.comment-meta {
+	float: left;
+	margin: 0 0 1em;
+	padding: 0;
+	width: 100%;
+}
+#comments ol.comment-list div.comment-meta a {
+	float: left;
+	margin: 0 1em 0 0;
+	padding-bottom: 0.25em;
+	padding-top: 0.25em;
+}
+#comments ol.comment-list > li a.comment-edit-link {
+	float: none !important;
+	margin: 0 0 0 5px;
+	padding-top: 5px !important;
+	padding-bottom: 5px !important;
+}
+#comments ol.comment-list div.comment-content {
+	float: left;
+	margin: 1em 0;
+	width: 100%;
+}
+#comments ol.comment-list .reply a {
+	margin-bottom: 0 !important;
+	padding-left: 4em !important;
+	position: relative;
+	text-align: left;
+}
+#comments ol.comment-list .reply a:before {
+	content: "\f075";
+	font-family: "FontAwesome";
+	font-size: 1.429em;
+	font-weight: normal;
+	left: 1em;
+	margin: 0 1em 0 0;
+	position: absolute;
+	top: 50%;
+	transform: translateY(-50%);
+}
+#comments .no-comments,
+#comments .comment-awaiting-moderation {
+	border: 1px solid rgba(170,170,170,0.3);
+	float: left;
+	margin: 1em 0;
+	padding: 1em 1em 1em 2em;
+	width: 100%;
+}
+body.pen_round_corners #comments .no-comments,
+body.pen_round_corners #comments .comment-awaiting-moderation {
+	border-radius: 3px;
+}
+#comments .no-comments:before,
+#comments .comment-awaiting-moderation:before {
+	content: "\f023";
+	font-family: "FontAwesome";
+	font-weight: normal;
+	margin: 0 1em 0 0;
+}
+#comments .comment-awaiting-moderation:before {
+	content: "\f017";
+}
+#pen_respond_wrapper {
+	float: left;
+	margin: 2em 0 0 !important;
+	width: 100%;
+}
+#comments #pen_respond_wrapper:first-child:last-child {
+	margin: 0;
+}
+#respond {
+	margin: 0;
+	position: relative;
+}
+#respond h3 {
+	padding-left: 2em;
+	position: relative;
+}
+#comments #pen_respond_wrapper:first-child:last-child h3 {
+	margin-top: 0;
+}
+#respond h3:before {
+	content: "\f075";
+	font-family: "FontAwesome";
+	font-size: 1.429em;
+	font-weight: normal;
+	left: 0;
+	line-height: 1;
+	position: absolute;
+	top: 0;
+}
+#respond h3 #cancel-comment-reply-link {
+	float: right;
+	margin: 0;
+}
+#comments .comment-form-cookies-consent {
+	float: left;
+	margin-top: 1em;
+	width: 100%;
+}
+@media only screen and (min-width:728px) {
+	#comments a.post-edit-link,
+	#comments .comment-list a.comment-edit-link,
+	#comments .comment-list .reply a,
+	#cancel-comment-reply-link {
+		font-size: 0.857em !important;
+		width: auto !important;
+	}
+	#respond .form-submit input {
+		width: auto !important;
+	}
+	#comments ol.comment-list div.comment-metadata {
+		position: absolute;
+		right: 2em;
+		top: 2em;
+	}
+	#comments .comment-form-author,
+	#comments .comment-form-email,
+	#comments .comment-form-url {
+		float: left;
+		margin-bottom: 0.5em;
+		width: 28%;
+	}
+	#comments .comment-form-comment {
+		float: right;
+		width: 70%;
+	}
+	body.logged-in #comments .comment-form-comment {
+		clear: both;
+		width: 100%;
+	}
+	#comments .form-submit {
+		float: left;
+		margin: 1em 0 0;
+		width: 100%;
+	}
+}
+@media only screen and (max-width:728px) {
+	#comments ol.comment-list div.comment-meta {
+		width: 100%;
+	}
+	#comments ol.comment-list div.comment-meta a {
+		padding: 0;
+	}
+	#respond h3 {
+		font-size: 1.286em;
+		padding-left: 0;
+		padding-top: 2em;
+		text-align: center;
+	}
+	#respond h3:before {
+		left: 50%;
+		top: 0;
+		transform: translateX(-50%);
+	}
+	#respond h3 #cancel-comment-reply-link {
+		margin: 1em 0;
+	}
+}

+ 768 - 0
assets/css/pen-content.css

@@ -0,0 +1,768 @@
+#main article,
+#main .pen_content_wrapper {
+	position: relative;
+}
+#main .page-content,
+#main .pen_article_wrapper > article,
+body.pen_list_masonry #pen_masonry article,
+body.pen_list_plain #pen_pager {
+	background: #fff;
+	color: #333;
+}
+body.pen_round_corners #main .page-content,
+body.pen_round_corners #main .pen_article_wrapper > article,
+body.pen_round_corners.pen_list_masonry #pen_masonry article {
+	border-radius: 10px 10px 5px 5px; /* This makes the top corners cleaner when the content title has a dark background color. */
+}
+body.pen_round_corners.pen_list_plain #pen_pager,
+body.pen_list_header_hide.pen_round_corners #main .page-content,
+body.pen_list_header_hide.pen_round_corners #main .pen_article_wrapper > article,
+body.pen_list_header_hide.pen_round_corners.pen_list_masonry #pen_masonry article,
+body.pen_content_header_hide.pen_round_corners #main .page-content,
+body.pen_content_header_hide.pen_round_corners #main .pen_article_wrapper > article,
+body.pen_content_header_hide.pen_round_corners.pen_list_masonry #pen_masonry article {
+	border-radius: 5px;
+}
+body.pen_drop_shadow #main .page-content,
+body.pen_drop_shadow #main .pen_article_wrapper > article,
+body.pen_drop_shadow.pen_list_masonry #pen_masonry article,
+body.pen_drop_shadow.pen_list_plain #pen_pager,
+body.pen_drop_shadow #main .pen_options_overview.pen_off_screen {
+	box-shadow: 0 5px 10px rgba(0,0,0,0.4), 0 0 5px rgba(0,0,0,0.4);
+}
+#main .page-content,
+#main .pen_article_wrapper > article,
+body.pen_list_masonry #pen_masonry article {
+	float: left;
+	margin: 0 0 1em;
+	width: 100%;
+}
+body.pen_list_masonry #pen_masonry article {
+	margin: 0 0.5% 10px 0.5% !important;
+}
+body.pen_list_masonry #pen_masonry,
+body.pen_list_masonry #pen_masonry article {
+	-webkit-backface-visibility: hidden;
+	-webkit-transform: translate3d(0,0,0);
+}
+#main article .entry-content h2,
+#main article .entry-content h3,
+#main article .entry-content h4,
+#main article .entry-content h5 {
+	margin: 0 0 0.25em;
+	position: relative;
+}
+#main article .entry-content h2:first-child:last-child,
+#main article .entry-content h3:first-child:last-child,
+#main article .entry-content h4:first-child:last-child,
+#main article .entry-content h5:first-child:last-child {
+	padding-bottom: 0;
+}
+#main .page-content,
+#main article .entry-content,
+#main article .entry-summary,
+#main article .entry-footer {
+	float: left;
+	padding: 2em;
+	width: 100%;
+}
+#main article .entry-footer {
+	padding-top: 0;
+}
+#main article header {
+	background: #dddddd;
+	background: -ms-linear-gradient(325deg, #ffffff 0%, #dddddd 100%);
+	background: linear-gradient(125deg, #ffffff 0%, #dddddd 100%);
+	float: left;
+	line-height: 1.2;
+	padding: 2em;
+	position: relative;
+	width: 100%;
+	z-index: 40;
+}
+body.pen_round_corners #main article header {
+	border-radius: 5px 5px 0 0;
+}
+#main header.page-header {
+	float: left;
+	margin: 0 0 1em;
+	padding: 1em 0;
+	width: 100%;
+}
+body.pen_drop_shadow #main header.page-header {
+	text-shadow: 2px 2px 5px rgba(0,0,0,0.5);
+}
+
+body.pen_content_header_center #main header,
+body.pen_list_post_header_center #main header {
+	text-align: center;
+}
+#main header h1.entry-title,
+#main header h2.entry-title,
+#main header h1.page-title,
+#main header h2.page-title {
+	float: left;
+	font-size: 2em;
+	font-weight: bold;
+	margin: 0;
+	padding: 0;
+}
+#main header .entry-title b,
+#main header .entry-title strong,
+#main header .page-title b,
+#main header .page-title strong {
+	font-weight: 800;
+}
+body.pen_list_header_center #main header .entry-title,
+body.pen_list_header_center #main header .page-title,
+#main article.pen_list_header_center header .entry-title,
+#main article.pen_list_header_center header .page-title,
+body.pen_list_title_center #main header .entry-title,
+body.pen_list_title_center #main header .page-title,
+#main article.pen_list_title_center header .entry-title,
+#main article.pen_list_title_center header .page-title,
+body.pen_content_header_center #main header .entry-title,
+body.pen_content_header_center #main header .page-title,
+body.pen_content_title_center #main header .entry-title,
+body.pen_content_title_center #main header .page-title {
+	text-align: center;
+	width: 100%;
+}
+#main article header a {
+	color: #000;
+	text-decoration: none;
+}
+#main article header a:focus,
+#main article header a:hover,
+#main article header a:active {
+	color: #0087cc;
+	outline: none;
+	text-decoration: none;
+}
+#main article .entry-meta {
+	float: left;
+	font-size: 0.714em;
+	line-height: 0;
+	margin: 1em 0 0;
+	opacity: 0.9;
+	padding: 0;
+	text-transform: uppercase;
+	width: 100%;
+}
+#main article header .entry-meta {
+	opacity: 0.75;
+}
+#main article.pen_list_header_center header .entry-meta,
+body.pen_content_header_center #main article header .entry-meta {
+	text-align: center;
+	margin: 1em auto 0;
+	width: 100%;
+}
+#main article .entry-meta a {
+	font-weight: bold;
+	text-decoration: none;
+}
+#main article .entry-meta > span {
+	position: relative;
+}
+#main article header span.byline,
+#main article header span.posted-on {
+	white-space: nowrap;
+}
+#main article header span.byline,
+#main article header span.posted-on,
+#main article header span.cat-links {
+	display: inline-block;
+	line-height: 1.3;
+	margin: 1em 0 0;
+}
+#main article .entry-meta > span:after {
+	background: -ms-linear-gradient(270deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.75) 50%, rgba(0,0,0,0) 100%);
+	background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.75) 50%, rgba(0,0,0,0) 100%);
+	content: "";
+	display: inline-block;
+	min-height: 1em;
+	margin: 0 0.5em 0 0.75em;
+	speak: none;
+	transform: rotate(-20deg);
+	width: 1px;
+	vertical-align: sub;
+}
+#main article .entry-meta > span:last-child:after {
+	display: none;
+}
+.archive-description {
+	float: left;
+	font-size: 0.857em;
+	margin: 0.5em 0 0;
+	padding: 0.5em 0 0 9em;
+	width: 100%;
+}
+a.more-link {
+	display: block;
+	font-weight: bold;
+	margin-top: 1em !important;
+	padding: 0.5em 0;
+	text-transform: capitalize;
+}
+a.more-link:focus,
+a.more-link:hover,
+a.more-link:active {
+	outline: 0 none;
+	text-decoration: none;
+}
+body.pen_list_plain #content a.more-link {
+	display: inline-block !important;
+	width: auto !important;
+}
+a.more-link:after {
+	content: "\f101";
+	font-family: "FontAwesome";
+	margin: 0 0 0 0.5em;
+}
+#main .search-form .search-field,
+#main .search-form .search-submit {
+	font-size: 1em;
+	font-weight: normal;
+	line-height: 1.5;
+}
+#main .search-form .search-field {
+	background: rgba(255,255,255,0.9);
+	border: 1px solid rgba(0,0,0,0.3);
+	color: #555;
+	margin: 0;
+	padding: 0.5em;
+}
+body.pen_drop_shadow #main .search-form .search-field {
+	box-shadow: 2px 2px 5px rgba(0,0,0,0.25) inset;
+}
+#main .search-form .search-field:focus,
+#main .search-form .search-field:hover,
+#main .search-form .search-field:active {
+	color: #333;
+	text-decoration: none;
+}
+#main .search-form .search-submit {
+	background: #00a9ff;
+	background: -ms-linear-gradient(top, #00a9ff 0%, #093a89 100%);
+	background: linear-gradient(to bottom, #00a9ff 0%, #093a89 100%);
+	box-shadow: 1px 1px 0 rgba(255,255,255,0.25) inset;
+	border: 1px solid #093a89;
+	border-left-color: #114fb3;
+	color: #fff;
+	font-weight: normal;
+	margin: 0;
+	padding: 0.5em 1em;
+	text-shadow: 1px 1px 1px rgba(0,0,0,0.5);
+	white-space: nowrap;
+}
+#main .search-form .search-submit:focus,
+#main .search-form .search-submit:active {
+	background: #093a89;
+	text-decoration: none;
+}
+#main .entry-footer {
+	font-size: 0.857em !important;
+	position: relative;
+}
+body.no-js #main .pen_options_overview {
+	background: #fff;
+	border-top: 1px solid #ddd;
+	float: left;
+	padding: 2em;
+	width: 100%;
+}
+#main .pen_options_overview.pen_off_screen {
+	background: #fff;
+	max-height: 100%;
+	overflow: hidden;
+	overflow-y: auto;
+	padding: 15px;
+	z-index: 200000;
+}
+body.pen_multiple #main .pen_options_overview {
+	display: none;
+	transition: top .3s;
+}
+body.pen_multiple #main .pen_options_overview.pen_visible {
+	bottom: 1em;
+	display: block;
+	left: 5%;
+	max-width: 350px;
+	position: absolute;
+	width: 90%;
+}
+#main .pen_options_overview h3 {
+	background: #333;
+	background: -ms-linear-gradient(325deg, #555555 0%, #aaaaaa 100%);
+	background: linear-gradient(125deg, #555555 0%, #aaaaaa 100%);
+	color: #fff;
+	font-size: 0.857em;
+	font-weight: normal;
+	margin: -15px -15px 0.5em;
+	padding: 1em;
+	position: relative;
+	text-transform: capitalize;
+}
+#main .pen_options_overview h3:before {
+	content: "\f085";
+	font-family: "FontAwesome";
+	margin: 0 0.5em 0 0;
+}
+#main .pen_options_overview .pen_close {
+	height: 3em;
+	overflow: hidden;
+	position: absolute;
+	right: 0;
+	text-indent: -99999px;
+	top: 0;
+	width: 3em;
+	line-height: 1;
+	z-index: 2;
+}
+#main .pen_options_overview .pen_close:after,
+#main .pen_options_overview .pen_close:before {
+	border-top: 2px solid #fff;
+	content: "";
+	position: absolute;
+	top: 50%;
+	text-indent: 0;
+	left: 0.5em;
+	text-align: center;
+	font-size: 1.286em;
+	text-shadow: 0 0 3px rgba(0,0,0,0.5);
+	transform: rotate(45deg);
+	width: 1em;
+}
+#main .pen_options_overview .pen_close:after {
+	transform: rotate(-45deg);
+}
+#main .pen_options_overview .pen_close:active:after,
+#main .pen_options_overview .pen_close:active:before {
+	border-color: #c40000;
+}
+body.pen_multiple #main .pen_options_overview_toggle {
+	border-radius: 0 3px 0 0;
+	margin: 0;
+	opacity: 0.5;
+	overflow: hidden;
+	position: relative;
+	text-indent: -99999px;
+	transition: opacity .3s;
+	width: auto;
+}
+body.pen_multiple #main .pen_options_overview_toggle:before {
+	left: 50%;
+	position: absolute;
+	text-indent: 0;
+	top: 50%;
+	transform: translate(-50%,-50%);
+}
+body.pen_multiple #main .pen_options_overview_toggle.pen_visible {
+	opacity: 1;
+}
+#main .pen_options_overview_toggle:before {
+	content: "\f085";
+	font-family: "FontAwesome";
+	font-weight: normal;
+	margin: 0 1em 0 0;
+}
+#main .pen_options_overview table {
+	box-shadow: none;
+	margin: 0;
+}
+#main .pen_options_overview table th,
+#main .pen_options_overview table td {
+	background: #fff !important;
+	border: 0 none;
+	font-weight: bold;
+	padding: 0.5em;
+}
+#main .pen_options_overview table th {
+	background: #efefef !important;
+	color: #333;
+	font-weight: normal;
+	font-size: 1em;
+	text-transform: capitalize;
+}
+#main .pen_options_overview table td {
+	font-size: 0.857em;
+}
+#main .pen_options_overview table td:last-child {
+	padding-left: 2em;
+	text-transform: capitalize;
+}
+#main .pen_options_overview .pen_option_disabled {
+	color: #c40000;
+}
+#main .pen_options_overview .pen_button {
+	font-size: 0.857em;
+	margin: 1em 0 0;
+}
+#main .comments-link a,
+#main a.post-edit-link {
+	margin-top: 1em !important;
+}
+#main .comments-link a:before,
+#main a.post-edit-link:before,
+#main .entry-footer .tags-links .pen_heading_tags:before {
+	content: "\f044";
+	font-family: "FontAwesome";
+	font-weight: normal;
+	margin: 0 1em 0 0;
+}
+#main .comments-link a:before {
+	content: "\f075";
+}
+#main .entry-footer .tags-links {
+	display: block;
+}
+#main .entry-footer .tags-links .pen_heading_tags {
+	display: inline-block;
+	font-weight: bold;
+	margin-right: 1em;
+}
+#main .entry-footer .tags-links .pen_heading_tags:before {
+	content: "\f02c";
+	font-weight: normal;
+	margin-right: 0.5em;
+}
+#main .entry-footer .tags-links a {
+	display: inline-block;
+	float: none;
+	font-weight: normal;
+	padding: 0.25em 1em !important;
+	width: auto !important;
+}
+#main .entry-footer .pen_actions .tags-links a:last-of-type {
+	margin-right: 0 !important;
+}
+body.pen_list_masonry #main .entry-footer span:last-child a {
+	margin-bottom: 0 !important;
+}
+#main .entry-content {
+	position: relative;
+}
+#main .entry-content .pen_content_wrapper a {
+	text-decoration: underline;
+}
+#main .entry-content .pen_content_wrapper a:focus,
+#main .entry-content .pen_content_wrapper a:hover,
+#main .entry-content .pen_content_wrapper a:active {
+	text-decoration: none;
+}
+#main .post.format-audio > header,
+#main .post.format-aside > header,
+#main .post.format-gallery > header,
+#main .post.format-image > header,
+#main .post.format-video > header,
+#main .post.format-quote > header,
+#main .post.format-link > header,
+#main .post.format-status > header,
+#main .status-draft > header,
+#main .post-password-required > header,
+#main .post.sticky > header {
+	overflow: hidden;
+}
+#main .post.format-audio > header:before,
+#main .post.format-audio > header:after,
+#main .post.format-aside > header:before,
+#main .post.format-aside > header:after,
+#main .post.format-gallery > header:before,
+#main .post.format-gallery > header:after,
+#main .post.format-image > header:before,
+#main .post.format-image > header:after,
+#main .post.format-video > header:before,
+#main .post.format-video > header:after,
+#main .post.format-quote > header:before,
+#main .post.format-quote > header:after,
+#main .post.format-link > header:before,
+#main .post.format-link > header:after,
+#main .post.format-status > header:before,
+#main .post.format-status > header:after,
+#main .status-draft > header:before,
+#main .status-draft > header:after,
+#main .post-password-required > header:before,
+#main .post-password-required > header:after,
+#main .post.sticky > header:before,
+#main .post.sticky > header:after {
+	color: rgba(170,170,170,0.3);
+	font-family: "FontAwesome";
+	font-size: 5em;
+	position: absolute;
+	right: 20px;
+	top: 50%;
+	transform: translateY(-50%);
+	z-index: 0;
+}
+#main .post.format-audio > header:before,
+#main .post.format-aside > header:before,
+#main .post.format-gallery > header:before,
+#main .post.format-image > header:before,
+#main .post.format-video > header:before,
+#main .post.format-quote > header:before,
+#main .post.format-link > header:before,
+#main .post.format-status > header:before,
+#main .status-draft > header:before,
+#main .post-password-required > header:before,
+#main .post.sticky > header:before {
+	font-size: 15em;
+	opacity: 0.4;
+	right: -30px;
+}
+body.pen_list_masonry.pen_multiple #main header:after {
+	display: none;
+}
+#main .post.format-audio > header:before,
+#main .post.format-audio > header:after {
+	content: "\f1c7";
+}
+#main .post.format-aside > header:before,
+#main .post.format-aside > header:after {
+	content: "\f0f6";
+}
+#main .post.format-gallery > header:before,
+#main .post.format-gallery > header:after,
+#main .post.format-image > header:before,
+#main .post.format-image > header:after {
+	content: "\f03e";
+}
+#main .post.format-video > header:before,
+#main .post.format-video > header:after {
+	content: "\f1c8";
+}
+#main .post.format-quote > header:before,
+#main .post.format-quote > header:after {
+	content: "\f10e";
+}
+#main .post.format-link > header:before,
+#main .post.format-link > header:after {
+	content: "\f0c1";
+}
+#main .post.format-status > header:before,
+#main .post.format-status > header:after {
+	content: "\f118";
+}
+#main .post-password-required > header:before,
+#main .post-password-required > header:after {
+	content: "\f023";
+}
+#main .status-draft > header:before,
+#main .status-draft > header:after {
+	content: "\f06e";
+}
+#main .post.sticky > header:before,
+#main .post.sticky > header:after {
+	content: "\f005";
+}
+@media only screen and (min-width:728px) {
+	#main .pen_share h4 {
+		border: 0 none !important;
+		clip: rect(1px,1px,1px,1px);
+		clip: rect(1px 1px 1px 1px);
+		height: 1px !important;
+		margin: 0 !important;
+		overflow: hidden !important;
+		padding: 0 !important;
+		position: absolute !important;
+		width: 1px !important;
+	}
+	#main article .entry-meta {
+		float: left;
+		margin: 1em 0 0;
+		width: 100%;
+	}
+	body.pen_list_effect_fade .pen_article_wrapper article,
+	body.pen_list_effect_enlarge .pen_article_wrapper article,
+	body.pen_list_effect_enlarge_fade .pen_article_wrapper article {
+		transition: box-shadow .5s, opacity .5s, transform .3s;
+	}
+	body.pen_list_effect_fade .pen_article_wrapper:hover article,
+	body.pen_list_effect_enlarge_fade .pen_article_wrapper:hover article {
+		opacity: 0.75;
+	}
+	body.pen_list_effect_enlarge .pen_article_wrapper article:hover,
+	body.pen_list_effect_enlarge_fade .pen_article_wrapper article:hover {
+		transform: scale(1.04,1.04);
+		z-index: 10000;
+	}
+	body.pen_drop_shadow.pen_list_effect_enlarge .pen_article_wrapper article:hover,
+	body.pen_drop_shadow.pen_list_effect_enlarge_fade .pen_article_wrapper article:hover {
+		box-shadow: 0 0 25px rgba(0,0,0,0.4), 5px 5px 15px rgba(0,0,0,0.5);
+	}
+	body.pen_list_effect_fade .pen_article_wrapper:hover article:hover,
+	body.pen_list_effect_enlarge_fade .pen_article_wrapper:hover article:hover {
+		opacity: 1;
+	}
+	body.pen_singular #main .pen_options_overview.pen_off_screen {
+		position: fixed;
+		right: -100%;
+		top: 50%;
+		transition: right .3s;
+		transform: translateY(-50%);
+		min-width: 250px;
+	}
+	body.pen_header_sticky.pen_singular #main .pen_options_overview.pen_off_screen {
+		bottom: 1em;
+		max-height: 50%;
+		top: auto;
+		transform: none;
+	}
+	body.pen_singular #main .pen_options_overview.pen_visible {
+		right: 0;
+	}
+	body.pen_singular #main .pen_options_overview_toggle {
+		padding: 1em 5em 1em 2em !important;
+		position: fixed;
+		right: -100%;
+		top: 50%;
+		transform: translateY(-50%);
+		transition: right .3s;
+		width: auto;
+		z-index: 100000;
+	}
+	body.pen_singular.pen_drop_shadow #main .pen_options_overview_toggle {
+		box-shadow: 0 0 10px rgba(0,0,0,0.5);
+	}
+	body.pen_singular #main .pen_options_overview_toggle.pen_visible {
+		right: -3em;
+	}
+	#main .entry-footer .entry-meta {
+		font-size: 1em;
+		line-height: 2;
+		margin: 1em 0;
+		text-align: right;
+	}
+	#main .entry-footer .entry-meta .byline,
+	#main .entry-footer .entry-meta .posted-on,
+	#main .entry-footer .entry-meta .cat-links {
+		display: inline-block;
+	}
+	body.pen_singular #main .entry-footer .entry-meta,
+	body.pen_list_plain #main .entry-footer .entry-meta {
+		float: right;
+		text-align: right;
+		width: auto;
+	}
+	body.pen_list_masonry #main .entry-footer .entry-meta {
+		margin: 2em 0 0;
+		text-align: center;
+	}
+	#main .entry-footer .pen_actions a {
+		margin: 1em 1em 0 0 !important;
+		width: auto !important;
+	}
+	body.pen_list_masonry #pen_masonry .comments-link,
+	body.pen_list_masonry #pen_masonry .comments-link a,
+	body.pen_list_masonry #pen_masonry .edit-link a.post-edit-link {
+		width: 100% !important;
+	}
+	body.pen_list_masonry #pen_masonry .comments-link:first-child a,
+	body.pen_list_masonry #pen_masonry .edit-link:first-child a.post-edit-link {
+		margin-top: 0 !important;
+	}
+}
+@media only screen and (min-width:728px) and (max-width:1024px) {
+	#main header h1.entry-title,
+	#main header h2.entry-title,
+	#main header h1.page-title,
+	#main header h2.page-title {
+		font-size: 1.5em;
+	}
+}
+@media only screen and (max-width:728px) {
+	body.pen_list_masonry #pen_masonry article {
+		margin: 0 0 1em !important;
+	}
+	#main img.alignleft,
+	#main img.aligncenter,
+	#main img.alignright {
+		height: auto;
+		margin: 1em 0;
+		width: 100%;
+	}
+	#main article header .entry-title {
+		width: 100%;
+	}
+	#main article .entry-meta {
+		float: left;
+		width: 100%;
+	}
+	#main .entry-header .pen_share h4 {
+		border: 0 none !important;
+		clip: rect(1px,1px,1px,1px);
+		clip: rect(1px 1px 1px 1px);
+		height: 1px !important;
+		margin: 0 !important;
+		overflow: hidden !important;
+		padding: 0 !important;
+		position: absolute !important;
+		width: 1px !important;
+	}
+	#main .entry-footer .pen_share h4 {
+		font-size: 1.5em;
+		text-align: center;
+		text-transform: capitalize;
+	}
+	body.pen_singular #main .pen_options_overview {
+		display: none;
+		transition: top .3s;
+	}
+	body.pen_singular #main .pen_options_overview.pen_visible {
+		bottom: 1em;
+		display: block;
+		left: 5%;
+		position: absolute;
+		width: 90%;
+	}
+	body.pen_singular #main .pen_options_overview_toggle {
+		border-radius: 0 3px 0 0;
+		margin: 0;
+		opacity: 0.5;
+		overflow: hidden;
+		position: relative;
+		text-indent: -99999px;
+		transition: opacity .3s;
+		width: auto;
+	}
+	body.pen_singular #main .pen_options_overview_toggle:before {
+		left: 50%;
+		position: absolute;
+		text-indent: 0;
+		top: 50%;
+		transform: translate(-50%,-50%);
+	}
+	body.pen_singular #main .pen_options_overview_toggle.pen_visible {
+		opacity: 1;
+	}
+}
+body.pen_list_header_hide #main article header.pen_element_default,
+body.pen_list_title_hide #main article header .entry-title.pen_element_default,
+body.pen_list_author_hide #main article .byline.pen_element_default,
+body.pen_list_date_hide #main article .posted-on.pen_element_default,
+body.pen_list_category_hide #main article .cat-links.pen_element_default,
+body.pen_list_thumbnail_hide #main article .post-thumbnail,
+body.pen_list_summary_hide #main article .entry-content.pen_element_default,
+body.pen_list_footer_hide #main article .entry-footer.pen_element_default,
+body.pen_list_tags_hide #main article .tags-links.pen_element_default,
+body.pen_list_button_comment_hide #main article .comments-link.pen_element_default,
+body.pen_list_button_edit_hide #main article .edit-link.pen_element_default,
+body.pen_content_header_hide #main article header,
+body.pen_content_title_hide #main article header .entry-title,
+body.pen_content_author_hide #main article .byline,
+body.pen_content_date_hide #main article .posted-on,
+body.pen_content_category_hide #main article .cat-links,
+body.pen_content_thumbnail_hide #main article .post-thumbnail,
+body.pen_content_share_hide #main article .pen_share,
+body.pen_content_footer_hide #main article .entry-footer,
+body.pen_content_tags_hide #main article .tags-links {
+	border: 0 none !important;
+	clip: rect(1px,1px,1px,1px);
+	clip: rect(1px 1px 1px 1px);
+	height: 1px !important;
+	margin: 0 !important;
+	overflow: hidden !important;
+	padding: 0 !important;
+	position: absolute !important;
+	width: 1px !important;
+}

+ 27 - 0
assets/css/pen-editor.css

@@ -0,0 +1,27 @@
+@font-face {
+	font-family: 'robotoregular';
+	src: url('../fonts/roboto/roboto-regular.eot');
+	src: url('../fonts/roboto/roboto-regular.eot?#iefix') format('embedded-opentype'),
+	url('../fonts/roboto/roboto-regular.woff') format('woff');
+	font-weight: normal;
+	font-style: normal;
+}
+body {
+	color: #333;
+	font-family: 'robotoregular', Arial, Helvetica, Sans-serif;
+}
+.wp-block,
+.wp-block[data-align=wide],
+.wp-block-cover h2,
+.wp-block-cover-image h2,
+.editor-error-boundary,
+.editor-block-toolbar,
+.edit-post-text-editor,
+.wp-block-cover .wp-block-cover-image-text,
+.wp-block-cover .wp-block-cover-text,
+.wp-block-cover-image .wp-block-cover-image-text,
+.wp-block-cover-image .wp-block-cover-text,
+.edit-post-visual-editor .editor-block-list__block[data-align=full] > .editor-block-list__block-edit > .editor-block-contextual-toolbar,
+.edit-post-visual-editor .editor-block-list__block[data-align=wide] > .editor-block-list__block-edit > .editor-block-contextual-toolbar .editor-block-toolbar {
+	max-width: 98% !important;
+}

+ 8 - 0
assets/css/pen-fonts.css

@@ -0,0 +1,8 @@
+@font-face {
+	font-family: 'FontAwesome';
+	src: url('../fonts/fontawesome/fontawesome.eot?v=4.7.0');
+	src: url('../fonts/fontawesome/fontawesome.eot?#iefix&v=4.7.0') format('embedded-opentype'),
+	url('../fonts/fontawesome/fontawesome.woff?v=4.7.0') format('woff');
+	font-weight: normal;
+	font-style: normal;
+}

+ 299 - 0
assets/css/pen-footer.css

@@ -0,0 +1,299 @@
+#pen_footer {
+	color: #808080;
+	font-size: 0.857em;
+	padding: 2em;
+	position: relative;
+	text-shadow: 1px 1px 1px rgba(0,0,0,0.75);
+}
+#pen_footer.pen_not_transparent {
+	background: #000;
+}
+body.pen_round_corners.pen_width_boxed #pen_bottom.pen_is_transparent + #pen_footer,
+body.pen_round_corners.pen_width_boxed.invisible-sidebar-bottom #pen_footer {
+	border-radius: 5px 5px 0 0;
+}
+body.pen_drop_shadow #pen_footer.pen_not_transparent {
+	box-shadow: 0 0 20px rgba(0,0,0,0.4);
+}
+#pen_footer .pen_footer_inner {
+	text-align: center;
+}
+body.pen_footer_alignment_left #pen_footer .pen_footer_inner {
+	text-align: left;
+}
+body.pen_footer_alignment_right #pen_footer .pen_footer_inner {
+	text-align: right;
+}
+#pen_footer a {
+	color: #ddd;
+	text-decoration: none;
+}
+#pen_footer a:focus,
+#pen_footer a:hover,
+#pen_footer a:active {
+	color: #fff;
+	text-decoration: none;
+}
+#pen_footer li.pen_menu_create a:before {
+	font-family: "FontAwesome";
+	content: "\f067";
+	display: inline-block;
+	margin-right: 0.5em;
+}
+#pen_footer .pen_footer_inner .pen_phone,
+#pen_footer .pen_footer_inner .site-info,
+#pen_footer .pen_footer_inner .pen_social_networks {
+	float: left;
+	margin-bottom: 1em;
+	width: 100%;
+}
+#pen_footer .pen_footer_inner .pen_phone a {
+	font-size: 1.286em;
+	font-weight: normal;
+}
+#pen_footer .pen_footer_inner .pen_social_networks {
+	margin: 0 0 2em;
+	text-align: center;
+}
+#pen_footer .pen_footer_inner .pen_social_networks ul,
+#pen_footer .pen_footer_inner .pen_social_networks li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li {
+	display: inline-block;
+	font-size: 2em;
+	margin: 0 2px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks a {
+	border: 1px solid #fff;
+	color: #fff;
+	display: inline-block;
+	font-weight: normal;
+	height: 28px;
+	line-height: 1;
+	opacity: 0.75;
+	padding: 5px;
+	text-align: center;
+	text-decoration: none;
+	transition: border-color .3s, color .3s, opacity .3s;
+	width: 28px;
+}
+body.pen_round_corners #pen_footer .pen_footer_inner .pen_social_networks a {
+	border-radius: 5px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks a:focus,
+#pen_footer .pen_footer_inner .pen_social_networks a:hover,
+#pen_footer .pen_footer_inner .pen_social_networks a:active {
+	opacity: 1;
+	outline: 0;
+	text-decoration: none;
+}
+#pen_footer .pen_footer_inner .pen_social_networks a:before {
+	display: block;
+	font-family: "FontAwesome";
+	font-size: 0.714em;
+	font-weight: normal;
+	text-align: center;
+	vertical-align: middle;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_twitter a:before {
+	content: "\f099";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_facebook a:before {
+	content: "\f09a";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_instagram a:before {
+	content: "\f16d";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_pinterest a:before {
+	content: "\f231";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_linkedin a:before {
+	content: "\f0e1";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_flickr a {
+	font-size: 0.333em !important;
+	line-height: 2.2;
+	padding: 11px 4px 12px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_flickr a:before {
+	content: "\f111\f111";
+	letter-spacing: 2px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_bitbucket a:before {
+	content: "\f171";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_github a:before {
+	content: "\f1d3";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_slack a {
+	padding-left: 2px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_slack a:before {
+	content: "\f198";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_skype a:before {
+	content: "\f17e";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_vk a {
+	padding-left: 3px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_vk a:before {
+	content: "\f189";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_telegram a {
+	padding-left: 4px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_telegram a:before {
+	content: "\f2c6";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_whatsapp a {
+	padding-left: 4px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_whatsapp a:before {
+	content: "\f232";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_rss a:before {
+	content: "\f09e";
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_email a {
+	padding-left: 4px;
+}
+#pen_footer .pen_footer_inner .pen_social_networks li.pen_email a:before {
+	content: "\f0e0";
+}
+#pen_footer .pen_footer_inner #pen_footer_menu {
+	float: left;
+	margin: 2em 0;
+	width: 100%;
+}
+#pen_footer .pen_footer_inner #pen_footer_menu ul {
+	float: left;
+	margin: 0 0 2em;
+	width: 100%;
+}
+#pen_footer .pen_footer_inner #pen_footer_menu ul,
+#pen_footer .pen_footer_inner #pen_footer_menu li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+#pen_footer .pen_footer_inner #pen_footer_menu li ul {
+	margin: 0 0 0 1em;
+}
+#pen_footer .pen_footer_inner #pen_footer_menu li li {
+	float: left;
+}
+#pen_footer .pen_footer_inner #pen_footer_menu li a {
+	display: block;
+	font-size: 1.286em;
+	padding: 0 2em;
+	position: relative;
+	text-transform: uppercase;
+}
+#pen_footer .pen_footer_inner #pen_footer_menu li li a {
+	padding: 1em 2em;
+}
+@media only screen and (min-width:728px) {
+	body.pen_footer_alignment_left #pen_footer .pen_footer_inner .pen_phone,
+	body.pen_footer_alignment_left #pen_footer .pen_footer_inner .site-info,
+	body.pen_footer_alignment_left #pen_footer .pen_footer_inner .pen_social_networks,
+	body.pen_footer_alignment_left #pen_footer .pen_footer_inner #pen_footer_menu {
+		clear: both;
+		width: auto;
+	}
+	body.pen_footer_alignment_right #pen_footer .pen_footer_inner .pen_phone,
+	body.pen_footer_alignment_right #pen_footer .pen_footer_inner .site-info,
+	body.pen_footer_alignment_right #pen_footer .pen_footer_inner .pen_social_networks,
+	body.pen_footer_alignment_right #pen_footer .pen_footer_inner #pen_footer_menu {
+		clear: both;
+		float: right;
+		width: auto;
+	}
+	body.pen_footer_alignment_left #pen_footer .pen_footer_inner #pen_footer_menu {
+		margin-left: -2%;
+	}
+	body.pen_footer_alignment_right #pen_footer .pen_footer_inner #pen_footer_menu {
+		margin-right: -2%;
+	}
+	body.pen_footer_alignment_left #pen_footer .pen_footer_inner .pen_social_networks {
+		margin-left: -2px;
+	}
+	body.pen_footer_alignment_right #pen_footer .pen_footer_inner .pen_social_networks {
+		margin-right: -2px;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu li a:after {
+		background: -ms-linear-gradient(270deg, rgba(0,0,0,0) 0%, rgba(120,120,120,1) 50%, rgba(0,0,0,0) 100%);
+		background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(120,120,120,1) 50%, rgba(0,0,0,0) 100%);
+		content: "";
+		height: 100%;
+		opacity: 0.5;
+		position: absolute;
+		right: -5px;
+		top: 0;
+		transform: rotate(-20deg);
+		width: 2px;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu li li a:after,
+	#pen_footer .pen_footer_inner #pen_footer_menu li:last-child a:after {
+		display: none;
+	}
+	body.pen_footer_alignment_left #pen_footer .pen_footer_inner #pen_footer_menu li,
+	body.pen_footer_alignment_right #pen_footer .pen_footer_inner #pen_footer_menu li {
+		float: left;
+	}
+	body.pen_footer_alignment_center #pen_footer .pen_footer_inner #pen_footer_menu li {
+		display: inline-block;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu div#secondary-menu > ul > li.page_item_has_children,
+	#pen_footer .pen_footer_inner #pen_footer_menu .menu > li.menu-item-has-children {
+		height: 100%;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu div#secondary-menu > ul > li.page_item_has_children li a,
+	#pen_footer .pen_footer_inner #pen_footer_menu .menu > li.menu-item-has-children li a {
+		padding-top: 0;
+		padding-bottom: 0;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu div#secondary-menu > ul > li.page_item_has_children,
+	#pen_footer .pen_footer_inner #pen_footer_menu div#secondary-menu > ul > li.page_item_has_children li,
+	#pen_footer .pen_footer_inner #pen_footer_menu .menu > li.menu-item-has-children,
+	#pen_footer .pen_footer_inner #pen_footer_menu .menu > li.menu-item-has-children li {
+		text-align: left;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu div#secondary-menu > ul > li.page_item_has_children ul li li,
+	#pen_footer .pen_footer_inner #pen_footer_menu .menu > li.menu-item-has-children ul li {
+		clear: both;
+	}
+}
+@media only screen and (max-width:728px) {
+	#pen_footer {
+		padding: 2em 0 !important;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu ul {
+		padding: 1em;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu ul,
+	#pen_footer .pen_footer_inner #pen_footer_menu li ul {
+		margin: 0;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu li {
+		border-bottom: 1px solid rgba(255,255,255,0.25);
+		float: left;
+		padding: 1em;
+		width: 100%;
+	}
+	body.pen_footer_alignment_left #pen_footer .pen_footer_inner #pen_footer_menu li {
+		text-align: left;
+	}
+	body.pen_footer_alignment_right #pen_footer .pen_footer_inner #pen_footer_menu li {
+		text-align: right;
+	}
+	#pen_footer .pen_footer_inner #pen_footer_menu li li {
+		border: 0 none;
+		font-size: smaller;
+		padding-bottom: 0;
+		padding-top: 0;
+	}
+}

+ 103 - 0
assets/css/pen-forms.css

@@ -0,0 +1,103 @@
+#main label,
+#main legend {
+	font-size: 1em;
+	font-weight: bold;
+	white-space: nowrap;
+}
+#main fieldset {
+	border: 0 none;
+	margin: 0;
+	padding: 0;
+}
+#main label {
+	color: rgba(120,120,120,0.75);
+	cursor: pointer;
+	display: block;
+	margin: 0 0 0.2em;
+}
+#main input,
+#main textarea {
+	line-height: 1.3;
+	margin: 0;
+	padding: 0.75em !important;
+	width: 100%;
+}
+#main input[type="checkbox"] + label,
+#main input[type="radio"] + label {
+	display: inline-block;
+	margin: 0 0 0 1em;
+}
+#main input[type="checkbox"],
+#main input[type="reset"],
+#main input[type="radio"],
+#main input[type="submit"],
+#main label input,
+#main label textarea {
+	width: auto;
+}
+#main label input,
+#main label textarea {
+	display: block;
+}
+input,
+option,
+select,
+textarea {
+	font-family: Arial;
+}
+input[type="submit"] {
+	cursor: pointer;
+}
+#page input:focus,
+#page input:active {
+	outline: 0 none;
+}
+#main textarea {
+	min-height: 70px;
+	max-width: 100%;
+	min-width: 100%;
+}
+#main input[type="email"],
+#main input[type="number"],
+#main input[type="password"],
+#main input[type="tel"],
+#main input[type="text"],
+#main input[type="url"],
+#main select,
+#main textarea {
+	background: rgba(255,255,255,0.75);
+	border: 1px solid rgba(0,0,0,0.25) !important;
+	color: #333;
+	font-size: 0.857em;
+	text-shadow: none !important;
+	transition: background-color .3s, border-color .3s, color .3s;
+}
+body.pen_drop_shadow #main input[type="email"],
+body.pen_drop_shadow #main input[type="number"],
+body.pen_drop_shadow #main input[type="password"],
+body.pen_drop_shadow #main input[type="tel"],
+body.pen_drop_shadow #main input[type="text"],
+body.pen_drop_shadow #main input[type="url"],
+body.pen_drop_shadow #main select,
+body.pen_drop_shadow #main textarea {
+	box-shadow: 1px 1px 5px rgba(0,0,0,0.2) inset;
+}
+#main button:focus,
+#main button:active,
+#main input:focus,
+#main input:active,
+#main select:focus,
+#main select:active,
+#main textarea:focus,
+#main textarea:active {
+	border-left-color: rgba(0,0,0,0.5) !important;
+	border-top-color: rgba(0,0,0,0.5) !important;
+	outline: 0 none;
+	text-decoration: none;
+}
+body.pen_round_corners button,
+body.pen_round_corners input,
+body.pen_round_corners select,
+body.pen_round_corners textarea {
+	border-radius: 5px;
+}

+ 340 - 0
assets/css/pen-general.css

@@ -0,0 +1,340 @@
+*,
+*:before,
+*:after {
+	-webkit-box-sizing: border-box;
+	-moz-box-sizing: border-box;
+	box-sizing: border-box;
+}
+body {
+	background: #333333;
+	color: #fff;
+	font-family: Arial, Helvetica, Sans-serif;
+}
+a {
+	text-decoration: none;
+}
+a,
+a > span {
+	transition: color .2s;
+}
+a:focus,
+a:hover,
+a:active {
+	text-decoration: underline;
+}
+.clearfix:after {
+	content: ".";
+	display: block;
+	height: 0;
+	clear: both;
+	visibility: hidden;
+}
+* html .clearfix {
+	height: 1%;
+}
+*:first-child + html .clearfix {
+	min-height: 1%;
+}
+#page a:focus,
+#page a:active,
+#page input:focus,
+#page input:active {
+	outline: none !important;
+}
+#wp-admin-bar-pen-theme-menu a {
+	font-weight: bold;
+}
+body.custom-background.pen_shards:before,
+body.custom-background.pen_trianglify:before {
+	background: transparent !important;
+}
+body.pen_background_lights_dim:before,
+body.custom-background.pen_background_lights_dim:before,
+body.custom-background.pen_shards.pen_background_lights_dim:before,
+body.custom-background.pen_trianglify.pen_background_lights_dim:before {
+	background: rgba(0,0,0,0.5) !important;
+	content: "";
+	height: 100%;
+	left: 0;
+	position: fixed;
+	top: 0;
+	width: 100%;
+	z-index: -1;
+}
+#page .sidebar a,
+#pen_bottom a,
+#pen_footer a {
+	transition: background-color .2s, color .2s;
+}
+a#pen_back {
+	background: #000;
+	bottom: -0.5em;
+	color: #fff;
+	opacity: 0.75;
+	padding: 0.5em 1em 1em;
+	position: fixed;
+	right: 1em;
+	text-shadow: 1px 1px 2px rgba(0,0,0,0.75);
+	transition: opacity .5s;
+	z-index: 10000;
+}
+body.pen_round_corners a#pen_back {
+	border-radius: 100px 100px 0 0;
+}
+a#pen_back:before {
+	content: "\f102";
+	font-family: "FontAwesome";
+	font-weight: normal;
+}
+a#pen_back:focus,
+a#pen_back:hover,
+a#pen_back:active {
+	opacity: 1;
+	outline: none;
+	text-decoration: none;
+}
+#page .pen_not_visible {
+	visibility: hidden; /* When we cannot use pen_element_hidden nor display:none because of the jQuery plugins such as Masonry etc. */
+}
+.pen_element_hidden {
+	border: 0 none !important;
+	clip: rect(1px,1px,1px,1px);
+	clip: rect(1px 1px 1px 1px);
+	height: 1px !important;
+	margin: 0 !important;
+	overflow: hidden !important;
+	padding: 0 !important;
+	position: absolute !important;
+	width: 1px !important;
+}
+.screen-reader-shortcut:focus {
+	background: rgba(0,0,0,0.75);
+	color: #fff;
+	left: 0;
+	top: 0;
+	width: 100%;
+}
+#page .mejs-controls div.mejs-time-rail {
+	max-width: 80%;
+}
+#page .mejs-controls a.mejs-horizontal-volume-slider {
+	width: auto;
+}
+.pen_message {
+	background: #fff9ce;
+	background: -ms-linear-gradient(325deg, #fff9ce 0%, #fff5ab 100%);
+	background: linear-gradient(155deg, #fff9ce 0%, #fff5ab 100%);
+	border-bottom: 1px solid #e3dc90;
+	color: #333;
+	float: left;
+	font-size: 0.857em;
+	padding: 1em;
+	position: relative;
+	width: 100%;
+	z-index: 50000;
+}
+.pen_message a {
+	color: #0087cc !important;
+	font-weight: bold;
+}
+.pen_message a:focus,
+.pen_message a:hover,
+.pen_message a:active {
+	color: #0087aa !important;
+}
+.pen_message p {
+	margin: 0;
+	padding: 0;
+}
+.pen_message ol {
+	margin: 0.5em 0 0 0.5em;
+}
+.pen_message_warning p:before {
+	color: #ffb900;
+	content: "\f071";
+	font-family: "FontAwesome";
+	font-weight: normal;
+	margin: 0 1em 0 0;
+}
+#page .pen_loading {
+	background: rgba(0,0,0,0.75);
+	border: 0 none;
+	color: rgba(255,255,255,0.5);
+	font-weight: normal;
+	font-size: 1.5em;
+	left: 0;
+	min-height: 100%;
+	position: fixed;
+	text-align: center;
+	text-shadow: 1px 1px 10px rgba(0,0,0,0.25);
+	top: 0;
+	width: 100%;
+	z-index: 100000;
+}
+#page .pen_loading ul,
+#page .pen_loading li {
+	line-height: 1;
+	list-style: none;
+	margin: 0 !important;
+	padding: 0 !important;
+}
+#page .pen_loading ul,
+#page .pen_loading .pen_wrap_icon {
+	position: absolute;
+	left: 50% !important;
+	top: 50% !important;
+	transform: translate(-50%,-50%);
+}
+#page .pen_loading ul {
+	list-style: none;
+	padding: 0 0 0 30px;
+}
+#page .pen_loading .pen_icon,
+#page .pen_loading .pen_wrap_icon {
+	height: 250px !important;
+	width: 250px !important;
+}
+#page .pen_loading .pen_icon {
+	background: transparent;
+	border-top: 1em solid rgba(255,255,255,0.1) !important;
+	border-right: 1em solid rgba(255,255,255,0.1) !important;
+	border-bottom: 1em solid rgba(255,255,255,0.1) !important;
+	border-left: 1em solid rgba(255,255,255,0.5) !important;
+	border-radius: 50% !important;
+	font-size: 10px !important;
+	height: 25em !important;
+	left: 0;
+	margin: 0;
+	padding: 0;
+	position: absolute;
+	top: 0;
+	width: 25em !important;
+	animation: pen_loading 0.5s infinite linear;
+}
+@keyframes pen_loading {
+	0% {
+		-ms-transform: rotate(0deg);
+		transform: rotate(0deg);
+	}
+	100% {
+		-ms-transform: rotate(360deg);
+		transform: rotate(360deg);
+	}
+}
+#page h1.page-title .pen_heading_main {
+	display: block;
+	font-size: 0.857em;
+	font-weight: normal;
+	opacity: 0.75;
+}
+body.author header .page-title,
+body.category header .page-title,
+body.date header .page-title,
+body.error404 header .page-title,
+body.search header .page-title,
+body.tag header .page-title {
+	line-height: 1.1;
+	padding-left: 105px !important;
+	position: relative;
+}
+body.author header .page-title:before,
+body.category header .page-title:before,
+body.date header .page-title:before,
+body.error404 header .page-title:before,
+body.search header .page-title:before,
+body.tag header .page-title:before {
+	background: linear-gradient(0deg, rgba(255,255,255,0.25) 0%, rgba(255,255,255,0.5) 100%);
+	color: rgba(0,0,0,0.5);
+	font-family: "FontAwesome";
+	font-weight: normal;
+	height: 78px;
+	left: 5px;
+	line-height: 1.5;
+	margin: 0 0.5em 0 0;
+	padding: 15px 0;
+	position: absolute;
+	text-align: center;
+	text-shadow: 0 1px 0 rgba(255,255,255,0.25);
+	top: 50%;
+	transform: translateY(-50%);
+	width: 78px;
+}
+body.pen_drop_shadow.author header .page-title:before,
+body.pen_drop_shadow.category header .page-title:before,
+body.pen_drop_shadow.date header .page-title:before,
+body.pen_drop_shadow.error404 header .page-title:before,
+body.pen_drop_shadow.search header .page-title:before,
+body.pen_drop_shadow.tag header .page-title:before {
+	box-shadow: 2px 2px 5px rgba(0,0,0,0.5);
+}
+body.pen_round_corners.author header .page-title:before,
+body.pen_round_corners.category header .page-title:before,
+body.pen_round_corners.date header .page-title:before,
+body.pen_round_corners.error404 header .page-title:before,
+body.pen_round_corners.search header .page-title:before,
+body.pen_round_corners.tag header .page-title:before {
+	border-radius: 10px;
+}
+body.author header .page-title:before {
+	content: "\f007";
+}
+body.category header .page-title:before {
+	content: "\f187";
+}
+body.date header .page-title:before {
+	content: "\f274";
+}
+body.error404 header .page-title:before {
+	content: "\f071";
+}
+body.search header .page-title:before {
+	content: "\f002";
+}
+body.tag header .page-title:before {
+	content: "\f02b";
+}
+#error-404-search input {
+	float: left;
+	width: auto;
+}
+body.error404 #main section.error-404 .page-header,
+body.search #main section.no-results .page-header {
+	margin-bottom: 2em;
+}
+body.error404 #main section.error-404 .page-content,
+body.search #main section.no-results .page-content {
+	font-size: 1.5em;
+	min-height: 500px;
+	overflow: hidden;
+	position: relative;
+}
+body.error404 #main section.error-404 .page-content:before,
+body.search #main section.no-results .page-content:before {
+	color: rgba(170,170,170,0.25);
+	font-family: "FontAwesome";
+	font-size: 18em;
+	line-height: 1;
+	position: absolute;
+	right: 10px;
+	top: 10px;
+	z-index: 0;
+}
+body.error404 #main section.error-404 .page-content:before {
+	content: "\f071";
+}
+body.search #main section.no-results .page-content:before {
+	content: "\f002";
+}
+@media only print {
+	body {
+		padding-top: 0 !important;
+	}
+	body.author header .page-title:before,
+	body.category header .page-title:before,
+	body.date header .page-title:before,
+	body.error404 header .page-title:before,
+	body.search header .page-title:before,
+	body.tag header .page-title:before {
+		display: none;
+	}
+}

+ 512 - 0
assets/css/pen-header.css

@@ -0,0 +1,512 @@
+#pen_header {
+	float: left;
+	left: 0;
+	margin: 0;
+	padding: 0;
+	position: relative;
+	top: 0;
+	width: 100%;
+	z-index: 50000;
+}
+#pen_header .pen_logo .customize-partial-edit-shortcut button {
+	left: 0 !important;
+}
+#pen_header .pen_header_inner {
+	background: -ms-linear-gradient(325deg, #ffffff 0%, #dddddd 100%);
+	background: linear-gradient(125deg, #ffffff 0%, #dddddd 100%);
+	float: left;
+	padding: 0;
+	position: relative;
+	width: 100%;
+	z-index: 100;
+}
+body.pen_drop_shadow #pen_header .pen_header_inner {
+	box-shadow: 0 0 15px rgba(0,0,0,0.2), 2px 2px 7px rgba(0,0,0,0.3);
+}
+body.pen_round_corners.pen_width_boxed #pen_header,
+body.pen_round_corners.pen_width_boxed #pen_header.pen_navigation_hide .pen_header_inner {
+	border-radius: 0 0 5px 5px;
+}
+body.pen_round_corners.pen_width_boxed #pen_header.pen_navigation_hide.pen_search_show_toolbar .pen_header_inner {
+	border-radius: 0;
+}
+#pen_header .pen_header_inner .pen_header_main {
+	float: left;
+	min-height: 50px;
+	position: relative;
+	width: 100%;
+	z-index: 200;
+}
+body.pen_drop_shadow #pen_header .pen_header_inner .pen_header_main {
+	text-shadow: 1px 1px 1px rgba(255,255,255,0.5);
+}
+#pen_header .pen_header_main a {
+	color: #555;
+}
+#pen_header h1 {
+	float: left;
+	margin: 0;
+	padding: 0;
+	position: relative;
+	white-space: nowrap;
+}
+#pen_header h1 a {
+	margin: 0;
+	padding: 0;
+	text-decoration: none;
+}
+#pen_header h1 a:focus,
+#pen_header h1 a:hover,
+#pen_header h1 a:active {
+	outline: none;
+}
+body.pen_header_logo_size_height #pen_header h1 .custom-logo-link img {
+	max-height: 125px;
+	width: auto;
+}
+body.pen_header_logo_size_width #pen_header h1 .custom-logo-link img {
+	height: auto;
+	max-width: 125px;
+}
+#pen_header h1 a .site-title,
+#pen_header h1 a .site-description {
+	line-height: 1;
+	margin: 0;
+	padding: 0;
+}
+#pen_header h1 a .site-description:not(:empty) {
+	margin: 0 0 1em;
+}
+body.pen_header_alignment_center #pen_header h1 a .site-description {
+	margin-bottom: 0 !important;
+}
+#pen_header h1 a .site-title {
+	font-family: "roboto_slabbold", Arial, Helvetica, Sans-serif;
+	font-weight: normal;
+	letter-spacing: -1px;
+	padding: 0.5em 0;
+}
+body.pen_header_sticky #pen_header h1 a .site-title,
+body.pen_header_sticky #pen_header h1 a .site-description,
+body.pen_header_sticky #pen_header .pen_header_main .pen_phone a {
+	transition: font-size .3s, padding .3s;
+}
+body.pen_header_sticky #pen_header.pen_header_sticked h1 a.pen_has_title .site-description {
+	padding: 0.25em 0 0;
+}
+#pen_header h1 a .site-description {
+	float: left;
+	font-size: 0.571em;
+	font-weight: normal;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+}
+#pen_header h1 .custom-logo-link {
+	margin: 0;
+}
+body.pen_header_logo_size_height #pen_header h1 .custom-logo-link img {
+	max-height: 125px;
+	width: auto;
+}
+body.pen_header_logo_size_width #pen_header h1 .custom-logo-link img {
+	height: auto;
+	max-width: 125px;
+}
+body.pen_header_sticky #pen_header h1 .custom-logo-link img {
+	transition: height .3s, max-height .3s, max-width .3s, width .3s;
+}
+body.pen_header_sticky.pen_header_logo_size_height #pen_header.pen_header_sticked h1 .custom-logo-link img {
+	max-height: 64px;
+	width: auto;
+}
+body.pen_header_sticky.pen_header_logo_size_width #pen_header.pen_header_sticked h1 .custom-logo-link img {
+	height: auto;
+	max-width: 64px;
+}
+#pen_header .pen_phone {
+	font-family: "roboto_slabregular", Arial, Helvetica, Sans-serif;
+	font-size: 1.5em;
+	line-height: 1;
+}
+#pen_header .pen_header_main .pen_phone a {
+	color: #777;
+	text-decoration: none;
+}
+#pen_header .pen_header_main .pen_phone a:focus,
+#pen_header .pen_header_main .pen_phone a:hover,
+#pen_header .pen_header_main .pen_phone a:active {
+	color: #333;
+	text-decoration: none;
+}
+body.pen_header_sticky #pen_header.pen_header_sticked h1 a .site-title,
+body.pen_header_sticky #pen_header.pen_header_sticked .pen_header_main .pen_phone a {
+	font-size: 1em;
+}
+#pen_header .pen_social_networks ul,
+#pen_header .pen_social_networks li {
+	list-style: none;
+	margin: 0;
+	padding: 0;
+}
+#pen_header .pen_social_networks a {
+	display: inline-block;
+	font-weight: normal;
+	padding: 0.25em;
+	text-decoration: none;
+	transition: color .3s;
+}
+#pen_header .pen_social_networks a:focus,
+#pen_header .pen_social_networks a:hover,
+#pen_header .pen_social_networks a:active {
+	border: 0 none;
+	color: #333;
+	outline: 0;
+	text-decoration: none;
+}
+#pen_header .pen_social_networks a:before {
+	font-family: "FontAwesome";
+	font-weight: normal;
+}
+#pen_header .pen_social_networks li {
+	display: inline-block;
+	font-size: 1.286em;
+	line-height: 1;
+	margin: 0;
+}
+#pen_header .pen_social_networks li.pen_twitter a:before {
+	content: "\f081";
+}
+#pen_header .pen_social_networks li.pen_facebook a:before {
+	content: "\f082";
+}
+#pen_header .pen_social_networks li.pen_instagram a:before {
+	content: "\f16d";
+}
+#pen_header .pen_social_networks li.pen_pinterest a:before {
+	content: "\f0d3";
+}
+#pen_header .pen_social_networks li.pen_linkedin a:before {
+	content: "\f08c";
+}
+#pen_header .pen_social_networks li.pen_bitbucket a:before {
+	content: "\f172";
+}
+#pen_header .pen_social_networks li.pen_flickr a:before {
+	content: "\f16e";
+}
+#pen_header .pen_social_networks li.pen_github a:before {
+	content: "\f1d2";
+}
+#pen_header .pen_social_networks li.pen_slack a:before {
+	content: "\f198";
+}
+#pen_header .pen_social_networks li.pen_skype a:before {
+	content: "\f17e";
+}
+#pen_header .pen_social_networks li.pen_vk a:before {
+	content: "\f189";
+}
+#pen_header .pen_social_networks li.pen_telegram a:before {
+	content: "\f2c6";
+}
+#pen_header .pen_social_networks li.pen_whatsapp a:before {
+	content: "\f232";
+}
+#pen_header .pen_social_networks li.pen_rss a:before {
+	content: "\f143";
+}
+#pen_header .pen_social_networks li.pen_email a:before {
+	content: "\f199";
+}
+#pen_header .pen_header_main .search-form {
+	position: relative;
+}
+#pen_header .pen_header_main .search-form .search-field {
+	background: rgba(255,255,255,0.9);
+	border: 0 none;
+	font-size: 0.857em;
+	line-height: 1;
+	margin-left: -1px !important;
+	padding: 0.75em 37% 0.75em 1em;
+	transition: box-shadow .2s;
+	width: 100%;
+}
+body.pen_drop_shadow #pen_header .pen_header_main .search-form .search-field {
+	box-shadow: 2px 2px 4px rgba(0,0,0,0.25) inset;
+}
+body.pen_round_corners #pen_header .pen_header_main .search-form .search-field {
+	border-radius: 50px;
+}
+#pen_header .pen_header_main .search-form .search-field:focus,
+#pen_header .pen_header_main .search-form .search-field:active {
+	outline: none !important;
+	text-decoration: none;
+}
+body.pen_drop_shadow #pen_header .pen_header_main .search-form .search-field:focus,
+body.pen_drop_shadow #pen_header .pen_header_main .search-form .search-field:active {
+	box-shadow: 2px 2px 2px rgba(0,0,0,0.2) inset, 0 0 7px #0087cc;
+}
+#pen_header .pen_header_main .search-form .search-submit {
+	background: #00a9ff;
+	background: -ms-linear-gradient(top, #00a9ff 0%, #093a89 100%);
+	background: linear-gradient(to bottom, #00a9ff 0%, #093a89 100%);
+	border: 0 none;
+	color: #fff;
+	font-weight: bold;
+	height: 100%;
+	margin-right: -1px !important;
+	min-height: 100%;
+	padding: 0.75em 0;
+	position: absolute;
+	right: 0;
+	text-align: center;
+	text-transform: uppercase;
+	top: 0;
+	width: 35%;
+	z-index: 1000;
+}
+body.pen_drop_shadow #pen_header .pen_header_main .search-form .search-submit {
+	box-shadow: 1px 1px 1px rgba(255,255,255,0.1) inset, -1px -1px 1px rgba(0,0,0,0.2) inset;
+	text-shadow: 1px 1px 2px rgba(0,0,0,0.4);
+}
+body.pen_round_corners #pen_header .pen_header_main .search-form .search-submit {
+	border-radius: 0 50px 50px 0;
+}
+#pen_header .pen_header_main .search-form .search-submit:active {
+	background: #093a89;
+	text-decoration: none;
+}
+#pen_header .pen_header_main .search-form .search-submit:focus,
+#pen_header .pen_header_main .search-form .search-submit:active {
+	outline: 0 !important;
+}
+body.pen_header_alignment_center #pen_header_primary,
+body.pen_header_alignment_center #pen_header_secondary {
+	float: left;
+	width: 100%;
+}
+@media only screen and (min-width:728px) {
+	#pen_header .pen_header_main .pen_container {
+		min-height: 55px;
+		position: relative;
+	}
+	#pen_header h1 a {
+		float: left;
+	}
+	#pen_header h1 a.custom-logo-link {
+		float: none;
+	}
+	body.pen_header_alignment_left #pen_header.pen_has_logo h1 a#site-title,
+	body.pen_header_alignment_right #pen_header.pen_has_logo h1 a#site-title,
+	body.pen_header_alignment_center #pen_header.pen_has_logo h1 a#site-title {
+		position: absolute;
+		right: 0;
+		top: 50%;
+		transform: translateY(-50%);
+	}
+	body.pen_header_alignment_left #pen_header.pen_has_logo h1 a#site-title,
+	body.pen_header_alignment_center #pen_header.pen_has_logo h1 a#site-title {
+		left: 0;
+		right: auto;
+	}
+	body.pen_header_alignment_center #pen_header .pen_header_main {
+		text-align: center;
+	}
+	body.pen_header_alignment_right #pen_header h1 {
+		float: right;
+		margin-left: 0;
+		margin-right: 0;
+	}
+	body.pen_header_alignment_center #pen_header h1 {
+		display: inline-block;
+		float: none;
+		margin-left: auto;
+		margin-right: auto;
+	}
+	body.pen_header_alignment_right #pen_header h1 a#site-title {
+		left: auto;
+		right: 0;
+	}
+	#pen_header.pen_has_logo h1 a#site-title {
+		padding-left: 145px;
+	}
+	body.pen_header_sticky #pen_header.pen_has_logo h1 a#site-title {
+		transition: padding .3s;
+	}
+	body.pen_header_sticky #pen_header.pen_header_sticked.pen_has_logo h1 a#site-title {
+		padding-left: 84px;
+	}
+	body.pen_header_alignment_right #pen_header.pen_has_logo h1 a#site-title {
+		padding-left: 0;
+		padding-right: 145px;
+	}
+	body.pen_header_sticky #pen_header.pen_header_sticked.pen_has_logo h1 a#site-title {
+		padding-right: 84px;
+	}
+	#pen_header h1 a .site-title,
+	#pen_header h1 a .site-description {
+		clear: both;
+		float: left;
+	}
+	#pen_header h1 .custom-logo-link img {
+		float: left;
+		margin: 0.5em 0;
+	}
+	body.pen_header_alignment_right #pen_header h1 .custom-logo-link img {
+		float: right;
+	}
+	#pen_header .pen_header_wrap {
+		padding: 1em 0;
+		position: absolute;
+		right: 0;
+		top: 50%;
+		transform: translateY(-50%);
+	}
+	body.pen_header_alignment_right #pen_header .pen_header_wrap {
+		left: 0;
+		right: auto;
+	}
+	body.pen_header_alignment_center #pen_header h1 {
+		margin-bottom: 0;
+	}
+	body.pen_header_alignment_center #pen_header .pen_header_wrap {
+		float: left;
+		padding-top: 0;
+		position: static;
+		right: auto;
+		text-align: center;
+		top: auto;
+		transform: none;
+		width: 100%;
+	}
+	#pen_header .pen_phone,
+	#pen_header .pen_social_networks,
+	#pen_header .pen_header_main .search-form {
+		float: left;
+		position: relative;
+	}
+	#pen_header .pen_phone {
+		margin: 7px 1.5em 0 0;
+	}
+	#pen_header .pen_social_networks {
+		margin: 2px 2em 0 0;
+	}
+	#pen_header .pen_header_main .search-form {
+		line-height: 1;
+		width: 300px;
+	}
+	#pen_header_primary,
+	#pen_header_secondary {
+		float: left;
+		margin: 0 1em 0 0;
+	}
+	#pen_header_secondary {
+		margin: 0 0 0 1em;
+	}
+	body.pen_header_alignment_center #pen_header_primary,
+	body.pen_header_alignment_center #pen_header_secondary,
+	body.pen_header_alignment_center #pen_header .pen_phone,
+	body.pen_header_alignment_center #pen_header .pen_header_main .search-form {
+		margin: 1em 0 0;
+		width: 100%;
+	}
+	body.pen_header_alignment_center #pen_header.pen_phone_hide.pen_connect_hide .pen_header_main .search-form {
+		margin: 0;
+	}
+	body.pen_header_alignment_center #pen_header .pen_phone {
+		margin-top: 0;
+	}
+	body.pen_header_alignment_center #pen_header .pen_header_main .search-form {
+		display: inline-block;
+		float: none !important;
+		width: auto !important;
+	}
+	body.pen_header_alignment_center #pen_header .pen_header_main .search-form .search-field {
+		min-width: 350px;
+	}
+	body.pen_header_alignment_center #pen_header .pen_social_networks {
+		margin: 0 0 1em;
+		width: 100%;
+	}
+}
+@media only screen and (min-width:728px) and (max-width:1024px) {
+	#pen_header h1 {
+		font-size: 1.5em;
+	}
+	#pen_header .pen_header_wrap {
+		right: 1em;
+	}
+	#pen_header .pen_header_wrap > div {
+		clear: both;
+	}
+}
+@media only screen and (max-width:728px) {
+	#pen_header .pen_header_main {
+		padding: 1em;
+	}
+	#pen_header h1 {
+		margin: 0;
+		text-align: center;
+		white-space: normal;
+		width: 100%;
+	}
+	#pen_header h1 a {
+		width: 100%;
+	}
+	#pen_header h1 img {
+		float: none;
+	}
+	#pen_header h1 a#site-title,
+	#pen_header h1 a .site-title,
+	#pen_header h1 a .site-description,
+	#pen_header .pen_phone,
+	#pen_header .pen_social_networks,
+	#pen_header .search-form {
+		float: left;
+		text-align: center;
+		width: 100%;
+	}
+	#pen_header h1 a .site-title {
+		letter-spacing: 0;
+	}
+	#pen_header h1 a .site-description {
+		line-height: 1.5;
+		margin-bottom: 0 !important;
+	}
+	#pen_header .search-form {
+		margin: 1em 0;
+	}
+	#pen_header .pen_phone {
+		font-size: 2em;
+		padding: 0.5em 0;
+	}
+	#pen_header .pen_social_networks a {
+		padding: 0.5em;
+	}
+	#pen_header .pen_social_networks a:before {
+		font-size: 2em;
+	}
+}
+@media only print {
+	#pen_header,
+	#pen_header .pen_header_wrap,
+	#pen_header_primary,
+	#pen_header_secondary,
+	#content article {
+		position: static !important;
+	}
+	#pen_header .pen_header_wrap,
+	#content article {
+		float: left;
+		width: 100%;
+	}
+	#pen_header .pen_social_networks,
+	#pen_header .search-form,
+	#pen_navigation {
+		display: none;
+	}
+	#content {
+		min-height: none !important;
+	}
+}

+ 281 - 0
assets/css/pen-layout.css

@@ -0,0 +1,281 @@
+#page .pen_container {
+	width: 100%;
+}
+#content,
+#pen_top,
+#pen_search,
+#pen_bottom,
+#pen_footer {
+	float: left;
+	padding: 2em 0;
+	width: 100%;
+}
+#pen_top {
+	padding: 0;
+}
+#pen_section {
+	float: left;
+	position: relative;
+	width: 100%;
+}
+#content {
+	min-height: 500px;
+	position: relative;
+	z-index: 2;
+}
+#content .sidebar {
+	z-index: 10;
+}
+#main {
+	position: relative;
+	z-index: 20;
+}
+#main .page-content,
+#main .entry-content,
+#main .entry-summary {
+	margin: 0;
+}
+#pen_header,
+#pen_masonry,
+#pen_right,
+#pen_search_top,
+#pen_search_left,
+#pen_search_right,
+#pen_search_bottom,
+#comments,
+#respond,
+#primary,
+#main,
+#main .entry-content,
+#main .entry-footer,
+#pen_content_top,
+#pen_content_bottom,
+#pen_footer .pen_footer_inner,
+#pen_footer_top,
+#pen_footer_top .widget,
+#pen_footer_bottom,
+#pen_footer_bottom .widget {
+	float: left;
+	width: 100%;
+}
+#pen_search_top,
+#pen_search_left,
+#pen_search_right,
+#pen_search_bottom {
+	position: relative;
+}
+#pen_left,
+#pen_right {
+	margin: 0 0 1em;
+	position: relative;
+	z-index: 400;
+}
+#pen_content_top,
+#pen_content_bottom {
+	padding: 2em;
+}
+#pen_footer_top .widget {
+	margin: 0 0 1em;
+}
+#pen_footer_left,
+#pen_footer_right {
+	float: left;
+	width: 28%;
+}
+#pen_footer_right {
+	float: right;
+}
+body.visible-sidebar-footer-left #pen_footer .pen_footer_inner,
+body.visible-sidebar-footer-right #pen_footer .pen_footer_inner {
+	width: 70%;
+}
+body.visible-sidebar-footer-left.visible-sidebar-footer-right #pen_footer .pen_footer_inner {
+	width: 40%;
+}
+@media only screen and (min-width:728px) {
+	#page .pen_container {
+		margin: 0 auto;
+		width: 98%;
+	}
+	body.pen_width_boxed #page {
+		margin: 0 auto;
+		max-width: 1200px;
+		width: 85%;
+	}
+	body.pen_width_boxed #page .pen_container {
+		width: 100%;
+	}
+	body.pen_width_boxed #pen_header .pen_header_main .pen_container {
+		width: 95%;
+	}
+	body.visible-sidebar-search-left.invisible-sidebar-search-right #pen_search_left .pen_widget_transparent {
+		padding-left: 2em;
+	}
+	body.visible-sidebar-search-right.invisible-sidebar-search-left #pen_search_right .pen_widget_transparent {
+		padding-right: 2em;
+	}
+	body.visible-sidebar-search-right #pen_search_right,
+	body.visible-sidebar-search-left #pen_search_form {
+		float: right;
+	}
+	body.visible-sidebar-search-left #pen_search_left,
+	body.visible-sidebar-search-right #pen_search_right {
+		width: 30%;
+	}
+	body.visible-sidebar-search-left #pen_search_form,
+	body.visible-sidebar-search-right #pen_search_form {
+		width: 70%;
+	}
+	body.visible-sidebar-search-left.visible-sidebar-search-right #pen_search_form {
+		float: left;
+		padding: 0 1em;
+		width: 50%;
+	}
+	body.visible-sidebar-search-left.visible-sidebar-search-right #pen_search_left,
+	body.visible-sidebar-search-left.visible-sidebar-search-right #pen_search_right {
+		width: 25%;
+	}
+	body.pen_width_default #page .pen_container,
+	body.pen_width_standard #page .pen_container {
+		max-width: 1200px;
+	}
+	#pen_left,
+	#pen_right {
+		position: absolute;
+		top: 2em;
+		width: 20%;
+	}
+	#pen_left {
+		left: 0;
+	}
+	#pen_right {
+		right: 0;
+	}
+	body.pen_main_container_left #pen_left {
+		left: auto;
+		right: 0;
+	}
+	body.visible-sidebar-left.visible-sidebar-right.pen_main_container_left #pen_left {
+		left: 58%;
+	}
+	body.visible-sidebar-left.visible-sidebar-right.pen_main_container_right #pen_right {
+		left: 22%;
+		right: auto;
+	}
+	body.pen_main_container_right #pen_right {
+		left: 0;
+		right: auto;
+	}
+	body.pen_main_container_left #pen_right {
+		left: auto;
+		right: 0;
+	}
+	body.pen_main_container_left #primary {
+		float: left;
+	}
+	body.pen_main_container_right #primary {
+		float: right;
+	}
+	body.visible-sidebar-left #primary {
+		padding-left: 22%;
+	}
+	body.visible-sidebar-right #primary {
+		padding-right: 22%;
+	}
+	body.visible-sidebar-left.pen_main_container_left #primary {
+		padding-left: 0;
+		padding-right: 22%;
+	}
+	body.visible-sidebar-right.pen_main_container_right #primary {
+		padding-left: 22%;
+		padding-right: 0;
+	}
+	body.visible-sidebar-left.visible-sidebar-right.pen_main_container_left #primary {
+		padding-left: 0;
+		padding-right: 43%;
+	}
+	body.visible-sidebar-left.visible-sidebar-right.pen_main_container_right #primary {
+		padding-left: 43%;
+		padding-right: 0;
+	}
+	#pen_masonry article,
+	body.pen_masonry_columns_4 #pen_masonry article {
+		width: 24% !important;
+	}
+	body.pen_masonry_columns_4 #pen_masonry article .mejs-controls div.mejs-time-rail {
+		max-width: 100px;
+	}
+	body.pen_masonry_columns_4 #page .mejs-controls .mejs-time-rail span,
+	body.pen_masonry_columns_4 #page .mejs-controls .mejs-time-rail a {
+		max-width: 80px;
+	}
+	body.pen_masonry_columns_5 #pen_masonry article {
+		width: 19% !important;
+	}
+	body.pen_masonry_columns_5 #pen_masonry article .mejs-controls div.mejs-time-rail {
+		max-width: 90px;
+	}
+	body.pen_masonry_columns_5 #page .mejs-controls .mejs-time-rail span,
+	body.pen_masonry_columns_5 #page .mejs-controls .mejs-time-rail a {
+		max-width: 70px;
+	}
+	body.pen_masonry_columns_5.visible-sidebar-left #pen_masonry article,
+	body.pen_masonry_columns_5.visible-sidebar-right #pen_masonry article,
+	body.pen_masonry_columns_4.visible-sidebar-left #pen_masonry article,
+	body.pen_masonry_columns_4.visible-sidebar-right #pen_masonry article,
+	body.pen_masonry_columns_3 #pen_masonry article {
+		width: 32.33% !important;
+	}
+	body.visible-sidebar-left.visible-sidebar-right #pen_masonry article,
+	body.pen_masonry_columns_5.visible-sidebar-left.visible-sidebar-right #pen_masonry article,
+	body.pen_masonry_columns_4.visible-sidebar-left.visible-sidebar-right #pen_masonry article,
+	body.pen_masonry_columns_3.visible-sidebar-right.visible-sidebar-left #pen_masonry article,
+	body.pen_masonry_columns_2 #pen_masonry article {
+		width: 49% !important;
+	}
+}
+@media only screen and (min-width:728px) and (max-width:1024px) and (orientation:portrait) {
+	body.pen_masonry_columns_4 #pen_masonry article,
+	body.pen_masonry_columns_5 #pen_masonry article {
+		width: 32.33% !important;
+	}
+	body.pen_masonry_columns_4.visible-sidebar-left #pen_masonry article,
+	body.pen_masonry_columns_4.visible-sidebar-right #pen_masonry article,
+	body.pen_masonry_columns_5.visible-sidebar-left #pen_masonry article,
+	body.pen_masonry_columns_5.visible-sidebar-right #pen_masonry article {
+		width: 49% !important;
+	}
+	body.pen_masonry_columns_4.visible-sidebar-left.visible-sidebar-right #pen_masonry article,
+	body.pen_masonry_columns_5.visible-sidebar-left.visible-sidebar-right #pen_masonry article {
+		width: 100% !important;
+	}
+}
+@media only screen and (max-width:728px) {
+	body.pen_width_boxed #page {
+		margin: 0 auto;
+		width: 95%;
+	}
+	#primary {
+		margin: 0 0 1em;
+	}
+	#content,
+	#pen_search,
+	#pen_content_top,
+	#pen_content_bottom,
+	#pen_bottom,
+	#pen_footer {
+		padding: 1em;
+	}
+	#pen_left,
+	#pen_right,
+	#pen_bottom {
+		float: left;
+		padding: 1em 0;
+		width: 100%;
+	}
+	#pen_footer .pen_footer_inner,
+	#pen_footer_left,
+	#pen_footer_right {
+		width: 100%;
+	}
+}

+ 254 - 0
assets/css/pen-menus.css

@@ -0,0 +1,254 @@
+#page .pen_jump_menu {
+	min-width: 150px;
+	position: absolute;
+	right: 10px;
+	top: 10px;
+	z-index: 100000;
+}
+#pen_section > .pen_jump_menu {
+	top: 80px;
+}
+#page .pen_jump_menu h4 {
+	background: #333;
+	background: -ms-linear-gradient(325deg, #404040 0%, #a0a0a0 100%);
+	background: linear-gradient(125deg, #404040 0%, #a0a0a0 100%);
+	border-radius: 5px 20px 0 0;
+	color: rgba(255,255,255,0.75);
+	font-size: 12px;
+	line-height: 1.5;
+	margin: 0;
+	padding: 5px 40px 5px 10px;
+	text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+}
+#page .pen_jump_menu h4 span {
+	color: #fff;
+	display: block;
+	font-weight: bold;
+}
+#page .pen_jump_menu h4 span span.pen_only {
+	background: #7f7f7f;
+	border-radius: 100px;
+	box-shadow: 1px 1px 3px rgba(0,0,0,0.75) inset;
+	color: #fff;
+	cursor: help;
+	display: inline-block;
+	font-size: 0.857em;
+	font-weight: bold;
+	margin: 0 5px 0 0;
+	padding-left: 5px;
+	padding-right: 5px;
+	text-shadow: 1px 1px 3px rgba(0,0,0,0.5);
+}
+#page .pen_jump_menu button.pen_toggle {
+	background: transparent !important;
+	border: 0 none !important;
+	cursor: pointer;
+	height: 32px;
+	line-height: 1.5;
+	opacity: 0.5;
+	position: absolute;
+	right: 0;
+	top: 0;
+	transition: opacity .3s;
+	width: 32px;
+}
+#page .pen_jump_menu .pen_toggle:focus,
+#page .pen_jump_menu .pen_toggle:hover,
+#page .pen_jump_menu .pen_toggle:active,
+#page *:hover > .pen_jump_menu .pen_toggle {
+	opacity: 1;
+}
+#page .pen_jump_menu .pen_toggle:before,
+#page .pen_jump_menu .pen_toggle:after {
+	border-radius: 100px;
+	content: '';
+	height: 32px;
+	position: absolute;
+	right: 0;
+	top: 0;
+	width: 32px;
+}
+#page .pen_jump_menu .pen_toggle:before {
+	background: rgba(0,0,0,0.25);
+	border: 2px solid #fff;
+	box-shadow: 0 0 5px rgba(0,0,0,0.5), 0 0 1px #000;
+	color: #fff;
+	content: "\f040";
+	font-family: "FontAwesome";
+	font-size: 18px;
+	font-weight: normal;
+	text-align: center;
+	text-shadow: 0 0 5px rgba(0,0,0,0.5), 0 0 1px #000;
+}
+#page .pen_jump_menu .pen_toggle:after {
+	border: 1px solid rgba(255,255,255,0.5);
+	box-shadow: 0 0 2px rgba(0,0,0,0.2), 0 0 2px rgba(0,0,0,0.2) inset;
+}
+#page *:hover > .pen_jump_menu .pen_toggle:not(.pen_expanded):after {
+	animation: pen_jump_menu_toggle 10s infinite ease-in-out;
+	display: block;
+}
+#page .pen_jump_menu .pen_toggle:not(.pen_expanded):after,
+#page *:hover > .pen_jump_menu:not(.pen_expanded):pen_menu_wrapper:hover .pen_toggle:after {
+	display: none;
+}
+@keyframes pen_jump_menu_toggle {
+	0% {
+		transform: scale(1,1);
+	}
+	5%,
+	100% {
+		opacity: 0;
+		transform: scale(2,2);
+	}
+}
+#page .pen_jump_menu .pen_toggle.pen_expanded:before {
+	background: #a00;
+	content: "\f00d" !important;
+}
+#page .pen_jump_menu .pen_menu_wrapper {
+	border-radius: 5px 20px 5px 5px;
+	box-shadow: 0 2px 7px rgba(0,0,0,0.5);
+}
+#page .pen_jump_menu ul {
+	list-style: none !important;
+	margin: 0 !important;
+	padding: 0 !important;
+	width: 100%;
+}
+#page .pen_jump_menu ul li,
+#page .pen_jump_menu ul a {
+	clear: both;
+	float: left;
+	width: 100%;
+}
+#page .pen_jump_menu ul a {
+	background: rgba(240,240,240,0.95);
+	border-bottom: 1px solid #ccc;
+	color: #04a !important;
+	font-size: 12px;
+	font-weight: bold;
+	line-height: 1.3;
+	margin: 0;
+	padding: 7px 10px;
+	text-decoration: none;
+	text-shadow: none;
+	transition: unset !important;
+}
+#page .pen_jump_menu ul li:last-child a {
+	border: 0 none;
+	border-radius: 0 0 5px 5px;
+}
+#page .pen_jump_menu ul a:focus,
+#page .pen_jump_menu ul a:hover,
+#page .pen_jump_menu ul a:active {
+	background: rgba(0,70,170,0.95);
+	color: #fff !important;
+}
+#page .pen_jump_menu ul a span {
+	border: 0 none !important;
+	clip: rect(1px,1px,1px,1px);
+	clip: rect(1px 1px 1px 1px);
+	height: 1px !important;
+	margin: 0 !important;
+	overflow: hidden !important;
+	padding: 0 !important;
+	position: absolute !important;
+	width: 1px !important;
+}
+#page .pen_jump_menu#pen_jump_menu_color_schemes,
+#page .pen_jump_menu#pen_jump_menu_font_presets {
+	bottom: 100px;
+	left: calc(50% - 175px);
+	right: auto;
+	position: fixed;
+	top: auto;
+}
+#page .pen_jump_menu#pen_jump_menu_font_presets {
+	left: calc(50% - 125px);
+}
+#page .pen_jump_menu#pen_jump_menu_color_schemes .pen_toggle:before {
+	content: "\f1fc";
+}
+#page .pen_jump_menu#pen_jump_menu_font_presets .pen_toggle:before {
+	content: "\f031";
+}
+#pen_jump_menu_color_schemes li {
+	position: relative;
+}
+#pen_jump_menu_color_schemes li:before {
+	border-radius: 3px;
+	content: "";
+	left: 5px;
+	height: 14px;
+	position: absolute;
+	top: 50%;
+	transform: translateY(-50%);
+	width: 14px;
+	z-index: 200;
+}
+#pen_jump_menu_color_schemes li a {
+	padding-left: 25px !important;
+	position: relative;
+	z-index: 100;
+}
+#pen_jump_menu_color_schemes li:nth-child(1):before {
+	background: -ms-linear-gradient(325deg, #00a9ff 0%, #000000 100%);
+	background: linear-gradient(125deg, #00a9ff 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(2):before {
+	background: -ms-linear-gradient(325deg, #fb7c00 0%, #000000 100%);
+	background: linear-gradient(125deg, #fb7c00 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(3):before {
+	background: -ms-linear-gradient(325deg, #00ac81 0%, #000000 100%);
+	background: linear-gradient(125deg, #00ac81 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(4):before {
+	background: -ms-linear-gradient(325deg, #4b00f2 0%, #000000 100%);
+	background: linear-gradient(125deg, #4b00f2 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(5):before {
+	background: -ms-linear-gradient(325deg, #003078 0%, #000000 100%);
+	background: linear-gradient(125deg, #003078 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(6):before {
+	background: -ms-linear-gradient(325deg, #7f447f 0%, #000000 100%);
+	background: linear-gradient(125deg, #7f447f 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(7):before {
+	background: -ms-linear-gradient(325deg, #c00000 0%, #000000 100%);
+	background: linear-gradient(125deg, #c00000 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(8):before {
+	background: -ms-linear-gradient(325deg, #df00d2 0%, #000000 100%);
+	background: linear-gradient(125deg, #df00d2 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(9):before {
+	background: -ms-linear-gradient(325deg, #8bcb00 0%, #000000 100%);
+	background: linear-gradient(125deg, #8bcb00 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(10):before {
+	background: -ms-linear-gradient(325deg, #ffd800 0%, #000000 100%);
+	background: linear-gradient(125deg, #ffd800 0%, #000000 100%);
+}
+#pen_jump_menu_color_schemes li:nth-child(11):before {
+	background: -ms-linear-gradient(325deg, #00d3cf 33%, #000000 34%, #000000 74%, #255d5b 75%);
+	background: linear-gradient(125deg, #00d3cf 33%, #000000 34%, #000000 74%, #255d5b 75%);
+}
+#pen_jump_menu_color_schemes li:nth-child(12):before {
+	background: -ms-linear-gradient(325deg, #00b7ff 33%, #000000 34%, #000000 74%, #555555 75%);
+	background: linear-gradient(125deg, #00b7ff 33%, #000000 34%, #000000 74%, #555555 75%);
+}
+#pen_jump_menu_color_schemes li:nth-child(13):before {
+	background: -ms-linear-gradient(325deg, #f07c45 33%, #000000 34%, #000000 74%, #ffffff 75%);
+	background: linear-gradient(125deg, #f07c45 33%, #000000 34%, #000000 74%, #ffffff 75%);
+}
+#pen_jump_menu_color_schemes li:nth-child(14):before {
+	background: -ms-linear-gradient(325deg, #3c97de 33%, #00050a 34%, #00050a 74%, #ffca00 75%);
+	background: linear-gradient(125deg, #3c97de 33%, #00050a 34%, #00050a 74%, #ffca00 75%);
+}
+#pen_jump_menu_color_schemes li:nth-child(15):before {
+	background: -ms-linear-gradient(325deg, #ffed00 33%, #072b5f 34%, #072b5f 74%, #1a74cc 75%);
+	background: linear-gradient(125deg, #ffed00 33%, #072b5f 34%, #072b5f 74%, #1a74cc 75%);
+}

+ 871 - 0
assets/css/pen-navigation.css

@@ -0,0 +1,871 @@
+#pen_navigation {
+	background: #00a9ff;
+	background: -ms-linear-gradient(325deg, #00a9ff 0%,#093a89 100%);
+	background: linear-gradient(125deg, #00a9ff 0%,#093a89 100%);
+	float: left;
+	line-height: 1;
+	position: relative;
+	width: 100%;
+	z-index: 100;
+}
+body.pen_round_corners.pen_width_boxed #pen_header.pen_navigation_show .pen_header_inner {
+	border-radius: 0 0 7px 7px;
+}
+body.pen_round_corners.pen_width_boxed #pen_navigation {
+	border-radius: 0 0 5px 5px;
+}
+body.pen_round_corners #pen_header.pen_search_show_toolbar #pen_navigation {
+	border-radius: 0;
+}
+#pen_navigation:before,
+#pen_navigation:after {
+	background: rgba(0,0,0,0.1);
+	content: "";
+	height: 1px;
+	left: 0;
+	position: absolute;
+	top: 0;
+	width: 100%;
+}
+#pen_navigation:after {
+	bottom: 0;
+	top: auto;
+	width: 100%;
+}
+body.pen_round_corners.pen_width_boxed #pen_navigation:after {
+	border-radius: 0 0 5px 5px;
+}
+#pen_navigation,
+#pen_navigation ul,
+#pen_navigation li {
+	margin: 0;
+	padding: 0;
+}
+#pen_navigation li {
+	position: relative;
+}
+#pen_navigation ul ul {
+	background: #004d98;
+	background: -ms-linear-gradient(325deg, #004d98 0%,#093a89 100%);
+	background: linear-gradient(125deg, #004d98 0%,#093a89 100%);
+}
+body.pen_round_corners #pen_navigation ul ul,
+body.pen_round_corners #pen_navigation li:last-child > a {
+	border-radius: 0 0 5px 5px;
+}
+#pen_navigation div#primary-menu > ul,
+#pen_navigation ul#primary-menu,
+#pen_navigation li {
+	float: left;
+	list-style: none;
+}
+#pen_navigation div#primary-menu > ul,
+#pen_navigation ul#primary-menu {
+	padding: 0;
+	width: 100%;
+}
+#pen_navigation li.pen_menu_create a:before {
+	font-family: "FontAwesome";
+	content: "\f067";
+	display: inline-block;
+	margin-right: 0.5em;
+}
+#pen_navigation li.page_item_has_children > ul,
+#pen_navigation li.menu-item-has-children > ul {
+	display: none;
+	left: 0;
+	position: absolute;
+	top: 100%;
+	z-index: 120;
+}
+body.pen_drop_shadow #pen_navigation li.page_item_has_children > ul,
+body.pen_drop_shadow #pen_navigation li.menu-item-has-children > ul {
+	box-shadow: 0 0 7px rgba(0,0,0,0.5);
+}
+#pen_navigation li li.page_item_has_children > ul,
+#pen_navigation li li.menu-item-has-children > ul {
+	left: 100%;
+	top: 0;
+}
+#pen_navigation li.page_item_has_children > ul li,
+#pen_navigation li.menu-item-has-children > ul li {
+	float: left;
+	white-space: nowrap;
+	min-width: 14em;
+	width: 100%;
+}
+#pen_navigation div#primary-menu > ul li:hover > ul,
+#pen_navigation ul#primary-menu li:hover > ul,
+#pen_navigation div#primary-menu > ul li.sfHover > ul,
+#pen_navigation ul#primary-menu li.sfHover > ul {
+	display: block;
+}
+#pen_navigation a {
+	color: #c5e2ff;
+	float: left;
+	font-family: "roboto_condensedregular", Arial, Helvetica, Sans-serif;
+	font-size: 1.143em;
+	font-weight: normal;
+	padding: 1em 1.5em;
+	position: relative;
+	text-decoration: none;
+	text-shadow: 1px 1px 1px rgba(0,0,0,0.5);
+	transition: background-color .2s, color .2s, opacity .5s;
+	width: 100%;
+}
+body.pen_header_sticky #pen_header #pen_navigation a {
+	transition: background-color .2s, color .2s, font-size .3s, opacity .5s;
+}
+body.pen_header_sticky #pen_header.pen_header_sticked #pen_navigation a {
+	font-size: 1em;
+}
+#pen_navigation li:last-child a {
+	border: 0 none;
+}
+#pen_navigation li li a {
+	font-size: 1em;
+	padding: 1.25em 2em;
+	position: relative;
+	text-transform: none;
+}
+#pen_navigation li li li:first-child:after {
+	display: none;
+}
+#pen_navigation li.sfHover > a,
+#pen_navigation a:focus,
+#pen_navigation a:hover,
+#pen_navigation a:active {
+	color: #fff;
+	outline: none;
+	text-decoration: none;
+}
+#pen_navigation li li > a:focus,
+#pen_navigation li li > a:hover,
+#pen_navigation li li > a:active,
+#pen_navigation li li.sfHover > a {
+	background: rgba(0,0,0,0.1);
+	text-decoration: none;
+}
+#pen_navigation.pen_separator_1 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_1 ul#primary-menu > li:after {
+	background: -ms-linear-gradient(270deg, rgba(0,0,0,0) 0%, rgba(255,255,255,0.9) 50%, rgba(0,0,0,0) 100%);
+	background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(255,255,255,0.9) 50%, rgba(0,0,0,0) 100%);
+	content: "";
+	height: 50%;
+	opacity: 0.4;
+	position: absolute;
+	right: -3px;
+	top: 25%;
+	transform: rotate(-20deg);
+	width: 1px;
+}
+#pen_navigation.pen_separator_2 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_2 ul#primary-menu > li:after {
+	background: -ms-linear-gradient(270deg, rgba(0,0,0,0) 0%, rgba(255,255,255,0.9) 50%, rgba(0,0,0,0) 100%);
+	background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(255,255,255,0.9) 50%, rgba(0,0,0,0) 100%);
+	content: "";
+	height: 50%;
+	opacity: 0.4;
+	position: absolute;
+	right: -3px;
+	top: 25%;
+	transform: rotate(20deg);
+	width: 1px;
+}
+#pen_navigation.pen_separator_3 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_3 ul#primary-menu > li:after {
+	background: -ms-linear-gradient(270deg, rgba(0,0,0,0) 0%, rgba(255,255,255,0.9) 50%, rgba(0,0,0,0) 100%);
+	background: linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(255,255,255,0.9) 50%, rgba(0,0,0,0) 100%);
+	content: "";
+	height: 50%;
+	opacity: 0.4;
+	position: absolute;
+	right: -2px;
+	top: 25%;
+	width: 1px;
+}
+#pen_navigation.pen_separator_submenu_1 li li:after,
+#pen_navigation.pen_separator_submenu_2 li li:after,
+#pen_navigation.pen_separator_submenu_3 li li:after {
+	background: -ms-linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 25%, rgba(255,255,255,0) 100%);
+	background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 25%, rgba(255,255,255,0) 100%);
+	content: "";
+	height: 1px;
+	left: 0;
+	opacity: 0.3;
+	position: absolute;
+	top: 0;
+	width: 100%;
+}
+#pen_navigation.pen_separator_submenu_2 li li:after {
+	background: -ms-linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,0) 100%);
+	background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 50%, rgba(255,255,255,0) 100%);
+}
+#pen_navigation.pen_separator_submenu_3 li li:after {
+	background: -ms-linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 75%, rgba(255,255,255,0) 100%);
+	background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 75%, rgba(255,255,255,0) 100%);
+}
+#pen_navigation.pen_separator_4 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_4 ul#primary-menu > li:after {
+	background: #000;
+	content: "";
+	height: 40%;
+	opacity: 0.5;
+	position: absolute;
+	right: 0;
+	top: 30%;
+	width: 1px;
+}
+#pen_navigation.pen_separator_submenu_4 li li:after {
+	background: #000;
+	content: "";
+	height: 1px;
+	left: 5%;
+	opacity: 0.3;
+	position: absolute;
+	top: 0;
+	width: 90%;
+}
+#pen_navigation.pen_separator_5 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_5 ul#primary-menu > li:after {
+	background: #000;
+	content: "";
+	height: 100%;
+	opacity: 0.25;
+	position: absolute;
+	right: 0;
+	top: 0;
+	width: 1px;
+}
+#pen_navigation.pen_separator_6 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_6 ul#primary-menu > li:after,
+#pen_navigation.pen_separator_6 div#primary-menu > ul > li:before,
+#pen_navigation.pen_separator_6 ul#primary-menu > li:before {
+	background: #000;
+	content: "";
+	height: 100%;
+	opacity: 0.25;
+	position: absolute;
+	right: 0;
+	top: 0;
+	width: 1px;
+}
+#pen_navigation.pen_separator_6 div#primary-menu > ul > li:first-child:before,
+#pen_navigation.pen_separator_6 ul#primary-menu > li:first-child:before,
+body.pen_navigation_alignment_right #pen_navigation.pen_separator_6 div#primary-menu > ul > li:last-child:before,
+body.pen_navigation_alignment_right #pen_navigation.pen_separator_6 ul#primary-menu > li:last-child:before { left: 0;
+	right: auto;
+}
+body.pen_navigation_alignment_right #pen_navigation.pen_separator_6 div#primary-menu > ul > li:first-child:before,
+body.pen_navigation_alignment_right #pen_navigation.pen_separator_6 ul#primary-menu > li:first-child:before {
+	left: auto;
+	right: 0;
+}
+#pen_navigation.pen_separator_submenu_5 li li:after,
+#pen_navigation.pen_separator_submenu_6 li li:after {
+	background: #000;
+	content: "";
+	height: 1px;
+	left: 0;
+	opacity: 0.3;
+	position: absolute;
+	top: 0;
+	width: 100%;
+}
+#pen_navigation.pen_separator_submenu_6 li li:after {
+	left: 10%;
+	width: 80%;
+}
+#pen_navigation.pen_separator_submenu_6 li li:first-child:after {
+	display: block;
+}
+#pen_navigation.pen_separator_7 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_7 ul#primary-menu > li:after {
+	background: #000;
+	border-radius: 50px;
+	content: "";
+	height: 10px;
+	opacity: 0.25;
+	position: absolute;
+	right: -5px;
+	top: 50%;
+	transform: translateY(-50%);
+	width: 10px;
+}
+#pen_navigation.pen_separator_submenu_7 li li:after {
+	background: #000;
+	border-radius: 50px;
+	content: "";
+	height: 10px;
+	left: 10px;
+	opacity: 0.25;
+	position: absolute;
+	top: 50%;
+	transform: translateY(-50%);
+	width: 10px;
+}
+#pen_navigation.pen_separator_submenu_7 li li:first-child:after {
+	display: block;
+}
+#pen_navigation.pen_separator_8 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_8 ul#primary-menu > li:after {
+	border: 3px solid #000;
+	border-radius: 100px;
+	content: "";
+	height: 10px;
+	opacity: 0.25;
+	position: absolute;
+	right: -5px;
+	top: 50%;
+	transform: translateY(-50%);
+	width: 10px;
+}
+#pen_navigation.pen_separator_submenu_8 li li:after {
+	border: 3px solid #000;
+	border-radius: 50px;
+	content: "";
+	height: 10px;
+	left: 10px;
+	opacity: 0.25;
+	position: absolute;
+	top: 50%;
+	transform: translateY(-50%);
+	width: 10px;
+}
+#pen_navigation.pen_separator_submenu_8 li li:first-child:after {
+	display: block;
+}
+#pen_navigation.pen_separator_9 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_9 ul#primary-menu > li:after {
+	border: 3px solid #000;
+	content: "";
+	height: 10px;
+	opacity: 0.25;
+	position: absolute;
+	right: 0;
+	top: 50%;
+	transform: rotate(45deg) translateY(calc(-50% - 2px));
+	width: 10px;
+}
+#pen_navigation.pen_separator_submenu_9 li li:after {
+	border: 3px solid #000;
+	content: "";
+	height: 10px;
+	left: 5px;
+	opacity: 0.25;
+	position: absolute;
+	top: 50%;
+	transform: rotate(45deg) translateY(calc(-50% - 2px));
+	width: 10px;
+}
+#pen_navigation.pen_separator_10 div#primary-menu > ul > li:after,
+#pen_navigation.pen_separator_10 ul#primary-menu > li:after {
+	color: #000;
+	content: "..";
+	font-size: 2em;
+	font-weight: bold;
+	height: 20px;
+	letter-spacing: -2px;
+	line-height: 0;
+	opacity: 0.25;
+	position: absolute;
+	right: -17px;
+	text-align: center;
+	top: 50%;
+	transform: translate(-50%,calc(-50% - 2px)) rotate(90deg);
+	width: 20px;
+}
+#pen_navigation.pen_separator_submenu_10 li li:after {
+	color: #000;
+	content: "..";
+	font-size: 2em;
+	font-weight: bold;
+	left: 1em;
+	letter-spacing: -2px;
+	line-height: 0;
+	opacity: 0.25;
+	position: absolute;
+	text-align: center;
+	top: -5px;
+}
+#pen_navigation.pen_separator_submenu_10 li li:first-child:after {
+	display: none;
+}
+body.pen_navigation_alignment_left #pen_navigation div#primary-menu > ul > li:last-child:after,
+body.pen_navigation_alignment_center #pen_navigation div#primary-menu > ul > li:last-child:after,
+body.pen_navigation_alignment_right #pen_navigation div#primary-menu > ul > li:first-child:after,
+body.pen_navigation_alignment_left #pen_navigation ul#primary-menu > li:last-child:after,
+body.pen_navigation_alignment_center #pen_navigation ul#primary-menu > li:last-child:after,
+body.pen_navigation_alignment_right #pen_navigation ul#primary-menu > li:first-child:after {
+	display: none;
+}
+#pen_navigation.pen_separator_6 div#primary-menu > ul > li:first-child:after,
+#pen_navigation.pen_separator_6 ul#primary-menu > li:first-child:after,
+#pen_navigation.pen_separator_6 div#primary-menu > ul > li:last-child:after,
+#pen_navigation.pen_separator_6 ul#primary-menu > li:last-child:after {
+	display: block;
+}
+#pen_navigation.pen_hover_1 div#primary-menu > ul > li,
+#pen_navigation.pen_hover_1 ul#primary-menu > li {
+	padding: 1em;
+}
+#pen_navigation.pen_hover_1 div#primary-menu > ul > li > a,
+#pen_navigation.pen_hover_1 ul#primary-menu > li > a {
+	border-radius: 100px;
+	padding: 0.5em 1em;
+}
+#pen_navigation.pen_hover_1 div#primary-menu > ul > li.sfHover > a,
+#pen_navigation.pen_hover_1 div#primary-menu > ul > li > a:focus,
+#pen_navigation.pen_hover_1 div#primary-menu > ul > li > a:hover,
+#pen_navigation.pen_hover_1 div#primary-menu > ul > li > a:active,
+#pen_navigation.pen_hover_1 div#primary-menu > ul > li.current-menu-item > a,
+#pen_navigation.pen_hover_1 ul#primary-menu > li.sfHover > a,
+#pen_navigation.pen_hover_1 ul#primary-menu > li > a:focus,
+#pen_navigation.pen_hover_1 ul#primary-menu > li > a:hover,
+#pen_navigation.pen_hover_1 ul#primary-menu > li > a:active,
+#pen_navigation.pen_hover_1 ul#primary-menu > li.current-menu-item > a {
+	background: rgba(0,0,0,0.5);
+}
+#pen_navigation.pen_hover_2 div#primary-menu > ul > li,
+#pen_navigation.pen_hover_2 ul#primary-menu > li {
+	padding: 1em;
+}
+#pen_navigation.pen_hover_2 div#primary-menu > ul > li > a,
+#pen_navigation.pen_hover_2 ul#primary-menu > li > a {
+	border-radius: 0;
+	padding: 0.5em 1em;
+}
+#pen_navigation.pen_hover_2 div#primary-menu > ul > li.sfHover > a,
+#pen_navigation.pen_hover_2 div#primary-menu > ul > li > a:focus,
+#pen_navigation.pen_hover_2 div#primary-menu > ul > li > a:hover,
+#pen_navigation.pen_hover_2 div#primary-menu > ul > li > a:active,
+#pen_navigation.pen_hover_2 div#primary-menu > ul > li.current-menu-item > a,
+#pen_navigation.pen_hover_2 ul#primary-menu > li.sfHover > a,
+#pen_navigation.pen_hover_2 ul#primary-menu > li > a:focus,
+#pen_navigation.pen_hover_2 ul#primary-menu > li > a:hover,
+#pen_navigation.pen_hover_2 ul#primary-menu > li > a:active,
+#pen_navigation.pen_hover_2 ul#primary-menu > li.current-menu-item > a {
+	background: rgba(0,0,0,0.5);
+}
+#pen_navigation.pen_hover_3 div#primary-menu > ul > li > a:after,
+#pen_navigation.pen_hover_3 ul#primary-menu > li > a:after {
+	background: #c5e2ff;
+	bottom: 0;
+	content: "";
+	height: 3px;
+	left: 0;
+	opacity: 0;
+	position: absolute;
+	transition: opacity .3s;
+	width: 100%;
+}
+#pen_navigation.pen_hover_3 div#primary-menu > ul > li.sfHover > a:after,
+#pen_navigation.pen_hover_3 div#primary-menu > ul > li > a:focus:after,
+#pen_navigation.pen_hover_3 div#primary-menu > ul > li > a:hover:after,
+#pen_navigation.pen_hover_3 div#primary-menu > ul > li > a:active:after,
+#pen_navigation.pen_hover_3 div#primary-menu > ul > li.current-menu-item > a:after,
+#pen_navigation.pen_hover_3 ul#primary-menu > li.sfHover > a:after,
+#pen_navigation.pen_hover_3 ul#primary-menu > li > a:focus:after,
+#pen_navigation.pen_hover_3 ul#primary-menu > li > a:hover:after,
+#pen_navigation.pen_hover_3 ul#primary-menu > li > a:active:after,
+#pen_navigation.pen_hover_3 ul#primary-menu > li.current-menu-item > a:after {
+	opacity: 1;
+}
+#pen_navigation.pen_hover_4 div#primary-menu > ul > li > a:after,
+#pen_navigation.pen_hover_4 ul#primary-menu > li > a:after {
+	background: #c5e2ff;
+	bottom: 0;
+	content: "";
+	height: 3px;
+	left: 15%;
+	opacity: 0;
+	position: absolute;
+	transition: opacity .3s;
+	width: 70%;
+}
+#pen_navigation.pen_hover_4 div#primary-menu > ul > li.sfHover > a:after,
+#pen_navigation.pen_hover_4 div#primary-menu > ul > li > a:focus:after,
+#pen_navigation.pen_hover_4 div#primary-menu > ul > li > a:hover:after,
+#pen_navigation.pen_hover_4 div#primary-menu > ul > li > a:active:after,
+#pen_navigation.pen_hover_4 div#primary-menu > ul > li.current-menu-item > a:after,
+#pen_navigation.pen_hover_4 ul#primary-menu > li.sfHover > a:after,
+#pen_navigation.pen_hover_4 ul#primary-menu > li > a:focus:after,
+#pen_navigation.pen_hover_4 ul#primary-menu > li > a:hover:after,
+#pen_navigation.pen_hover_4 ul#primary-menu > li > a:active:after,
+#pen_navigation.pen_hover_4 ul#primary-menu > li.current-menu-item > a:after {
+	opacity: 1;
+}
+#pen_navigation.pen_hover_5 div#primary-menu > ul > li > a:after,
+#pen_navigation.pen_hover_5 ul#primary-menu > li > a:after {
+	background: #c5e2ff;
+	border-radius: 5px 5px 0 0;
+	bottom: 0;
+	content: "";
+	height: 3px;
+	left: 15%;
+	opacity: 0;
+	position: absolute;
+	transition: opacity .3s;
+	width: 70%;
+}
+#pen_navigation.pen_hover_5 div#primary-menu > ul > li.sfHover > a:after,
+#pen_navigation.pen_hover_5 div#primary-menu > ul > li > a:focus:after,
+#pen_navigation.pen_hover_5 div#primary-menu > ul > li > a:hover:after,
+#pen_navigation.pen_hover_5 div#primary-menu > ul > li > a:active:after,
+#pen_navigation.pen_hover_5 div#primary-menu > ul > li.current-menu-item > a:after,
+#pen_navigation.pen_hover_5 ul#primary-menu > li.sfHover > a:after,
+#pen_navigation.pen_hover_5 ul#primary-menu > li > a:focus:after,
+#pen_navigation.pen_hover_5 ul#primary-menu > li > a:hover:after,
+#pen_navigation.pen_hover_5 ul#primary-menu > li > a:active:after,
+#pen_navigation.pen_hover_5 ul#primary-menu > li.current-menu-item > a:after {
+	opacity: 1;
+}
+#pen_navigation.pen_hover_6 div#primary-menu > ul > li > a:after,
+#pen_navigation.pen_hover_6 ul#primary-menu > li > a:after {
+	background: #c5e2ff;
+	border-radius: 5px 5px 0 0;
+	bottom: 0;
+	content: "";
+	height: 3px;
+	left: 50%;
+	opacity: 0;
+	position: absolute;
+	transition: opacity .3s;
+	transform: translateX(-50%);
+	width: 100px;
+}
+#pen_navigation.pen_hover_6 div#primary-menu > ul > li.sfHover > a:after,
+#pen_navigation.pen_hover_6 div#primary-menu > ul > li > a:focus:after,
+#pen_navigation.pen_hover_6 div#primary-menu > ul > li > a:hover:after,
+#pen_navigation.pen_hover_6 div#primary-menu > ul > li > a:active:after,
+#pen_navigation.pen_hover_6 div#primary-menu > ul > li.current-menu-item > a:after,
+#pen_navigation.pen_hover_6 ul#primary-menu > li.sfHover > a:after,
+#pen_navigation.pen_hover_6 ul#primary-menu > li > a:focus:after,
+#pen_navigation.pen_hover_6 ul#primary-menu > li > a:hover:after,
+#pen_navigation.pen_hover_6 ul#primary-menu > li > a:active:after,
+#pen_navigation.pen_hover_6 ul#primary-menu > li.current-menu-item > a:after {
+	opacity: 1;
+}
+#pen_navigation.pen_hover_7 div#primary-menu > ul > li > a:after,
+#pen_navigation.pen_hover_7 ul#primary-menu > li > a:after {
+	background: #c5e2ff;
+	border-radius: 15px 15px 0 0;
+	bottom: 0;
+	content: "";
+	height: 7px;
+	left: 50%;
+	opacity: 0;
+	position: absolute;
+	transition: opacity .3s;
+	transform: translateX(-50%);
+	width: 100px;
+}
+#pen_navigation.pen_hover_7 div#primary-menu > ul > li.sfHover > a:after,
+#pen_navigation.pen_hover_7 div#primary-menu > ul > li > a:focus:after,
+#pen_navigation.pen_hover_7 div#primary-menu > ul > li > a:hover:after,
+#pen_navigation.pen_hover_7 div#primary-menu > ul > li > a:active:after,
+#pen_navigation.pen_hover_7 div#primary-menu > ul > li.current-menu-item > a:after,
+#pen_navigation.pen_hover_7 ul#primary-menu > li.sfHover > a:after,
+#pen_navigation.pen_hover_7 ul#primary-menu > li > a:focus:after,
+#pen_navigation.pen_hover_7 ul#primary-menu > li > a:hover:after,
+#pen_navigation.pen_hover_7 ul#primary-menu > li > a:active:after,
+#pen_navigation.pen_hover_7 ul#primary-menu > li.current-menu-item > a:after {
+	opacity: 1;
+}
+#pen_navigation.pen_hover_8 div#primary-menu > ul > li > a:after,
+#pen_navigation.pen_hover_8 ul#primary-menu > li > a:after {
+	border: 10px solid transparent;
+	border-top: 10px solid #c5e2ff;
+	content: "";
+	left: 50%;
+	opacity: 0;
+	position: absolute;
+	top: 0;
+	transform: translateX(-50%);
+	transition: opacity .3s;
+}
+#pen_navigation.pen_hover_8 div#primary-menu > ul > li.sfHover > a:after,
+#pen_navigation.pen_hover_8 div#primary-menu > ul > li > a:focus:after,
+#pen_navigation.pen_hover_8 div#primary-menu > ul > li > a:hover:after,
+#pen_navigation.pen_hover_8 div#primary-menu > ul > li > a:active:after,
+#pen_navigation.pen_hover_8 div#primary-menu > ul > li.current-menu-item > a:after,
+#pen_navigation.pen_hover_8 ul#primary-menu > li.sfHover > a:after,
+#pen_navigation.pen_hover_8 ul#primary-menu > li > a:focus:after,
+#pen_navigation.pen_hover_8 ul#primary-menu > li > a:hover:after,
+#pen_navigation.pen_hover_8 ul#primary-menu > li > a:active:after,
+#pen_navigation.pen_hover_8 ul#primary-menu > li.current-menu-item > a:after {
+	opacity: 1;
+}
+#pen_navigation.pen_hover_9 div#primary-menu > ul > li > a:after,
+#pen_navigation.pen_hover_9 ul#primary-menu > li > a:after {
+	border: 10px solid transparent;
+	border-bottom: 10px solid #c5e2ff;
+	bottom: 0;
+	content: "";
+	left: 50%;
+	opacity: 0;
+	position: absolute;
+	transform: translateX(-50%);
+	transition: opacity .3s;
+}
+#pen_navigation.pen_hover_9 div#primary-menu > ul > li.sfHover > a:after,
+#pen_navigation.pen_hover_9 div#primary-menu > ul > li > a:focus:after,
+#pen_navigation.pen_hover_9 div#primary-menu > ul > li > a:hover:after,
+#pen_navigation.pen_hover_9 div#primary-menu > ul > li > a:active:after,
+#pen_navigation.pen_hover_9 div#primary-menu > ul > li.current-menu-item > a:after,
+#pen_navigation.pen_hover_9 ul#primary-menu > li.sfHover > a:after,
+#pen_navigation.pen_hover_9 ul#primary-menu > li > a:focus:after,
+#pen_navigation.pen_hover_9 ul#primary-menu > li > a:hover:after,
+#pen_navigation.pen_hover_9 ul#primary-menu > li > a:active:after,
+#pen_navigation.pen_hover_9 ul#primary-menu > li.current-menu-item > a:after {
+	opacity: 1;
+}
+#pen_navigation.pen_hover_10 div#primary-menu > ul > li > a:after,
+#pen_navigation.pen_hover_10 ul#primary-menu > li > a:after {
+	background: #000;
+	border-radius: 50px 50px 0 0;
+	bottom: 0;
+	content: "";
+	left: 50%;
+	opacity: 0;
+	position: absolute;
+	transform: translateX(-50%);
+	transition: opacity .3s;
+}
+#pen_navigation.pen_hover_10 div#primary-menu > ul > li.sfHover > a:after,
+#pen_navigation.pen_hover_10 div#primary-menu > ul > li > a:focus:after,
+#pen_navigation.pen_hover_10 div#primary-menu > ul > li > a:hover:after,
+#pen_navigation.pen_hover_10 div#primary-menu > ul > li > a:active:after,
+#pen_navigation.pen_hover_10 div#primary-menu > ul > li.current-menu-item > a:after,
+#pen_navigation.pen_hover_10 ul#primary-menu > li.sfHover > a:after,
+#pen_navigation.pen_hover_10 ul#primary-menu > li > a:focus:after,
+#pen_navigation.pen_hover_10 ul#primary-menu > li > a:hover:after,
+#pen_navigation.pen_hover_10 ul#primary-menu > li > a:active:after,
+#pen_navigation.pen_hover_10 ul#primary-menu > li.current-menu-item > a:after {
+	opacity: 0.5;
+}
+#pen_navigation div#primary-menu > ul.sf-arrows .sf-with-ul,
+#pen_navigation ul#primary-menu.sf-arrows .sf-with-ul {
+	padding-right: 2.5em !important;
+}
+#pen_navigation div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f107";
+	font-family: "FontAwesome";
+	font-weight: normal;
+	opacity: 0.5;
+	position: absolute;
+	right: 1em;
+	top: 50%;
+	transform: translateY(-50%);
+}
+#pen_navigation div#primary-menu > ul.sf-arrows > li > a.sf-with-ul:focus:before,
+#pen_navigation div#primary-menu > ul.sf-arrows > li:hover > a.sf-with-ul:before,
+#pen_navigation div#primary-menu > ul.sf-arrows > li.sfHover > a.sf-with-ul:before,
+#pen_navigation ul#primary-menu.sf-arrows > li > a.sf-with-ul:focus:before,
+#pen_navigation ul#primary-menu.sf-arrows > li:hover > a.sf-with-ul:before,
+#pen_navigation ul#primary-menu.sf-arrows > li.sfHover > a.sf-with-ul:before {
+	opacity: 0.9;
+}
+#pen_navigation div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f105";
+}
+#pen_navigation div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:focus:before,
+#pen_navigation div#primary-menu > ul.sf-arrows ul li:hover > a.sf-with-ul:before,
+#pen_navigation div#primary-menu > ul.sf-arrows ul li.sfHover > a.sf-with-ul:before,
+#pen_navigation ul#primary-menu.sf-arrows ul li a.sf-with-ul:focus:before,
+#pen_navigation ul#primary-menu.sf-arrows ul li:hover > a.sf-with-ul:before,
+#pen_navigation ul#primary-menu.sf-arrows ul li.sfHover > a.sf-with-ul:before {
+	opacity: 0.9;
+}
+#pen_navigation.pen_arrows_1 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_1 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f107";
+}
+#pen_navigation.pen_arrow_1 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_1 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f105";
+}
+#pen_navigation.pen_arrows_2 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_2 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f103";
+}
+#pen_navigation.pen_arrow_2 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_2 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f101";
+}
+#pen_navigation.pen_arrows_3 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_3 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f0ab";
+}
+#pen_navigation.pen_arrow_3 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_3 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f0a9";
+}
+#pen_navigation.pen_arrows_4 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_4 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f01a";
+}
+#pen_navigation.pen_arrow_4 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_4 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f18e";
+}
+#pen_navigation.pen_arrows_5 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_5 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f063";
+}
+#pen_navigation.pen_arrow_5 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_5 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f061";
+}
+#pen_navigation.pen_arrows_6 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_6 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f0d7";
+}
+#pen_navigation.pen_arrow_6 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_6 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f0da";
+}
+#pen_navigation.pen_arrows_7 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_7 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f150";
+}
+#pen_navigation.pen_arrow_7 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_7 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f152";
+}
+#pen_navigation.pen_arrows_8 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_8 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f078";
+}
+#pen_navigation.pen_arrow_8 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_8 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f054";
+}
+#pen_navigation.pen_arrows_9 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_9 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f175";
+}
+#pen_navigation.pen_arrow_9 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_9 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f178";
+}
+#pen_navigation.pen_arrows_10 div#primary-menu > ul.sf-arrows .sf-with-ul:before,
+#pen_navigation.pen_arrows_10 ul#primary-menu.sf-arrows .sf-with-ul:before {
+	content: "\f13a";
+}
+#pen_navigation.pen_arrow_10 div#primary-menu > ul.sf-arrows ul li a.sf-with-ul:before,
+#pen_navigation.pen_arrows_10 ul#primary-menu.sf-arrows ul li a.sf-with-ul:before {
+	content: "\f138";
+}
+body.pen_navigation_alignment_right #pen_navigation div#primary-menu > ul > li,
+body.pen_navigation_alignment_right #pen_navigation ul#primary-menu > li {
+	float: right;
+}
+body.pen_navigation_alignment_center #pen_navigation div#primary-menu > ul,
+body.pen_navigation_alignment_center #pen_navigation ul#primary-menu {
+	text-align: center;
+}
+body.pen_navigation_alignment_center #pen_navigation div#primary-menu > ul > li,
+body.pen_navigation_alignment_center #pen_navigation ul#primary-menu > li {
+	float: none;
+	display: inline-block;
+}
+#pen_navigation div#primary-menu > ul:hover > li > a,
+#pen_navigation ul#primary-menu:hover > li > a {
+	opacity: 0.75;
+}
+#pen_navigation div#primary-menu > ul:hover > li.sfHover > a,
+#pen_navigation div#primary-menu > ul:hover > li > a:focus,
+#pen_navigation div#primary-menu > ul:hover > li > a:hover,
+#pen_navigation div#primary-menu > ul:hover > li > a:active,
+#pen_navigation ul#primary-menu:hover > li.sfHover > a,
+#pen_navigation ul#primary-menu:hover > li > a:focus,
+#pen_navigation ul#primary-menu:hover > li > a:hover,
+#pen_navigation ul#primary-menu:hover > li > a:active {
+	opacity: 1;
+}
+.slicknav_menu {
+	display: none;
+}
+@media only screen and (max-width:728px) {
+	#pen_navigation div#primary-menu > ul,
+	#pen_navigation ul#primary-menu {
+		display: none;
+	}
+	div.slicknav_menu {
+		background: #000;
+		background: -ms-linear-gradient(325deg, #000000 0%, #101010 100%);
+		background: linear-gradient(125deg, #000000 0%, #101010 100%);
+		display: block !important;
+	}
+	div.slicknav_menu ul.slicknav_nav {
+		font-size: 1.5em;
+	}
+	div.slicknav_menu ul.slicknav_nav a {
+		color: #eee;
+		padding-bottom: 1em;
+		padding-top: 1em;
+	}
+	div.slicknav_menu ul.slicknav_nav .slicknav_item,
+	div.slicknav_menu ul.slicknav_nav li {
+		position: relative;
+	}
+	div.slicknav_menu ul.slicknav_nav li:after {
+		background: -ms-linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0) 100%);
+		background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0) 100%);
+		content: "";
+		height: 1px;
+		left: 0;
+		position: absolute;
+		top: 0;
+		width: 100%;
+	}
+	div.slicknav_menu ul.slicknav_nav li:first-child:after {
+		display: none;
+	}
+	div.slicknav_menu ul.slicknav_nav a:focus,
+	div.slicknav_menu ul.slicknav_nav a:hover,
+	div.slicknav_menu ul.slicknav_nav a:active,
+	div.slicknav_menu ul.slicknav_nav li li,
+	div.slicknav_menu ul.slicknav_nav .sub-menu li,
+	div.slicknav_menu ul.slicknav_nav .slicknav_row:hover {
+		background: transparent !important;
+		text-decoration: none;
+	}
+	div.slicknav_menu ul.slicknav_nav ul {
+		margin-left: 10px;
+	}
+	div.slicknav_menu ul.slicknav_nav .slicknav_arrow {
+		display: block;
+		font-size: 1em;
+		position: absolute;
+		right: 2em;
+		text-indent: -99999px;
+		top: 50%;
+		transform: translateY(-50%);
+	}
+	div.slicknav_menu ul.slicknav_nav .slicknav_arrow:before {
+		content: "\f103";
+		font-family: "FontAwesome";
+		left: 0;
+		position: absolute;
+		text-indent: 0;
+		top: 0;
+		transition: opacity .3s;
+	}
+	div.slicknav_menu ul.slicknav_nav .slicknav_open > a > .slicknav_arrow:before {
+		content: "\f102";
+		opacity: 0.5;
+	}
+	div.slicknav_menu ul.slicknav_nav li ul.children li {
+		font-size: 0.857em;
+	}
+	div.slicknav_menu ul.slicknav_nav li ul.children > li > a:before {
+		content: "\f101";
+		font-family: "FontAwesome";
+		margin: 0 1em 0 0;
+		opacity: 0.5;
+	}
+}

+ 128 - 0
assets/css/pen-pagination.css

@@ -0,0 +1,128 @@
+#pen_pager {
+	float: left;
+	padding: 2em 0;
+	position: relative;
+	width: 100%;
+}
+#pen_pager a:focus,
+#pen_pager a:hover,
+#pen_pager a:active {
+	text-decoration: none;
+}
+body.pen_list_plain #pen_pager {
+	padding: 2em;
+}
+#page .pen_content_pagination {
+	float: left;
+	font-size: 0.857em;
+	width: 100%;
+}
+#content .entry-content .page-links,
+#content .entry-content .comment-navigation,
+#content .entry-content .posts-navigation,
+#content .entry-content .post-navigation,
+#content .entry-content .wp-pagenavi {
+	margin: 1em 0 0;
+}
+#content .comment-navigation,
+#content .posts-navigation,
+#content .post-navigation {
+	overflow: visible;
+}
+#content .comment-navigation .nav-next,
+#content .posts-navigation .nav-next,
+#content .post-navigation .nav-next {
+	float: right;
+}
+#content .comment-navigation .nav-previous,
+#content .posts-navigation .nav-previous,
+#content .post-navigation .nav-previous {
+	float: left;
+}
+#content .comment-navigation .nav-next a,
+#content .posts-navigation .nav-next a,
+#content .post-navigation .nav-next a {
+	float: right;
+}
+#content .comment-navigation .nav-next a:after,
+#content .posts-navigation .nav-next a:after,
+#content .post-navigation .nav-next a:after {
+	content: "\f101";
+	font-family: "FontAwesome";
+	font-weight: normal;
+	margin: 0 0 0 1em;
+}
+#content .page-links a,
+#content .comment-navigation .nav-previous a,
+#content .posts-navigation .nav-previous a,
+#content .post-navigation .nav-previous a {
+	float: left;
+}
+#content .comment-navigation .nav-previous a:before,
+#content .posts-navigation .nav-previous a:before,
+#content .post-navigation .nav-previous a:before {
+	content: "\f100";
+	font-family: "FontAwesome";
+	font-weight: normal;
+	margin: 0 1em 0 0;
+}
+#content .wp-pagenavi {
+	clear: both;
+}
+#content .page-links a,
+#content .wp-pagenavi a,
+#content .wp-pagenavi span {
+	margin: 0 0.5em 0.5em 0;
+	width: auto !important;
+}
+body.pen_list_plain #content .wp-pagenavi a,
+body.pen_list_plain #content .wp-pagenavi span {
+	margin: 0.5em;
+}
+#content .nextpostslink,
+#content .previouspostslink {
+	position: relative;
+	text-indent: -99999px;
+}
+#content .nextpostslink:before,
+#content .previouspostslink:before {
+	content: "\f105";
+	font-family: "FontAwesome";
+	font-size: 1.5em;
+	left: 50%;
+	text-indent: 0;
+	top: 50%;
+	position: absolute;
+	transform: translate(-50%,-50%);
+}
+#content .previouspostslink:before {
+	content: "\f104";
+}
+body.pen_drop_shadow.pen_list_masonry #content .comment-navigation a,
+body.pen_drop_shadow.pen_list_masonry #content .posts-navigation a,
+body.pen_drop_shadow.pen_list_masonry #content .post-navigation a,
+body.pen_drop_shadow.pen_list_masonry #content .wp-pagenavi a,
+body.pen_drop_shadow.pen_list_masonry #content .wp-pagenavi span {
+	box-shadow: 0 0 15px rgba(0,0,0,0.2), 2px 2px 7px rgba(0,0,0,0.3);
+}
+@media only screen and (min-width:728px) {
+	#content .comment-navigation a,
+	#content .posts-navigation a,
+	#content .post-navigation a {
+		margin: 0 !important;
+		width: auto !important;
+	}
+}
+@media only screen and (max-width:728px) {
+	#content .comment-navigation .nav-next,
+	#content .posts-navigation .nav-next,
+	#content .post-navigation .nav-next,
+	#content .comment-navigation .nav-previous,
+	#content .posts-navigation .nav-previous,
+	#content .post-navigation .nav-previous,
+	#content .wp-pagenavi a,
+	#content .wp-pagenavi span {
+		margin: 0.5em 0 0;
+		width: 100% !important;
+	}
+}

+ 124 - 0
assets/css/pen-search-bar.css

@@ -0,0 +1,124 @@
+#pen_search {
+	background: #8f8f8f;
+	background: -ms-linear-gradient(325deg, #8f8f8f 0%, #5f5f5f 100%);
+	background: linear-gradient(125deg, #8f8f8f 0%, #5f5f5f 100%);
+	position: relative;
+	z-index: 2;
+}
+body.pen_drop_shadow #pen_search {
+	box-shadow: 0 0 20px rgba(0,0,0,0.4);
+}
+body.pen_width_boxed #pen_search {
+	padding-left: 2em;
+	padding-right: 2em;
+}
+body.pen_round_corners.pen_width_boxed #pen_header #pen_search {
+	border-radius: 0 0 5px 5px;
+}
+#pen_search:before {
+	background: rgba(0,0,0,0.25);
+	bottom: 0;
+	content: "";
+	height: 1px;
+	left: 0;
+	position: absolute;
+	width: 100%;
+}
+#pen_search .widget {
+	color: #eee;
+}
+body.pen_drop_shadow #pen_search .widget {
+	text-shadow: 1px 1px 1px rgba(0,0,0,0.5);
+}
+#pen_search .widget a {
+	color: #80ddff;
+}
+#pen_search .widget a:focus,
+#pen_search .widget a:hover,
+#pen_search .widget a:active {
+	color: #cdf1ff;
+}
+#pen_search .search-form {
+	line-height: 1;
+	position: relative;
+	width: 100%;
+}
+#pen_search .search-form .search-field {
+	background: rgba(255,255,255,0.9);
+	border: 1px solid rgba(0,0,0,0.3);
+	font-size: 2em;
+	line-height: 1;
+	margin-left: -1px !important;
+	padding: 0.5em 20% 0.5em 1em;
+	transition: box-shadow .2s;
+	width: 100%;
+}
+body.pen_drop_shadow #pen_search .search-form .search-field {
+	box-shadow: 1px 1px 1px rgba(255,255,255,0.05) inset, 0 0 7px rgba(0,0,0,0.2), 2px 2px 4px rgba(0,0,0,0.3), 5px 5px 10px rgba(0,0,0,0.2) inset;
+}
+#pen_header.pen_header_sticked #pen_search .search-form .search-field {
+	font-size: 1.5em;
+}
+body.pen_header_sticky #pen_search .search-form .search-field,
+body.pen_header_sticky #pen_search .search-form .search-submit {
+	transition: font-size .3s;
+}
+body.pen_round_corners #pen_search .search-form .search-field {
+	border-radius: 100px;
+}
+#pen_search .search-form .search-field:focus,
+#pen_search .search-form .search-field:active,
+#pen_search .search-form .search-submit:focus {
+	outline: none !important;
+	text-decoration: none;
+}
+#pen_search .search-form .search-submit {
+	background: #00a9ff;
+	background: -ms-linear-gradient(to bottom, #00a9ff 0%,#093a89 100%);
+	background: linear-gradient(to bottom, #00a9ff 0%,#093a89 100%);
+	border: 0 none;
+	color: #fff;
+	font-size: 1.5em;
+	font-weight: normal;
+	height: 100%;
+	margin: 0 -1px 0 0 !important;
+	min-height: 100%;
+	min-width: 150px;
+	padding: 0.5em 0;
+	position: absolute;
+	right: 0;
+	text-align: center;
+	text-transform: uppercase;
+	top: 0;
+	width: 18%;
+	z-index: 1000;
+}
+body.pen_drop_shadow #pen_search .search-form .search-submit {
+	box-shadow: 1px 1px 0 rgba(255,255,255,0.25) inset;
+	text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
+}
+#pen_header.pen_header_sticked #pen_search .search-form .search-submit {
+	font-size: 1em;
+}
+body.pen_round_corners #pen_search .search-form .search-submit {
+	border-radius: 100px;
+}
+#pen_search .search-form .search-submit:active {
+	background: #093a89;
+}
+#pen_search_top {
+	margin: 0 0 1.5em;
+}
+#pen_search_bottom {
+	margin: 1.5em 0 0;
+}
+@media only screen and (max-width:728px) {
+	#pen_search .search-form .search-field {
+		font-size: 1em;
+		padding-right: 35%;
+	}
+	#pen_search .search-form .search-submit {
+		font-size: 1em;
+		width: 33%;
+	}
+}

+ 151 - 0
assets/css/pen-share.css

@@ -0,0 +1,151 @@
+#main .pen_share {
+	float: right;
+	margin: 2em 0 0 1em;
+	position: relative;
+}
+#main .pen_share ul,
+#main .pen_share li {
+	float: left;
+	list-style: none;
+	margin: 0;
+	padding: 0;
+	width: 100%;
+}
+#main .pen_share li {
+	border: 0.5em solid transparent;
+	float: left;
+	height: 3em !important;
+	line-height: 1;
+	margin: -0.5em 0 !important;
+	width: 3em !important;
+}
+#main .pen_share li a.pen_button {
+	border: 0 none !important;
+	float: left;
+	margin: 0 !important;
+	max-height: 100%;
+	max-width: 100%;
+	padding: 0.5em !important;
+	width: 100% !important;
+}
+body.pen_round_corners #main .pen_share li a.pen_button {
+	border-radius: 5px;
+}
+#main .pen_share li a.pen_button span {
+	border: 0 none !important;
+	clip: rect(1px,1px,1px,1px);
+	clip: rect(1px 1px 1px 1px);
+	height: 1px !important;
+	margin: 0 !important;
+	overflow: hidden !important;
+	padding: 0 !important;
+	position: absolute !important;
+	width: 1px !important;
+}
+#main .pen_share li a.pen_button {
+	margin: 0;
+}
+#main .pen_share li a:before {
+	font-family: "FontAwesome";
+	font-weight: normal;
+}
+#main .pen_share li.pen_twitter a:before {
+	content: "\f099";
+}
+#main .pen_share li.pen_facebook a:before {
+	content: "\f09a";
+}
+body.pen_content_header_center #main article header .pen_share {
+	float: none;
+	text-align: center;
+	width: 100%;
+}
+body.pen_content_header_center #main article header .pen_share ul {
+	display: inline-block;
+	float: none;
+	margin: 0 auto;
+	width: auto;
+	white-space: nowrap;
+}
+body.pen_content_header_center #main article header div.pen_share ul li {
+	padding: 1em 0 0;
+	width: 33.33%;
+}
+body.pen_content_header_center #main article header div.pen_share ul li,
+body.pen_content_header_center #main article header div.pen_share ul li a {
+	display: inline-block;
+	float: none;
+}
+#main article header div.pen_share ul li a {
+	color: #fff !important;
+	width: 38px !important;
+}
+body.pen_round_corners #main article header div.pen_share ul li a {
+	border-radius: 50%;
+}
+@media only screen and (min-width:728px) {
+	#main .pen_share h4 {
+		border: 0 none !important;
+		clip: rect(1px,1px,1px,1px);
+		clip: rect(1px 1px 1px 1px);
+		height: 1px !important;
+		margin: 0 !important;
+		overflow: hidden !important;
+		padding: 0 !important;
+		position: absolute !important;
+		width: 1px !important;
+	}
+	#main article header .pen_share {
+		float: right;
+	}
+	#main .entry-content .pen_share h4,
+	#main .entry-content .pen_share ul {
+		float: left;
+		width: auto;
+	}
+	#main .entry-content .pen_share h4 {
+		line-height: 1.8;
+		margin: 0 1em 0 0;
+		padding: 0;
+		opacity: 0;
+		transition: opacity .3s;
+	}
+	#main .entry-content .pen_share:hover h4 {
+		opacity: 1;
+	}
+	#main .pen_share li {
+		transition: opacity .3s;
+	}
+	#main .pen_share ul:hover li {
+		opacity: 0.5;
+	}
+	#main .pen_share ul li:hover {
+		opacity: 1;
+	}
+	#main .entry-footer .pen_share {
+		clear: both;
+	}
+	#main .entry-footer .pen_share a {
+		width: 100% !important;
+	}
+}
+@media only screen and (max-width:728px) {
+	#main .pen_share {
+		width: 100%;
+	}
+	#main .pen_share h4 {
+		margin-top: 0;
+	}
+	#main .pen_share ul {
+		text-align: center;
+	}
+	#main .pen_share li {
+		display: inline-block;
+		float: none;
+	}
+	#main .pen_share li {
+		display: block;
+		float: left;
+	}
+
+}

+ 313 - 0
assets/css/pen-thumbnails.css

@@ -0,0 +1,313 @@
+#main .post-thumbnail {
+	position: relative;
+	z-index: 100;
+}
+#main article .mejs-container,
+#main article .gallery,
+#main article .foogallery-container {
+	margin: 0 0 1em;
+}
+body.blog #main article .gallery-item,
+body.home #main article .gallery-item {
+	margin: 0;
+	padding: 1px;
+}
+body.blog #main article .gallery-item a,
+body.blog #main article .gallery-item div,
+body.home #main article .gallery-item a,
+body.home #main article .gallery-item div {
+	line-height: 0;
+}
+body.pen_list_masonry #pen_masonry .pen_article_wrapper article .post-thumbnail {
+	display: block;
+}
+body.pen_list_masonry #pen_masonry .pen_article_wrapper article .post-thumbnail img {
+	height: auto;
+	max-width: 100%;
+	width: 100%;
+}
+body.pen_list_masonry #pen_masonry article .post-thumbnail {
+	background: #000;
+	box-shadow: 0 5px 5px rgba(0,0,0,0.1) inset;
+	line-height: 0;
+	float: left;
+	margin: 0;
+	position: relative;
+	overflow: hidden;
+	width: 100%;
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_0 .post-thumbnail:before,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_0 .post-thumbnail:after {
+	background: -ms-linear-gradient(90deg,rgba(0,0,0,0) 0%,rgba(0,0,0,0.3) 100%);
+	background: linear-gradient(0deg,rgba(0,0,0,0) 0%,rgba(0,0,0,0.3) 100%);
+	content: "";
+	height: 5px;
+	left: 0;
+	position: absolute;
+	top: 0;
+	width: 100%;
+	z-index: 10;
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_0 .post-thumbnail:after {
+	background: -ms-linear-gradient(90deg,rgba(0,0,0,0.3) 0%,rgba(0,0,0,0) 100%);
+	background: linear-gradient(0deg,rgba(0,0,0,0.3) 0%,rgba(0,0,0,0) 100%);
+	bottom: 0;
+	top: auto;
+}
+body.pen_list_masonry.pen_list_header_hide #pen_masonry article .post-thumbnail:before,
+body.pen_list_masonry #pen_masonry article.pen_list_header_hide .post-thumbnail:before,
+body.pen_list_masonry.pen_list_footer_hide.pen_list_summary_hide #pen_masonry article .post-thumbnail:after,
+body.pen_list_masonry #pen_masonry article.pen_list_footer_hide.pen_list_summary_hide .post-thumbnail:after {
+	display: none;
+}
+body.pen_list_masonry #pen_masonry article .post-thumbnail img {
+	margin: 0;
+	height: auto;
+	position: relative;
+	transition: transform .5s;
+	width: 100%;
+	z-index: 5;
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_1 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_2 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_3 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_4 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_5 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_6 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_7 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_8 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_9 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_10 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_11 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_12 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_13 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_14 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_15 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_16 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_17 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_18 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_19 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_20 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_21 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_22 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_23 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_24 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_25 .post-thumbnail {
+	background: -ms-linear-gradient(180deg,#ff8800 0%,#ffd800 50%,#ff8800 100%);
+	background: linear-gradient(90deg,#ff8800 0%,#ffd800 50%,#ff8800 100%);
+	padding: 0 0 8px !important;
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_1 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_1 .post-thumbnail img {
+	clip-path: polygon(0 0,100% 0,100% calc(100% - 35px),50% 100%,0 calc(100% - 35px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_2 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_2 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% calc(100% - 15px),60% calc(100% - 15px),50% 100%,40% calc(100% - 15px),0% calc(100% - 15px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_3 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_3 .post-thumbnail img {
+	clip-path: polygon(0 0,100% 0,100% calc(100% - 35px),75% 100%,0 calc(100% - 35px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_4 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_4 .post-thumbnail img {
+	clip-path: polygon(0 0,100% 0,100% calc(100% - 35px),25% 100%,0 calc(100% - 35px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_5 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_5 .post-thumbnail img {
+	clip-path: polygon(0 0,100% 0,100% calc(100% - 25px),0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_6 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_6 .post-thumbnail img {
+	clip-path: polygon(0 0,100% 0,100% 100%,0 calc(100% - 25px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_7 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_7 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% calc(100% - 35px),50% calc(100% - 35px),50% calc(100% - 5px),25% calc(100% - 35px),0% calc(100% - 35px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_8 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_8 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% calc(100% - 35px),75% calc(100% - 35px),50% 100%,50% calc(100% - 35px),0% calc(100% - 35px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_9 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_9 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% calc(100% - 25px),75% calc(100% - 25px),50% 100%,25% calc(100% - 25px),0% calc(100% - 25px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_10 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_10 .post-thumbnail img {
+	border-radius: 0 0 100% 100% / 50px;
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_11 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_11 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% 100%,87.5% calc(100% - 10px),75% 100%,62.5% calc(100% - 10px),50% 100%,37.5% calc(100% - 10px),25% 100%,12.5% calc(100% - 10px),0 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_12 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_12 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% calc(100% - 10px),calc(100% - 20px) 100%,calc(100% - 20px) calc(100% - 10px),calc(100% - 40px) 100%,calc(100% - 40px) calc(100% - 10px),calc(100% - 60px) 100%,calc(100% - 60px) calc(100% - 10px),calc(100% - 80px) 100%,calc(100% - 80px) calc(100% - 10px),0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_13 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_13 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% 100%,calc(100% - 20px) calc(100% - 10px),calc(100% - 20px) 100%,calc(100% - 40px) calc(100% - 10px),calc(100% - 40px) 100%,calc(100% - 60px) calc(100% - 10px),calc(100% - 60px) 100%,calc(100% - 80px) calc(100% - 10px),calc(100% - 80px) 100%,0% calc(100% - 10px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_14 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_14 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% 100%,75% calc(100% - 20px),0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_15 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_15 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% 100%,25% calc(100% - 20px),0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_16 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_16 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% 100%,calc(100% - 15px) calc(100% - 50px),calc(100% - 30px) calc(100% - 15px),calc(100% - 50px) calc(100% - 30px),calc(100% - 65px) 100%,calc(100% - 80px) calc(100% - 15px),calc(100% - 90px) 100%,0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_17 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_17 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% 100%,calc(100% - 10px) 100%,calc(100% - 25px) calc(100% - 20px),calc(100% - 35px) calc(100% - 5px),calc(100% - 50px) calc(100% - 30px),calc(100% - 60px) calc(100% - 15px),calc(100% - 75px) calc(100% - 40px),0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_18 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_18 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% calc(100% - 20px),calc(100% - 20px) 100%,0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_19 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_19 .post-thumbnail img {
+	clip-path: polygon(0% 0%,calc(100% - 20px) 0%,100% 20px,100% 100%,0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_20 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_20 .post-thumbnail img {
+	clip-path: polygon(0% 20px,20px 0%,100% 0%,100% 100%,0% 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_21 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_21 .post-thumbnail img {
+	clip-path: polygon(0% calc( 100% - 20px ),0% 0%,100% 0%,100% 100%,20px 100%);
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_22 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_22 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% 100%,75% calc(100% - 10px),70% calc(100% - 30px),25% calc(100% - 30px),20% calc(100% - 10px),0% 100%)
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_23 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_23 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% calc(100% - 30px),75% calc(100% - 20px),70% 100%,30% 100%,25% calc(100% - 20px),0% calc(100% - 30px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_24 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_24 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% calc(100% - 20px),calc(100% - 20px) 100%,20px 100%,0% calc(100% - 20px));
+}
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_25 .post-thumbnail,
+body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_25 .post-thumbnail img {
+	clip-path: polygon(0% 0%,100% 0%,100% 100%,calc(100% - 20px) calc(100% - 20px),20px calc(100% - 20px),0% 100%);
+}
+body.pen_list_plain #main article .post-thumbnail {
+	display: inline;
+	float: right;
+}
+body.pen_content_thumbnail_right #main article .post-thumbnail,
+body.pen_list_thumbnail_right #main article .post-thumbnail {
+	display: inline;
+	float: right;
+	margin: 0 0 2em 1em;
+}
+body.pen_content_thumbnail_center #main article .post-thumbnail,
+body.pen_list_thumbnail_center #main article .post-thumbnail {
+	float: left;
+	margin: 0 auto 1em;
+	text-align: center;
+	width: 100%;
+}
+body.pen_content_thumbnail_left #main article .post-thumbnail,
+body.pen_list_thumbnail_left #main article .post-thumbnail {
+	display: inline;
+	float: left;
+	margin: 0 2em 1em 0;
+}
+#main article.pen_list_thumbnail_right .post-thumbnail {
+	display: inline !important;
+	float: right !important;
+	margin: 0 0 2em 1em !important;
+}
+#main article.pen_list_thumbnail_center .post-thumbnail {
+	float: left !important;
+	margin: 0 auto 1em !important;
+	text-align: center !important;
+	width: 100% !important;
+}
+#main article.pen_list_thumbnail_left .post-thumbnail {
+	display: inline !important;
+	float: left !important;
+	margin: 0 2em 1em 0 !important;
+}
+body.page #main article .gallery-item img,
+body.page #main article .post-thumbnail img,
+body.single #main article .gallery-item img,
+body.single #main article .post-thumbnail img,
+body.pen_list_plain #main article .post-thumbnail img {
+	line-height: 0;
+	margin: 0;
+}
+body.page #main article .gallery-item img,
+body.single #main article .gallery-item img,
+body.pen_content_thumbnail_frame #main article .post-thumbnail img,
+body.pen_list_thumbnail_frame #main article .post-thumbnail img,
+#main article.pen_list_thumbnail_frame .post-thumbnail img {
+	background: #fff;
+	box-shadow: 0 0 5px rgba(0,0,0,0.5);
+	padding: 0.5em;
+}
+body.pen_thumbnail_frame_dark.page #main article .gallery-item img,
+body.pen_thumbnail_frame_dark.single #main article .gallery-item img,
+body.pen_thumbnail_frame_dark.pen_content_thumbnail_frame #main article .post-thumbnail img,
+body.pen_thumbnail_frame_dark.pen_list_thumbnail_frame #main article .post-thumbnail img,
+body.pen_thumbnail_frame_dark #main article.pen_list_thumbnail_frame .post-thumbnail img {
+	background: #000;
+	box-shadow: 0 0 5px rgba(0,0,0,0.5);
+	padding: 0.5em;
+}
+#main article.pen_list_thumbnail_frame_not .post-thumbnail img {
+	background: transparent !important;
+	box-shadow: none !important;
+	padding: auto !important;
+}
+body.pen_content_thumbnail_rotate #main article .post-thumbnail img,
+body.pen_list_thumbnail_rotate #main article .post-thumbnail img,
+#main article.pen_list_thumbnail_rotate .post-thumbnail img {
+	margin: -2em 2em 0;
+	transform: rotate(2deg);
+}
+body.pen_list_thumbnail_rotate #main article:nth-child(2n+2) .post-thumbnail img {
+	transform: rotate(-2deg);
+}
+#main article.pen_list_thumbnail_rotate_not .post-thumbnail img {
+	margin: auto !important;
+	transform: rotate(0deg) !important;
+}
+body.page #main article .gallery-item:hover img,
+body.single #main article .gallery-item:hover img {
+	transform: rotate(2deg);
+}
+@media only screen and (min-width:728px) {
+	body.page #main article .gallery-item img,
+	body.single #main article .gallery-item img {
+		transition: transform .3s;
+	}
+	body.pen_list_masonry.pen_thumbnail_zoom_in #pen_masonry article:hover .post-thumbnail img,
+	body.pen_list_masonry.pen_thumbnail_zoom_out #pen_masonry article .post-thumbnail img {
+		transform: scale(1.1,1.1);
+	}
+	body.pen_list_masonry.pen_thumbnail_zoom_out #pen_masonry article:hover .post-thumbnail img {
+		transform: scale(1,1);
+	}
+}
+@media only screen and (max-width:728px) {
+	body.pen_list_plain #main article .post-thumbnail {
+		text-align: center;
+		width: 100%
+	}
+	body.pen_list_plain #main article .post-thumbnail img {
+		margin-left: 0;
+		margin-right: 0;
+	}
+	body.page #main article .gallery,
+	body.single #main article .gallery {
+		max-width: 100%;
+	}
+}

+ 50 - 0
assets/css/pen-top.css

@@ -0,0 +1,50 @@
+#pen_top {
+	color: #fff;
+	position: relative;
+	text-shadow: 2px 2px 5px rgba(0,0,0,0.5);
+	z-index: 100;
+}
+#pen_top .widget {
+	float: left;
+	width: 100%;
+}
+@media only screen and (min-width:728px) {
+	#pen_top .widget:nth-child(1):nth-last-child(5),
+	#pen_top .widget:nth-child(2):nth-last-child(4),
+	#pen_top .widget:nth-child(3):nth-last-child(3),
+	#pen_top .widget:nth-child(4):nth-last-child(2),
+	#pen_top .widget:nth-child(5):nth-last-child(1) {
+		margin-left: 1%;
+		margin-right: 1%;
+		width: 18%;
+	}
+	#pen_top .widget:nth-child(1):nth-last-child(4),
+	#pen_top .widget:nth-child(2):nth-last-child(3),
+	#pen_top .widget:nth-child(3):nth-last-child(2),
+	#pen_top .widget:nth-child(4):nth-last-child(1) {
+		margin-left: 1%;
+		margin-right: 1%;
+		width: 23%;
+	}
+	#pen_top .widget:nth-child(1):nth-last-child(3),
+	#pen_top .widget:nth-child(2):nth-last-child(2),
+	#pen_top .widget:nth-child(3):nth-last-child(1) {
+		margin-left: 1%;
+		margin-right: 1%;
+		width: 31.33%;
+	}
+	#pen_top .widget:nth-child(1):nth-last-child(2),
+	#pen_top .widget:nth-child(2):nth-last-child(1) {
+		margin-left: 1%;
+		margin-right: 1%;
+		width: 47.9%;
+	}
+}
+#pen_top .widget h3 {
+	color: #fefefe;
+	margin-top: 0;
+}
+#pen_top .widget ul {
+	margin: 0;
+	padding: 0 0 0 1em;
+}

+ 218 - 0
assets/css/pen-typography.css

@@ -0,0 +1,218 @@
+h1,
+h2,
+h3,
+h4,
+h5 {
+	font-family: "robotolight", Arial, Helvetica, Sans-serif;
+	font-weight: normal;
+}
+#main h3,
+#main h4,
+#main h5 {
+	font-family: "robotoblack", Arial, Helvetica, Sans-serif;
+	font-weight: normal;
+}
+h2:first-child {
+	margin-top: 0;
+}
+#main abbr[title] {
+	border-bottom: none !important;
+	text-decoration: none !important;
+}
+#main article dt {
+	padding: 1em 0;
+}
+#main article dd {
+	border-left: 5px solid #aaa;
+	border-left-color: rgba(0,0,0,0.2);
+	margin: 0 1.5em 1.5em 0;
+	padding: 0 0 0 1em;
+}
+#main article pre {
+	margin: 0 0 1em 0;
+}
+#main article abbr {
+	background: rgba(120,120,120,0.3);
+	border: 0 none;
+	border-radius: 5px;
+	padding-left: 0.5em;
+	padding-right: 0.5em;
+}
+#main article ul,
+#main article ol {
+	margin: 1em 0;
+	padding: 0 0 0 2em;
+}
+#main article ul ol,
+#main article ul ul,
+#main article ol ul,
+#main article ol ol {
+	padding: 0 0 0 1em;
+}
+#main article blockquote {
+	background: rgba(200,200,200,0.1);
+	border: 1px solid rgba(200,200,200,0.2);
+	float: left;
+	font-family: "robotolight_italic", Arial, Helvetica, Sans-serif;
+	font-size: 1.286em;
+	font-weight: normal;
+	margin: 1em 0;
+	overflow: hidden;
+	padding: 1em;
+	position: relative;
+	width: 100%;
+}
+body.pen_round_corners #main article blockquote {
+	border-radius: 5px;
+}
+#main article blockquote p {
+	margin-bottom: 0.5em;
+	position: relative;
+	z-index: 2;
+}
+#main article blockquote p:first-child:last-child {
+	margin: 0;
+}
+#main article blockquote:before {
+	bottom: 0;
+	color: rgba(200,200,200,0.25);
+	content: "\f10e";
+	font-family: "FontAwesome";
+	font-size: 2em;
+	font-weight: normal;
+	position: absolute;
+	right: 0.5em;
+	text-shadow: none;
+	z-index: 1;
+}
+#main article blockquote footer {
+	font-size: smaller;
+}
+#main article pre,
+#main article code {
+	background: #333;
+	color: #eee;
+}
+#main article pre {
+	border: 1px solid #333;
+	border-left-color: #000;
+	border-top-color: #000;
+	box-shadow: 2px 2px 3px rgba(0,0,0,0.5) inset, 1px 1px 0 rgba(255,255,255,0.15) inset;
+	display: block;
+	float: left;
+	margin: 0 0 1em;
+	padding: 1em;
+	text-shadow: 1px 1px 1px rgba(0,0,0,0.9);
+	width: 100%;
+}
+#main article code {
+	display: inline-block;
+	font-family: "Fira Code", Consolas, "Source Code Pro", "Courier New", Courier;
+	font-size: 0.857em;
+	font-weight: 400;
+	margin: 0;
+	padding: 0;
+	position: relative;
+	text-shadow: 1px 1px 1px rgba(0,0,0,0.9);
+}
+#main article p > code {
+	padding: 1px 0.5em;
+}
+body.pen_round_corners #main article p > code {
+	border-radius: 3px;
+}
+#main article pre code {
+	background: transparent;
+	display: block;
+}
+#main article .syntaxhighlighter code {
+	text-shadow: none;
+}
+#primary article table {
+	background: #fff;
+	border-collapse: collapse;
+	box-shadow: 0 1px 2px rgba(0,0,0,0.1);
+}
+#primary article table caption {
+	font-weight: bold;
+	padding: 1em 0;
+	text-align: left;
+}
+#primary article table th,
+#primary article table td {
+	background: #f7f7f7;
+	border: 1px solid #ddd;
+	cursor: default;
+	padding: 0.5em 1em;
+}
+#primary article table th {
+	background: #fff;
+	color: #777;
+	font-weight: bold;
+	text-align: left;
+}
+#primary article table td {
+	color: #555;
+	text-shadow: 1px 1px 0 rgba(255,255,255,0.5);
+	transition: background-color .3s, color .3s;
+}
+#primary article table tr:nth-child(2n+1) td {
+	background: #f0f0f0;
+}
+#primary article table tr:hover td {
+	background: #feffee;
+	color: #000;
+}
+body,
+input,
+option,
+select,
+textarea {
+	font-family: "robotoregular", Arial, Helvetica, Sans-serif;
+}
+.pen_message a,
+a.more-link,
+#page .pen_jump_menu ul a,
+#page .pen_jump_menu h4 span,
+#main .sticky .entry-content {
+	font-family: "robotobold", Arial, Helvetica, Sans-serif;
+	font-weight: normal;
+}
+#pen_footer .pen_footer_inner .pen_phone a {
+	font-size: 1.286em;
+}
+#page .widget-title,
+#pen_footer .pen_footer_inner .pen_phone a {
+	font-family: "roboto_slabregular", Arial, Helvetica, Sans-serif;
+}
+.archive-description {
+	font-family: "robotolight", Arial, Helvetica, Sans-serif;
+}
+#main .pen_options_overview h3 {
+	font-family: "robotomedium", Arial, Helvetica, Sans-serif;
+}
+#main .pen_options_overview table th,
+#main .pen_options_overview table td {
+	font-family: "robotobold", Arial, Helvetica, Sans-serif;
+	font-size: 0.857em;
+	font-weight: normal;
+}
+#main .entry-footer .tags-links a {
+	font-family: "robotoregular", Arial, Helvetica, Sans-serif;
+}
+#comments .no-comments,
+#comments .comment-awaiting-moderation {
+	font-family: "robotobold", Arial, Helvetica, Sans-serif;
+}
+#respond h3 {
+	font-family: "roboto_slabbold", Arial, Helvetica, Sans-serif;
+}
+#pen_page .pen_preset_thumbnails.pen_color .pen_thumbnail_wrapper span span {
+	font-family: "roboto_condensedbold", Arial, Helvetica, Sans-serif;
+}
+#content .sidebar .widget a {
+	font-family: "robotomedium", Arial, Helvetica, Sans-serif;
+}
+#page .widget-area .calendar_wrap caption {
+	font-family: "roboto_slablight", Arial, Helvetica, Sans-serif;
+}

+ 560 - 0
assets/css/pen-widgets.css

@@ -0,0 +1,560 @@
+#content .sidebar ul,
+#content .sidebar ol {
+	float: left;
+	margin: 0;
+	padding: 0 0 0 2em;
+	width: 100%;
+}
+#content .sidebar .widget {
+	float: left;
+	font-size: 0.857em;
+	margin: 0 0 1em;
+	width: 100%;
+}
+#content .sidebar .widget a:focus,
+#content .sidebar .widget a:hover,
+#content .sidebar .widget a:active {
+	text-decoration: none;
+}
+#content .sidebar .widget:last-child {
+	margin-bottom: 0;
+}
+#page .widget-area .widget {
+	position: relative;
+}
+#page .widget-area .widget > div {
+	float: left;
+	width: 100%;
+}
+#page .widget-title {
+	-ms-word-break: break-all;
+	word-break: break-all;
+	word-break: break-word;
+	-webkit-hyphens: auto;
+	-moz-hyphens: auto;
+	hyphens: auto;
+	transition: color .5s;
+}
+#pen_top .widget-area .widget-title,
+#pen_left .widget-area .widget-title,
+#pen_right .widget-area .widget-title,
+#pen_bottom .widget-area .widget-title {
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_not_transparent {
+	padding: 20px;
+	text-shadow: none;
+}
+#page .widget-area .widget.widget_calendar.pen_widget_not_transparent {
+	padding: 10px;
+}
+body.pen_drop_shadow #page .widget-area .widget.pen_widget_not_transparent {
+	box-shadow: 0 5px 10px rgba(0,0,0,0.4), 0 0 5px rgba(0,0,0,0.4);
+}
+body.pen_round_corners #page .widget-area .widget.pen_widget_not_transparent {
+	border-radius: 5px;
+}
+#page .widget-area .widget.pen_widget_not_transparent .widget-title {
+	border-bottom: 1px solid rgba(0,0,0,0.2);
+	-webkit-box-sizing: content-box;
+	-moz-box-sizing: content-box;
+	box-sizing: content-box;
+	cursor: default;
+	margin: -20px -20px 1em;
+	padding: 14px 1em;
+}
+body.pen_round_corners #page .widget-area .widget.pen_widget_not_transparent .widget-title {
+	border-radius: 5px 5px 0 0;
+}
+#page .widget-area .widget.pen_widget_blue {
+	background: #2b8fd2;
+	color: #ddf1ff;
+}
+#page .widget-area .widget.pen_widget_blue .widget-title {
+	background: -ms-linear-gradient(325deg, #1a7dbd 0%, #2b8fd2 100%);
+	background: linear-gradient(125deg, #1a7dbd 0%, #2b8fd2 100%);
+	box-shadow: 0 0 5px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255,0.01) inset;
+	color: #fff;
+	text-shadow: 1px 1px 0 rgba(0,0,0,0.75);
+}
+#page .widget-area .widget.pen_widget_blue input,
+#page .widget-area .widget.pen_widget_blue option,
+#page .widget-area .widget.pen_widget_blue select,
+#page .widget-area .widget.pen_widget_blue textarea {
+	background: #1a7dbd;
+	border: 1px solid rgba(155,155,155,0.2);
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_blue a {
+	color: #bfeeff;
+}
+#page .widget-area .widget.pen_widget_blue a:focus,
+#page .widget-area .widget.pen_widget_blue a:hover,
+#page .widget-area .widget.pen_widget_blue a:active {
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_dark {
+	background: rgba(0,0,0,0.95);
+	color: #fefefe;
+}
+#page .widget-area .widget.pen_widget_dark .widget-title {
+	background: -ms-linear-gradient(325deg, #0f0f0f 0%, #202020 100%);
+	background: linear-gradient(125deg, #0f0f0f 0%, #202020 100%);
+	border-bottom: 1px solid rgba(255,255,255,0.1);
+	box-shadow: 0 0 5px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255,0.01) inset;
+	color: #fff;
+	text-shadow: 1px 1px 0 rgba(0,0,0,0.75);
+}
+#page .widget-area .widget.pen_widget_dark input,
+#page .widget-area .widget.pen_widget_dark option,
+#page .widget-area .widget.pen_widget_dark select,
+#page .widget-area .widget.pen_widget_dark textarea {
+	background: #333;
+	border: 1px solid rgba(155,155,155,0.2);
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_dark a {
+	color: #eee;
+}
+#page .widget-area .widget.pen_widget_dark a:focus,
+#page .widget-area .widget.pen_widget_dark a:hover,
+#page .widget-area .widget.pen_widget_dark a:active {
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_light {
+	background: rgba(255,255,255,0.95);
+	color: #333;
+}
+#page .widget-area .widget.pen_widget_light .widget-title {
+	background: -ms-linear-gradient(325deg, rgba(255,255,255,1) 0%, rgba(240,240,240,0.75) 100%);
+	background: linear-gradient(125deg, rgba(255,255,255,1) 0%, rgba(240,240,240,0.75) 100%);
+	border-bottom: 1px solid rgba(200,200,200,0.5);
+	color: #333;
+	text-shadow: 1px 1px 0 rgba(255,255,255,0.75);
+}
+#page .widget-area .widget.pen_widget_light input,
+#page .widget-area .widget.pen_widget_light option,
+#page .widget-area .widget.pen_widget_light select,
+#page .widget-area .widget.pen_widget_light textarea {
+	background: #fff;
+	border: 1px solid rgba(155,155,155,0.5);
+	color: #333;
+}
+#page .widget-area .widget.pen_widget_light a {
+	color: #0087cc;
+}
+#page .widget-area .widget.pen_widget_light a:focus,
+#page .widget-area .widget.pen_widget_light a:hover,
+#page .widget-area .widget.pen_widget_light a:active {
+	color: #18b1e7;
+}
+#page .widget-area .widget.pen_widget_orange {
+	background: #ff7500;
+	color: #333;
+}
+#page .widget-area .widget.pen_widget_orange .widget-title {
+	background: -ms-linear-gradient(325deg, #ff5a00 0%, #ffa50f 100%);
+	background: linear-gradient(125deg, #ff5a00 0%, #ffa50f 100%);
+	box-shadow: 0 0 5px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255,0.01) inset;
+	color: #fff;
+	text-shadow: 1px 1px 0 rgba(0,0,0,0.75);
+}
+#page .widget-area .widget.pen_widget_orange input,
+#page .widget-area .widget.pen_widget_orange option,
+#page .widget-area .widget.pen_widget_orange select,
+#page .widget-area .widget.pen_widget_orange textarea {
+	background: #ffa50f;
+	border: 1px solid rgba(155,155,155,0.2);
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_orange a {
+	color: #ffeee4;
+}
+#page .widget-area .widget.pen_widget_orange a:focus,
+#page .widget-area .widget.pen_widget_orange a:hover,
+#page .widget-area .widget.pen_widget_orange a:active {
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_purple {
+	background: #7200cf;
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_purple .widget-title {
+	background: -ms-linear-gradient(325deg, #43008c 0%, #6700d7 100%);
+	background: linear-gradient(125deg, #43008c 0%, #6700d7 100%);
+	box-shadow: 0 0 5px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255,0.01) inset;
+	color: #fff;
+	text-shadow: 1px 1px 0 rgba(0,0,0,0.75);
+}
+#page .widget-area .widget.pen_widget_purple input,
+#page .widget-area .widget.pen_widget_purple option,
+#page .widget-area .widget.pen_widget_purple select,
+#page .widget-area .widget.pen_widget_purple textarea {
+	background: #4c0a93;
+	border: 1px solid rgba(155,155,155,0.2);
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_purple a {
+	color: #f5ecfc;
+}
+#page .widget-area .widget.pen_widget_purple a:focus,
+#page .widget-area .widget.pen_widget_purple a:hover,
+#page .widget-area .widget.pen_widget_purple a:active {
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_red {
+	background: #e74c3c;
+	color: #ffecea;
+}
+#page .widget-area .widget.pen_widget_red .widget-title {
+	background: -ms-linear-gradient(325deg, #c0392b 0%, #e74c3c 100%);
+	background: linear-gradient(125deg, #c0392b 0%, #e74c3c 100%);
+	box-shadow: 0 0 5px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255,0.01) inset;
+	color: #fff;
+	text-shadow: 1px 1px 0 rgba(0,0,0,0.75);
+}
+#page .widget-area .widget.pen_widget_red input,
+#page .widget-area .widget.pen_widget_red option,
+#page .widget-area .widget.pen_widget_red select,
+#page .widget-area .widget.pen_widget_red textarea {
+	background: #c0392b;
+	border: 1px solid rgba(155,155,155,0.2);
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_red a {
+	color: #ffeaea;
+}
+#page .widget-area .widget.pen_widget_red a:focus,
+#page .widget-area .widget.pen_widget_red a:hover,
+#page .widget-area .widget.pen_widget_red a:active {
+	color: #fff;
+}
+#page .widget-area .widget.pen_widget_yellow {
+	background: #ffd800;
+	color: #333;
+}
+#page .widget-area .widget.pen_widget_yellow .widget-title {
+	background: -ms-linear-gradient(325deg, #ffbd00 0%, #ffea00 100%);
+	background: linear-gradient(125deg, #ffbd00 0%, #ffea00 100%);
+	box-shadow: 0 0 5px rgba(0,0,0,0.15), 0 1px 0 rgba(255,255,255,0.01) inset;
+	color: #333;
+	text-shadow: 1px 1px 0 rgba(255,255,255,0.5);
+}
+#page .widget-area .widget.pen_widget_yellow input,
+#page .widget-area .widget.pen_widget_yellow option,
+#page .widget-area .widget.pen_widget_yellow select,
+#page .widget-area .widget.pen_widget_yellow textarea {
+	background: #ffea00;
+	border: 1px solid rgba(155,155,155,0.2);
+	color: #333;
+}
+#page .widget-area .widget.pen_widget_yellow a {
+	color: #555;
+}
+#page .widget-area .widget.pen_widget_yellow a:focus,
+#page .widget-area .widget.pen_widget_yellow a:hover,
+#page .widget-area .widget.pen_widget_yellow a:active {
+	color: #000;
+}
+#page .widget-area .widget_tag_cloud .tagcloud a {
+	display: inline-block;
+	margin: 0 5px 0 0;
+	position: relative;
+	transition: transform .3s;
+	transform: scale(0.9,0.9);
+	-webkit-transform-style: preserve-3d;
+	-webkit-backface-visibility: hidden;
+}
+#page .widget-area .widget_tag_cloud .tagcloud a:focus,
+#page .widget-area .widget_tag_cloud .tagcloud a:hover {
+	transform: scale(1.1,1.1);
+}
+#page .widget-area .calendar_wrap {
+	width: 100%;
+}
+body.pen_round_corners #page .widget-area .calendar_wrap {
+	border-radius: 5px;
+	overflow: hidden;
+	position: relative;
+}
+#page .widget-area .calendar_wrap a {
+	border: 1px solid rgba(255,255,255,0.1);
+	display: block;
+	text-shadow: none;
+	transition: background-color .3s, border-color .3s;
+}
+#page .widget-area .calendar_wrap a:focus,
+#page .widget-area .calendar_wrap a:hover,
+#page .widget-area .calendar_wrap a:active {
+	background: rgba(120,120,120,0.3);
+	border: 1px solid rgba(255,255,255,0.2);
+	color: rgba(255,255,255,0.75);
+	text-decoration: none;
+}
+#page .widget-area .calendar_wrap table {
+	background: rgba(0,0,0,0.1);
+	border-collapse: collapse;
+	margin: 0;
+}
+#page .widget-area .calendar_wrap caption {
+	background: rgba(0,0,0,0.2);
+	font-size: 1.286em;
+	margin: 0;
+	padding: 1em 0;
+	text-transform: uppercase;
+}
+#page .widget-area .calendar_wrap th,
+#page .widget-area .calendar_wrap td {
+	padding: 0.4em;
+	line-height: 2;
+	text-align: center;
+}
+#page .widget-area .calendar_wrap th {
+	padding: 5px;
+}
+#page .widget-area .calendar_wrap tbody td {
+	font-size: smaller;
+	padding: 0;
+}
+#page .widget-area .calendar_wrap tfoot #next,
+#page .widget-area .calendar_wrap tfoot #prev {
+	text-align: center;
+	text-transform: uppercase;
+}
+#pen_left #page .widget-area .calendar_wrap caption,
+#pen_right #page .widget-area .calendar_wrap caption,
+#pen_bottom #page .widget-area .calendar_wrap caption {
+	border-bottom: 1px solid #eee;
+	border-bottom-color: rgba(255,255,255,0.2);
+}
+#pen_section .widget-area .widget_search .search-field,
+#pen_section .widget-area .widget_search .search-submit {
+	font-size: 1em;
+	font-weight: normal;
+	line-height: 1.5;
+	transition: background-color .2s, border-color .2s, color .2s;
+}
+#pen_section .widget-area .widget_search .search-field {
+	background: transparent;
+	border: 1px solid rgba(255,255,255,0.5);
+	color: #eee;
+	margin: 0 0 0.25em 0;
+	max-width: 400px;
+	padding: 0.5em 1em;
+	width: 65%;
+}
+body.pen_drop_shadow #pen_section .widget-area .widget_search.pen_widget_transparent .search-field {
+	box-shadow: 2px 2px 5px rgba(0,0,0,0.25), 2px 2px 5px rgba(0,0,0,0.25) inset;
+	text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
+}
+#pen_section .widget-area .widget_search .search-field:focus,
+#pen_section .widget-area .widget_search .search-field:hover,
+#pen_section .widget-area .widget_search .search-field:active {
+	color: #fff;
+	text-decoration: none;
+}
+#pen_section .widget-area .widget_search .search-submit {
+	background: #fff;
+	border: 1px solid #fff;
+	color: #0087cc;
+	margin: 0;
+	max-width: 200px;
+	padding: 0.5em 1em;
+	text-decoration: none;
+	width: 33%;
+}
+body.pen_drop_shadow #pen_section .widget-area .widget_search.pen_widget_transparent .search-submit {
+	box-shadow: 2px 2px 5px rgba(0,0,0,0.25);
+}
+#pen_section .widget-area .widget_search .search-submit:focus,
+#pen_section .widget-area .widget_search .search-submit:hover,
+#pen_section .widget-area .widget_search .search-submit:active {
+	background: #0087cc;
+	border-color: #0087cc;
+	color: #fff;
+	text-decoration: none;
+}
+#pen_section .widget-area .widget_search.pen_widget_blue .search-submit:focus,
+#pen_section .widget-area .widget_search.pen_widget_blue .search-submit:hover,
+#pen_section .widget-area .widget_search.pen_widget_blue .search-submit:active {
+	background: #0073ae;
+	border-color: #0073ae;
+}
+#pen_section .widget-area .widget_search.pen_widget_dark .search-submit:focus,
+#pen_section .widget-area .widget_search.pen_widget_dark .search-submit:hover,
+#pen_section .widget-area .widget_search.pen_widget_dark .search-submit:active {
+	background: #555;
+	border-color: #555;
+}
+#pen_section .widget-area .widget_search.pen_widget_light .search-submit:focus,
+#pen_section .widget-area .widget_search.pen_widget_light .search-submit:hover,
+#pen_section .widget-area .widget_search.pen_widget_light .search-submit:active {
+	background: #fff;
+	border-color: #aaa;
+	color: #555;
+}
+#pen_section .widget-area .widget_search.pen_widget_orange .search-submit:focus,
+#pen_section .widget-area .widget_search.pen_widget_orange .search-submit:hover,
+#pen_section .widget-area .widget_search.pen_widget_orange .search-submit:active {
+	background: #ffc22f;
+	border-color: #e1a23b;
+}
+#pen_section .widget-area .widget_search.pen_widget_purple .search-submit:focus,
+#pen_section .widget-area .widget_search.pen_widget_purple .search-submit:hover,
+#pen_section .widget-area .widget_search.pen_widget_purple .search-submit:active {
+	background: #8e38ef;
+	border-color: #8e38ef;
+}
+#pen_section .widget-area .widget_search.pen_widget_red .search-submit:focus,
+#pen_section .widget-area .widget_search.pen_widget_red .search-submit:hover,
+#pen_section .widget-area .widget_search.pen_widget_red .search-submit:active {
+	background: #a81f11;
+	border-color: #a81f11;
+}
+#pen_section .widget-area .widget_search.pen_widget_yellow .search-submit:focus,
+#pen_section .widget-area .widget_search.pen_widget_yellow .search-submit:hover,
+#pen_section .widget-area .widget_search.pen_widget_yellow .search-submit:active {
+	background: #fff47c;
+	color: #333;
+}
+body.pen_round_corners #pen_section .widget-area .widget_search .search-field {
+	border-radius: 5px 0 0 5px;
+}
+body.pen_round_corners #pen_section .widget-area .widget_search .search-submit {
+	border-radius: 0 5px 5px 0;
+}
+#page .widget.widget_archive li,
+#page .widget.widget_nav_menu li,
+#page .widget.widget_pages li,
+#page .widget.widget_meta li,
+#page .widget.widget_recent_entries li,
+#page .widget.widget_recent_comments li {
+	float: left;
+	width: 100%;
+	-webkit-transform-style: preserve-3d;
+	-webkit-backface-visibility: hidden;
+}
+#page .widget.widget_archive ul,
+#page .widget.widget_archive ul li,
+#page .widget.widget_nav_menu ul,
+#page .widget.widget_nav_menu ul li,
+#page .widget.widget_pages ul,
+#page .widget.widget_pages ul li,
+#page .widget.widget_meta ul,
+#page .widget.widget_meta ul li,
+#page .widget.widget_recent_entries ul,
+#page .widget.widget_recent_entries ul li,
+#page .widget.widget_categories ul,
+#page .widget.widget_categories ul li,
+#page .widget.widget_recent_comments ul,
+#page .widget.widget_recent_comments ul li {
+	list-style: none;
+	list-style-image: none;
+	list-style-type: none;
+	margin: 0;
+	padding: 0;
+}
+#page .widget.widget_recent_entries ul li:before,
+#page .widget.widget_archive ul li:before,
+#page .widget.widget_nav_menu ul li:before,
+#page .widget.widget_pages ul li:before,
+#page .widget.widget_meta ul li:before,
+#page .widget.widget_categories ul li:before {
+	content: "\f101";
+	font-family: "FontAwesome";
+	font-weight: normal;
+	margin: 0 1em 0 0;
+	opacity: 0.75;
+}
+#page .widget.widget_recent_entries ul li {
+	padding: 0 0 0.5em 2em;
+	text-indent: -2em;
+}
+#page .widget.widget_recent_entries ul li:last-child {
+	padding-bottom: 0;
+}
+#page .widget.widget_recent_entries ul li .post-date {
+	display: block;
+	font-size: 0.857em;
+	margin: 0 0 0 2em;
+}
+#page .widget.widget_archive ul li,
+#page .widget.widget_nav_menu ul li,
+#page .widget.widget_pages ul li,
+#page .widget.widget_meta ul li,
+#page .widget.widget_categories ul li {
+	font-size: 1em;
+}
+#page .widget.widget_archive ul li li,
+#page .widget.widget_nav_menu ul li li,
+#page .widget.widget_pages ul li li,
+#page .widget.widget_meta ul li li,
+#page .widget.widget_categories ul li li {
+	margin-left: 0.5em;
+}
+#page .widget.widget_recent_comments ul li {
+	padding: 1em 1em 1em 3.5em;
+	position: relative;
+	-webkit-transform-style: preserve-3d;
+	-webkit-backface-visibility: hidden;
+}
+#page .widget.widget_recent_comments ul li:first-child {
+	padding-top: 0;
+}
+#page .widget.widget_recent_comments ul li:last-child {
+	padding-bottom: 0;
+}
+#page .widget.widget_recent_comments ul li:before {
+	color: rgba(170,170,170,0.2);
+	content: "\f075";
+	font-family: "FontAwesome";
+	font-size: 2em;
+	left: 0.25em;
+	position: absolute;
+	text-shadow: none !important;
+	top: 50%;
+	transform: translateY(-50%);
+	transition: color .3s;
+}
+#page .widget.widget_recent_comments ul li:hover:before {
+	color: rgba(170,170,170,0.5);
+}
+#pen_bottom .widget.widget_recent_comments ul li:before,
+#page .widget.widget_recent_comments.pen_widget_dark ul li:before {
+	color: rgba(120,120,120,0.2);
+}
+#pen_bottom .widget.widget_recent_comments ul li:hover:before,
+#page .widget.widget_recent_comments.pen_widget_dark ul li:hover:before {
+	color: rgba(120,120,120,0.5);
+}
+#page .widget.widget_recent_comments.pen_widget_blue ul li:before,
+#page .widget.widget_recent_comments.pen_widget_orange ul li:before,
+#page .widget.widget_recent_comments.pen_widget_purple ul li:before,
+#page .widget.widget_recent_comments.pen_widget_red ul li:before,
+#page .widget.widget_recent_comments.pen_widget_yellow ul li:before {
+	color: rgba(0,0,0,0.3);
+}
+#page .widget.widget_recent_comments.pen_widget_blue ul li:hover:before,
+#page .widget.widget_recent_comments.pen_widget_orange ul li:hover:before,
+#page .widget.widget_recent_comments.pen_widget_purple ul li:hover:before,
+#page .widget.widget_recent_comments.pen_widget_red ul li:hover:before,
+#page .widget.widget_recent_comments.pen_widget_yellow ul li:hover:before {
+	color: rgba(0,0,0,0.5);
+}
+#page .widget.widget_recent_comments ul li:after {
+	background: -ms-linear-gradient(0deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.05) 100%);
+	background: linear-gradient(90deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.05) 100%);
+	bottom: 0;
+	content: "";
+	height: 1px;
+	left: 0;
+	position: absolute;
+	width: 100%;
+}
+#page .widget.widget_recent_comments.pen_widget_dark ul li:after {
+	background: -ms-linear-gradient(0deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);
+	background: linear-gradient(90deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.05) 100%);
+}
+#page .widget.widget_recent_comments ul li:last-child:after {
+	display: none;
+}

+ 3623 - 0
assets/css/plugins/animate.css

@@ -0,0 +1,3623 @@
+@charset "UTF-8";
+
+/*!
+ * animate.css -http://daneden.me/animate
+ * Version - 3.7.0
+ * Licensed under the MIT license - http://opensource.org/licenses/MIT
+ *
+ * Copyright (c) 2018 Daniel Eden
+ */
+
+@-webkit-keyframes bounce {
+  from,
+  20%,
+  53%,
+  80%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  40%,
+  43% {
+    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+    -webkit-transform: translate3d(0, -30px, 0);
+    transform: translate3d(0, -30px, 0);
+  }
+
+  70% {
+    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+    -webkit-transform: translate3d(0, -15px, 0);
+    transform: translate3d(0, -15px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, -4px, 0);
+    transform: translate3d(0, -4px, 0);
+  }
+}
+
+@keyframes bounce {
+  from,
+  20%,
+  53%,
+  80%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  40%,
+  43% {
+    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+    -webkit-transform: translate3d(0, -30px, 0);
+    transform: translate3d(0, -30px, 0);
+  }
+
+  70% {
+    -webkit-animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);
+    -webkit-transform: translate3d(0, -15px, 0);
+    transform: translate3d(0, -15px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, -4px, 0);
+    transform: translate3d(0, -4px, 0);
+  }
+}
+
+.bounce {
+  -webkit-animation-name: bounce;
+  animation-name: bounce;
+  -webkit-transform-origin: center bottom;
+  transform-origin: center bottom;
+}
+
+@-webkit-keyframes flash {
+  from,
+  50%,
+  to {
+    opacity: 1;
+  }
+
+  25%,
+  75% {
+    opacity: 0;
+  }
+}
+
+@keyframes flash {
+  from,
+  50%,
+  to {
+    opacity: 1;
+  }
+
+  25%,
+  75% {
+    opacity: 0;
+  }
+}
+
+.flash {
+  -webkit-animation-name: flash;
+  animation-name: flash;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes pulse {
+  from {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  50% {
+    -webkit-transform: scale3d(1.05, 1.05, 1.05);
+    transform: scale3d(1.05, 1.05, 1.05);
+  }
+
+  to {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+@keyframes pulse {
+  from {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  50% {
+    -webkit-transform: scale3d(1.05, 1.05, 1.05);
+    transform: scale3d(1.05, 1.05, 1.05);
+  }
+
+  to {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+.pulse {
+  -webkit-animation-name: pulse;
+  animation-name: pulse;
+}
+
+@-webkit-keyframes rubberBand {
+  from {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  30% {
+    -webkit-transform: scale3d(1.25, 0.75, 1);
+    transform: scale3d(1.25, 0.75, 1);
+  }
+
+  40% {
+    -webkit-transform: scale3d(0.75, 1.25, 1);
+    transform: scale3d(0.75, 1.25, 1);
+  }
+
+  50% {
+    -webkit-transform: scale3d(1.15, 0.85, 1);
+    transform: scale3d(1.15, 0.85, 1);
+  }
+
+  65% {
+    -webkit-transform: scale3d(0.95, 1.05, 1);
+    transform: scale3d(0.95, 1.05, 1);
+  }
+
+  75% {
+    -webkit-transform: scale3d(1.05, 0.95, 1);
+    transform: scale3d(1.05, 0.95, 1);
+  }
+
+  to {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+@keyframes rubberBand {
+  from {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  30% {
+    -webkit-transform: scale3d(1.25, 0.75, 1);
+    transform: scale3d(1.25, 0.75, 1);
+  }
+
+  40% {
+    -webkit-transform: scale3d(0.75, 1.25, 1);
+    transform: scale3d(0.75, 1.25, 1);
+  }
+
+  50% {
+    -webkit-transform: scale3d(1.15, 0.85, 1);
+    transform: scale3d(1.15, 0.85, 1);
+  }
+
+  65% {
+    -webkit-transform: scale3d(0.95, 1.05, 1);
+    transform: scale3d(0.95, 1.05, 1);
+  }
+
+  75% {
+    -webkit-transform: scale3d(1.05, 0.95, 1);
+    transform: scale3d(1.05, 0.95, 1);
+  }
+
+  to {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+.rubberBand {
+  -webkit-animation-name: rubberBand;
+  animation-name: rubberBand;
+}
+
+@-webkit-keyframes shake {
+  from,
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  10%,
+  30%,
+  50%,
+  70%,
+  90% {
+    -webkit-transform: translate3d(-10px, 0, 0);
+    transform: translate3d(-10px, 0, 0);
+  }
+
+  20%,
+  40%,
+  60%,
+  80% {
+    -webkit-transform: translate3d(10px, 0, 0);
+    transform: translate3d(10px, 0, 0);
+  }
+}
+
+@keyframes shake {
+  from,
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  10%,
+  30%,
+  50%,
+  70%,
+  90% {
+    -webkit-transform: translate3d(-10px, 0, 0);
+    transform: translate3d(-10px, 0, 0);
+  }
+
+  20%,
+  40%,
+  60%,
+  80% {
+    -webkit-transform: translate3d(10px, 0, 0);
+    transform: translate3d(10px, 0, 0);
+  }
+}
+
+.shake {
+  -webkit-animation-name: shake;
+  animation-name: shake;
+}
+
+@-webkit-keyframes headShake {
+  0% {
+    -webkit-transform: translateX(0);
+    transform: translateX(0);
+  }
+
+  6.5% {
+    -webkit-transform: translateX(-6px) rotateY(-9deg);
+    transform: translateX(-6px) rotateY(-9deg);
+  }
+
+  18.5% {
+    -webkit-transform: translateX(5px) rotateY(7deg);
+    transform: translateX(5px) rotateY(7deg);
+  }
+
+  31.5% {
+    -webkit-transform: translateX(-3px) rotateY(-5deg);
+    transform: translateX(-3px) rotateY(-5deg);
+  }
+
+  43.5% {
+    -webkit-transform: translateX(2px) rotateY(3deg);
+    transform: translateX(2px) rotateY(3deg);
+  }
+
+  50% {
+    -webkit-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+
+@keyframes headShake {
+  0% {
+    -webkit-transform: translateX(0);
+    transform: translateX(0);
+  }
+
+  6.5% {
+    -webkit-transform: translateX(-6px) rotateY(-9deg);
+    transform: translateX(-6px) rotateY(-9deg);
+  }
+
+  18.5% {
+    -webkit-transform: translateX(5px) rotateY(7deg);
+    transform: translateX(5px) rotateY(7deg);
+  }
+
+  31.5% {
+    -webkit-transform: translateX(-3px) rotateY(-5deg);
+    transform: translateX(-3px) rotateY(-5deg);
+  }
+
+  43.5% {
+    -webkit-transform: translateX(2px) rotateY(3deg);
+    transform: translateX(2px) rotateY(3deg);
+  }
+
+  50% {
+    -webkit-transform: translateX(0);
+    transform: translateX(0);
+  }
+}
+
+.headShake {
+  -webkit-animation-timing-function: ease-in-out;
+  animation-timing-function: ease-in-out;
+  -webkit-animation-name: headShake;
+  animation-name: headShake;
+}
+
+@-webkit-keyframes swing {
+  20% {
+    -webkit-transform: rotate3d(0, 0, 1, 15deg);
+    transform: rotate3d(0, 0, 1, 15deg);
+  }
+
+  40% {
+    -webkit-transform: rotate3d(0, 0, 1, -10deg);
+    transform: rotate3d(0, 0, 1, -10deg);
+  }
+
+  60% {
+    -webkit-transform: rotate3d(0, 0, 1, 5deg);
+    transform: rotate3d(0, 0, 1, 5deg);
+  }
+
+  80% {
+    -webkit-transform: rotate3d(0, 0, 1, -5deg);
+    transform: rotate3d(0, 0, 1, -5deg);
+  }
+
+  to {
+    -webkit-transform: rotate3d(0, 0, 1, 0deg);
+    transform: rotate3d(0, 0, 1, 0deg);
+  }
+}
+
+@keyframes swing {
+  20% {
+    -webkit-transform: rotate3d(0, 0, 1, 15deg);
+    transform: rotate3d(0, 0, 1, 15deg);
+  }
+
+  40% {
+    -webkit-transform: rotate3d(0, 0, 1, -10deg);
+    transform: rotate3d(0, 0, 1, -10deg);
+  }
+
+  60% {
+    -webkit-transform: rotate3d(0, 0, 1, 5deg);
+    transform: rotate3d(0, 0, 1, 5deg);
+  }
+
+  80% {
+    -webkit-transform: rotate3d(0, 0, 1, -5deg);
+    transform: rotate3d(0, 0, 1, -5deg);
+  }
+
+  to {
+    -webkit-transform: rotate3d(0, 0, 1, 0deg);
+    transform: rotate3d(0, 0, 1, 0deg);
+  }
+}
+
+.swing {
+  -webkit-transform-origin: top center;
+  transform-origin: top center;
+  -webkit-animation-name: swing;
+  animation-name: swing;
+}
+
+@-webkit-keyframes tada {
+  from {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  10%,
+  20% {
+    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+  }
+
+  30%,
+  50%,
+  70%,
+  90% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+  }
+
+  40%,
+  60%,
+  80% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+  }
+
+  to {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+@keyframes tada {
+  from {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+
+  10%,
+  20% {
+    -webkit-transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+    transform: scale3d(0.9, 0.9, 0.9) rotate3d(0, 0, 1, -3deg);
+  }
+
+  30%,
+  50%,
+  70%,
+  90% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg);
+  }
+
+  40%,
+  60%,
+  80% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+    transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg);
+  }
+
+  to {
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+.tada {
+  -webkit-animation-name: tada;
+  animation-name: tada;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes wobble {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  15% {
+    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+  }
+
+  30% {
+    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+  }
+
+  45% {
+    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+  }
+
+  60% {
+    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+  }
+
+  75% {
+    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes wobble {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  15% {
+    -webkit-transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+    transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg);
+  }
+
+  30% {
+    -webkit-transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+    transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg);
+  }
+
+  45% {
+    -webkit-transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+    transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg);
+  }
+
+  60% {
+    -webkit-transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+    transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg);
+  }
+
+  75% {
+    -webkit-transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+    transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.wobble {
+  -webkit-animation-name: wobble;
+  animation-name: wobble;
+}
+
+@-webkit-keyframes jello {
+  from,
+  11.1%,
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  22.2% {
+    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
+    transform: skewX(-12.5deg) skewY(-12.5deg);
+  }
+
+  33.3% {
+    -webkit-transform: skewX(6.25deg) skewY(6.25deg);
+    transform: skewX(6.25deg) skewY(6.25deg);
+  }
+
+  44.4% {
+    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
+    transform: skewX(-3.125deg) skewY(-3.125deg);
+  }
+
+  55.5% {
+    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
+    transform: skewX(1.5625deg) skewY(1.5625deg);
+  }
+
+  66.6% {
+    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
+    transform: skewX(-0.78125deg) skewY(-0.78125deg);
+  }
+
+  77.7% {
+    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
+    transform: skewX(0.390625deg) skewY(0.390625deg);
+  }
+
+  88.8% {
+    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
+    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
+  }
+}
+
+@keyframes jello {
+  from,
+  11.1%,
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  22.2% {
+    -webkit-transform: skewX(-12.5deg) skewY(-12.5deg);
+    transform: skewX(-12.5deg) skewY(-12.5deg);
+  }
+
+  33.3% {
+    -webkit-transform: skewX(6.25deg) skewY(6.25deg);
+    transform: skewX(6.25deg) skewY(6.25deg);
+  }
+
+  44.4% {
+    -webkit-transform: skewX(-3.125deg) skewY(-3.125deg);
+    transform: skewX(-3.125deg) skewY(-3.125deg);
+  }
+
+  55.5% {
+    -webkit-transform: skewX(1.5625deg) skewY(1.5625deg);
+    transform: skewX(1.5625deg) skewY(1.5625deg);
+  }
+
+  66.6% {
+    -webkit-transform: skewX(-0.78125deg) skewY(-0.78125deg);
+    transform: skewX(-0.78125deg) skewY(-0.78125deg);
+  }
+
+  77.7% {
+    -webkit-transform: skewX(0.390625deg) skewY(0.390625deg);
+    transform: skewX(0.390625deg) skewY(0.390625deg);
+  }
+
+  88.8% {
+    -webkit-transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
+    transform: skewX(-0.1953125deg) skewY(-0.1953125deg);
+  }
+}
+
+.jello {
+  -webkit-animation-name: jello;
+  animation-name: jello;
+  -webkit-transform-origin: center;
+  transform-origin: center;
+}
+
+@-webkit-keyframes heartBeat {
+  0% {
+    -webkit-transform: scale(1);
+    transform: scale(1);
+  }
+
+  14% {
+    -webkit-transform: scale(1.3);
+    transform: scale(1.3);
+  }
+
+  28% {
+    -webkit-transform: scale(1);
+    transform: scale(1);
+  }
+
+  42% {
+    -webkit-transform: scale(1.3);
+    transform: scale(1.3);
+  }
+
+  70% {
+    -webkit-transform: scale(1);
+    transform: scale(1);
+  }
+}
+
+@keyframes heartBeat {
+  0% {
+    -webkit-transform: scale(1);
+    transform: scale(1);
+  }
+
+  14% {
+    -webkit-transform: scale(1.3);
+    transform: scale(1.3);
+  }
+
+  28% {
+    -webkit-transform: scale(1);
+    transform: scale(1);
+  }
+
+  42% {
+    -webkit-transform: scale(1.3);
+    transform: scale(1.3);
+  }
+
+  70% {
+    -webkit-transform: scale(1);
+    transform: scale(1);
+  }
+}
+
+.heartBeat {
+  -webkit-animation-name: heartBeat;
+  animation-name: heartBeat;
+  -webkit-animation-duration: 1.3s;
+  animation-duration: 1.3s;
+  -webkit-animation-timing-function: ease-in-out;
+  animation-timing-function: ease-in-out;
+}
+
+@-webkit-keyframes bounceIn {
+  from,
+  20%,
+  40%,
+  60%,
+  80%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(0.3, 0.3, 0.3);
+    transform: scale3d(0.3, 0.3, 0.3);
+  }
+
+  20% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+    transform: scale3d(1.1, 1.1, 1.1);
+  }
+
+  40% {
+    -webkit-transform: scale3d(0.9, 0.9, 0.9);
+    transform: scale3d(0.9, 0.9, 0.9);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(1.03, 1.03, 1.03);
+    transform: scale3d(1.03, 1.03, 1.03);
+  }
+
+  80% {
+    -webkit-transform: scale3d(0.97, 0.97, 0.97);
+    transform: scale3d(0.97, 0.97, 0.97);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+@keyframes bounceIn {
+  from,
+  20%,
+  40%,
+  60%,
+  80%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: scale3d(0.3, 0.3, 0.3);
+    transform: scale3d(0.3, 0.3, 0.3);
+  }
+
+  20% {
+    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+    transform: scale3d(1.1, 1.1, 1.1);
+  }
+
+  40% {
+    -webkit-transform: scale3d(0.9, 0.9, 0.9);
+    transform: scale3d(0.9, 0.9, 0.9);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(1.03, 1.03, 1.03);
+    transform: scale3d(1.03, 1.03, 1.03);
+  }
+
+  80% {
+    -webkit-transform: scale3d(0.97, 0.97, 0.97);
+    transform: scale3d(0.97, 0.97, 0.97);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: scale3d(1, 1, 1);
+    transform: scale3d(1, 1, 1);
+  }
+}
+
+.bounceIn {
+  -webkit-animation-duration: 0.75s;
+  animation-duration: 0.75s;
+  -webkit-animation-name: bounceIn;
+  animation-name: bounceIn;
+}
+
+@-webkit-keyframes bounceInDown {
+  from,
+  60%,
+  75%,
+  90%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -3000px, 0);
+    transform: translate3d(0, -3000px, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 25px, 0);
+    transform: translate3d(0, 25px, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(0, -10px, 0);
+    transform: translate3d(0, -10px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, 5px, 0);
+    transform: translate3d(0, 5px, 0);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes bounceInDown {
+  from,
+  60%,
+  75%,
+  90%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -3000px, 0);
+    transform: translate3d(0, -3000px, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 25px, 0);
+    transform: translate3d(0, 25px, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(0, -10px, 0);
+    transform: translate3d(0, -10px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, 5px, 0);
+    transform: translate3d(0, 5px, 0);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.bounceInDown {
+  -webkit-animation-name: bounceInDown;
+  animation-name: bounceInDown;
+}
+
+@-webkit-keyframes bounceInLeft {
+  from,
+  60%,
+  75%,
+  90%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-3000px, 0, 0);
+    transform: translate3d(-3000px, 0, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(25px, 0, 0);
+    transform: translate3d(25px, 0, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(-10px, 0, 0);
+    transform: translate3d(-10px, 0, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(5px, 0, 0);
+    transform: translate3d(5px, 0, 0);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes bounceInLeft {
+  from,
+  60%,
+  75%,
+  90%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  0% {
+    opacity: 0;
+    -webkit-transform: translate3d(-3000px, 0, 0);
+    transform: translate3d(-3000px, 0, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(25px, 0, 0);
+    transform: translate3d(25px, 0, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(-10px, 0, 0);
+    transform: translate3d(-10px, 0, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(5px, 0, 0);
+    transform: translate3d(5px, 0, 0);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.bounceInLeft {
+  -webkit-animation-name: bounceInLeft;
+  animation-name: bounceInLeft;
+}
+
+@-webkit-keyframes bounceInRight {
+  from,
+  60%,
+  75%,
+  90%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(3000px, 0, 0);
+    transform: translate3d(3000px, 0, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(-25px, 0, 0);
+    transform: translate3d(-25px, 0, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(10px, 0, 0);
+    transform: translate3d(10px, 0, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(-5px, 0, 0);
+    transform: translate3d(-5px, 0, 0);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes bounceInRight {
+  from,
+  60%,
+  75%,
+  90%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(3000px, 0, 0);
+    transform: translate3d(3000px, 0, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(-25px, 0, 0);
+    transform: translate3d(-25px, 0, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(10px, 0, 0);
+    transform: translate3d(10px, 0, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(-5px, 0, 0);
+    transform: translate3d(-5px, 0, 0);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.bounceInRight {
+  -webkit-animation-name: bounceInRight;
+  animation-name: bounceInRight;
+}
+
+@-webkit-keyframes bounceInUp {
+  from,
+  60%,
+  75%,
+  90%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 3000px, 0);
+    transform: translate3d(0, 3000px, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, -20px, 0);
+    transform: translate3d(0, -20px, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, -5px, 0);
+    transform: translate3d(0, -5px, 0);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes bounceInUp {
+  from,
+  60%,
+  75%,
+  90%,
+  to {
+    -webkit-animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+    animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  }
+
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 3000px, 0);
+    transform: translate3d(0, 3000px, 0);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, -20px, 0);
+    transform: translate3d(0, -20px, 0);
+  }
+
+  75% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+
+  90% {
+    -webkit-transform: translate3d(0, -5px, 0);
+    transform: translate3d(0, -5px, 0);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.bounceInUp {
+  -webkit-animation-name: bounceInUp;
+  animation-name: bounceInUp;
+}
+
+@-webkit-keyframes bounceOut {
+  20% {
+    -webkit-transform: scale3d(0.9, 0.9, 0.9);
+    transform: scale3d(0.9, 0.9, 0.9);
+  }
+
+  50%,
+  55% {
+    opacity: 1;
+    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+    transform: scale3d(1.1, 1.1, 1.1);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale3d(0.3, 0.3, 0.3);
+    transform: scale3d(0.3, 0.3, 0.3);
+  }
+}
+
+@keyframes bounceOut {
+  20% {
+    -webkit-transform: scale3d(0.9, 0.9, 0.9);
+    transform: scale3d(0.9, 0.9, 0.9);
+  }
+
+  50%,
+  55% {
+    opacity: 1;
+    -webkit-transform: scale3d(1.1, 1.1, 1.1);
+    transform: scale3d(1.1, 1.1, 1.1);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale3d(0.3, 0.3, 0.3);
+    transform: scale3d(0.3, 0.3, 0.3);
+  }
+}
+
+.bounceOut {
+  -webkit-animation-duration: 0.75s;
+  animation-duration: 0.75s;
+  -webkit-animation-name: bounceOut;
+  animation-name: bounceOut;
+}
+
+@-webkit-keyframes bounceOutDown {
+  20% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+
+  40%,
+  45% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, -20px, 0);
+    transform: translate3d(0, -20px, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+}
+
+@keyframes bounceOutDown {
+  20% {
+    -webkit-transform: translate3d(0, 10px, 0);
+    transform: translate3d(0, 10px, 0);
+  }
+
+  40%,
+  45% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, -20px, 0);
+    transform: translate3d(0, -20px, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+}
+
+.bounceOutDown {
+  -webkit-animation-name: bounceOutDown;
+  animation-name: bounceOutDown;
+}
+
+@-webkit-keyframes bounceOutLeft {
+  20% {
+    opacity: 1;
+    -webkit-transform: translate3d(20px, 0, 0);
+    transform: translate3d(20px, 0, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+}
+
+@keyframes bounceOutLeft {
+  20% {
+    opacity: 1;
+    -webkit-transform: translate3d(20px, 0, 0);
+    transform: translate3d(20px, 0, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+}
+
+.bounceOutLeft {
+  -webkit-animation-name: bounceOutLeft;
+  animation-name: bounceOutLeft;
+}
+
+@-webkit-keyframes bounceOutRight {
+  20% {
+    opacity: 1;
+    -webkit-transform: translate3d(-20px, 0, 0);
+    transform: translate3d(-20px, 0, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+}
+
+@keyframes bounceOutRight {
+  20% {
+    opacity: 1;
+    -webkit-transform: translate3d(-20px, 0, 0);
+    transform: translate3d(-20px, 0, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+}
+
+.bounceOutRight {
+  -webkit-animation-name: bounceOutRight;
+  animation-name: bounceOutRight;
+}
+
+@-webkit-keyframes bounceOutUp {
+  20% {
+    -webkit-transform: translate3d(0, -10px, 0);
+    transform: translate3d(0, -10px, 0);
+  }
+
+  40%,
+  45% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 20px, 0);
+    transform: translate3d(0, 20px, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+}
+
+@keyframes bounceOutUp {
+  20% {
+    -webkit-transform: translate3d(0, -10px, 0);
+    transform: translate3d(0, -10px, 0);
+  }
+
+  40%,
+  45% {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 20px, 0);
+    transform: translate3d(0, 20px, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+}
+
+.bounceOutUp {
+  -webkit-animation-name: bounceOutUp;
+  animation-name: bounceOutUp;
+}
+
+@-webkit-keyframes fadeIn {
+  from {
+    opacity: 0;
+  }
+
+  to {
+    opacity: 1;
+  }
+}
+
+@keyframes fadeIn {
+  from {
+    opacity: 0;
+  }
+
+  to {
+    opacity: 1;
+  }
+}
+
+.fadeIn {
+  -webkit-animation-name: fadeIn;
+  animation-name: fadeIn;
+}
+
+@-webkit-keyframes fadeInDown {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fadeInDown {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.fadeInDown {
+  -webkit-animation-name: fadeInDown;
+  animation-name: fadeInDown;
+}
+
+@-webkit-keyframes fadeInDownBig {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fadeInDownBig {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.fadeInDownBig {
+  -webkit-animation-name: fadeInDownBig;
+  animation-name: fadeInDownBig;
+}
+
+@-webkit-keyframes fadeInLeft {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fadeInLeft {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.fadeInLeft {
+  -webkit-animation-name: fadeInLeft;
+  animation-name: fadeInLeft;
+}
+
+@-webkit-keyframes fadeInLeftBig {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fadeInLeftBig {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.fadeInLeftBig {
+  -webkit-animation-name: fadeInLeftBig;
+  animation-name: fadeInLeftBig;
+}
+
+@-webkit-keyframes fadeInRight {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fadeInRight {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.fadeInRight {
+  -webkit-animation-name: fadeInRight;
+  animation-name: fadeInRight;
+}
+
+@-webkit-keyframes fadeInRightBig {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fadeInRightBig {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.fadeInRightBig {
+  -webkit-animation-name: fadeInRightBig;
+  animation-name: fadeInRightBig;
+}
+
+@-webkit-keyframes fadeInUp {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fadeInUp {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.fadeInUp {
+  -webkit-animation-name: fadeInUp;
+  animation-name: fadeInUp;
+}
+
+@-webkit-keyframes fadeInUpBig {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes fadeInUpBig {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.fadeInUpBig {
+  -webkit-animation-name: fadeInUpBig;
+  animation-name: fadeInUpBig;
+}
+
+@-webkit-keyframes fadeOut {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+  }
+}
+
+@keyframes fadeOut {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+  }
+}
+
+.fadeOut {
+  -webkit-animation-name: fadeOut;
+  animation-name: fadeOut;
+}
+
+@-webkit-keyframes fadeOutDown {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+
+@keyframes fadeOutDown {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+
+.fadeOutDown {
+  -webkit-animation-name: fadeOutDown;
+  animation-name: fadeOutDown;
+}
+
+@-webkit-keyframes fadeOutDownBig {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+}
+
+@keyframes fadeOutDownBig {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, 2000px, 0);
+    transform: translate3d(0, 2000px, 0);
+  }
+}
+
+.fadeOutDownBig {
+  -webkit-animation-name: fadeOutDownBig;
+  animation-name: fadeOutDownBig;
+}
+
+@-webkit-keyframes fadeOutLeft {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+}
+
+@keyframes fadeOutLeft {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+}
+
+.fadeOutLeft {
+  -webkit-animation-name: fadeOutLeft;
+  animation-name: fadeOutLeft;
+}
+
+@-webkit-keyframes fadeOutLeftBig {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+}
+
+@keyframes fadeOutLeftBig {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(-2000px, 0, 0);
+    transform: translate3d(-2000px, 0, 0);
+  }
+}
+
+.fadeOutLeftBig {
+  -webkit-animation-name: fadeOutLeftBig;
+  animation-name: fadeOutLeftBig;
+}
+
+@-webkit-keyframes fadeOutRight {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+}
+
+@keyframes fadeOutRight {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+}
+
+.fadeOutRight {
+  -webkit-animation-name: fadeOutRight;
+  animation-name: fadeOutRight;
+}
+
+@-webkit-keyframes fadeOutRightBig {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+}
+
+@keyframes fadeOutRightBig {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(2000px, 0, 0);
+    transform: translate3d(2000px, 0, 0);
+  }
+}
+
+.fadeOutRightBig {
+  -webkit-animation-name: fadeOutRightBig;
+  animation-name: fadeOutRightBig;
+}
+
+@-webkit-keyframes fadeOutUp {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+  }
+}
+
+@keyframes fadeOutUp {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+  }
+}
+
+.fadeOutUp {
+  -webkit-animation-name: fadeOutUp;
+  animation-name: fadeOutUp;
+}
+
+@-webkit-keyframes fadeOutUpBig {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+}
+
+@keyframes fadeOutUpBig {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(0, -2000px, 0);
+    transform: translate3d(0, -2000px, 0);
+  }
+}
+
+.fadeOutUpBig {
+  -webkit-animation-name: fadeOutUpBig;
+  animation-name: fadeOutUpBig;
+}
+
+@-webkit-keyframes flip {
+  from {
+    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0)
+      rotate3d(0, 1, 0, -360deg);
+    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
+      rotate3d(0, 1, 0, -190deg);
+    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
+      rotate3d(0, 1, 0, -190deg);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+
+  50% {
+    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
+      rotate3d(0, 1, 0, -170deg);
+    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
+      rotate3d(0, 1, 0, -170deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
+      rotate3d(0, 1, 0, 0deg);
+    transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
+      rotate3d(0, 1, 0, 0deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  to {
+    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0)
+      rotate3d(0, 1, 0, 0deg);
+    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+}
+
+@keyframes flip {
+  from {
+    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0)
+      rotate3d(0, 1, 0, -360deg);
+    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, -360deg);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
+      rotate3d(0, 1, 0, -190deg);
+    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
+      rotate3d(0, 1, 0, -190deg);
+    -webkit-animation-timing-function: ease-out;
+    animation-timing-function: ease-out;
+  }
+
+  50% {
+    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
+      rotate3d(0, 1, 0, -170deg);
+    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 150px)
+      rotate3d(0, 1, 0, -170deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
+      rotate3d(0, 1, 0, 0deg);
+    transform: perspective(400px) scale3d(0.95, 0.95, 0.95) translate3d(0, 0, 0)
+      rotate3d(0, 1, 0, 0deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  to {
+    -webkit-transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0)
+      rotate3d(0, 1, 0, 0deg);
+    transform: perspective(400px) scale3d(1, 1, 1) translate3d(0, 0, 0) rotate3d(0, 1, 0, 0deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+}
+
+.animated.flip {
+  -webkit-backface-visibility: visible;
+  backface-visibility: visible;
+  -webkit-animation-name: flip;
+  animation-name: flip;
+}
+
+@-webkit-keyframes flipInX {
+  from {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+    opacity: 0;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  60% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+  }
+
+  to {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+}
+
+@keyframes flipInX {
+  from {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+    opacity: 0;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  60% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 10deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -5deg);
+  }
+
+  to {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+}
+
+.flipInX {
+  -webkit-backface-visibility: visible !important;
+  backface-visibility: visible !important;
+  -webkit-animation-name: flipInX;
+  animation-name: flipInX;
+}
+
+@-webkit-keyframes flipInY {
+  from {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+    opacity: 0;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  60% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+  }
+
+  to {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+}
+
+@keyframes flipInY {
+  from {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+    opacity: 0;
+  }
+
+  40% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
+    -webkit-animation-timing-function: ease-in;
+    animation-timing-function: ease-in;
+  }
+
+  60% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
+  }
+
+  to {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+}
+
+.flipInY {
+  -webkit-backface-visibility: visible !important;
+  backface-visibility: visible !important;
+  -webkit-animation-name: flipInY;
+  animation-name: flipInY;
+}
+
+@-webkit-keyframes flipOutX {
+  from {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+
+  30% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    opacity: 0;
+  }
+}
+
+@keyframes flipOutX {
+  from {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+
+  30% {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, -20deg);
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    transform: perspective(400px) rotate3d(1, 0, 0, 90deg);
+    opacity: 0;
+  }
+}
+
+.flipOutX {
+  -webkit-animation-duration: 0.75s;
+  animation-duration: 0.75s;
+  -webkit-animation-name: flipOutX;
+  animation-name: flipOutX;
+  -webkit-backface-visibility: visible !important;
+  backface-visibility: visible !important;
+}
+
+@-webkit-keyframes flipOutY {
+  from {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+
+  30% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    opacity: 0;
+  }
+}
+
+@keyframes flipOutY {
+  from {
+    -webkit-transform: perspective(400px);
+    transform: perspective(400px);
+  }
+
+  30% {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, -15deg);
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
+    opacity: 0;
+  }
+}
+
+.flipOutY {
+  -webkit-animation-duration: 0.75s;
+  animation-duration: 0.75s;
+  -webkit-backface-visibility: visible !important;
+  backface-visibility: visible !important;
+  -webkit-animation-name: flipOutY;
+  animation-name: flipOutY;
+}
+
+@-webkit-keyframes lightSpeedIn {
+  from {
+    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
+    transform: translate3d(100%, 0, 0) skewX(-30deg);
+    opacity: 0;
+  }
+
+  60% {
+    -webkit-transform: skewX(20deg);
+    transform: skewX(20deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: skewX(-5deg);
+    transform: skewX(-5deg);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes lightSpeedIn {
+  from {
+    -webkit-transform: translate3d(100%, 0, 0) skewX(-30deg);
+    transform: translate3d(100%, 0, 0) skewX(-30deg);
+    opacity: 0;
+  }
+
+  60% {
+    -webkit-transform: skewX(20deg);
+    transform: skewX(20deg);
+    opacity: 1;
+  }
+
+  80% {
+    -webkit-transform: skewX(-5deg);
+    transform: skewX(-5deg);
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.lightSpeedIn {
+  -webkit-animation-name: lightSpeedIn;
+  animation-name: lightSpeedIn;
+  -webkit-animation-timing-function: ease-out;
+  animation-timing-function: ease-out;
+}
+
+@-webkit-keyframes lightSpeedOut {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
+    transform: translate3d(100%, 0, 0) skewX(30deg);
+    opacity: 0;
+  }
+}
+
+@keyframes lightSpeedOut {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform: translate3d(100%, 0, 0) skewX(30deg);
+    transform: translate3d(100%, 0, 0) skewX(30deg);
+    opacity: 0;
+  }
+}
+
+.lightSpeedOut {
+  -webkit-animation-name: lightSpeedOut;
+  animation-name: lightSpeedOut;
+  -webkit-animation-timing-function: ease-in;
+  animation-timing-function: ease-in;
+}
+
+@-webkit-keyframes rotateIn {
+  from {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: rotate3d(0, 0, 1, -200deg);
+    transform: rotate3d(0, 0, 1, -200deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+@keyframes rotateIn {
+  from {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: rotate3d(0, 0, 1, -200deg);
+    transform: rotate3d(0, 0, 1, -200deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+.rotateIn {
+  -webkit-animation-name: rotateIn;
+  animation-name: rotateIn;
+}
+
+@-webkit-keyframes rotateInDownLeft {
+  from {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+@keyframes rotateInDownLeft {
+  from {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+.rotateInDownLeft {
+  -webkit-animation-name: rotateInDownLeft;
+  animation-name: rotateInDownLeft;
+}
+
+@-webkit-keyframes rotateInDownRight {
+  from {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+@keyframes rotateInDownRight {
+  from {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+.rotateInDownRight {
+  -webkit-animation-name: rotateInDownRight;
+  animation-name: rotateInDownRight;
+}
+
+@-webkit-keyframes rotateInUpLeft {
+  from {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+@keyframes rotateInUpLeft {
+  from {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+.rotateInUpLeft {
+  -webkit-animation-name: rotateInUpLeft;
+  animation-name: rotateInUpLeft;
+}
+
+@-webkit-keyframes rotateInUpRight {
+  from {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -90deg);
+    transform: rotate3d(0, 0, 1, -90deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+@keyframes rotateInUpRight {
+  from {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -90deg);
+    transform: rotate3d(0, 0, 1, -90deg);
+    opacity: 0;
+  }
+
+  to {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+    opacity: 1;
+  }
+}
+
+.rotateInUpRight {
+  -webkit-animation-name: rotateInUpRight;
+  animation-name: rotateInUpRight;
+}
+
+@-webkit-keyframes rotateOut {
+  from {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: rotate3d(0, 0, 1, 200deg);
+    transform: rotate3d(0, 0, 1, 200deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOut {
+  from {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: center;
+    transform-origin: center;
+    -webkit-transform: rotate3d(0, 0, 1, 200deg);
+    transform: rotate3d(0, 0, 1, 200deg);
+    opacity: 0;
+  }
+}
+
+.rotateOut {
+  -webkit-animation-name: rotateOut;
+  animation-name: rotateOut;
+}
+
+@-webkit-keyframes rotateOutDownLeft {
+  from {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOutDownLeft {
+  from {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 45deg);
+    transform: rotate3d(0, 0, 1, 45deg);
+    opacity: 0;
+  }
+}
+
+.rotateOutDownLeft {
+  -webkit-animation-name: rotateOutDownLeft;
+  animation-name: rotateOutDownLeft;
+}
+
+@-webkit-keyframes rotateOutDownRight {
+  from {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOutDownRight {
+  from {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+}
+
+.rotateOutDownRight {
+  -webkit-animation-name: rotateOutDownRight;
+  animation-name: rotateOutDownRight;
+}
+
+@-webkit-keyframes rotateOutUpLeft {
+  from {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOutUpLeft {
+  from {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: left bottom;
+    transform-origin: left bottom;
+    -webkit-transform: rotate3d(0, 0, 1, -45deg);
+    transform: rotate3d(0, 0, 1, -45deg);
+    opacity: 0;
+  }
+}
+
+.rotateOutUpLeft {
+  -webkit-animation-name: rotateOutUpLeft;
+  animation-name: rotateOutUpLeft;
+}
+
+@-webkit-keyframes rotateOutUpRight {
+  from {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 90deg);
+    transform: rotate3d(0, 0, 1, 90deg);
+    opacity: 0;
+  }
+}
+
+@keyframes rotateOutUpRight {
+  from {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform-origin: right bottom;
+    transform-origin: right bottom;
+    -webkit-transform: rotate3d(0, 0, 1, 90deg);
+    transform: rotate3d(0, 0, 1, 90deg);
+    opacity: 0;
+  }
+}
+
+.rotateOutUpRight {
+  -webkit-animation-name: rotateOutUpRight;
+  animation-name: rotateOutUpRight;
+}
+
+@-webkit-keyframes hinge {
+  0% {
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+
+  20%,
+  60% {
+    -webkit-transform: rotate3d(0, 0, 1, 80deg);
+    transform: rotate3d(0, 0, 1, 80deg);
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+
+  40%,
+  80% {
+    -webkit-transform: rotate3d(0, 0, 1, 60deg);
+    transform: rotate3d(0, 0, 1, 60deg);
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 700px, 0);
+    transform: translate3d(0, 700px, 0);
+    opacity: 0;
+  }
+}
+
+@keyframes hinge {
+  0% {
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+
+  20%,
+  60% {
+    -webkit-transform: rotate3d(0, 0, 1, 80deg);
+    transform: rotate3d(0, 0, 1, 80deg);
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+  }
+
+  40%,
+  80% {
+    -webkit-transform: rotate3d(0, 0, 1, 60deg);
+    transform: rotate3d(0, 0, 1, 60deg);
+    -webkit-transform-origin: top left;
+    transform-origin: top left;
+    -webkit-animation-timing-function: ease-in-out;
+    animation-timing-function: ease-in-out;
+    opacity: 1;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 700px, 0);
+    transform: translate3d(0, 700px, 0);
+    opacity: 0;
+  }
+}
+
+.hinge {
+  -webkit-animation-duration: 2s;
+  animation-duration: 2s;
+  -webkit-animation-name: hinge;
+  animation-name: hinge;
+}
+
+@-webkit-keyframes jackInTheBox {
+  from {
+    opacity: 0;
+    -webkit-transform: scale(0.1) rotate(30deg);
+    transform: scale(0.1) rotate(30deg);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom;
+  }
+
+  50% {
+    -webkit-transform: rotate(-10deg);
+    transform: rotate(-10deg);
+  }
+
+  70% {
+    -webkit-transform: rotate(3deg);
+    transform: rotate(3deg);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: scale(1);
+    transform: scale(1);
+  }
+}
+
+@keyframes jackInTheBox {
+  from {
+    opacity: 0;
+    -webkit-transform: scale(0.1) rotate(30deg);
+    transform: scale(0.1) rotate(30deg);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom;
+  }
+
+  50% {
+    -webkit-transform: rotate(-10deg);
+    transform: rotate(-10deg);
+  }
+
+  70% {
+    -webkit-transform: rotate(3deg);
+    transform: rotate(3deg);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: scale(1);
+    transform: scale(1);
+  }
+}
+
+.jackInTheBox {
+  -webkit-animation-name: jackInTheBox;
+  animation-name: jackInTheBox;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes rollIn {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes rollIn {
+  from {
+    opacity: 0;
+    -webkit-transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+    transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg);
+  }
+
+  to {
+    opacity: 1;
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.rollIn {
+  -webkit-animation-name: rollIn;
+  animation-name: rollIn;
+}
+
+/* originally authored by Nick Pettit - https://github.com/nickpettit/glide */
+
+@-webkit-keyframes rollOut {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+  }
+}
+
+@keyframes rollOut {
+  from {
+    opacity: 1;
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+    transform: translate3d(100%, 0, 0) rotate3d(0, 0, 1, 120deg);
+  }
+}
+
+.rollOut {
+  -webkit-animation-name: rollOut;
+  animation-name: rollOut;
+}
+
+@-webkit-keyframes zoomIn {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.3, 0.3, 0.3);
+    transform: scale3d(0.3, 0.3, 0.3);
+  }
+
+  50% {
+    opacity: 1;
+  }
+}
+
+@keyframes zoomIn {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.3, 0.3, 0.3);
+    transform: scale3d(0.3, 0.3, 0.3);
+  }
+
+  50% {
+    opacity: 1;
+  }
+}
+
+.zoomIn {
+  -webkit-animation-name: zoomIn;
+  animation-name: zoomIn;
+}
+
+@-webkit-keyframes zoomInDown {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+@keyframes zoomInDown {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -1000px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+.zoomInDown {
+  -webkit-animation-name: zoomInDown;
+  animation-name: zoomInDown;
+}
+
+@-webkit-keyframes zoomInLeft {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+@keyframes zoomInLeft {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(-1000px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(10px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+.zoomInLeft {
+  -webkit-animation-name: zoomInLeft;
+  animation-name: zoomInLeft;
+}
+
+@-webkit-keyframes zoomInRight {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+@keyframes zoomInRight {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(1000px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(-10px, 0, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+.zoomInRight {
+  -webkit-animation-name: zoomInRight;
+  animation-name: zoomInRight;
+}
+
+@-webkit-keyframes zoomInUp {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+@keyframes zoomInUp {
+  from {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 1000px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  60% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+.zoomInUp {
+  -webkit-animation-name: zoomInUp;
+  animation-name: zoomInUp;
+}
+
+@-webkit-keyframes zoomOut {
+  from {
+    opacity: 1;
+  }
+
+  50% {
+    opacity: 0;
+    -webkit-transform: scale3d(0.3, 0.3, 0.3);
+    transform: scale3d(0.3, 0.3, 0.3);
+  }
+
+  to {
+    opacity: 0;
+  }
+}
+
+@keyframes zoomOut {
+  from {
+    opacity: 1;
+  }
+
+  50% {
+    opacity: 0;
+    -webkit-transform: scale3d(0.3, 0.3, 0.3);
+    transform: scale3d(0.3, 0.3, 0.3);
+  }
+
+  to {
+    opacity: 0;
+  }
+}
+
+.zoomOut {
+  -webkit-animation-name: zoomOut;
+  animation-name: zoomOut;
+}
+
+@-webkit-keyframes zoomOutDown {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom;
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+@keyframes zoomOutDown {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, -60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, 2000px, 0);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom;
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+.zoomOutDown {
+  -webkit-animation-name: zoomOutDown;
+  animation-name: zoomOutDown;
+}
+
+@-webkit-keyframes zoomOutLeft {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
+    transform: scale(0.1) translate3d(-2000px, 0, 0);
+    -webkit-transform-origin: left center;
+    transform-origin: left center;
+  }
+}
+
+@keyframes zoomOutLeft {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(42px, 0, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale(0.1) translate3d(-2000px, 0, 0);
+    transform: scale(0.1) translate3d(-2000px, 0, 0);
+    -webkit-transform-origin: left center;
+    transform-origin: left center;
+  }
+}
+
+.zoomOutLeft {
+  -webkit-animation-name: zoomOutLeft;
+  animation-name: zoomOutLeft;
+}
+
+@-webkit-keyframes zoomOutRight {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
+    transform: scale(0.1) translate3d(2000px, 0, 0);
+    -webkit-transform-origin: right center;
+    transform-origin: right center;
+  }
+}
+
+@keyframes zoomOutRight {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(-42px, 0, 0);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale(0.1) translate3d(2000px, 0, 0);
+    transform: scale(0.1) translate3d(2000px, 0, 0);
+    -webkit-transform-origin: right center;
+    transform-origin: right center;
+  }
+}
+
+.zoomOutRight {
+  -webkit-animation-name: zoomOutRight;
+  animation-name: zoomOutRight;
+}
+
+@-webkit-keyframes zoomOutUp {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom;
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+@keyframes zoomOutUp {
+  40% {
+    opacity: 1;
+    -webkit-transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+    transform: scale3d(0.475, 0.475, 0.475) translate3d(0, 60px, 0);
+    -webkit-animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+    animation-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);
+  }
+
+  to {
+    opacity: 0;
+    -webkit-transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
+    transform: scale3d(0.1, 0.1, 0.1) translate3d(0, -2000px, 0);
+    -webkit-transform-origin: center bottom;
+    transform-origin: center bottom;
+    -webkit-animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+    animation-timing-function: cubic-bezier(0.175, 0.885, 0.32, 1);
+  }
+}
+
+.zoomOutUp {
+  -webkit-animation-name: zoomOutUp;
+  animation-name: zoomOutUp;
+}
+
+@-webkit-keyframes slideInDown {
+  from {
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+    visibility: visible;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes slideInDown {
+  from {
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+    visibility: visible;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.slideInDown {
+  -webkit-animation-name: slideInDown;
+  animation-name: slideInDown;
+}
+
+@-webkit-keyframes slideInLeft {
+  from {
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+    visibility: visible;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes slideInLeft {
+  from {
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+    visibility: visible;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.slideInLeft {
+  -webkit-animation-name: slideInLeft;
+  animation-name: slideInLeft;
+}
+
+@-webkit-keyframes slideInRight {
+  from {
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+    visibility: visible;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes slideInRight {
+  from {
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+    visibility: visible;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.slideInRight {
+  -webkit-animation-name: slideInRight;
+  animation-name: slideInRight;
+}
+
+@-webkit-keyframes slideInUp {
+  from {
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+    visibility: visible;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+@keyframes slideInUp {
+  from {
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+    visibility: visible;
+  }
+
+  to {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+}
+
+.slideInUp {
+  -webkit-animation-name: slideInUp;
+  animation-name: slideInUp;
+}
+
+@-webkit-keyframes slideOutDown {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  to {
+    visibility: hidden;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+
+@keyframes slideOutDown {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  to {
+    visibility: hidden;
+    -webkit-transform: translate3d(0, 100%, 0);
+    transform: translate3d(0, 100%, 0);
+  }
+}
+
+.slideOutDown {
+  -webkit-animation-name: slideOutDown;
+  animation-name: slideOutDown;
+}
+
+@-webkit-keyframes slideOutLeft {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  to {
+    visibility: hidden;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+}
+
+@keyframes slideOutLeft {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  to {
+    visibility: hidden;
+    -webkit-transform: translate3d(-100%, 0, 0);
+    transform: translate3d(-100%, 0, 0);
+  }
+}
+
+.slideOutLeft {
+  -webkit-animation-name: slideOutLeft;
+  animation-name: slideOutLeft;
+}
+
+@-webkit-keyframes slideOutRight {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  to {
+    visibility: hidden;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+}
+
+@keyframes slideOutRight {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  to {
+    visibility: hidden;
+    -webkit-transform: translate3d(100%, 0, 0);
+    transform: translate3d(100%, 0, 0);
+  }
+}
+
+.slideOutRight {
+  -webkit-animation-name: slideOutRight;
+  animation-name: slideOutRight;
+}
+
+@-webkit-keyframes slideOutUp {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  to {
+    visibility: hidden;
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+  }
+}
+
+@keyframes slideOutUp {
+  from {
+    -webkit-transform: translate3d(0, 0, 0);
+    transform: translate3d(0, 0, 0);
+  }
+
+  to {
+    visibility: hidden;
+    -webkit-transform: translate3d(0, -100%, 0);
+    transform: translate3d(0, -100%, 0);
+  }
+}
+
+.slideOutUp {
+  -webkit-animation-name: slideOutUp;
+  animation-name: slideOutUp;
+}
+
+.animated {
+  -webkit-animation-duration: 1s;
+  animation-duration: 1s;
+  -webkit-animation-fill-mode: both;
+  animation-fill-mode: both;
+}
+
+.animated.infinite {
+  -webkit-animation-iteration-count: infinite;
+  animation-iteration-count: infinite;
+}
+
+.animated.delay-1s {
+  -webkit-animation-delay: 1s;
+  animation-delay: 1s;
+}
+
+.animated.delay-2s {
+  -webkit-animation-delay: 2s;
+  animation-delay: 2s;
+}
+
+.animated.delay-3s {
+  -webkit-animation-delay: 3s;
+  animation-delay: 3s;
+}
+
+.animated.delay-4s {
+  -webkit-animation-delay: 4s;
+  animation-delay: 4s;
+}
+
+.animated.delay-5s {
+  -webkit-animation-delay: 5s;
+  animation-delay: 5s;
+}
+
+.animated.fast {
+  -webkit-animation-duration: 800ms;
+  animation-duration: 800ms;
+}
+
+.animated.faster {
+  -webkit-animation-duration: 500ms;
+  animation-duration: 500ms;
+}
+
+.animated.slow {
+  -webkit-animation-duration: 2s;
+  animation-duration: 2s;
+}
+
+.animated.slower {
+  -webkit-animation-duration: 3s;
+  animation-duration: 3s;
+}
+
+@media (print), (prefers-reduced-motion) {
+  .animated {
+    -webkit-animation: unset !important;
+    animation: unset !important;
+    -webkit-transition: none !important;
+    transition: none !important;
+  }
+}

+ 0 - 0
assets/css/plugins/index.html


+ 67 - 0
assets/css/plugins/jquery.scrollbar.css

@@ -0,0 +1,67 @@
+.scroll-wrapper {
+	overflow: hidden !important;
+	padding: 0 !important;
+	position: relative;
+}
+.scroll-wrapper > .scroll-content {
+	border: none !important;
+	box-sizing: content-box !important;
+	height: auto;
+	left: 0;
+	margin: 0;
+	max-height: none;
+	max-width: none !important;
+	overflow: scroll !important;
+	padding: 0;
+	position: relative !important;
+	top: 0;
+	width: auto !important;
+}
+.scroll-wrapper > .scroll-content::-webkit-scrollbar {
+	height: 0;
+	width: 0;
+}
+.scroll-wrapper.scroll--rtl {
+	direction: rtl;
+}
+
+.scroll-element {
+	box-sizing: content-box;
+	display: none;
+}
+.scroll-element div {
+	box-sizing: content-box;
+}
+.scroll-element .scroll-bar,
+.scroll-element .scroll-arrow {
+	cursor: default;
+}
+.scroll-element.scroll-x.scroll-scrollx_visible, .scroll-element.scroll-y.scroll-scrolly_visible {
+	display: block;
+}
+
+.scroll-textarea {
+	border: 1px solid #cccccc;
+	border-top-color: #999999;
+}
+.scroll-textarea > .scroll-content {
+	overflow: hidden !important;
+}
+.scroll-textarea > .scroll-content > textarea {
+	border: none !important;
+	box-sizing: border-box;
+	height: 100% !important;
+	margin: 0;
+	max-height: none !important;
+	max-width: none !important;
+	overflow: scroll !important;
+	outline: none;
+	padding: 2px;
+	position: relative !important;
+	top: 0;
+	width: 100% !important;
+}
+.scroll-textarea > .scroll-content > textarea::-webkit-scrollbar {
+	height: 0;
+	width: 0;
+}

+ 165 - 0
assets/css/plugins/jquery.slicknav.css

@@ -0,0 +1,165 @@
+/**
+ * SlickNav Responsive Mobile Menu v1.0.10
+ * (c) 2016 Josh Cope
+ * licensed under MIT
+ */
+.slicknav_btn {
+	position: relative;
+	display: block;
+	vertical-align: middle;
+	float: right;
+	padding: 0.438em 0.625em 0.438em 0.625em;
+	line-height: 1.125em;
+	cursor: pointer;
+}
+.slicknav_btn .slicknav_icon-bar + .slicknav_icon-bar {
+	margin-top: 0.188em;
+}
+.slicknav_menu {
+	*zoom: 1;
+}
+.slicknav_menu .slicknav_menutxt {
+	display: block;
+	line-height: 1.188em;
+	float: left;
+}
+.slicknav_menu .slicknav_icon {
+	float: left;
+	width: 1.125em;
+	height: 0.875em;
+	margin: 0.188em 0 0 0.438em;
+}
+.slicknav_menu .slicknav_icon:before {
+	background: transparent;
+	width: 1.125em;
+	height: 0.875em;
+	display: block;
+	content: "";
+	position: absolute;
+}
+.slicknav_menu .slicknav_no-text {
+	margin: 0;
+}
+.slicknav_menu .slicknav_icon-bar {
+	display: block;
+	width: 1.125em;
+	height: 0.125em;
+	border-radius: 1px;
+	box-shadow: 0 1px 0 rgba(0,0,0,0.25);
+}
+.slicknav_menu:before {
+	content: " ";
+	display: table;
+}
+.slicknav_menu:after {
+	content: " ";
+	display: table;
+	clear: both;
+}
+.slicknav_nav {
+	clear: both;
+}
+.slicknav_nav ul {
+	display: block;
+}
+.slicknav_nav li {
+	display: block;
+}
+.slicknav_nav .slicknav_arrow {
+	font-size: 0.8em;
+	margin: 0 0 0 0.4em;
+}
+.slicknav_nav .slicknav_item {
+	cursor: pointer;
+}
+.slicknav_nav .slicknav_item a {
+	display: inline;
+}
+.slicknav_nav .slicknav_row {
+	display: block;
+}
+.slicknav_nav a {
+	display: block;
+}
+.slicknav_nav .slicknav_parent-link a {
+	display: inline;
+}
+.slicknav_brand {
+	float: left;
+}
+.slicknav_menu {
+	font-size: 1.143em;
+	box-sizing: border-box;
+	background: #4c4c4c;
+	padding: 5px;
+}
+.slicknav_menu * {
+	box-sizing: border-box;
+}
+.slicknav_menu .slicknav_menutxt {
+	color: #fff;
+	font-weight: bold;
+	text-shadow: 0 1px 3px #000;
+}
+.slicknav_menu .slicknav_icon-bar {
+background-color: #fff;
+}
+.slicknav_btn {
+	margin: 5px 5px 6px;
+	text-decoration: none;
+	text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+	border-radius: 4px;
+	background-color: #222;
+}
+.slicknav_nav {
+	color: #fff;
+	margin: 0;
+	padding: 0;
+	font-size: 0.857em;
+	list-style: none;
+	overflow: hidden;
+}
+.slicknav_nav ul {
+	list-style: none;
+	overflow: hidden;
+	padding: 0;
+	margin: 0 0 0 20px;
+}
+.slicknav_nav .slicknav_row {
+	padding: 5px 10px;
+	margin: 2px 5px;
+}
+.slicknav_nav .slicknav_row:hover {
+	border-radius: 6px;
+	background: #ccc;
+	color: #fff;
+}
+.slicknav_nav a {
+	padding: 5px 10px;
+	margin: 2px 5px;
+	text-decoration: none;
+	color: #fff;
+}
+.slicknav_nav a:hover {
+	border-radius: 6px;
+	background: #ccc;
+	color: #222;
+}
+.slicknav_nav .slicknav_txtnode {
+	margin-left: 15px;
+}
+.slicknav_nav .slicknav_item a {
+	padding: 0;
+	margin: 0;
+}
+.slicknav_nav .slicknav_parent-link a {
+	padding: 0;
+	margin: 0;
+}
+.slicknav_brand {
+	color: #fff;
+	font-size: 1.286em;
+	line-height: 30px;
+	padding: 7px 12px;
+	height: 44px;
+}

BIN
assets/fonts/fontawesome/fontawesome.eot


BIN
assets/fonts/fontawesome/fontawesome.woff


+ 0 - 0
assets/fonts/fontawesome/index.html


+ 9 - 0
assets/fonts/fontawesome/license.txt

@@ -0,0 +1,9 @@
+- The Font Awesome font is licensed under the SIL OFL 1.1:
+  - http://scripts.sil.org/OFL
+- Font Awesome CSS, LESS, and Sass files are licensed under the MIT License:
+  - http://opensource.org/licenses/mit-license.html
+- The Font Awesome documentation is licensed under the CC BY 3.0 License:
+  - http://creativecommons.org/licenses/by/3.0/
+- Attribution is no longer required as of Font Awesome 3.0, but much appreciated:
+  - `Font Awesome by Dave Gandy - http://fontawesome.io`
+- Full details: http://fontawesome.io/license

+ 0 - 0
assets/fonts/index.html


+ 0 - 0
assets/index.html


+ 0 - 0
assets/js/index.html


+ 178 - 0
assets/js/pen-backend.js

@@ -0,0 +1,178 @@
+;( function() {
+
+	jQuery( document ).ready(
+		function( $ ) {
+
+			if ( $( '#pen_configuration' ).length ) {
+
+				var pen_has_AreYouSure = typeof areYouSure;
+				if ( pen_has_AreYouSure !== 'undefined' && pen_has_AreYouSure !== undefined && pen_has_AreYouSure !== null ) {
+					$( '#pen_configuration' ).areYouSure( { message: pen_backend_js.text.unsaved_changes } );
+				}
+
+			} else {
+
+				var $post_meta = $( '#pen_post_meta' );
+
+				$( '#pen_post_meta_hint' ).hide();
+				$( '#pen_meta_box h2' ).prepend( '<span class="pen_only">' + pen_backend_js.text.pen_theme + '</span>' )
+				.find( '.pen_only' ).attr( 'title', $( '#pen_post_meta_hint' ).text() );
+
+				$post_meta.find( '.postbox select' ).each(
+					function() {
+						var $select = $( this );
+						pen_post_meta_select( $select );
+						$select.on(
+							'change',
+							function() {
+								pen_post_meta_select( $select );
+
+								$select.closest( '.pen_post_meta_container' ).slideDown( 'fast' ).removeClass( 'closed' ).attr( 'aria-expanded', true )
+								.closest( '.pen_post_meta_options' ).removeClass( 'closed' );
+
+							}
+						);
+					}
+				);
+
+				function pen_post_meta_select( $select ) {
+					var id        = $select.attr( 'id' ),
+					value_current = $select.val();
+
+					if ( $( '#apply_' + id ).length ) {
+						var value_new = $( '#apply_' + id ).val();
+						if ( value_new != value_current ) {
+							var $option = $( '#apply_' + id );
+							$option.prop( 'disabled', false )
+							.closest( 'tr' ).find( '.button' ).removeClass( 'disabled' );
+						}
+					}
+
+					if ( value_current === 'no' ) {
+						$select.parent().addClass( 'pen_post_meta_disable' ).removeClass( 'pen_post_meta_enable' );
+						if ( id === 'pen_content_thumbnail_display_override' || id === 'pen_list_thumbnail_display_override' ) {
+							$select.closest( '.pen_wrap' ).siblings( '.pen_wrap' ).filter( ':not(:first-of-type)' ).animate( { opacity: 0.3 }, { queue: false, duration: 300 } );
+							if ( id === 'pen_list_thumbnail_display_override' ) {
+								$( '#pen_list_thumbnail_animation_reveal_override' ).closest( '.pen_wrap' ).animate( { opacity: 0.3 }, { queue: false, duration: 300 } );
+							}
+							if ( id === 'pen_content_thumbnail_display_override' ) {
+								$( '#pen_content_thumbnail_animation_reveal_override' ).closest( '.pen_wrap' ).animate( { opacity: 0.3 }, { queue: false, duration: 300 } );
+							}
+						} else if ( id === 'pen_content_header_display_override' ) {
+							$( '#pen_content_title_display_override' ).closest( '.pen_wrap' ).animate( { opacity: 0.3 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_list_header_display_override' ) {
+							$( '#pen_list_title_display_override' ).closest( '.pen_wrap' ).animate( { opacity: 0.3 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_content_header_alignment_override' ) {
+							$( '#pen_content_title_alignment_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_list_post_header_alignment_override' ) {
+							$( '#pen_list_title_alignment_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+						}
+
+					} else if ( value_current === 'yes' || value_current != 'default' ) {
+						$select.parent().removeClass( 'pen_post_meta_disable' ).addClass( 'pen_post_meta_enable' );
+						if ( id === 'pen_content_thumbnail_display_override' || id === 'pen_list_thumbnail_display_override' ) {
+							$select.closest( '.pen_wrap' ).siblings( '.pen_wrap' ).filter( ':not(:first-of-type)' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+							if ( id === 'pen_list_thumbnail_display_override' ) {
+								$( '#pen_list_thumbnail_animation_reveal_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+							}
+							if ( id === 'pen_content_thumbnail_display_override' ) {
+								$( '#pen_content_thumbnail_animation_reveal_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+							}
+						} else if ( id === 'pen_content_header_display_override' ) {
+							$( '#pen_content_title_display_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_list_header_display_override' ) {
+							$( '#pen_list_title_display_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_content_header_alignment_override' ) {
+							$( '#pen_content_title_alignment_override' ).closest( '.pen_wrap' ).animate( { opacity: 0.3 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_list_post_header_alignment_override' ) {
+							$( '#pen_list_title_alignment_override' ).closest( '.pen_wrap' ).animate( { opacity: 0.3 }, { queue: false, duration: 300 } );
+						}
+					} else {
+						$select.parent().removeClass( 'pen_post_meta_enable pen_post_meta_disable' );
+						if ( id === 'pen_content_thumbnail_display_override' || id === 'pen_list_thumbnail_display_override' ) {
+							$select.closest( '.pen_wrap' ).siblings( '.pen_wrap' ).filter( ':not(:first-of-type)' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+							if ( id === 'pen_list_thumbnail_display_override' ) {
+								$( '#pen_list_thumbnail_animation_reveal_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+							}
+							if ( id === 'pen_content_thumbnail_display_override' ) {
+								$( '#pen_content_thumbnail_animation_reveal_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+							}
+						} else if ( id === 'pen_content_header_display_override' ) {
+							$( '#pen_content_title_display_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_list_header_display_override' ) {
+							$( '#pen_list_title_display_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_content_header_alignment_override' ) {
+							$( '#pen_content_title_alignment_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+						} else if ( id === 'pen_list_post_header_alignment_override' ) {
+							$( '#pen_list_title_alignment_override' ).closest( '.pen_wrap' ).animate( { opacity: 1 }, { queue: false, duration: 300 } );
+						}
+					}
+				}
+
+				$post_meta.find( '.pen_sidebars input' ).each(
+					function() {
+						var $checkbox = $( this );
+						pen_post_meta_sidebars( $checkbox );
+						$checkbox.on(
+							'change',
+							function() {
+								pen_post_meta_sidebars( $checkbox );
+								$checkbox.closest( '.pen_post_meta_container' ).slideDown( 'fast' ).removeClass( 'closed' ).attr( 'aria-expanded', true )
+								.closest( '.pen_post_meta_options' ).removeClass( 'closed' );
+							}
+						);
+					}
+				);
+
+				function pen_post_meta_sidebars( $checkbox ) {
+					var $option = $( '#apply_' + $checkbox.attr( 'id' ) ),
+					$button     = $option.closest( 'tr' ).find( '.button' );
+					if ( $checkbox.is( ':checked' ) ) {
+						$checkbox.parent().addClass( 'pen_post_meta_disable' );
+						$option.prop( 'disabled', true ).removeAttr( 'checked' ).prop( 'checked', false ).trigger( 'change' );
+						$button.addClass( 'disabled' );
+					} else {
+						$checkbox.parent().removeClass( 'pen_post_meta_disable' );
+						$option.prop( 'disabled', false );
+						$button.removeClass( 'disabled' );
+					}
+				}
+
+				$post_meta.find( 'h3' ).each(
+					function() {
+						var $h3    = $( this ),
+						$container = $h3.next( '.pen_post_meta_container' );
+
+						$h3.append( '<button type="button" class="handlediv button-link"><span class="screen-reader-text">' + pen_backend_js.text.toggle + '</span><span class="toggle-indicator" aria-hidden="true"></span></button>' );
+
+						if ( ! $container.find( '.pen_post_meta_enable,.pen_post_meta_disable' ).length ) {
+							$container.slideUp( 'fast' ).addClass( 'closed' ).attr( 'aria-expanded', false )
+							.closest( '.pen_post_meta_options' ).addClass( 'closed' );
+						}
+
+						$h3.on(
+							'click',
+							function() {
+								var $container = $( this ).closest( '.pen_post_meta_options' ).find( '.pen_post_meta_container' );
+								pen_options_expanded( $container );
+							}
+						);
+					}
+				);
+
+				function pen_options_expanded( $container ) {
+					if ( $container.hasClass( 'closed' ) ) {
+						$container.slideDown( 'fast' ).removeClass( 'closed' ).closest( '.pen_post_meta_options' ).removeClass( 'closed' )
+						.prev( 'h3' ).find( '.handlediv' ).attr( 'aria-expanded', 'true' );
+					} else {
+						$container.slideUp( 'fast' ).addClass( 'closed' ).closest( '.pen_post_meta_options' ).addClass( 'closed' )
+						.prev( 'h3' ).find( '.handlediv' ).attr( 'aria-expanded', 'false' );
+					}
+				}
+
+			}
+
+		}
+	);
+
+} )( jQuery );

+ 147 - 0
assets/js/pen-customize-main.js

@@ -0,0 +1,147 @@
+/**
+ * Theme Customizer enhancements for a better user experience.
+ *
+ * @package Pen
+ */
+
+;( function( $ ) {
+
+	wp.customize.bind(
+		'ready',
+		function() {
+
+			var pen_customize_url_home = wp.customize.settings.url.home;
+			if ( pen_customize_js.preset_preview ) {
+				pen_customize_url_home += '?pen_preview_color=' + pen_customize_js.preset_color + '&pen_preview_font=' + pen_customize_js.preset_font;
+				/*
+				 * If the user wanted to save the preset there has to be no need to
+				 * change anything to have the "Publish" button enabled.
+				 */
+				wp.customize.state( 'saved' ).set( false );
+			}
+			wp.customize.previewer.previewUrl.set( pen_customize_url_home );
+
+			var _query = wp.customize.previewer.query;
+			wp.customize.previewer.query = function () {
+				var query = _query.call( this );
+				if ( pen_customize_js.preset_preview ) {
+					query.pen_preview_color = pen_customize_js.preset_color;
+					query.pen_preview_font  = pen_customize_js.preset_font;
+				}
+				return query;
+			};
+
+			var sections = [
+			'pen_section_colors_header,#pen_header',
+			'pen_section_colors_navigation,#pen_navigation',
+			'pen_section_colors_search,#pen_search',
+			'pen_section_colors_content,#primary',
+			'pen_section_colors_list,#primary',
+			'pen_section_colors_bottom,#pen_bottom',
+			'pen_section_colors_footer,#pen_footer',
+			'pen_section_typography_header,#pen_header',
+			'pen_section_typography_footer,#pen_footer',
+			'pen_section_typography_navigation,#pen_navigation',
+			'pen_section_header_general,#pen_header',
+			'title_tagline,#pen_header',
+			'pen_section_header_search,#pen_header',
+			'pen_section_header_navigation,#pen_navigation',
+			'pen_section_content,#primary',
+			'pen_section_layout,#primary',
+			'pen_section_list,#primary',
+			'pen_section_layout,#primary',
+			'pen_section_background_image_navigation,#pen_navigation',
+			'pen_section_background_image_search,#pen_search',
+			'pen_section_background_image_bottom,#pen_bottom',
+			'pen_section_background_image_footer,#pen_footer',
+			'pen_section_footer,#pen_footer'
+			];
+
+			for ( i = 0; i < sections.length; i++ ) {
+				var data   = sections[ i ].split( ',' ),
+				section_id = data[0],
+				selector   = data[1];
+				pen_section_change( section_id, selector );
+			}
+
+			function pen_section_change( section_id, html_id ) {
+				wp.customize.section(
+					section_id,
+					function( section ) {
+						section.expanded.bind(
+							function( is_expanding ) {
+								if ( is_expanding ) {
+									  wp.customize.previewer.send( 'pen_section_change', { selector: html_id } );
+								}
+							}
+						);
+					}
+				);
+			}
+
+			wp.customize.previewer.bind(
+				'pen_switch_section',
+				function( data ) {
+					if ( data.type === 'section' ) {
+						var $container = wp.customize.section( data.target );
+					}
+					if ( data.type === 'panel' ) {
+						var $container = wp.customize.panel( data.target );
+					}
+
+					if ( $container !== 'undefined' && $container !== undefined && $container !== null ) {
+						$container.focus();
+					} else {
+						console.log( 'Not found: ' + data.target );
+					}
+				}
+			);
+
+			wp.customize.section(
+				'static_front_page',
+				function( section ) {
+					pen_switch_to_front( section );
+				}
+			);
+
+			wp.customize.section(
+				'pen_section_front_sidebars',
+				function( section ) {
+					pen_switch_to_front( section );
+				}
+			);
+
+			function pen_switch_to_front( section ) {
+				var previous_url,
+				clear_previous_url = function() {
+					previous_url = null;
+				},
+				preview_url_value  = wp.customize.previewer.previewUrl;
+				section.expanded.bind(
+					function( is_expanded ) {
+						var url;
+						if ( is_expanded ) {
+							  url          = wp.customize.settings.url.home;
+							  previous_url = preview_url_value.get();
+							  preview_url_value.set( url );
+							  preview_url_value.bind( clear_previous_url );
+						} else {
+							  preview_url_value.unbind( clear_previous_url );
+							if ( previous_url ) {
+								preview_url_value.set( previous_url );
+							}
+						}
+					}
+				);
+			}
+
+			$( '#customize-info .accordion-section-title' ).append( '<p><a href="' + pen_customize_js.support_url + '" title="' + pen_customize_js.text.support_description + '" class="button" target="_blank">' + pen_customize_js.text.support_text + '</a></p>' );
+
+			$( "li[id^=accordion-panel-pen_]" ).add( $( "li[id^=accordion-section-pen_]" ) )
+			.children( '.accordion-section-title' )
+			.prepend( '<span style="background:#7f7f7f;border-radius:300px;color:#fff;box-shadow:1px 1px 3px rgba(0,0,0,0.75) inset;cursor:help;display:inline-block;font-size:smaller;font-weight:bold;margin:0 5px 0 0;padding-left:5px;padding-right:5px;text-shadow:1px 1px 3px rgba(0,0,0,0.5)" title="' + pen_customize_js.text.theme_specific + '">' + pen_customize_js.text.pen_theme + '</span>' );
+
+		}
+	);
+
+} )( jQuery );

+ 1382 - 0
assets/js/pen-customize-preview.js

@@ -0,0 +1,1382 @@
+/**
+ * Contains handlers to make Theme Customizer preview reload changes asynchronously.
+ *
+ * @package Pen
+ */
+
+;( function( $ ) {
+	function pen_element_header() {
+		return $( '#pen_header .pen_header_inner' );
+	}
+	function pen_element_header_main() {
+		return $( '#pen_header .pen_header_main' );
+	}
+	function pen_element_header_links() {
+		return pen_element_header_main().find( 'a:not(a#site-title,.pen_phone a)' );
+	}
+	function pen_element_header_logo() {
+		return $( '#pen_header h1 .custom-logo-link' );
+	}
+	function pen_element_header_sitetitle() {
+		return $( '#pen_header h1 a .site-title' );
+	}
+	function pen_element_header_sitedescription() {
+		return $( '#pen_header h1 a .site-description' );
+	}
+	function pen_element_header_fields() {
+		return $( '#pen_header .pen_header_main .search-form .search-field' );
+	}
+	function pen_element_phone() {
+		return $( '.pen_phone' );
+	}
+	function pen_element_navigation() {
+		return $( '#pen_navigation' );
+	}
+	function pen_element_navigation_submenu() {
+		return $( '#pen_navigation ul ul' );
+	}
+	function pen_element_navigation_links() {
+		return $( '#pen_navigation #primary-menu > ul > li > a,#pen_navigation ul.menu > li > a' );
+	}
+	function pen_element_navigation_links_submenu() {
+		return $( '#pen_navigation li li a' );
+	}
+	function pen_element_search_bar() {
+		return $( '#pen_search' );
+	}
+	function pen_element_search_bar_links() {
+		return $( '#pen_search a' );
+	}
+	function pen_element_search_bar_field() {
+		return $( '#pen_search .search-form .search-field' );
+	}
+	function pen_element_content() {
+		return $( '#main .page-content,#main .pen_article_wrapper > article,body.pen_list_masonry #pen_masonry article,#comments,body.pen_list_plain #pen_pager' );
+	}
+	function pen_element_content_title() {
+		return $( '#main article header' );
+	}
+	function pen_element_content_title_link() {
+		return $( '#main article header a' );
+	}
+	function pen_element_content_links() {
+		return $( '#primary a:not(.pen_tabs a,header a)' );
+	}
+	function pen_element_content_fields() {
+		return $( '#main input:not([type="button"],[type="submit"]), #main option, #main select, #main textarea' );
+	}
+	function pen_element_bottom() {
+		return $( '#pen_bottom' );
+	}
+	function pen_element_bottom_headings() {
+		return $( '#pen_bottom .pen_widget_transparent h3,#bottom .pen_widget_transparent h4,#bottom .pen_widget_transparent h5' );
+	}
+	function pen_element_bottom_links() {
+		return $( '#pen_bottom a' );
+	}
+	function pen_element_bottom_fields() {
+		return $( '#pen_bottom input:not([type="button"],[type="submit"]),#pen_bottom option,#pen_bottom select,#pen_bottom textarea' );
+	}
+	function pen_element_footer() {
+		return $( '#pen_footer' );
+	}
+	function pen_element_go_to_top() {
+		return $( 'a#pen_back' );
+	}
+	function pen_element_footer_menu() {
+		return $( '#pen_footer_menu' );
+	}
+	function pen_element_footer_copyright() {
+		return $( '#pen_footer .site-info' );
+	}
+	function pen_element_footer_links() {
+		return $( '#pen_footer a' );
+	}
+	function pen_css_background_gradient( color_primary, color_secondary, direction ) {
+		return 'linear-gradient(' + direction + ', ' + color_primary + ' 0%, ' + color_secondary + ' 100%';
+	}
+	function pen_apply_link_color( $element, link_color, link_color_hover ) {
+		$element.css(
+			{
+				color: link_color
+			}
+		)
+		.off( 'mouseenter mouseleave' )
+		.on(
+			'mouseenter',
+			function() {
+				$( this ).css(
+					{
+						color: link_color_hover
+					}
+				);
+			}
+		)
+		.on(
+			'mouseleave',
+			function() {
+				$( this ).css(
+					{
+						color: link_color
+					}
+				);
+			}
+		);
+	}
+	function pen_option_get( option ) {
+		var preset = ( option.substr( 0, 5 ) === 'color' ) ? pen_preview_js.preset_color : 'preset_1', /* Packaging Difference. */
+		element    = wp.customize( 'pen_' + option + '[' + preset + ']' );
+		if ( element === 'undefined' || element === undefined || element === null ) {
+			console.log( option );
+		}
+		return wp.customize( 'pen_' + option + '[' + preset + ']' )();
+	}
+
+	/**
+	 * After each page load.
+	 */
+	wp.customize.bind(
+		'preview-ready',
+		function() {
+
+			$( '#page' ).find( 'a.pen_customizer_shortcut' ).each(
+				function() {
+					$( this ).on(
+						'click',
+						function( event ) {
+							var data = $( this ).data();
+							wp.customize.preview.send( 'pen_switch_section', { type: data.type, target: data.target } );
+							event.preventDefault();
+						}
+					);
+				}
+			);
+
+			wp.customize.preview.bind(
+				'pen_section_change',
+				function( data ) {
+					if ( $( data.selector ).length ) {
+						$( 'html, body' ).stop().animate(
+							{
+								scrollTop: $( data.selector ).offset().top
+							},
+							500
+						);
+					}
+				}
+			);
+
+			/**
+			 * Logo.
+			 */
+			var pen_logo_source = pen_element_header_logo().find( 'img' ).attr( 'src' );
+			if ( pen_logo_source === 'undefined' || pen_logo_source === undefined || pen_logo_source === null ) {
+				$( '#pen_header' ).removeClass( 'pen_has_logo' );
+			} else {
+				$( '#pen_header' ).addClass( 'pen_has_logo' );
+			}
+
+			/**
+			 * General.
+			 */
+			$( 'body' ).css(
+				{
+					backgroundColor: pen_option_get( 'color_site_background' )
+				}
+			);
+
+			/**
+			 * Layout
+			 */
+			$( 'body' ).removeClass(
+				function( index, css ) {
+					return ( css.match( /(^|\s)pen_width_\S+/g ) || [] ).join( ' ' );
+				}
+			).addClass( 'pen_width_' + pen_option_get( 'site_width' ) );
+			$( 'body' ).removeClass(
+				function( index, css ) {
+					return ( css.match( /(^|\s)pen_main_container_\S+/g ) || [] ).join( ' ' );
+				}
+			).addClass( 'pen_main_container_' + pen_option_get( 'container_position' ) );
+
+			/**
+			 * Header.
+			 */
+			$( 'body' ).removeClass(
+				function( index, css ) {
+					return ( css.match( /(^|\s)pen_header_alignment_\S+/g ) || [] ).join( ' ' );
+				}
+			).addClass( 'pen_header_alignment_' + pen_option_get( 'header_alignment' ) );
+			pen_element_header_main().css(
+				{
+					color: pen_option_get( 'color_header_text' ),
+					textShadow: ( ! pen_option_get( 'color_header_text_shadow_display' ) ) ? 'none' : '1px 1px 1px ' + pen_option_get( 'color_header_text_shadow' )
+				}
+			);
+			pen_apply_link_color( pen_element_header_links(), pen_option_get( 'color_header_link' ), pen_option_get( 'color_header_link_hover' ) );
+			pen_apply_link_color( pen_element_header_sitetitle(), pen_option_get( 'color_header_sitetitle' ), pen_option_get( 'color_header_sitetitle_hover' ) );
+			pen_apply_link_color( pen_element_header_sitedescription(), pen_option_get( 'color_header_sitedescription' ), pen_option_get( 'color_header_sitedescription_hover' ) );
+			pen_apply_link_color( pen_element_header().find( pen_element_phone() ).children( 'a' ), pen_option_get( 'color_header_phone' ), pen_option_get( 'color_header_phone_hover' ) );
+			pen_element_header_fields().css(
+				{
+					background: pen_css_background_gradient( pen_option_get( 'color_header_field_background_primary' ), pen_option_get( 'color_header_field_background_secondary' ), 'to bottom' ),
+					color: pen_option_get( 'color_header_field_text' )
+				}
+			);
+
+			/**
+			 * Navigation.
+			 */
+			$( 'body' ).removeClass(
+				function( index, css ) {
+					return ( css.match( /(^|\s)pen_navigation_alignment_\S+/g ) || [] ).join( ' ' );
+				}
+			).addClass( 'pen_navigation_alignment_' + pen_option_get( 'navigation_alignment' ) );
+			pen_element_navigation_links().css(
+				{
+					textShadow: ( ! pen_option_get( 'color_navigation_text_shadow_display' ) ) ? 'none' : '1px 1px 1px ' + pen_option_get( 'color_navigation_text_shadow' )
+				}
+			);
+			pen_apply_link_color( pen_element_navigation_links_submenu(), pen_option_get( 'color_navigation_link_submenu' ), pen_option_get( 'color_navigation_link_hover_submenu' ) );
+			pen_element_navigation_links_submenu().css(
+				{
+					textShadow: ( ! pen_option_get( 'color_navigation_text_shadow_display_submenu' ) ) ? 'none' : '1px 1px 1px ' + pen_option_get( 'color_navigation_text_shadow_submenu' )
+				}
+			);
+
+			/**
+			 * Search bar.
+			 */
+			pen_element_search_bar().css(
+				{
+					color: pen_option_get( 'color_search_text' ),
+					textShadow: ( ! pen_option_get( 'color_search_text_shadow_display' ) ) ? 'none' : '1px 1px 1px ' + pen_option_get( 'color_search_text_shadow' )
+				}
+			);
+			pen_apply_link_color( pen_element_search_bar_links(), pen_option_get( 'color_search_link' ), pen_option_get( 'color_search_link_hover' ) );
+			pen_element_search_bar_field().css(
+				{
+					background: pen_css_background_gradient( pen_option_get( 'color_search_field_background_primary' ), pen_option_get( 'color_search_field_background_secondary' ), 'to bottom' )
+				}
+			);
+			pen_element_search_bar_field().css(
+				{
+					color: pen_option_get( 'color_search_field_text' )
+				}
+			);
+
+			/**
+			 * Content area.
+			 */
+			pen_element_content().css(
+				{
+					background: pen_option_get( 'color_content_background_primary' )
+				}
+			)
+			.find( '.entry-content,.entry-summary,.page-content,.entry-footer,label' ).css(
+				{
+					color: pen_option_get( 'color_content_text' )
+				}
+			);
+			pen_apply_link_color( pen_element_content_links(), pen_option_get( 'color_content_link' ), pen_option_get( 'color_content_link_hover' ) );
+
+			pen_element_content_title().css(
+				{
+					background: pen_css_background_gradient( pen_option_get( 'color_content_title_background_primary' ), pen_option_get( 'color_content_title_background_secondary' ), pen_option_get( 'color_content_title_background_angle' ) ),
+					color: pen_option_get( 'color_content_title_text' )
+				}
+			)
+			.children( '.entry-title' ).css(
+				{
+					textShadow: ( ! pen_option_get( 'color_content_title_text_shadow_display' ) ) ? 'none' : '1px 1px 1px ' + pen_option_get( 'color_content_title_text_shadow' )
+				}
+			);
+			pen_apply_link_color( pen_element_content_title_link(), pen_option_get( 'color_content_title_link' ), pen_option_get( 'color_content_title_link_hover' ) );
+
+			pen_element_content_fields().css(
+				{
+					background: pen_css_background_gradient( pen_option_get( 'color_content_field_background_primary' ), pen_option_get( 'color_content_field_background_secondary' ), 'to bottom' )
+				}
+			);
+			pen_element_content_fields().css(
+				{
+					color: pen_option_get( 'color_content_field_text' )
+				}
+			);
+
+			/**
+			 * Bottom widget area.
+			 */
+			pen_element_bottom().css(
+				{
+					color: pen_option_get( 'color_bottom_text' )
+				}
+			);
+			pen_apply_link_color( pen_element_bottom_links(), pen_option_get( 'color_bottom_link' ), pen_option_get( 'color_bottom_link_hover' ) );
+			pen_element_bottom().css(
+				{
+					textShadow: ( ! pen_option_get( 'color_bottom_text_shadow_display' ) ) ? 'none' : '1px 1px 1px ' + pen_option_get( 'color_bottom_text_shadow' )
+				}
+			);
+			pen_element_bottom_headings().css(
+				{
+					color: pen_option_get( 'color_bottom_headings' ),
+					textShadow: ( ! pen_option_get( 'color_bottom_headings_text_shadow_display' ) ) ? 'none' : '1px 1px 1px ' + pen_option_get( 'color_bottom_headings_text_shadow' )
+				}
+			);
+			pen_element_bottom_fields().css(
+				{
+					background: pen_css_background_gradient( pen_option_get( 'color_bottom_field_background_primary' ), pen_option_get( 'color_bottom_field_background_secondary' ), 'to bottom' ),
+					color: pen_option_get( 'color_bottom_field_text' )
+				}
+			);
+
+			/**
+			 * Footer.
+			 */
+			$( 'body' ).removeClass(
+				function( index, css ) {
+					return ( css.match( /(^|\s)pen_footer_alignment_\S+/g ) || [] ).join( ' ' );
+				}
+			).addClass( 'pen_footer_alignment_' + pen_option_get( 'footer_alignment' ) );
+			if ( pen_option_get( 'footer_menu_display' ) ) {
+				pen_element_footer_menu().show();
+			} else {
+				pen_element_footer_menu().hide();
+			}
+			if ( pen_option_get( 'footer_copyright_display' ) ) {
+				pen_element_footer_copyright().show();
+			} else {
+				pen_element_footer_copyright().hide();
+			}
+
+			/**
+			 * Footer colors.
+			 */
+			pen_element_footer().css(
+				{
+					color: pen_option_get( 'color_footer_text' )
+				}
+			);
+			var pen_color_footer_link            = pen_option_get( 'color_footer_link' ),
+			pen_color_footer_text_shadow         = pen_option_get( 'color_footer_text_shadow' ),
+			pen_color_footer_text_shadow_display = pen_option_get( 'color_footer_text_shadow_display' );
+			pen_element_footer().css(
+				{
+					textShadow: ( ! pen_color_footer_text_shadow_display ) ? 'none' : '1px 1px 1px ' + pen_color_footer_text_shadow
+				}
+			);
+			var pen_color_footer_background_secondary = pen_option_get( 'color_footer_background_secondary' );
+			pen_element_go_to_top().css(
+				{
+					background: pen_color_footer_background_secondary,
+					boxShadow: '0 0 10px ' + pen_color_footer_background_secondary,
+					color: pen_color_footer_link,
+					textShadow: ( ! pen_color_footer_text_shadow_display ) ? 'none' : '1px 1px 1px ' + pen_color_footer_text_shadow,
+				}
+			);
+		}
+	);
+
+	/**
+	 * Logo.
+	 */
+	wp.customize(
+		'custom_logo',
+		function( value ) {
+			value.bind(
+				function( logo ) {
+					if ( logo ) {
+						  $( '#pen_header' ).addClass( 'pen_has_logo' );
+					} else {
+						  $( '#pen_header' ).removeClass( 'pen_has_logo' );
+					}
+				}
+			);
+		}
+	);
+	/**
+	 * General.
+	 */
+	wp.customize(
+		'pen_color_site_background[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( color ) {
+					$( 'body' ).css(
+						{
+							backgroundColor: color
+						}
+					);
+				}
+			);
+		}
+	);
+
+	/**
+	 * Layout.
+	 */
+	wp.customize(
+		'pen_site_width[preset_1]',
+		function( value ) {
+			value.bind(
+				function( position ) {
+					$( 'body' ).removeClass(
+						function( index, css ) {
+							return ( css.match( /(^|\s)pen_width_\S+/g ) || [] ).join( ' ' );
+						}
+					).addClass( 'pen_width_' + position );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_container_position[preset_1]',
+		function( value ) {
+			value.bind(
+				function( position ) {
+					$( 'body' ).removeClass(
+						function( index, css ) {
+							return ( css.match( /(^|\s)pen_main_container_\S+/g ) || [] ).join( ' ' );
+						}
+					).addClass( 'pen_main_container_' + position );
+				}
+			);
+		}
+	);
+
+	/**
+	 * Header.
+	 */
+	wp.customize(
+		'pen_header_alignment[preset_1]',
+		function( value ) {
+			value.bind(
+				function( position ) {
+					$( 'body' ).removeClass(
+						function( index, css ) {
+							return ( css.match( /(^|\s)pen_header_alignment_\S+/g ) || [] ).join( ' ' );
+						}
+					).addClass( 'pen_header_alignment_' + position );
+				}
+			);
+		}
+	);
+
+	/**
+	 * Header colors.
+	 */
+	wp.customize(
+		'pen_color_header_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_header_main().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_link[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_header_link ) {
+					var pen_color_header_link_hover = pen_option_get( 'color_header_link_hover' );
+					pen_apply_link_color( pen_element_header_links(), pen_color_header_link, pen_color_header_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_link_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_header_link_hover ) {
+					var pen_color_header_link = pen_option_get( 'color_header_link' );
+					pen_apply_link_color( pen_element_header_links(), pen_color_header_link, pen_color_header_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_sitetitle[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_header_sitetitle ) {
+					var pen_color_header_sitetitle_hover = pen_option_get( 'color_header_sitetitle_hover' );
+					pen_apply_link_color( pen_element_header_sitetitle(), pen_color_header_sitetitle, pen_color_header_sitetitle_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_sitetitle_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_header_sitetitle_hover ) {
+					var pen_color_header_sitetitle = pen_option_get( 'color_header_sitetitle' );
+					pen_apply_link_color( pen_element_header_sitetitle(), pen_color_header_sitetitle, pen_color_header_sitetitle_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_sitedescription[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_header_sitedescription ) {
+					var pen_color_header_sitedescription_hover = pen_option_get( 'color_header_sitedescription_hover' );
+					pen_apply_link_color( pen_element_header_sitedescription(), pen_color_header_sitedescription, pen_color_header_sitedescription_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_sitedescription_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_header_sitedescription_hover ) {
+					var pen_color_header_sitedescription = pen_option_get( 'color_header_sitedescription' );
+					pen_apply_link_color( pen_element_header_sitedescription(), pen_color_header_sitedescription, pen_color_header_sitedescription_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_phone[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_header_phone ) {
+					var pen_color_header_phone_hover = pen_option_get( 'color_header_phone_hover' );
+					pen_apply_link_color( pen_element_header().find( pen_element_phone() ).children( 'a' ), pen_color_header_phone, pen_color_header_phone_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_phone_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_header_phone_hover ) {
+					var pen_color_header_phone = pen_option_get( 'color_header_phone' );
+					pen_apply_link_color( pen_element_header().find( pen_element_phone() ).children( 'a' ), pen_color_header_phone, pen_color_header_phone_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_field_background_primary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( top ) {
+					var bottom = pen_option_get( 'color_header_field_background_secondary' );
+					pen_element_header_fields().css(
+						{
+							background: pen_css_background_gradient( top, bottom, 'to bottom' )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_field_background_secondary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( bottom ) {
+					var top = pen_option_get( 'color_header_field_background_primary' );
+					pen_element_header_fields().css(
+						{
+							background: pen_css_background_gradient( top, bottom, 'to bottom' )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_field_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_header_fields().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_text_shadow[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_color ) {
+					var shadow_display = pen_option_get( 'color_header_text_shadow_display' );
+					if ( shadow_display ) {
+						pen_element_header_main().css(
+							{
+								textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+							}
+						);
+					}
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_header_text_shadow_display[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_display ) {
+					var shadow_color = pen_option_get( 'color_header_text_shadow' );
+					pen_element_header_main().css(
+						{
+							textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+						}
+					);
+				}
+			);
+		}
+	);
+
+	/**
+	 * Navigation.
+	 */
+	wp.customize(
+		'pen_navigation_alignment[preset_1]',
+		function( value ) {
+			value.bind(
+				function( position ) {
+					$( 'body' ).removeClass(
+						function( index, css ) {
+							return ( css.match( /(^|\s)pen_navigation_alignment_\S+/g ) || [] ).join( ' ' );
+						}
+					).addClass( 'pen_navigation_alignment_' + position );
+				}
+			);
+		}
+	);
+
+	/**
+	 * Navigation colors.
+	 */
+	wp.customize(
+		'pen_color_navigation_link_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_navigation_link_hover ) {
+					var pen_color_navigation_link = pen_option_get( 'color_navigation_link' );
+					pen_apply_link_color( pen_element_navigation_links(), pen_color_navigation_link, pen_color_navigation_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_navigation_text_shadow[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_color ) {
+					var shadow_display = pen_option_get( 'color_navigation_text_shadow_display' );
+					if ( shadow_display ) {
+						pen_element_navigation_links().css(
+							{
+								textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+							}
+						);
+					}
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_navigation_text_shadow_display[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_display ) {
+					var shadow_color = pen_option_get( 'color_navigation_text_shadow' );
+					pen_element_navigation_links().css(
+						{
+							textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_navigation_link_submenu[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_navigation_link_submenu ) {
+					var pen_color_navigation_link_hover_submenu = pen_option_get( 'color_navigation_link_hover_submenu' );
+					pen_apply_link_color( pen_element_navigation_links_submenu(), pen_color_navigation_link_submenu, pen_color_navigation_link_hover_submenu );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_navigation_link_hover_submenu[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_navigation_link_hover_submenu ) {
+					var pen_color_navigation_link_submenu = pen_option_get( 'color_navigation_link_submenu' );
+					pen_apply_link_color( pen_element_navigation_links_submenu(), pen_color_navigation_link_submenu, pen_color_navigation_link_hover_submenu );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_navigation_text_shadow_submenu[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_color ) {
+					var shadow_display = pen_option_get( 'color_navigation_text_shadow_display_submenu' );
+					if ( shadow_display ) {
+						pen_element_navigation_links_submenu().css(
+							{
+								textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+							}
+						);
+					}
+				}
+			);
+		}
+	);
+
+	wp.customize(
+		'pen_color_navigation_text_shadow_display_submenu[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_display ) {
+					var shadow_color = pen_option_get( 'color_navigation_text_shadow_submenu' );
+					pen_element_navigation_links_submenu().css(
+						{
+							textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+						}
+					);
+				}
+			);
+		}
+	);
+
+	/**
+	 * Search bar colors.
+	 */
+	wp.customize(
+		'pen_color_search_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_search_main().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_search_link[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_search_link ) {
+					var pen_color_search_link_hover = pen_option_get( 'color_search_link_hover' );
+					pen_apply_link_color( pen_element_search_bar_links(), pen_color_search_link, pen_color_search_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_search_link_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_search_link_hover ) {
+					var pen_color_search_link = pen_option_get( 'color_search_link' );
+					pen_apply_link_color( pen_element_search_bar_links(), pen_color_search_link, pen_color_search_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_search_field_background_primary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( top ) {
+					var bottom = pen_option_get( 'color_search_field_background_secondary' );
+					pen_element_search_bar_field().css(
+						{
+							background: pen_css_background_gradient( top, bottom, 'to bottom' )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_search_field_background_secondary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( bottom ) {
+					var top = pen_option_get( 'color_search_field_background_primary' );
+					pen_element_search_bar_field().css(
+						{
+							background: pen_css_background_gradient( top, bottom, 'to bottom' )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_search_field_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_search_bar_field().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_search_text_shadow[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_color ) {
+					var shadow_display = pen_option_get( 'color_search_text_shadow_display' );
+					if ( shadow_display ) {
+						pen_element_search_main().css(
+							{
+								textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+							}
+						);
+					}
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_search_text_shadow_display[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_display ) {
+					var shadow_color = pen_option_get( 'color_search_text_shadow' );
+					pen_element_search_main().css(
+						{
+							textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+						}
+					);
+				}
+			);
+		}
+	);
+
+	/**
+	 * Content area.
+	 */
+	wp.customize(
+		'pen_color_content_title_background_primary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( primary ) {
+					var secondary = pen_option_get( 'color_content_title_background_secondary' ),
+					angle         = pen_option_get( 'color_content_title_background_angle' );
+					pen_element_content_title().css(
+						{
+							background: pen_css_background_gradient( primary, secondary, angle )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_title_background_secondary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( secondary ) {
+					var primary = pen_option_get( 'color_content_title_background_primary' ),
+					angle       = pen_option_get( 'color_content_title_background_angle' );
+					pen_element_content_title().css(
+						{
+							background: pen_css_background_gradient( primary, secondary, angle )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_title_background_angle[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( angle ) {
+					var primary = pen_option_get( 'color_content_title_background_primary' ),
+					secondary   = pen_option_get( 'color_content_title_background_secondary' );
+					pen_element_content_title().css(
+						{
+							background: pen_css_background_gradient( primary, secondary, angle )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_title_link[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_content_title_link ) {
+					var pen_color_content_title_link_hover = pen_option_get( 'color_content_title_link_hover' );
+					pen_apply_link_color( pen_element_content_title_link(), pen_color_content_title_link, pen_color_content_title_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_title_link_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_content_title_link_hover ) {
+					var pen_color_content_title_link = pen_option_get( 'color_content_title_link' );
+					pen_apply_link_color( pen_element_content_title_link(), pen_color_content_title_link, pen_color_content_title_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_title_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_content_title().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_title_text_shadow[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_color ) {
+					var shadow_display = pen_option_get( 'color_content_title_text_shadow_display' );
+					if ( shadow_display ) {
+						pen_element_content_title().children( '.entry-title' ).css(
+							{
+								textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+							}
+						);
+					}
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_title_text_shadow_display[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_display ) {
+					var shadow_color = pen_option_get( 'color_content_title_text_shadow' );
+					pen_element_content_title().children( '.entry-title' ).css(
+						{
+							textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_background_primary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( color ) {
+					pen_element_content().css(
+						{
+							background: color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_content().find( '.entry-content,.entry-summary,.page-content,.entry-footer,label' ).css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_link[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_content_link ) {
+					var pen_color_content_link_hover = pen_option_get( 'color_content_link_hover' );
+					pen_apply_link_color( pen_element_content_links(), pen_color_content_link, pen_color_content_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_link_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_content_link_hover ) {
+					var pen_color_content_link = pen_option_get( 'color_content_link' );
+					pen_apply_link_color( pen_element_content_links(), pen_color_content_link, pen_color_content_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_field_background_primary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( top ) {
+					var bottom = pen_option_get( 'color_content_field_background_secondary' );
+					pen_element_content_fields().css(
+						{
+							background: pen_css_background_gradient( top, bottom, 'to bottom' )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_field_background_secondary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( bottom ) {
+					var top = pen_option_get( 'color_content_field_background_primary' );
+					pen_element_content_fields().css(
+						{
+							background: pen_css_background_gradient( top, bottom, 'to bottom' )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_content_field_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_content_fields().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+
+	/**
+	 * Bottom widget area.
+	 */
+	wp.customize(
+		'pen_color_bottom_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_bottom().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_link[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_bottom_link ) {
+					var pen_color_bottom_link_hover = pen_option_get( 'color_bottom_link_hover' );
+					pen_apply_link_color( pen_element_bottom_links(), pen_color_bottom_link, pen_color_bottom_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_link_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_bottom_link_hover ) {
+					var pen_color_bottom_link = pen_option_get( 'color_bottom_link' );
+					pen_apply_link_color( pen_element_bottom_links(), pen_color_bottom_link, pen_color_bottom_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_text_shadow[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_color ) {
+					var shadow_display = pen_option_get( 'color_bottom_text_shadow_display' );
+					if ( shadow_display ) {
+						pen_element_bottom().css(
+							{
+								textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 2px ' + shadow_color
+							}
+						);
+					}
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_text_shadow_display[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_display ) {
+					var shadow_color = pen_option_get( 'color_bottom_text_shadow' );
+					pen_element_bottom().css(
+						{
+							textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 2px ' + shadow_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_headings[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_bottom_headings().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_headings_text_shadow[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_color ) {
+					var shadow_display = pen_option_get( 'color_bottom_headings_text_shadow_display' );
+					if ( shadow_display ) {
+						pen_element_bottom_headings().css(
+							{
+								textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 2px ' + shadow_color
+							}
+						);
+					}
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_headings_text_shadow_display[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_display ) {
+					var shadow_color = pen_option_get( 'color_bottom_headings_text_shadow' );
+					pen_element_bottom_headings().css(
+						{
+							textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 2px ' + shadow_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_field_background_primary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( top ) {
+					var bottom = pen_option_get( 'color_bottom_field_background_secondary' );
+					pen_element_bottom_fields().css(
+						{
+							background: pen_css_background_gradient( top, bottom, 'to bottom' )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_field_background_secondary[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( bottom ) {
+					var top = pen_option_get( 'color_bottom_field_background_primary' );
+					pen_element_bottom_fields().css(
+						{
+							background: pen_css_background_gradient( bottom, top, 'top bottom' )
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_bottom_field_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_bottom_fields().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+
+	/**
+	 * Footer.
+	 */
+	wp.customize(
+		'pen_footer_alignment[preset_1]',
+		function( value ) {
+			value.bind(
+				function( position ) {
+					$( 'body' ).removeClass(
+						function( index, css ) {
+							return ( css.match( /(^|\s)pen_footer_alignment_\S+/g ) || [] ).join( ' ' );
+						}
+					).addClass( 'pen_footer_alignment_' + position );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_footer_menu_display[preset_1]',
+		function( value ) {
+			value.bind(
+				function( display ) {
+					if ( display ) {
+						  pen_element_footer_menu().show();
+					} else {
+						  pen_element_footer_menu().hide();
+					}
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_footer_copyright_display[preset_1]',
+		function( value ) {
+			value.bind(
+				function( display ) {
+					if ( display ) {
+						  pen_element_footer_copyright().show();
+					} else {
+						  pen_element_footer_copyright().hide();
+					}
+				}
+			);
+		}
+	);
+
+	/**
+	 * Footer colors.
+	 */
+	function pen_go_to_top() {
+		var pen_color_footer_background_secondary = pen_option_get( 'color_footer_background_secondary' ),
+		pen_color_footer_link                     = pen_option_get( 'color_footer_link' ),
+		pen_color_footer_text_shadow              = pen_option_get( 'color_footer_text_shadow' ),
+		pen_color_footer_text_shadow_display      = pen_option_get( 'color_footer_text_shadow_display' );
+		pen_element_go_to_top().css(
+			{
+				background: pen_color_footer_background_secondary,
+				boxShadow: '0 0 10px ' + pen_color_footer_background_secondary,
+				color: pen_color_footer_link,
+				textShadow: ( ! pen_color_footer_text_shadow_display ) ? 'none' : '1px 1px 1px ' + pen_color_footer_text_shadow,
+			}
+		);
+	}
+	wp.customize(
+		'pen_color_footer_text[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( text_color ) {
+					pen_element_footer().css(
+						{
+							color: text_color
+						}
+					);
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_footer_link_hover[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( pen_color_footer_link_hover ) {
+					var pen_color_footer_link = pen_option_get( 'color_footer_link' );
+					pen_apply_link_color( pen_element_footer_links(), pen_color_footer_link, pen_color_footer_link_hover );
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_footer_text_shadow[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_color ) {
+					pen_go_to_top();
+					var shadow_display = pen_option_get( 'color_footer_text_shadow_display' );
+					if ( shadow_display ) {
+						pen_element_footer().css(
+							{
+								textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+							}
+						);
+					}
+				}
+			);
+		}
+	);
+	wp.customize(
+		'pen_color_footer_text_shadow_display[' + pen_preview_js.preset_color + ']',
+		function( value ) {
+			value.bind(
+				function( shadow_display ) {
+					pen_go_to_top();
+					var shadow_color = pen_option_get( 'color_footer_text_shadow' );
+					pen_element_footer().css(
+						{
+							textShadow: ( ! shadow_display ) ? 'none' : '1px 1px 1px ' + shadow_color
+						}
+					);
+				}
+			);
+		}
+	);
+} )( jQuery );

+ 4 - 0
assets/js/pen-google-fonts.js

@@ -0,0 +1,4 @@
+var pen_has_WebFont = typeof WebFont;
+if ( pen_has_WebFont !== 'undefined' && pen_has_WebFont !== undefined && pen_has_WebFont !== null ) {
+	WebFont.load( { google: { families: pen_googlefonts.families } } );
+}

+ 422 - 0
assets/js/pen-scripts.js

@@ -0,0 +1,422 @@
+/**
+ * Front-end JavaScript.
+ *
+ * @package Pen
+ */
+;( function( $ ) {
+
+	"use strict";
+
+	$( document ).ready(
+		function() {
+
+				pen_trianglify();
+				pen_shards();
+
+				var $page = $( '#page' );
+			if ( $page.children( '.pen_wrapper' ).length ) {
+				  $page.children( '.pen_wrapper' ).addClass( 'pen_not_visible' )
+				  .end().append( '<div class="pen_loading clearfix" role="alert" style="display:none"><div class="pen_wrap_icon"><div class="pen_icon"></div></div><ul><li>' + pen_js.text.loading + '</li></ul></div>' ).children( '.pen_loading' ).show();
+			}
+
+			if ( pen_function_exists( typeof Modernizr ) && Modernizr.mq( 'only all and (max-width:728px)' ) ) {
+				if ( pen_function_exists( typeof $( window ).fitText ) && pen_js.font_resize.site_title === 'dynamic' ) {
+					$( '#site-title' ).fitText();
+				}
+				if ( pen_js.font_resize.site_title === 'resize' ) {
+					function pen_font_resize( $element, font_size ) {
+						var parent_width = $element.parent().outerWidth( false ),
+						element_width    = $element.css( { position: 'fixed', whiteSspace: 'nowrap' } ).outerWidth( true );
+						$element.css( { position: 'relative' } );
+						font_size = font_size - 2;
+						if ( font_size > 12 && element_width > parent_width ) {
+							$element.animate( { fontSize: font_size } );
+							pen_font_resize( $element, font_size );
+						}
+					}
+					var $site_title = $( '#pen_header h1 a .site-title' );
+					pen_font_resize( $site_title, parseInt( $site_title.css( 'font-size' ) ) );
+					$( window ).resize(
+						function() {
+							if ( pen_function_exists( typeof Modernizr ) && Modernizr.mq( 'only all and (max-width:728px)' ) ) {
+								pen_font_resize( $site_title, parseInt( $site_title.css( 'font-size' ) ) );
+							} else {
+								$site_title.css( { fontSize: '' } );
+							}
+						}
+					);
+				}
+			}
+
+			if ( pen_function_exists( typeof autosize ) ) {
+				  autosize( $page.find( 'textarea' ) );
+			}
+
+			if ( $( 'div#primary-menu' ).length ) {
+				  var $menu = $( 'div#primary-menu > ul' );
+			} else if ( $( 'ul#primary-menu' ).length ) {
+				  var $menu = $( 'ul#primary-menu' );
+			} else {
+				  var $menu = false;
+			}
+			if ( $menu && pen_function_exists( typeof $( window ).superfish ) ) {
+				$menu.superfish(
+					{
+						animation: pen_js.navigation_easing,
+						speed: parseInt( pen_js.animation_navigation_speed ),
+						cssArrows: pen_js.navigation_arrows
+						}
+				);
+			}
+			if ( pen_js.navigation_mobile && pen_function_exists( typeof $( window ).slicknav ) ) {
+				$menu.slicknav(
+					{
+						label: pen_js.text.menu
+						}
+				);
+			}
+
+				$( '.search-form' ).on(
+					'submit',
+					function( event ) {
+						var $search = $( this );
+						if ( $.trim( $search.find( '.search-field' ).val() ) === '' ) {
+							 alert( pen_js.text.enter_keyword );
+							 event.preventDefault();
+						}
+					}
+				);
+
+			if ( '.pen_options_overview' ) {
+				$( '#primary' ).find( '.pen_options_overview' ).each(
+					function() {
+							var $overview = $( this ),
+							overview_id   = $overview.attr( 'id' ),
+							toggle_id     = overview_id + '_toggle';
+							$overview.addClass( 'pen_off_screen' )
+							.prepend( '<a href="#" class="pen_close">' + pen_js.text.close + '</a>' )
+							.before( '<a href="#" id="' + toggle_id + '" class="pen_options_overview_toggle pen_button pen_visible" title="' + pen_js.text.overview_options_post + '">' + pen_js.text.overview_options_post + '</a>' )
+							.find( '.pen_close' ).on(
+								'click',
+								function( event ) {
+									$( '#' + toggle_id ).toggleClass( 'pen_visible' );
+									$overview.toggleClass( 'pen_visible' );
+									event.preventDefault();
+								}
+							);
+							$( '#' + toggle_id ).on(
+								'click',
+								function( event ) {
+									$( this ).toggleClass( 'pen_visible' );
+									$overview.toggleClass( 'pen_visible' );
+									event.preventDefault();
+								}
+							);
+					}
+				);
+			}
+				$( '#pen_back' ).hide().on(
+					'click',
+					function ( event ) {
+						$( 'html, body' ).animate( { scrollTop: 0 }, { queue: false, duration: 1000 } );
+						event.preventDefault();
+					}
+				);
+
+				pen_sticky_header();
+
+		}
+	);
+
+	$( window ).load(
+		function() {
+				var $page = $( '#page' ),
+				$main     = $( '#main' );
+			if ( $page.children( '.pen_wrapper' ).length ) {
+				$page.children( '.pen_loading' ).fadeOut(
+					100,
+					function() {
+						$page.children( '.pen_wrapper' ).removeClass( 'pen_not_visible' );
+						$( this ).remove();
+					}
+				);
+			}
+				var $list = $( '#pen_masonry' );
+			if ( $list.length ) {
+				if ( pen_js.list_type === 'masonry' && pen_function_exists( typeof jQuery( window ).masonry ) ) {
+					$list.masonry(
+						{
+							itemSelector: 'article.post,article.page',
+							percentPosition: true,
+							transitionDuration: 0
+							}
+					).imagesLoaded(
+						function() {
+							$list.masonry( 'layout' );
+							pen_content_height();
+							if ( pen_function_exists( typeof pen_animation ) ) {
+								 var $items  = $main.find( 'article.post,article.page' ),
+								 $thumbnails = $main.find( '.post-thumbnail' );
+								 pen_animation( $items, pen_js.animation_list );
+								 pen_animation( $thumbnails, pen_js.animation_list_thumbnails );
+							}
+						}
+					);
+					setTimeout(
+						function() {
+							$list.masonry( 'layout' );
+							pen_content_height();
+						},
+						5000
+					);
+				}
+			} else {
+				if ( pen_function_exists( typeof pen_animation ) ) {
+					var $thumbnails = $main.find( '.post-thumbnail' );
+					if ( $( 'body' ).hasClass( 'pen_multiple' ) ) {
+						  var $items = $main.find( 'article.post,article.page' );
+						  pen_animation( $items, pen_js.animation_list );
+						  pen_animation( $thumbnails, pen_js.animation_list_thumbnails );
+					} else {
+						  pen_animation( $main, pen_js.animation_content );
+						  pen_animation( $thumbnails, pen_js.animation_content_thumbnails );
+					}
+				}
+			}
+
+			if ( pen_js.animation_comments ) {
+				  var $comments = $( '#comments .comment-list' );
+				if ( $comments.length ) {
+					$comments.children( 'li' ).addClass( 'pen_animate_on_scroll pen_custom_animation_' + pen_js.animation_comments );
+				}
+			}
+
+				pen_animation( $page.find( '.pen_animate_on_scroll' ), 'automatic' );
+
+				pen_content_height();
+
+				$page.find( '.pen_jump_menu' ).each(
+					function() {
+						pen_jump_menu( $( this ) );
+					}
+				);
+
+		}
+	);
+
+	$( window ).on(
+		'resize orientationchange',
+		function() {
+			$( '#main' ).find( 'article.post.animated,article.page.animated' ).removeClass( 'animated' ).addClass( 'animated_not' );
+			pen_content_height();
+		}
+	);
+
+	$( window ).scroll(
+		function() {
+				$( '#main' ).find( 'article.post.animated_not,article.page.animated' ).removeClass( 'animated_not' ).addClass( 'animated' );
+			if ( $( this ).scrollTop() > 400 ) {
+				  $( '#pen_back' ).fadeIn( 200 );
+			} else {
+				  $( '#pen_back' ).fadeOut( 200 );
+			}
+		}
+	);
+
+	function pen_sticky_header() {
+		if ( pen_js.header_sticky && $( '#pen_header' ).length ) {
+			var mobile   = false,
+			$window      = $( window ),
+			$body        = $( 'body' ),
+			layout_boxed = $body.hasClass( 'pen_width_boxed' ) ? true : false,
+			$header      = $( '#pen_header' );
+			if ( pen_function_exists( typeof Modernizr ) && Modernizr.mq( 'only all and (max-width:728px)' ) ) {
+				mobile = true;
+			}
+			$window.resize(
+				function() {
+					if ( pen_function_exists( typeof Modernizr ) && Modernizr.mq( 'only all and (max-width:728px)' ) ) {
+						  mobile = true;
+					} else {
+						  mobile = false;
+					}
+				}
+			);
+			$window.on(
+				'load scroll resize orientationchange pen_update_sticky_header',
+				function() {
+					if ( layout_boxed ) {
+						$header.css( { width: $( '#pen_section' ).outerWidth( true ) } );
+					}
+					if ( mobile || $window.outerHeight() < $header.outerHeight( true ) ) {
+						$header.removeClass( 'pen_header_sticked' ).css( { left: '', position: '', top: '' } );
+						$body.css( { paddingTop: '' } );
+					} else {
+						var header_top = 0,
+						header_height  = $header.removeClass( 'pen_header_sticked' ).outerHeight( true );
+						if ( $( '#wpadminbar' ).length ) {
+							var adminBarheight = $( '#wpadminbar' ).outerHeight( true );
+							header_height     += adminBarheight;
+							header_top        += adminBarheight;
+						}
+						if ( $window.scrollTop() ) {
+							var header_offset = $header.offset();
+							$header.css( { left: header_offset.left, position: 'fixed', top: header_top } ).addClass( 'pen_header_sticked' );
+							$body.css( { paddingTop: header_height + 20 } );
+						} else {
+							$header.css( { left: '', position: '', top: '' } ).removeClass( 'pen_header_sticked' );
+							$body.css( { paddingTop: '' } );
+						}
+					}
+				}
+			);
+		}
+	}
+
+})( jQuery );
+
+function pen_content_height() {
+	var leftHeight = 0,
+	rightHeight    = 0,
+	$content       = jQuery( '#content' ),
+	$left          = jQuery( '#pen_left' ),
+	$right         = jQuery( '#pen_right' );
+	if ( $left.length ) {
+		leftHeight = $left.outerHeight( true );
+	}
+	if ( $right.length ) {
+		rightHeight = $right.outerHeight( true );
+	}
+	var contentHeight = Math.max( leftHeight, rightHeight );
+	if ( contentHeight ) {
+		contentHeight += parseInt( $content.css( 'padding-bottom' ) );
+		if ( contentHeight > $content.outerHeight( true ) ) {
+			$content.css( 'min-height', contentHeight + 30 );
+		}
+	}
+}
+
+function pen_animation( $items, animation ) {
+	if ( pen_function_exists( typeof jQuery( window ).waypoint ) && animation ) {
+		$items.addClass( 'animated' ).css( 'visibility', 'hidden' ).waypoint(
+			{
+				handler: function( direction ) {
+					var $item        = jQuery( this.element ),
+					custom_animation = this.element.className.match( /(^|\s)pen_custom_animation_\S+/g );
+					if ( custom_animation && custom_animation[0] ) {
+						animation = jQuery.trim( custom_animation[0].replace( 'pen_custom_animation_', '' ) );
+					}
+					if ( ! $item.hasClass( animation ) ) {
+						$item.addClass( animation ).css( 'visibility', 'visible' );
+					}
+				},
+				offset: '90%'
+			}
+		);
+	}
+}
+
+function pen_shards() {
+	if ( pen_function_exists( typeof jQuery( window ).shards ) ) {
+		var $body        = jQuery( 'body' ),
+		background_image = $body.css( 'background-image' );
+		if ( pen_js.shards_colors && background_image && background_image === 'none' ) {
+			$body.prepend( '<div id="shards" style="left:0;height:100%;position:fixed;top:0;visibility:hidden;width:100%;" />' );
+			var $shards = jQuery( '#shards' );
+			$shards.shards( pen_js.shards_colors[0], pen_js.shards_colors[1], [0,0,0,0.2], 20, .8, 2, .15, true );
+			var background = $shards.css( 'background-image' );
+			$shards.remove();
+			jQuery( 'body' ).addClass( 'pen_shards' ).removeClass( 'custom-background' );
+			jQuery( 'head' ).append( "<style type=\"text/css\">body.pen_shards:before{background-image:" + background + " !important;content:'';left:0;height:100%;position:fixed;top:0;width:100%;will-change:transform;z-index:-1; }</style>" );
+		}
+	}
+}
+
+function pen_trianglify() {
+	if ( pen_function_exists( typeof Trianglify ) ) {
+		var $body        = jQuery( 'body' ),
+		background_image = $body.css( 'background-image' );
+		if ( pen_js.trianglify_colors && background_image && background_image === 'none' ) {
+			var pattern = Trianglify(
+				{
+					height: window.innerHeight,
+					width: window.innerWidth,
+					x_colors: pen_js.trianglify_colors,
+					y_colors: 'match_x',
+					cell_size: 80
+				}
+			);
+			var svg     = jQuery( '<div />' ).prepend( pattern.svg() ).html();
+			svg         = '<?xml version="1.0" ?>' + svg.replace( '<svg', '<svg xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="none"' );
+			var dataURI = "data:image/svg+xml;base64, " + window.btoa( unescape( encodeURIComponent( svg ) ) );
+			jQuery( 'body' ).addClass( 'pen_trianglify' ).removeClass( 'custom-background' );
+			jQuery( 'head' ).append( "<style type=\"text/css\">body.pen_trianglify:before{background-image:url('" + dataURI + "') !important;background-size:cover;content:'';left:0;height:100%;position:fixed;top:0;width:100%;will-change:transform;z-index:-1; }</style>" );
+		}
+	}
+}
+
+function pen_jump_menu( $menu ) {
+	var title = jQuery.trim( $menu.find( 'h4' ).text() );
+	$menu.prepend( '<button type="button" class="pen_toggle" title="' + title + '"><span class="screen-reader-text">' + pen_js.text.expand_collapse + '</span></button>' )
+	.find( '.pen_menu_wrapper' ).attr( 'aria-hidden', true )
+	.end().removeClass( 'screen-reader-text' ).attr( 'aria-hidden', false )
+	.find( 'h4 span' ).prepend( '<span class="pen_only" title="' + pen_js.text.theme_specific + '">' + pen_js.text.pen_theme + '</span>' );
+	var $toggle = $menu.find( '.pen_toggle' ),
+	timer;
+	$menu.find( 'ul li a' ).each(
+		function() {
+				jQuery( this ).attr( 'title', jQuery.trim( jQuery( this ).text() ) ).attr( 'tabindex', '-1' );
+		}
+	);
+	$toggle.on(
+		'click',
+		function( event ) {
+			var $wrapper = jQuery( '.pen_menu_wrapper', $menu );
+			clearTimeout( timer );
+			if ( $toggle.hasClass( 'pen_expanded' ) ) {
+				$toggle.removeClass( 'pen_expanded' );
+				$wrapper.addClass( 'screen-reader-text' ).attr( 'aria-hidden', true )
+				.find( 'ul li a' ).attr( 'tabindex', '-1' );
+			} else {
+				$toggle.addClass( 'pen_expanded' );
+				$wrapper.find( 'ul li a' ).removeAttr( 'tabindex' )
+				.end().removeClass( 'screen-reader-text' ).attr( 'aria-hidden', false )
+				.on(
+					'mouseleave',
+					function() {
+						clearTimeout( timer );
+						timer = setTimeout(
+							function() {
+								$wrapper.stop().animate(
+									{ opacity: 0 },
+									{
+										duration: 2000,
+										queue: false,
+										complete: function() {
+											 $toggle.trigger( 'click' );
+										}
+									}
+								);
+							},
+							30000
+						);
+					}
+				).on(
+					'mouseenter',
+					function() {
+						$wrapper.stop().animate( { opacity: 1 }, { duration: 200, queue: false } );
+						clearTimeout( timer );
+					}
+				);
+			}
+			event.preventDefault();
+		}
+	);
+}
+
+function pen_function_exists( type_of ) {
+	if ( type_of !== 'undefined' && type_of !== undefined && type_of !== null ) {
+		return true;
+	}
+	return false;
+}

+ 292 - 0
assets/js/plugins/autosize.js

@@ -0,0 +1,292 @@
+/*!
+	Autosize 4.0.0
+	license: MIT
+	http://www.jacklmoore.com/autosize
+*/
+(function (global, factory) {
+	if (typeof define === 'function' && define.amd) {
+		define(['exports', 'module'], factory);
+	} else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {
+		factory(exports, module);
+	} else {
+		var mod = {
+			exports: {}
+		};
+		factory(mod.exports, mod);
+		global.autosize = mod.exports;
+	}
+})(this, function (exports, module) {
+	'use strict';
+
+	var map = typeof Map === "function" ? new Map() : (function () {
+		var keys = [];
+		var values = [];
+
+		return {
+			has: function has(key) {
+				return keys.indexOf(key) > -1;
+			},
+			get: function get(key) {
+				return values[keys.indexOf(key)];
+			},
+			set: function set(key, value) {
+				if (keys.indexOf(key) === -1) {
+					keys.push(key);
+					values.push(value);
+				}
+			},
+			'delete': function _delete(key) {
+				var index = keys.indexOf(key);
+				if (index > -1) {
+					keys.splice(index, 1);
+					values.splice(index, 1);
+				}
+			}
+		};
+	})();
+
+	var createEvent = function createEvent(name) {
+		return new Event(name, { bubbles: true });
+	};
+	try {
+		new Event('test');
+	} catch (e) {
+		// IE does not support `new Event()`
+		createEvent = function (name) {
+			var evt = document.createEvent('Event');
+			evt.initEvent(name, true, false);
+			return evt;
+		};
+	}
+
+	function assign(ta) {
+		if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
+
+		var heightOffset = null;
+		var clientWidth = ta.clientWidth;
+		var cachedHeight = null;
+
+		function init() {
+			var style = window.getComputedStyle(ta, null);
+
+			if (style.resize === 'vertical') {
+				ta.style.resize = 'none';
+			} else if (style.resize === 'both') {
+				ta.style.resize = 'horizontal';
+			}
+
+			if (style.boxSizing === 'content-box') {
+				heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
+			} else {
+				heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
+			}
+			// Fix when a textarea is not on document body and heightOffset is Not a Number
+			if (isNaN(heightOffset)) {
+				heightOffset = 0;
+			}
+
+			update();
+		}
+
+		function changeOverflow(value) {
+			{
+				// Chrome/Safari-specific fix:
+				// When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
+				// made available by removing the scrollbar. The following forces the necessary text reflow.
+				var width = ta.style.width;
+				ta.style.width = '0px';
+				// Force reflow:
+				/* jshint ignore:start */
+				ta.offsetWidth;
+				/* jshint ignore:end */
+				ta.style.width = width;
+			}
+
+			ta.style.overflowY = value;
+		}
+
+		function getParentOverflows(el) {
+			var arr = [];
+
+			while (el && el.parentNode && el.parentNode instanceof Element) {
+				if (el.parentNode.scrollTop) {
+					arr.push({
+						node: el.parentNode,
+						scrollTop: el.parentNode.scrollTop
+					});
+				}
+				el = el.parentNode;
+			}
+
+			return arr;
+		}
+
+		function resize() {
+			var originalHeight = ta.style.height;
+			var overflows = getParentOverflows(ta);
+			var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
+
+			ta.style.height = '';
+
+			var endHeight = ta.scrollHeight + heightOffset;
+
+			if (ta.scrollHeight === 0) {
+				// If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
+				ta.style.height = originalHeight;
+				return;
+			}
+
+			ta.style.height = endHeight + 'px';
+
+			// used to check if an update is actually necessary on window.resize
+			clientWidth = ta.clientWidth;
+
+			// prevents scroll-position jumping
+			overflows.forEach(function (el) {
+				el.node.scrollTop = el.scrollTop;
+			});
+
+			if (docTop) {
+				document.documentElement.scrollTop = docTop;
+			}
+		}
+
+		function update() {
+			resize();
+
+			var styleHeight = Math.round(parseFloat(ta.style.height));
+			var computed = window.getComputedStyle(ta, null);
+
+			// Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
+			var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
+
+			// The actual height not matching the style height (set via the resize method) indicates that
+			// the max-height has been exceeded, in which case the overflow should be allowed.
+			if (actualHeight !== styleHeight) {
+				if (computed.overflowY === 'hidden') {
+					changeOverflow('scroll');
+					resize();
+					actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
+				}
+			} else {
+				// Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
+				if (computed.overflowY !== 'hidden') {
+					changeOverflow('hidden');
+					resize();
+					actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
+				}
+			}
+
+			if (cachedHeight !== actualHeight) {
+				cachedHeight = actualHeight;
+				var evt = createEvent('autosize:resized');
+				try {
+					ta.dispatchEvent(evt);
+				} catch (err) {
+					// Firefox will throw an error on dispatchEvent for a detached element
+					// https://bugzilla.mozilla.org/show_bug.cgi?id=889376
+				}
+			}
+		}
+
+		var pageResize = function pageResize() {
+			if (ta.clientWidth !== clientWidth) {
+				update();
+			}
+		};
+
+		var destroy = (function (style) {
+			window.removeEventListener('resize', pageResize, false);
+			ta.removeEventListener('input', update, false);
+			ta.removeEventListener('keyup', update, false);
+			ta.removeEventListener('autosize:destroy', destroy, false);
+			ta.removeEventListener('autosize:update', update, false);
+
+			Object.keys(style).forEach(function (key) {
+				ta.style[key] = style[key];
+			});
+
+			map['delete'](ta);
+		}).bind(ta, {
+			height: ta.style.height,
+			resize: ta.style.resize,
+			overflowY: ta.style.overflowY,
+			overflowX: ta.style.overflowX,
+			wordWrap: ta.style.wordWrap
+		});
+
+		ta.addEventListener('autosize:destroy', destroy, false);
+
+		// IE9 does not fire onpropertychange or oninput for deletions,
+		// so binding to onkeyup to catch most of those events.
+		// There is no way that I know of to detect something like 'cut' in IE9.
+		if ('onpropertychange' in ta && 'oninput' in ta) {
+			ta.addEventListener('keyup', update, false);
+		}
+
+		window.addEventListener('resize', pageResize, false);
+		ta.addEventListener('input', update, false);
+		ta.addEventListener('autosize:update', update, false);
+		ta.style.overflowX = 'hidden';
+		ta.style.wordWrap = 'break-word';
+
+		map.set(ta, {
+			destroy: destroy,
+			update: update
+		});
+
+		init();
+	}
+
+	function destroy(ta) {
+		var methods = map.get(ta);
+		if (methods) {
+			methods.destroy();
+		}
+	}
+
+	function update(ta) {
+		var methods = map.get(ta);
+		if (methods) {
+			methods.update();
+		}
+	}
+
+	var autosize = null;
+
+	// Do nothing in Node.js environment and IE8 (or lower)
+	if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
+		autosize = function (el) {
+			return el;
+		};
+		autosize.destroy = function (el) {
+			return el;
+		};
+		autosize.update = function (el) {
+			return el;
+		};
+	} else {
+		autosize = function (el, options) {
+			if (el) {
+				Array.prototype.forEach.call(el.length ? el : [el], function (x) {
+					return assign(x, options);
+				});
+			}
+			return el;
+		};
+		autosize.destroy = function (el) {
+			if (el) {
+				Array.prototype.forEach.call(el.length ? el : [el], destroy);
+			}
+			return el;
+		};
+		autosize.update = function (el) {
+			if (el) {
+				Array.prototype.forEach.call(el.length ? el : [el], update);
+			}
+			return el;
+		};
+	}
+
+	module.exports = autosize;
+});

+ 78 - 0
assets/js/plugins/base64.js

@@ -0,0 +1,78 @@
+/**
+ * Base64.js
+ * https://github.com/davidchambers/Base64.js
+ * Apache License 2.0
+ */
+;(function () {
+
+  var object =
+    typeof exports != 'undefined' ? exports :
+    typeof self != 'undefined' ? self : /* #8: web workers. */
+    $.global; /* #31: ExtendScript. */
+
+  var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+
+  function InvalidCharacterError(message) {
+    this.message = message;
+  }
+  InvalidCharacterError.prototype = new Error;
+  InvalidCharacterError.prototype.name = 'InvalidCharacterError';
+
+  /**
+	 * Encoder
+   * [https://gist.github.com/999166] by [https://github.com/nignag]
+	 */
+  object.btoa || (
+  object.btoa = function (input) {
+    var str = String(input);
+    for (
+      /* initialize result and counter. */
+      var block, charCode, idx = 0, map = chars, output = '';
+      /**
+			 * if the next str index does not exist:
+       * change the mapping table to "="
+       * check if d has no fractional digits.
+			 */
+      str.charAt(idx | 0) || (map = '=', idx % 1);
+      /* "8 - idx % 1 * 8" generates the sequence 2, 4, 6, 8. */
+      output += map.charAt(63 & block >> 8 - idx % 1 * 8)
+    ) {
+      charCode = str.charCodeAt(idx += 3/4);
+      if (charCode > 0xFF) {
+        throw new InvalidCharacterError("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
+      }
+      block = block << 8 | charCode;
+    }
+    return output;
+  });
+
+  /**
+	 * Decoder
+   * [https://gist.github.com/1020396] by [https://github.com/atk]
+	 */
+  object.atob || (
+  object.atob = function (input) {
+    var str = String(input).replace(/[=]+$/, ''); /* #31: ExtendScript bad parse of /= */
+    if (str.length % 4 == 1) {
+      throw new InvalidCharacterError("'atob' failed: The string to be decoded is not correctly encoded.");
+    }
+    for (
+      /* Initialize result and counters. */
+      var bc = 0, bs, buffer, idx = 0, output = '';
+      /* Get next character. */
+      buffer = str.charAt(idx++);
+      /* Character found in table? initialize bit storage and add its ascii value; */
+      ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
+        /**
+				 * and if not first of each 4 characters,
+         * convert the first 8 bits to one ascii character.
+				 */
+        bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
+    ) {
+      /* try to find character in table (0-63, not found => -1) */
+      buffer = chars.indexOf(buffer);
+    }
+    return output;
+  });
+
+}());

+ 339 - 0
assets/js/plugins/html5.js

@@ -0,0 +1,339 @@
+/**
+ * @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+ */
+;(function(window, document) {
+	/*jshint evil:true */
+	/** version */
+	var version = '3.7.3';
+
+	/** Preset options */
+	var options = window.html5 || {};
+
+	/** Used to skip problem elements */
+	var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+	/** Not all elements can be cloned in IE **/
+	var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+	/** Detect whether the browser supports default html5 styles */
+	var supportsHtml5Styles;
+
+	/** Name of the expando, to work with multiple documents or to re-shiv one document */
+	var expando = '_html5shiv';
+
+	/** The id for the the documents expando */
+	var expanID = 0;
+
+	/** Cached data for each document */
+	var expandoData = {};
+
+	/** Detect whether the browser supports unknown elements */
+	var supportsUnknownElements;
+
+	(function() {
+		try {
+			var a = document.createElement( 'a' );
+			a.innerHTML = '<xyz></xyz>';
+			// if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+			supportsHtml5Styles = ('hidden' in a);
+
+			supportsUnknownElements = a.childNodes.length == 1 || (function() {
+				// assign a false positive if unable to shiv
+				(document.createElement)('a');
+				var frag = document.createDocumentFragment();
+				return (
+				typeof frag.cloneNode == 'undefined' ||
+				typeof frag.createDocumentFragment == 'undefined' ||
+				typeof frag.createElement == 'undefined'
+				);
+			}());
+		} catch (e) {
+			// assign a false positive if detection fails => unable to shiv
+			supportsHtml5Styles = true;
+			supportsUnknownElements = true;
+		}
+
+	}());
+
+	/*--------------------------------------------------------------------------*/
+
+	/**
+	 * Creates a style sheet with the given CSS text and adds it to the document.
+	 *
+	 * @private
+	 * @param {Document} ownerDocument The document.
+	 * @param {String} cssText The CSS text.
+	 * @returns {StyleSheet} The style element.
+	 */
+	function addStyleSheet(ownerDocument, cssText) {
+		var p = ownerDocument.createElement( 'p' ),
+		parent = ownerDocument.getElementsByTagName( 'head' )[0] || ownerDocument.documentElement;
+
+		p.innerHTML = 'x<style>' + cssText + '</style>';
+		return parent.insertBefore( p.lastChild, parent.firstChild );
+	}
+
+	/**
+	 * Returns the value of `html5.elements` as an array.
+	 *
+	 * @private
+	 * @returns {Array} An array of shived element node names.
+	 */
+	function getElements() {
+		var elements = html5.elements;
+		return typeof elements == 'string' ? elements.split( ' ' ) : elements;
+	}
+
+	/**
+	 * Extends the built-in list of html5 elements
+	 *
+	 * @memberOf html5
+	 * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
+	 * @param {Document} ownerDocument The context document.
+	 */
+	function addElements(newElements, ownerDocument) {
+		var elements = html5.elements;
+		if (typeof elements != 'string') {
+			elements = elements.join( ' ' );
+		}
+		if (typeof newElements != 'string') {
+			newElements = newElements.join( ' ' );
+		}
+		html5.elements = elements + ' ' + newElements;
+		shivDocument( ownerDocument );
+	}
+
+	/**
+	 * Returns the data associated to the given document
+	 *
+	 * @private
+	 * @param {Document} ownerDocument The document.
+	 * @returns {Object} An object of data.
+	 */
+	function getExpandoData(ownerDocument) {
+		var data = expandoData[ownerDocument[expando]];
+		if ( ! data) {
+			data = {};
+			expanID++;
+			ownerDocument[expando] = expanID;
+			expandoData[expanID] = data;
+		}
+		return data;
+	}
+
+	/**
+	 * returns a shived element for the given nodeName and document
+	 *
+	 * @memberOf html5
+	 * @param {String} nodeName name of the element
+	 * @param {Document|DocumentFragment} ownerDocument The context document.
+	 * @returns {Object} The shived element.
+	 */
+	function createElement(nodeName, ownerDocument, data) {
+		if ( ! ownerDocument) {
+			ownerDocument = document;
+		}
+		if (supportsUnknownElements) {
+			return ownerDocument.createElement( nodeName );
+		}
+		if ( ! data) {
+			data = getExpandoData( ownerDocument );
+		}
+		var node;
+
+		if (data.cache[nodeName]) {
+			node = data.cache[nodeName].cloneNode();
+		} else if (saveClones.test( nodeName )) {
+			node = (data.cache[nodeName] = data.createElem( nodeName )).cloneNode();
+		} else {
+			node = data.createElem( nodeName );
+		}
+
+		// Avoid adding some elements to fragments in IE < 9 because
+		// * Attributes like `name` or `type` cannot be set/changed once an element
+		// is inserted into a document/fragment
+		// * Link elements with `src` attributes that are inaccessible, as with
+		// a 403 response, will cause the tab/window to crash
+		// * Script elements appended to fragments will execute when their `src`
+		// or `text` property is set
+		return node.canHaveChildren && ! reSkip.test( nodeName ) && ! node.tagUrn ? data.frag.appendChild( node ) : node;
+	}
+
+	/**
+	 * returns a shived DocumentFragment for the given document
+	 *
+	 * @memberOf html5
+	 * @param {Document} ownerDocument The context document.
+	 * @returns {Object} The shived DocumentFragment.
+	 */
+	function createDocumentFragment(ownerDocument, data) {
+		if ( ! ownerDocument) {
+			ownerDocument = document;
+		}
+		if (supportsUnknownElements) {
+			return ownerDocument.createDocumentFragment();
+		}
+		data = data || getExpandoData( ownerDocument );
+		var clone = data.frag.cloneNode(),
+		i = 0,
+		elems = getElements(),
+		l = elems.length;
+		for (;i < l;i++) {
+			clone.createElement( elems[i] );
+		}
+		return clone;
+	}
+
+	/**
+	 * Shivs the `createElement` and `createDocumentFragment` methods of the document.
+	 *
+	 * @private
+	 * @param {Document|DocumentFragment} ownerDocument The document.
+	 * @param {Object} data of the document.
+	 */
+	function shivMethods(ownerDocument, data) {
+		if ( ! data.cache) {
+			data.cache = {};
+			data.createElem = ownerDocument.createElement;
+			data.createFrag = ownerDocument.createDocumentFragment;
+			data.frag = data.createFrag();
+		}
+
+		ownerDocument.createElement = function(nodeName) {
+			// abort shiv
+			if ( ! html5.shivMethods) {
+				return data.createElem( nodeName );
+			}
+			return createElement( nodeName, ownerDocument, data );
+		};
+
+		ownerDocument.createDocumentFragment = Function('h,f', 'return function() {' +
+			'var n=f.cloneNode(),c=n.createElement;' +
+			'h.shivMethods&&(' +
+			// unroll the `createElement` calls
+			getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
+				data.createElem( nodeName );
+				data.frag.createElement( nodeName );
+				return 'c("' + nodeName + '")';
+			}) +
+			');return n}'
+		)(html5, data.frag);
+	}
+
+	/*--------------------------------------------------------------------------*/
+
+	/**
+	 * Shivs the given document.
+	 *
+	 * @memberOf html5
+	 * @param {Document} ownerDocument The document to shiv.
+	 * @returns {Document} The shived document.
+	 */
+	function shivDocument(ownerDocument) {
+		if ( ! ownerDocument) {
+			ownerDocument = document;
+		}
+		var data = getExpandoData( ownerDocument );
+
+		if (html5.shivCSS && ! supportsHtml5Styles && ! data.hasCSS) {
+			data.hasCSS = ! ! addStyleSheet(ownerDocument,
+				// corrects block display not defined in IE6/7/8/9
+				'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
+				// adds styling not present in IE6/7/8/9
+				'mark{background:#FF0;color:#000}' +
+				// hides non-rendered elements
+				'template{display:none}'
+			);
+		}
+		if ( ! supportsUnknownElements) {
+			shivMethods( ownerDocument, data );
+		}
+		return ownerDocument;
+	}
+
+	/*--------------------------------------------------------------------------*/
+
+	/**
+	* The `html5` object is exposed so that more elements can be shived and
+	* existing shiving can be detected on iframes.
+	*
+	* @type Object
+	* @example
+	*
+	* // options can be changed before the script is included
+	* html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
+	*/
+	var html5 = {
+
+		/**
+		 * An array or space separated string of node names of the elements to shiv.
+		 *
+		 * @memberOf html5
+		 * @type Array|String
+		 */
+		'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
+
+		/**
+		 * current version of html5shiv
+		 */
+		'version': version,
+
+		/**
+		 * A flag to indicate that the HTML5 style sheet should be inserted.
+		 *
+		 * @memberOf html5
+		 * @type Boolean
+		 */
+		'shivCSS': (options.shivCSS !== false),
+
+		/**
+		 * Is equal to true if a browser supports creating unknown/HTML5 elements
+		 *
+		 * @memberOf html5
+		 * @type boolean
+		 */
+		'supportsUnknownElements': supportsUnknownElements,
+
+		/**
+		 * A flag to indicate that the document's `createElement` and `createDocumentFragment`
+		 * methods should be overwritten.
+		 *
+		 * @memberOf html5
+		 * @type Boolean
+		 */
+		'shivMethods': (options.shivMethods !== false),
+
+		/**
+		 * A string to describe the type of `html5` object ("default" or "default print").
+		 *
+		 * @memberOf html5
+		 * @type String
+		 */
+		'type': 'default',
+
+		// shivs the document according to the specified `html5` object options
+		'shivDocument': shivDocument,
+
+		// creates a shived element
+		createElement: createElement,
+
+		// creates a shived documentFragment
+		createDocumentFragment: createDocumentFragment,
+
+		// extends list of elements
+		addElements: addElements
+	};
+
+	/*--------------------------------------------------------------------------*/
+
+	// expose html5
+	window.html5 = html5;
+
+	// shiv the document
+	shivDocument( document );
+
+	if (typeof module == 'object' && module.exports) {
+		module.exports = html5;
+	}
+
+}(typeof window !== "undefined" ? window : this, document));

+ 0 - 0
assets/js/plugins/index.html


+ 192 - 0
assets/js/plugins/jquery.are-you-sure.js

@@ -0,0 +1,192 @@
+/*!
+ * jQuery Plugin: Are-You-Sure (Dirty Form Detection)
+ * https://github.com/codedance/jquery.AreYouSure/
+ *
+ * Copyright (c) 2012-2014, Chris Dance and PaperCut Software http://www.papercut.com/
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Author:  chris.dance@papercut.com
+ * Version: 1.9.0
+ * Date:    13th August 2014
+ */
+(function($) {
+
+  $.fn.areYouSure = function(options) {
+
+    var settings = $.extend(
+      {
+        'message' : 'You have unsaved changes!',
+        'dirtyClass' : 'dirty',
+        'change' : null,
+        'silent' : false,
+        'addRemoveFieldsMarksDirty' : false,
+        'fieldEvents' : 'change keyup propertychange input',
+        'fieldSelector': ":input:not(input[type=submit]):not(input[type=button])"
+      }, options);
+
+    var getValue = function($field) {
+      if ($field.hasClass('ays-ignore')
+          || $field.hasClass('aysIgnore')
+          || $field.attr('data-ays-ignore')
+          || $field.attr('name') === undefined) {
+        return null;
+      }
+
+      if ($field.is(':disabled')) {
+        return 'ays-disabled';
+      }
+
+      var val;
+      var type = $field.attr('type');
+      if ($field.is('select')) {
+        type = 'select';
+      }
+
+      switch (type) {
+        case 'checkbox':
+        case 'radio':
+          val = $field.is(':checked');
+          break;
+        case 'select':
+          val = '';
+          $field.find('option').each(function(o) {
+            var $option = $(this);
+            if ($option.is(':selected')) {
+              val += $option.val();
+            }
+          });
+          break;
+        default:
+          val = $field.val();
+      }
+
+      return val;
+    };
+
+    var storeOrigValue = function($field) {
+      $field.data('ays-orig', getValue($field));
+    };
+
+    var checkForm = function(evt) {
+
+      var isFieldDirty = function($field) {
+        var origValue = $field.data('ays-orig');
+        if (undefined === origValue) {
+          return false;
+        }
+        return (getValue($field) != origValue);
+      };
+
+      var $form = ($(this).is('form'))
+                    ? $(this)
+                    : $(this).parents('form');
+
+      // Test on the target first as it's the most likely to be dirty
+      if (isFieldDirty($(evt.target))) {
+        setDirtyStatus($form, true);
+        return;
+      }
+
+      $fields = $form.find(settings.fieldSelector);
+
+      if (settings.addRemoveFieldsMarksDirty) {
+        // Check if field count has changed
+        var origCount = $form.data("ays-orig-field-count");
+        if (origCount != $fields.length) {
+          setDirtyStatus($form, true);
+          return;
+        }
+      }
+
+      // Brute force - check each field
+      var isDirty = false;
+      $fields.each(function() {
+        $field = $(this);
+        if (isFieldDirty($field)) {
+          isDirty = true;
+          return false; // break
+        }
+      });
+
+      setDirtyStatus($form, isDirty);
+    };
+
+    var initForm = function($form) {
+      var fields = $form.find(settings.fieldSelector);
+      $(fields).each(function() { storeOrigValue($(this)); });
+      $(fields).unbind(settings.fieldEvents, checkForm);
+      $(fields).bind(settings.fieldEvents, checkForm);
+      $form.data("ays-orig-field-count", $(fields).length);
+      setDirtyStatus($form, false);
+    };
+
+    var setDirtyStatus = function($form, isDirty) {
+      var changed = isDirty != $form.hasClass(settings.dirtyClass);
+      $form.toggleClass(settings.dirtyClass, isDirty);
+
+      // Fire change event if required
+      if (changed) {
+        if (settings.change) settings.change.call($form, $form);
+
+        if (isDirty) $form.trigger('dirty.areYouSure', [$form]);
+        if (!isDirty) $form.trigger('clean.areYouSure', [$form]);
+        $form.trigger('change.areYouSure', [$form]);
+      }
+    };
+
+    var rescan = function() {
+      var $form = $(this);
+      var fields = $form.find(settings.fieldSelector);
+      $(fields).each(function() {
+        var $field = $(this);
+        if (!$field.data('ays-orig')) {
+          storeOrigValue($field);
+          $field.bind(settings.fieldEvents, checkForm);
+        }
+      });
+      // Check for changes while we're here
+      $form.trigger('checkform.areYouSure');
+    };
+
+    var reinitialize = function() {
+      initForm($(this));
+    }
+
+    if (!settings.silent && !window.aysUnloadSet) {
+      window.aysUnloadSet = true;
+      $(window).bind('beforeunload', function() {
+        $dirtyForms = $("form").filter('.' + settings.dirtyClass);
+        if ($dirtyForms.length == 0) {
+          return;
+        }
+        // Prevent multiple prompts - seen on Chrome and IE
+        if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) {
+          if (window.aysHasPrompted) {
+            return;
+          }
+          window.aysHasPrompted = true;
+          window.setTimeout(function() {window.aysHasPrompted = false;}, 900);
+        }
+        return settings.message;
+      });
+    }
+
+    return this.each(function(elem) {
+      if (!$(this).is('form')) {
+        return;
+      }
+      var $form = $(this);
+
+      $form.submit(function() {
+        $form.removeClass(settings.dirtyClass);
+      });
+      $form.bind('reset', function() { setDirtyStatus($form, false); });
+      // Add a custom events
+      $form.bind('rescan.areYouSure', rescan);
+      $form.bind('reinitialize.areYouSure', reinitialize);
+      $form.bind('checkform.areYouSure', checkForm);
+      initForm($form);
+    });
+  };
+})(jQuery);

+ 205 - 0
assets/js/plugins/jquery.easing.js

@@ -0,0 +1,205 @@
+/*
+ * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
+ *
+ * Uses the built in easing capabilities added In jQuery 1.1
+ * to offer multiple easing options
+ *
+ * TERMS OF USE - jQuery Easing
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright © 2008 George McGinley Smith
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the author nor the names of contributors may be used to endorse
+ * or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+*/
+
+// t: current time, b: begInnIng value, c: change In value, d: duration
+jQuery.easing['jswing'] = jQuery.easing['swing'];
+
+jQuery.extend( jQuery.easing,
+{
+	def: 'easeOutQuad',
+	swing: function (x, t, b, c, d) {
+		//alert(jQuery.easing.default);
+		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
+	},
+	easeInQuad: function (x, t, b, c, d) {
+		return c*(t/=d)*t + b;
+	},
+	easeOutQuad: function (x, t, b, c, d) {
+		return -c *(t/=d)*(t-2) + b;
+	},
+	easeInOutQuad: function (x, t, b, c, d) {
+		if ((t/=d/2) < 1) return c/2*t*t + b;
+		return -c/2 * ((--t)*(t-2) - 1) + b;
+	},
+	easeInCubic: function (x, t, b, c, d) {
+		return c*(t/=d)*t*t + b;
+	},
+	easeOutCubic: function (x, t, b, c, d) {
+		return c*((t=t/d-1)*t*t + 1) + b;
+	},
+	easeInOutCubic: function (x, t, b, c, d) {
+		if ((t/=d/2) < 1) return c/2*t*t*t + b;
+		return c/2*((t-=2)*t*t + 2) + b;
+	},
+	easeInQuart: function (x, t, b, c, d) {
+		return c*(t/=d)*t*t*t + b;
+	},
+	easeOutQuart: function (x, t, b, c, d) {
+		return -c * ((t=t/d-1)*t*t*t - 1) + b;
+	},
+	easeInOutQuart: function (x, t, b, c, d) {
+		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
+		return -c/2 * ((t-=2)*t*t*t - 2) + b;
+	},
+	easeInQuint: function (x, t, b, c, d) {
+		return c*(t/=d)*t*t*t*t + b;
+	},
+	easeOutQuint: function (x, t, b, c, d) {
+		return c*((t=t/d-1)*t*t*t*t + 1) + b;
+	},
+	easeInOutQuint: function (x, t, b, c, d) {
+		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
+		return c/2*((t-=2)*t*t*t*t + 2) + b;
+	},
+	easeInSine: function (x, t, b, c, d) {
+		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
+	},
+	easeOutSine: function (x, t, b, c, d) {
+		return c * Math.sin(t/d * (Math.PI/2)) + b;
+	},
+	easeInOutSine: function (x, t, b, c, d) {
+		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
+	},
+	easeInExpo: function (x, t, b, c, d) {
+		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
+	},
+	easeOutExpo: function (x, t, b, c, d) {
+		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
+	},
+	easeInOutExpo: function (x, t, b, c, d) {
+		if (t==0) return b;
+		if (t==d) return b+c;
+		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
+		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
+	},
+	easeInCirc: function (x, t, b, c, d) {
+		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
+	},
+	easeOutCirc: function (x, t, b, c, d) {
+		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
+	},
+	easeInOutCirc: function (x, t, b, c, d) {
+		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
+		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
+	},
+	easeInElastic: function (x, t, b, c, d) {
+		var s=1.70158;var p=0;var a=c;
+		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
+		if (a < Math.abs(c)) { a=c; var s=p/4; }
+		else var s = p/(2*Math.PI) * Math.asin (c/a);
+		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
+	},
+	easeOutElastic: function (x, t, b, c, d) {
+		var s=1.70158;var p=0;var a=c;
+		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
+		if (a < Math.abs(c)) { a=c; var s=p/4; }
+		else var s = p/(2*Math.PI) * Math.asin (c/a);
+		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
+	},
+	easeInOutElastic: function (x, t, b, c, d) {
+		var s=1.70158;var p=0;var a=c;
+		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
+		if (a < Math.abs(c)) { a=c; var s=p/4; }
+		else var s = p/(2*Math.PI) * Math.asin (c/a);
+		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
+		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
+	},
+	easeInBack: function (x, t, b, c, d, s) {
+		if (s == undefined) s = 1.70158;
+		return c*(t/=d)*t*((s+1)*t - s) + b;
+	},
+	easeOutBack: function (x, t, b, c, d, s) {
+		if (s == undefined) s = 1.70158;
+		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
+	},
+	easeInOutBack: function (x, t, b, c, d, s) {
+		if (s == undefined) s = 1.70158;
+		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
+		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
+	},
+	easeInBounce: function (x, t, b, c, d) {
+		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
+	},
+	easeOutBounce: function (x, t, b, c, d) {
+		if ((t/=d) < (1/2.75)) {
+			return c*(7.5625*t*t) + b;
+		} else if (t < (2/2.75)) {
+			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
+		} else if (t < (2.5/2.75)) {
+			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
+		} else {
+			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
+		}
+	},
+	easeInOutBounce: function (x, t, b, c, d) {
+		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
+		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
+	}
+});
+
+/*
+ *
+ * TERMS OF USE - EASING EQUATIONS
+ *
+ * Open source under the BSD License.
+ *
+ * Copyright © 2001 Robert Penner
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * Neither the name of the author nor the names of contributors may be used to endorse
+ * or promote products derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */

+ 42 - 0
assets/js/plugins/jquery.fittext.js

@@ -0,0 +1,42 @@
+/*global jQuery */
+/*!
+* FitText.js 1.2
+*
+* Copyright 2011, Dave Rupert http://daverupert.com
+* Released under the WTFPL license
+* http://sam.zoy.org/wtfpl/
+*
+*/
+
+(function( $ ){
+
+  $.fn.fitText = function( kompressor, options ) {
+
+    // Setup options
+    var compressor = kompressor || 1,
+        settings = $.extend({
+          'minFontSize' : Number.NEGATIVE_INFINITY,
+          'maxFontSize' : Number.POSITIVE_INFINITY
+        }, options);
+
+    return this.each(function(){
+
+      // Store the object
+      var $this = $(this);
+
+      // Resizer() resizes items based on the object width divided by the compressor * 10
+      var resizer = function () {
+        $this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));
+      };
+
+      // Call once to set.
+      resizer();
+
+      // Call on resize. Opera debounces their resize by default.
+      $(window).on('resize.fittext orientationchange.fittext', resizer);
+
+    });
+
+  };
+
+})( jQuery );

+ 589 - 0
assets/js/plugins/jquery.slicknav.js

@@ -0,0 +1,589 @@
+/*!
+ * SlickNav Responsive Mobile Menu v1.0.10
+ * (c) 2016 Josh Cope
+ * licensed under MIT
+ */
+;(function ($, document, window) {
+	var
+	// default settings object.
+		defaults = {
+			label: 'MENU',
+			duplicate: true,
+			duration: 200,
+			easingOpen: 'swing',
+			easingClose: 'swing',
+			closedSymbol: '&#9658;',
+			openedSymbol: '&#9660;',
+			prependTo: 'body',
+			appendTo: '',
+			parentTag: 'a',
+			closeOnClick: false,
+			allowParentLinks: false,
+			nestedParentLinks: true,
+			showChildren: false,
+			removeIds: true,
+			removeClasses: false,
+			removeStyles: false,
+			brand: '',
+			animations: 'jquery',
+			init: function () {},
+			beforeOpen: function () {},
+			beforeClose: function () {},
+			afterOpen: function () {},
+			afterClose: function () {}
+		},
+		mobileMenu = 'slicknav',
+		prefix = 'slicknav',
+
+		Keyboard = {
+			DOWN: 40,
+			ENTER: 13,
+			ESCAPE: 27,
+			LEFT: 37,
+			RIGHT: 39,
+			SPACE: 32,
+			TAB: 9,
+			UP: 38,
+		};
+
+	function Plugin(element, options) {
+		this.element = element;
+
+		// jQuery has an extend method which merges the contents of two or
+		// more objects, storing the result in the first object. The first object
+		// is generally empty as we don't want to alter the default options for
+		// future instances of the plugin
+		this.settings = $.extend({}, defaults, options);
+
+		// Don't remove IDs by default if duplicate is false
+		if (!this.settings.duplicate && !options.hasOwnProperty("removeIds")) {
+		  this.settings.removeIds = false;
+		}
+
+		this._defaults = defaults;
+		this._name = mobileMenu;
+
+		this.init();
+	}
+
+	Plugin.prototype.init = function () {
+		var $this = this,
+			menu = $(this.element),
+			settings = this.settings,
+			iconClass,
+			menuBar;
+
+		// clone menu if needed
+		if (settings.duplicate) {
+			$this.mobileNav = menu.clone();
+		} else {
+			$this.mobileNav = menu;
+		}
+
+		// remove IDs if set
+		if (settings.removeIds) {
+		  $this.mobileNav.removeAttr('id');
+		  $this.mobileNav.find('*').each(function (i, e) {
+			  $(e).removeAttr('id');
+		  });
+		}
+
+		// remove classes if set
+		if (settings.removeClasses) {
+			$this.mobileNav.removeAttr('class');
+			$this.mobileNav.find('*').each(function (i, e) {
+				$(e).removeAttr('class');
+			});
+		}
+
+		// remove styles if set
+		if (settings.removeStyles) {
+			$this.mobileNav.removeAttr('style');
+			$this.mobileNav.find('*').each(function (i, e) {
+				$(e).removeAttr('style');
+			});
+		}
+
+		// styling class for the button
+		iconClass = prefix + '_icon';
+
+		if (settings.label === '') {
+			iconClass += ' ' + prefix + '_no-text';
+		}
+
+		if (settings.parentTag == 'a') {
+			settings.parentTag = 'a href="#"';
+		}
+
+		// create menu bar
+		$this.mobileNav.attr('class', prefix + '_nav');
+		menuBar = $('<div class="' + prefix + '_menu"></div>');
+		if (settings.brand !== '') {
+			var brand = $('<div class="' + prefix + '_brand">'+settings.brand+'</div>');
+			$(menuBar).append(brand);
+		}
+		$this.btn = $(
+			['<' + settings.parentTag + ' aria-haspopup="true" role="button" tabindex="0" class="' + prefix + '_btn ' + prefix + '_collapsed">',
+				'<span class="' + prefix + '_menutxt">' + settings.label + '</span>',
+				'<span class="' + iconClass + '">',
+					'<span class="' + prefix + '_icon-bar"></span>',
+					'<span class="' + prefix + '_icon-bar"></span>',
+					'<span class="' + prefix + '_icon-bar"></span>',
+				'</span>',
+			'</' + settings.parentTag + '>'
+			].join('')
+		);
+		$(menuBar).append($this.btn);
+		if(settings.appendTo !== '') {
+			$(settings.appendTo).append(menuBar);
+		} else {
+			$(settings.prependTo).prepend(menuBar);
+		}
+		menuBar.append($this.mobileNav);
+
+		// iterate over structure adding additional structure
+		var items = $this.mobileNav.find('li');
+		$(items).each(function () {
+			var item = $(this),
+				data = {};
+			data.children = item.children('ul').attr('role', 'menu');
+			item.data('menu', data);
+
+			// if a list item has a nested menu
+			if (data.children.length > 0) {
+
+				// select all text before the child menu
+				// check for anchors
+
+				var a = item.contents(),
+					containsAnchor = false,
+					nodes = [];
+
+				$(a).each(function () {
+					if (!$(this).is('ul')) {
+						nodes.push(this);
+					} else {
+						return false;
+					}
+
+					if($(this).is("a")) {
+						containsAnchor = true;
+					}
+				});
+
+				var wrapElement = $(
+					'<' + settings.parentTag + ' role="menuitem" aria-haspopup="true" tabindex="-1" class="' + prefix + '_item"/>'
+				);
+
+				// wrap item text with tag and add classes unless we are separating parent links
+				if ((!settings.allowParentLinks || settings.nestedParentLinks) || !containsAnchor) {
+					var $wrap = $(nodes).wrapAll(wrapElement).parent();
+					$wrap.addClass(prefix+'_row');
+				} else
+					$(nodes).wrapAll('<span class="'+prefix+'_parent-link '+prefix+'_row"/>').parent();
+
+				if (!settings.showChildren) {
+					item.addClass(prefix+'_collapsed');
+				} else {
+					item.addClass(prefix+'_open');
+				}
+
+				item.addClass(prefix+'_parent');
+
+				// create parent arrow. wrap with link if parent links and separating
+				var arrowElement = $('<span class="'+prefix+'_arrow">'+(settings.showChildren?settings.openedSymbol:settings.closedSymbol)+'</span>');
+
+				if (settings.allowParentLinks && !settings.nestedParentLinks && containsAnchor)
+					arrowElement = arrowElement.wrap(wrapElement).parent();
+
+				//append arrow
+				$(nodes).last().after(arrowElement);
+
+
+			} else if ( item.children().length === 0) {
+				 item.addClass(prefix+'_txtnode');
+			}
+
+			// accessibility for links
+			item.children('a').attr('role', 'menuitem').click(function(event){
+				//Ensure that it's not a parent
+				if (settings.closeOnClick && !$(event.target).parent().closest('li').hasClass(prefix+'_parent')) {
+						//Emulate menu close if set
+						$($this.btn).click();
+					}
+			});
+
+			//also close on click if parent links are set
+			if (settings.closeOnClick && settings.allowParentLinks) {
+				item.children('a').children('a').click(function (event) {
+					//Emulate menu close
+					$($this.btn).click();
+				});
+
+				item.find('.'+prefix+'_parent-link a:not(.'+prefix+'_item)').click(function(event){
+					//Emulate menu close
+						$($this.btn).click();
+				});
+			}
+		});
+
+		// structure is in place, now hide appropriate items
+		$(items).each(function () {
+			var data = $(this).data('menu');
+			if (!settings.showChildren){
+				$this._visibilityToggle(data.children, null, false, null, true);
+			}
+		});
+
+		// finally toggle entire menu
+		$this._visibilityToggle($this.mobileNav, null, false, 'init', true);
+
+		// accessibility for menu button
+		$this.mobileNav.attr('role','menu');
+
+		// outline prevention when using mouse
+		$(document).mousedown(function(){
+			$this._outlines(false);
+		});
+
+		$(document).keyup(function(){
+			$this._outlines(true);
+		});
+
+		// menu button click
+		$($this.btn).click(function (e) {
+			e.preventDefault();
+			$this._menuToggle();
+		});
+
+		// click on menu parent
+		$this.mobileNav.on('click', '.' + prefix + '_item', function (e) {
+			e.preventDefault();
+			$this._itemClick($(this));
+		});
+
+		// check for keyboard events on menu button and menu parents
+		$($this.btn).keydown(function (e) {
+			var ev = e || event;
+
+			switch(ev.keyCode) {
+				case Keyboard.ENTER:
+				case Keyboard.SPACE:
+				case Keyboard.DOWN:
+					e.preventDefault();
+					if (ev.keyCode !== Keyboard.DOWN || !$($this.btn).hasClass(prefix+'_open')){
+						$this._menuToggle();
+					}
+
+					$($this.btn).next().find('[role="menuitem"]').first().focus();
+					break;
+			}
+
+
+		});
+
+		$this.mobileNav.on('keydown', '.'+prefix+'_item', function(e) {
+			var ev = e || event;
+
+			switch(ev.keyCode) {
+				case Keyboard.ENTER:
+					e.preventDefault();
+					$this._itemClick($(e.target));
+					break;
+				case Keyboard.RIGHT:
+					e.preventDefault();
+					if ($(e.target).parent().hasClass(prefix+'_collapsed')) {
+						$this._itemClick($(e.target));
+					}
+					$(e.target).next().find('[role="menuitem"]').first().focus();
+					break;
+			}
+		});
+
+		$this.mobileNav.on('keydown', '[role="menuitem"]', function(e) {
+			var ev = e || event;
+
+			switch(ev.keyCode){
+				case Keyboard.DOWN:
+					e.preventDefault();
+					var allItems = $(e.target).parent().parent().children().children('[role="menuitem"]:visible');
+					var idx = allItems.index( e.target );
+					var nextIdx = idx + 1;
+					if (allItems.length <= nextIdx) {
+						nextIdx = 0;
+					}
+					var next = allItems.eq( nextIdx );
+					next.focus();
+				break;
+				case Keyboard.UP:
+					e.preventDefault();
+					var allItems = $(e.target).parent().parent().children().children('[role="menuitem"]:visible');
+					var idx = allItems.index( e.target );
+					var next = allItems.eq( idx - 1 );
+					next.focus();
+				break;
+				case Keyboard.LEFT:
+					e.preventDefault();
+					if ($(e.target).parent().parent().parent().hasClass(prefix+'_open')) {
+						var parent = $(e.target).parent().parent().prev();
+						parent.focus();
+						$this._itemClick(parent);
+					} else if ($(e.target).parent().parent().hasClass(prefix+'_nav')){
+						$this._menuToggle();
+						$($this.btn).focus();
+					}
+					break;
+				case Keyboard.ESCAPE:
+					e.preventDefault();
+					$this._menuToggle();
+					$($this.btn).focus();
+					break;
+			}
+		});
+
+		// allow links clickable within parent tags if set
+		if (settings.allowParentLinks && settings.nestedParentLinks) {
+			$('.'+prefix+'_item a').click(function(e){
+					e.stopImmediatePropagation();
+			});
+		}
+	};
+
+	//toggle menu
+	Plugin.prototype._menuToggle = function (el) {
+		var $this = this;
+		var btn = $this.btn;
+		var mobileNav = $this.mobileNav;
+
+		if (btn.hasClass(prefix+'_collapsed')) {
+			btn.removeClass(prefix+'_collapsed');
+			btn.addClass(prefix+'_open');
+		} else {
+			btn.removeClass(prefix+'_open');
+			btn.addClass(prefix+'_collapsed');
+		}
+		btn.addClass(prefix+'_animating');
+		$this._visibilityToggle(mobileNav, btn.parent(), true, btn);
+	};
+
+	// toggle clicked items
+	Plugin.prototype._itemClick = function (el) {
+		var $this = this;
+		var settings = $this.settings;
+		var data = el.data('menu');
+		if (!data) {
+			data = {};
+			data.arrow = el.children('.'+prefix+'_arrow');
+			data.ul = el.next('ul');
+			data.parent = el.parent();
+			//Separated parent link structure
+			if (data.parent.hasClass(prefix+'_parent-link')) {
+				data.parent = el.parent().parent();
+				data.ul = el.parent().next('ul');
+			}
+			el.data('menu', data);
+		}
+		if (data.parent.hasClass(prefix+'_collapsed')) {
+			data.arrow.html(settings.openedSymbol);
+			data.parent.removeClass(prefix+'_collapsed');
+			data.parent.addClass(prefix+'_open');
+			data.parent.addClass(prefix+'_animating');
+			$this._visibilityToggle(data.ul, data.parent, true, el);
+		} else {
+			data.arrow.html(settings.closedSymbol);
+			data.parent.addClass(prefix+'_collapsed');
+			data.parent.removeClass(prefix+'_open');
+			data.parent.addClass(prefix+'_animating');
+			$this._visibilityToggle(data.ul, data.parent, true, el);
+		}
+	};
+
+	// toggle actual visibility and accessibility tags
+	Plugin.prototype._visibilityToggle = function(el, parent, animate, trigger, init) {
+		var $this = this;
+		var settings = $this.settings;
+		var items = $this._getActionItems(el);
+		var duration = 0;
+		if (animate) {
+			duration = settings.duration;
+		}
+
+		function afterOpen(trigger, parent) {
+			$(trigger).removeClass(prefix+'_animating');
+			$(parent).removeClass(prefix+'_animating');
+
+			//Fire afterOpen callback
+			if (!init) {
+				settings.afterOpen(trigger);
+			}
+		}
+
+		function afterClose(trigger, parent) {
+			el.attr('aria-hidden','true');
+			items.attr('tabindex', '-1');
+			$this._setVisAttr(el, true);
+			el.hide(); //jQuery 1.7 bug fix
+
+			$(trigger).removeClass(prefix+'_animating');
+			$(parent).removeClass(prefix+'_animating');
+
+			//Fire init or afterClose callback
+			if (!init){
+				settings.afterClose(trigger);
+			} else if (trigger == 'init'){
+				settings.init();
+			}
+		}
+
+		if (el.hasClass(prefix+'_hidden')) {
+			el.removeClass(prefix+'_hidden');
+			 //Fire beforeOpen callback
+			if (!init) {
+				settings.beforeOpen(trigger);
+			}
+			if (settings.animations === 'jquery') {
+				el.stop(true,true).slideDown(duration, settings.easingOpen, function(){
+					afterOpen(trigger, parent);
+				});
+			} else if(settings.animations === 'velocity') {
+				el.velocity("finish").velocity("slideDown", {
+					duration: duration,
+					easing: settings.easingOpen,
+					complete: function() {
+						afterOpen(trigger, parent);
+					}
+				});
+			}
+			el.attr('aria-hidden','false');
+			items.attr('tabindex', '0');
+			$this._setVisAttr(el, false);
+		} else {
+			el.addClass(prefix+'_hidden');
+
+			//Fire init or beforeClose callback
+			if (!init){
+				settings.beforeClose(trigger);
+			}
+
+			if (settings.animations === 'jquery') {
+				el.stop(true,true).slideUp(duration, this.settings.easingClose, function() {
+					afterClose(trigger, parent)
+				});
+			} else if (settings.animations === 'velocity') {
+
+				el.velocity("finish").velocity("slideUp", {
+					duration: duration,
+					easing: settings.easingClose,
+					complete: function() {
+						afterClose(trigger, parent);
+					}
+				});
+			}
+		}
+	};
+
+	// set attributes of element and children based on visibility
+	Plugin.prototype._setVisAttr = function(el, hidden) {
+		var $this = this;
+
+		// select all parents that aren't hidden
+		var nonHidden = el.children('li').children('ul').not('.'+prefix+'_hidden');
+
+		// iterate over all items setting appropriate tags
+		if (!hidden) {
+			nonHidden.each(function(){
+				var ul = $(this);
+				ul.attr('aria-hidden','false');
+				var items = $this._getActionItems(ul);
+				items.attr('tabindex', '0');
+				$this._setVisAttr(ul, hidden);
+			});
+		} else {
+			nonHidden.each(function(){
+				var ul = $(this);
+				ul.attr('aria-hidden','true');
+				var items = $this._getActionItems(ul);
+				items.attr('tabindex', '-1');
+				$this._setVisAttr(ul, hidden);
+			});
+		}
+	};
+
+	// get all 1st level items that are clickable
+	Plugin.prototype._getActionItems = function(el) {
+		var data = el.data("menu");
+		if (!data) {
+			data = {};
+			var items = el.children('li');
+			var anchors = items.find('a');
+			data.links = anchors.add(items.find('.'+prefix+'_item'));
+			el.data('menu', data);
+		}
+		return data.links;
+	};
+
+	Plugin.prototype._outlines = function(state) {
+		if (!state) {
+			$('.'+prefix+'_item, .'+prefix+'_btn').css('outline','none');
+		} else {
+			$('.'+prefix+'_item, .'+prefix+'_btn').css('outline','');
+		}
+	};
+
+	Plugin.prototype.toggle = function(){
+		var $this = this;
+		$this._menuToggle();
+	};
+
+	Plugin.prototype.open = function(){
+		var $this = this;
+		if ($this.btn.hasClass(prefix+'_collapsed')) {
+			$this._menuToggle();
+		}
+	};
+
+	Plugin.prototype.close = function(){
+		var $this = this;
+		if ($this.btn.hasClass(prefix+'_open')) {
+			$this._menuToggle();
+		}
+	};
+
+	$.fn[mobileMenu] = function ( options ) {
+		var args = arguments;
+
+		// Is the first parameter an object (options), or was omitted, instantiate a new instance
+		if (options === undefined || typeof options === 'object') {
+			return this.each(function () {
+
+				// Only allow the plugin to be instantiated once due to methods
+				if (!$.data(this, 'plugin_' + mobileMenu)) {
+
+					// if it has no instance, create a new one, pass options to our plugin constructor,
+					// and store the plugin instance in the elements jQuery data object.
+					$.data(this, 'plugin_' + mobileMenu, new Plugin( this, options ));
+				}
+			});
+
+		// If is a string and doesn't start with an underscore or 'init' function, treat this as a call to a public method.
+		} else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
+
+			// Cache the method call to make it possible to return a value
+			var returns;
+
+			this.each(function () {
+				var instance = $.data(this, 'plugin_' + mobileMenu);
+
+				// Tests that there's already a plugin-instance and checks that the requested public method exists
+				if (instance instanceof Plugin && typeof instance[options] === 'function') {
+
+					// Call the method of our plugin instance, and pass it the supplied arguments.
+					returns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );
+				}
+			});
+
+			// If the earlier cached method gives a value back return the value, otherwise return this to preserve chainability.
+			return returns !== undefined ? returns : this;
+		}
+	};
+}(jQuery, document, window));

+ 276 - 0
assets/js/plugins/jquery.superfish.js

@@ -0,0 +1,276 @@
+/*
+ * jQuery Superfish Menu Plugin - v1.7.9
+ * Copyright (c) 2016 Joel Birch
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *	http://www.opensource.org/licenses/mit-license.php
+ *	http://www.gnu.org/licenses/gpl.html
+ */
+
+;(function ($, w) {
+	"use strict";
+
+	var methods = (function () {
+		// private properties and methods go here
+		var c = {
+				bcClass: 'sf-breadcrumb',
+				menuClass: 'sf-js-enabled',
+				anchorClass: 'sf-with-ul',
+				menuArrowClass: 'sf-arrows'
+			},
+			ios = (function () {
+				var ios = /^(?![\w\W]*Windows Phone)[\w\W]*(iPhone|iPad|iPod)/i.test(navigator.userAgent);
+				if (ios) {
+					// tap anywhere on iOS to unfocus a submenu
+					$('html').css('cursor', 'pointer').on('click', $.noop);
+				}
+				return ios;
+			})(),
+			wp7 = (function () {
+				var style = document.documentElement.style;
+				return ('behavior' in style && 'fill' in style && /iemobile/i.test(navigator.userAgent));
+			})(),
+			unprefixedPointerEvents = (function () {
+				return (!!w.PointerEvent);
+			})(),
+			toggleMenuClasses = function ($menu, o, add) {
+				var classes = c.menuClass,
+					method;
+				if (o.cssArrows) {
+					classes += ' ' + c.menuArrowClass;
+				}
+				method = (add) ? 'addClass' : 'removeClass';
+				$menu[method](classes);
+			},
+			setPathToCurrent = function ($menu, o) {
+				return $menu.find('li.' + o.pathClass).slice(0, o.pathLevels)
+					.addClass(o.hoverClass + ' ' + c.bcClass)
+						.filter(function () {
+							return ($(this).children(o.popUpSelector).hide().show().length);
+						}).removeClass(o.pathClass);
+			},
+			toggleAnchorClass = function ($li, add) {
+				var method = (add) ? 'addClass' : 'removeClass';
+				$li.children('a')[method](c.anchorClass);
+			},
+			toggleTouchAction = function ($menu) {
+				var msTouchAction = $menu.css('ms-touch-action');
+				var touchAction = $menu.css('touch-action');
+				touchAction = touchAction || msTouchAction;
+				touchAction = (touchAction === 'pan-y') ? 'auto' : 'pan-y';
+				$menu.css({
+					'ms-touch-action': touchAction,
+					'touch-action': touchAction
+				});
+			},
+			getMenu = function ($el) {
+				return $el.closest('.' + c.menuClass);
+			},
+			getOptions = function ($el) {
+				return getMenu($el).data('sfOptions');
+			},
+			over = function () {
+				var $this = $(this),
+					o = getOptions($this);
+				clearTimeout(o.sfTimer);
+				$this.siblings().superfish('hide').end().superfish('show');
+			},
+			close = function (o) {
+				o.retainPath = ($.inArray(this[0], o.$path) > -1);
+				this.superfish('hide');
+
+				if (!this.parents('.' + o.hoverClass).length) {
+					o.onIdle.call(getMenu(this));
+					if (o.$path.length) {
+						$.proxy(over, o.$path)();
+					}
+				}
+			},
+			out = function () {
+				var $this = $(this),
+					o = getOptions($this);
+				if (ios) {
+					$.proxy(close, $this, o)();
+				}
+				else {
+					clearTimeout(o.sfTimer);
+					o.sfTimer = setTimeout($.proxy(close, $this, o), o.delay);
+				}
+			},
+			touchHandler = function (e) {
+				var $this = $(this),
+					o = getOptions($this),
+					$ul = $this.siblings(e.data.popUpSelector);
+
+				if (o.onHandleTouch.call($ul) === false) {
+					return this;
+				}
+
+				if ($ul.length > 0 && $ul.is(':hidden')) {
+					$this.one('click.superfish', false);
+					if (e.type === 'MSPointerDown' || e.type === 'pointerdown') {
+						$this.trigger('focus');
+					} else {
+						$.proxy(over, $this.parent('li'))();
+					}
+				}
+			},
+			applyHandlers = function ($menu, o) {
+				var targets = 'li:has(' + o.popUpSelector + ')';
+				if ($.fn.hoverIntent && !o.disableHI) {
+					$menu.hoverIntent(over, out, targets);
+				}
+				else {
+					$menu
+						.on('mouseenter.superfish', targets, over)
+						.on('mouseleave.superfish', targets, out);
+				}
+				var touchevent = 'MSPointerDown.superfish';
+				if (unprefixedPointerEvents) {
+					touchevent = 'pointerdown.superfish';
+				}
+				if (!ios) {
+					touchevent += ' touchend.superfish';
+				}
+				if (wp7) {
+					touchevent += ' mousedown.superfish';
+				}
+				$menu
+					.on('focusin.superfish', 'li', over)
+					.on('focusout.superfish', 'li', out)
+					.on(touchevent, 'a', o, touchHandler);
+			};
+
+		return {
+			// public methods
+			hide: function (instant) {
+				if (this.length) {
+					var $this = this,
+						o = getOptions($this);
+					if (!o) {
+						return this;
+					}
+					var not = (o.retainPath === true) ? o.$path : '',
+						$ul = $this.find('li.' + o.hoverClass).add(this).not(not).removeClass(o.hoverClass).children(o.popUpSelector),
+						speed = o.speedOut;
+
+					if (instant) {
+						$ul.show();
+						speed = 0;
+					}
+					o.retainPath = false;
+
+					if (o.onBeforeHide.call($ul) === false) {
+						return this;
+					}
+
+					$ul.stop(true, true).animate(o.animationOut, speed, function () {
+						var $this = $(this);
+						o.onHide.call($this);
+					});
+				}
+				return this;
+			},
+			show: function () {
+				var o = getOptions(this);
+				if (!o) {
+					return this;
+				}
+				var $this = this.addClass(o.hoverClass),
+					$ul = $this.children(o.popUpSelector);
+
+				if (o.onBeforeShow.call($ul) === false) {
+					return this;
+				}
+
+				$ul.stop(true, true).animate(o.animation, o.speed, function () {
+					o.onShow.call($ul);
+				});
+				return this;
+			},
+			destroy: function () {
+				return this.each(function () {
+					var $this = $(this),
+						o = $this.data('sfOptions'),
+						$hasPopUp;
+					if (!o) {
+						return false;
+					}
+					$hasPopUp = $this.find(o.popUpSelector).parent('li');
+					clearTimeout(o.sfTimer);
+					toggleMenuClasses($this, o);
+					toggleAnchorClass($hasPopUp);
+					toggleTouchAction($this);
+					// remove event handlers
+					$this.off('.superfish').off('.hoverIntent');
+					// clear animation's inline display style
+					$hasPopUp.children(o.popUpSelector).attr('style', function (i, style) {
+						return style.replace(/display[^;]+;?/g, '');
+					});
+					// reset 'current' path classes
+					o.$path.removeClass(o.hoverClass + ' ' + c.bcClass).addClass(o.pathClass);
+					$this.find('.' + o.hoverClass).removeClass(o.hoverClass);
+					o.onDestroy.call($this);
+					$this.removeData('sfOptions');
+				});
+			},
+			init: function (op) {
+				return this.each(function () {
+					var $this = $(this);
+					if ($this.data('sfOptions')) {
+						return false;
+					}
+					var o = $.extend({}, $.fn.superfish.defaults, op),
+						$hasPopUp = $this.find(o.popUpSelector).parent('li');
+					o.$path = setPathToCurrent($this, o);
+
+					$this.data('sfOptions', o);
+
+					toggleMenuClasses($this, o, true);
+					toggleAnchorClass($hasPopUp, true);
+					toggleTouchAction($this);
+					applyHandlers($this, o);
+
+					$hasPopUp.not('.' + c.bcClass).superfish('hide', true);
+
+					o.onInit.call(this);
+				});
+			}
+		};
+	})();
+
+	$.fn.superfish = function (method, args) {
+		if (methods[method]) {
+			return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+		}
+		else if (typeof method === 'object' || ! method) {
+			return methods.init.apply(this, arguments);
+		}
+		else {
+			return $.error('Method ' +  method + ' does not exist on jQuery.fn.superfish');
+		}
+	};
+
+	$.fn.superfish.defaults = {
+		popUpSelector: 'ul,.sf-mega', // within menu context
+		hoverClass: 'sfHover',
+		pathClass: 'overrideThisToUse',
+		pathLevels: 1,
+		delay: 800,
+		animation: {opacity: 'show'},
+		animationOut: {opacity: 'hide'},
+		speed: 'normal',
+		speedOut: 'fast',
+		cssArrows: true,
+		disableHI: false,
+		onInit: $.noop,
+		onBeforeShow: $.noop,
+		onShow: $.noop,
+		onBeforeHide: $.noop,
+		onHide: $.noop,
+		onIdle: $.noop,
+		onDestroy: $.noop,
+		onHandleTouch: $.noop
+	};
+
+})(jQuery, window);

+ 662 - 0
assets/js/plugins/jquery.waypoints.js

@@ -0,0 +1,662 @@
+/*!
+Waypoints - 4.0.1
+Copyright © 2011-2016 Caleb Troughton
+Licensed under the MIT license.
+https://github.com/imakewebthings/waypoints/blob/master/licenses.txt
+*/
+(function() {
+  'use strict'
+
+  var keyCounter = 0
+  var allWaypoints = {}
+
+  /* http://imakewebthings.com/waypoints/api/waypoint */
+  function Waypoint(options) {
+    if (!options) {
+      throw new Error('No options passed to Waypoint constructor')
+    }
+    if (!options.element) {
+      throw new Error('No element option passed to Waypoint constructor')
+    }
+    if (!options.handler) {
+      throw new Error('No handler option passed to Waypoint constructor')
+    }
+
+    this.key = 'waypoint-' + keyCounter
+    this.options = Waypoint.Adapter.extend({}, Waypoint.defaults, options)
+    this.element = this.options.element
+    this.adapter = new Waypoint.Adapter(this.element)
+    this.callback = options.handler
+    this.axis = this.options.horizontal ? 'horizontal' : 'vertical'
+    this.enabled = this.options.enabled
+    this.triggerPoint = null
+    this.group = Waypoint.Group.findOrCreate({
+      name: this.options.group,
+      axis: this.axis
+    })
+    this.context = Waypoint.Context.findOrCreateByElement(this.options.context)
+
+    if (Waypoint.offsetAliases[this.options.offset]) {
+      this.options.offset = Waypoint.offsetAliases[this.options.offset]
+    }
+    this.group.add(this)
+    this.context.add(this)
+    allWaypoints[this.key] = this
+    keyCounter += 1
+  }
+
+  /* Private */
+  Waypoint.prototype.queueTrigger = function(direction) {
+    this.group.queueTrigger(this, direction)
+  }
+
+  /* Private */
+  Waypoint.prototype.trigger = function(args) {
+    if (!this.enabled) {
+      return
+    }
+    if (this.callback) {
+      this.callback.apply(this, args)
+    }
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/destroy */
+  Waypoint.prototype.destroy = function() {
+    this.context.remove(this)
+    this.group.remove(this)
+    delete allWaypoints[this.key]
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/disable */
+  Waypoint.prototype.disable = function() {
+    this.enabled = false
+    return this
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/enable */
+  Waypoint.prototype.enable = function() {
+    this.context.refresh()
+    this.enabled = true
+    return this
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/next */
+  Waypoint.prototype.next = function() {
+    return this.group.next(this)
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/previous */
+  Waypoint.prototype.previous = function() {
+    return this.group.previous(this)
+  }
+
+  /* Private */
+  Waypoint.invokeAll = function(method) {
+    var allWaypointsArray = []
+    for (var waypointKey in allWaypoints) {
+      allWaypointsArray.push(allWaypoints[waypointKey])
+    }
+    for (var i = 0, end = allWaypointsArray.length; i < end; i++) {
+      allWaypointsArray[i][method]()
+    }
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/destroy-all */
+  Waypoint.destroyAll = function() {
+    Waypoint.invokeAll('destroy')
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/disable-all */
+  Waypoint.disableAll = function() {
+    Waypoint.invokeAll('disable')
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/enable-all */
+  Waypoint.enableAll = function() {
+    Waypoint.Context.refreshAll()
+    for (var waypointKey in allWaypoints) {
+      allWaypoints[waypointKey].enabled = true
+    }
+    return this
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/refresh-all */
+  Waypoint.refreshAll = function() {
+    Waypoint.Context.refreshAll()
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/viewport-height */
+  Waypoint.viewportHeight = function() {
+    return window.innerHeight || document.documentElement.clientHeight
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/viewport-width */
+  Waypoint.viewportWidth = function() {
+    return document.documentElement.clientWidth
+  }
+
+  Waypoint.adapters = []
+
+  Waypoint.defaults = {
+    context: window,
+    continuous: true,
+    enabled: true,
+    group: 'default',
+    horizontal: false,
+    offset: 0
+  }
+
+  Waypoint.offsetAliases = {
+    'bottom-in-view': function() {
+      return this.context.innerHeight() - this.adapter.outerHeight()
+    },
+    'right-in-view': function() {
+      return this.context.innerWidth() - this.adapter.outerWidth()
+    }
+  }
+
+  window.Waypoint = Waypoint
+}())
+;(function() {
+  'use strict'
+
+  function requestAnimationFrameShim(callback) {
+    window.setTimeout(callback, 1000 / 60)
+  }
+
+  var keyCounter = 0
+  var contexts = {}
+  var Waypoint = window.Waypoint
+  var oldWindowLoad = window.onload
+
+  /* http://imakewebthings.com/waypoints/api/context */
+  function Context(element) {
+    this.element = element
+    this.Adapter = Waypoint.Adapter
+    this.adapter = new this.Adapter(element)
+    this.key = 'waypoint-context-' + keyCounter
+    this.didScroll = false
+    this.didResize = false
+    this.oldScroll = {
+      x: this.adapter.scrollLeft(),
+      y: this.adapter.scrollTop()
+    }
+    this.waypoints = {
+      vertical: {},
+      horizontal: {}
+    }
+
+    element.waypointContextKey = this.key
+    contexts[element.waypointContextKey] = this
+    keyCounter += 1
+    if (!Waypoint.windowContext) {
+      Waypoint.windowContext = true
+      Waypoint.windowContext = new Context(window)
+    }
+
+    this.createThrottledScrollHandler()
+    this.createThrottledResizeHandler()
+  }
+
+  /* Private */
+  Context.prototype.add = function(waypoint) {
+    var axis = waypoint.options.horizontal ? 'horizontal' : 'vertical'
+    this.waypoints[axis][waypoint.key] = waypoint
+    this.refresh()
+  }
+
+  /* Private */
+  Context.prototype.checkEmpty = function() {
+    var horizontalEmpty = this.Adapter.isEmptyObject(this.waypoints.horizontal)
+    var verticalEmpty = this.Adapter.isEmptyObject(this.waypoints.vertical)
+    var isWindow = this.element == this.element.window
+    if (horizontalEmpty && verticalEmpty && !isWindow) {
+      this.adapter.off('.waypoints')
+      delete contexts[this.key]
+    }
+  }
+
+  /* Private */
+  Context.prototype.createThrottledResizeHandler = function() {
+    var self = this
+
+    function resizeHandler() {
+      self.handleResize()
+      self.didResize = false
+    }
+
+    this.adapter.on('resize.waypoints', function() {
+      if (!self.didResize) {
+        self.didResize = true
+        Waypoint.requestAnimationFrame(resizeHandler)
+      }
+    })
+  }
+
+  /* Private */
+  Context.prototype.createThrottledScrollHandler = function() {
+    var self = this
+    function scrollHandler() {
+      self.handleScroll()
+      self.didScroll = false
+    }
+
+    this.adapter.on('scroll.waypoints', function() {
+      if (!self.didScroll || Waypoint.isTouch) {
+        self.didScroll = true
+        Waypoint.requestAnimationFrame(scrollHandler)
+      }
+    })
+  }
+
+  /* Private */
+  Context.prototype.handleResize = function() {
+    Waypoint.Context.refreshAll()
+  }
+
+  /* Private */
+  Context.prototype.handleScroll = function() {
+    var triggeredGroups = {}
+    var axes = {
+      horizontal: {
+        newScroll: this.adapter.scrollLeft(),
+        oldScroll: this.oldScroll.x,
+        forward: 'right',
+        backward: 'left'
+      },
+      vertical: {
+        newScroll: this.adapter.scrollTop(),
+        oldScroll: this.oldScroll.y,
+        forward: 'down',
+        backward: 'up'
+      }
+    }
+
+    for (var axisKey in axes) {
+      var axis = axes[axisKey]
+      var isForward = axis.newScroll > axis.oldScroll
+      var direction = isForward ? axis.forward : axis.backward
+
+      for (var waypointKey in this.waypoints[axisKey]) {
+        var waypoint = this.waypoints[axisKey][waypointKey]
+        if (waypoint.triggerPoint === null) {
+          continue
+        }
+        var wasBeforeTriggerPoint = axis.oldScroll < waypoint.triggerPoint
+        var nowAfterTriggerPoint = axis.newScroll >= waypoint.triggerPoint
+        var crossedForward = wasBeforeTriggerPoint && nowAfterTriggerPoint
+        var crossedBackward = !wasBeforeTriggerPoint && !nowAfterTriggerPoint
+        if (crossedForward || crossedBackward) {
+          waypoint.queueTrigger(direction)
+          triggeredGroups[waypoint.group.id] = waypoint.group
+        }
+      }
+    }
+
+    for (var groupKey in triggeredGroups) {
+      triggeredGroups[groupKey].flushTriggers()
+    }
+
+    this.oldScroll = {
+      x: axes.horizontal.newScroll,
+      y: axes.vertical.newScroll
+    }
+  }
+
+  /* Private */
+  Context.prototype.innerHeight = function() {
+    /*eslint-disable eqeqeq */
+    if (this.element == this.element.window) {
+      return Waypoint.viewportHeight()
+    }
+    /*eslint-enable eqeqeq */
+    return this.adapter.innerHeight()
+  }
+
+  /* Private */
+  Context.prototype.remove = function(waypoint) {
+    delete this.waypoints[waypoint.axis][waypoint.key]
+    this.checkEmpty()
+  }
+
+  /* Private */
+  Context.prototype.innerWidth = function() {
+    /*eslint-disable eqeqeq */
+    if (this.element == this.element.window) {
+      return Waypoint.viewportWidth()
+    }
+    /*eslint-enable eqeqeq */
+    return this.adapter.innerWidth()
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/context-destroy */
+  Context.prototype.destroy = function() {
+    var allWaypoints = []
+    for (var axis in this.waypoints) {
+      for (var waypointKey in this.waypoints[axis]) {
+        allWaypoints.push(this.waypoints[axis][waypointKey])
+      }
+    }
+    for (var i = 0, end = allWaypoints.length; i < end; i++) {
+      allWaypoints[i].destroy()
+    }
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/context-refresh */
+  Context.prototype.refresh = function() {
+    /*eslint-disable eqeqeq */
+    var isWindow = this.element == this.element.window
+    /*eslint-enable eqeqeq */
+    var contextOffset = isWindow ? undefined : this.adapter.offset()
+    var triggeredGroups = {}
+    var axes
+
+    this.handleScroll()
+    axes = {
+      horizontal: {
+        contextOffset: isWindow ? 0 : contextOffset.left,
+        contextScroll: isWindow ? 0 : this.oldScroll.x,
+        contextDimension: this.innerWidth(),
+        oldScroll: this.oldScroll.x,
+        forward: 'right',
+        backward: 'left',
+        offsetProp: 'left'
+      },
+      vertical: {
+        contextOffset: isWindow ? 0 : contextOffset.top,
+        contextScroll: isWindow ? 0 : this.oldScroll.y,
+        contextDimension: this.innerHeight(),
+        oldScroll: this.oldScroll.y,
+        forward: 'down',
+        backward: 'up',
+        offsetProp: 'top'
+      }
+    }
+
+    for (var axisKey in axes) {
+      var axis = axes[axisKey]
+      for (var waypointKey in this.waypoints[axisKey]) {
+        var waypoint = this.waypoints[axisKey][waypointKey]
+        var adjustment = waypoint.options.offset
+        var oldTriggerPoint = waypoint.triggerPoint
+        var elementOffset = 0
+        var freshWaypoint = oldTriggerPoint == null
+        var contextModifier, wasBeforeScroll, nowAfterScroll
+        var triggeredBackward, triggeredForward
+
+        if (waypoint.element !== waypoint.element.window) {
+          elementOffset = waypoint.adapter.offset()[axis.offsetProp]
+        }
+
+        if (typeof adjustment === 'function') {
+          adjustment = adjustment.apply(waypoint)
+        }
+        else if (typeof adjustment === 'string') {
+          adjustment = parseFloat(adjustment)
+          if (waypoint.options.offset.indexOf('%') > - 1) {
+            adjustment = Math.ceil(axis.contextDimension * adjustment / 100)
+          }
+        }
+
+        contextModifier = axis.contextScroll - axis.contextOffset
+        waypoint.triggerPoint = Math.floor(elementOffset + contextModifier - adjustment)
+        wasBeforeScroll = oldTriggerPoint < axis.oldScroll
+        nowAfterScroll = waypoint.triggerPoint >= axis.oldScroll
+        triggeredBackward = wasBeforeScroll && nowAfterScroll
+        triggeredForward = !wasBeforeScroll && !nowAfterScroll
+
+        if (!freshWaypoint && triggeredBackward) {
+          waypoint.queueTrigger(axis.backward)
+          triggeredGroups[waypoint.group.id] = waypoint.group
+        }
+        else if (!freshWaypoint && triggeredForward) {
+          waypoint.queueTrigger(axis.forward)
+          triggeredGroups[waypoint.group.id] = waypoint.group
+        }
+        else if (freshWaypoint && axis.oldScroll >= waypoint.triggerPoint) {
+          waypoint.queueTrigger(axis.forward)
+          triggeredGroups[waypoint.group.id] = waypoint.group
+        }
+      }
+    }
+
+    Waypoint.requestAnimationFrame(function() {
+      for (var groupKey in triggeredGroups) {
+        triggeredGroups[groupKey].flushTriggers()
+      }
+    })
+
+    return this
+  }
+
+  /* Private */
+  Context.findOrCreateByElement = function(element) {
+    return Context.findByElement(element) || new Context(element)
+  }
+
+  /* Private */
+  Context.refreshAll = function() {
+    for (var contextId in contexts) {
+      contexts[contextId].refresh()
+    }
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/context-find-by-element */
+  Context.findByElement = function(element) {
+    return contexts[element.waypointContextKey]
+  }
+
+  window.onload = function() {
+    if (oldWindowLoad) {
+      oldWindowLoad()
+    }
+    Context.refreshAll()
+  }
+
+
+  Waypoint.requestAnimationFrame = function(callback) {
+    var requestFn = window.requestAnimationFrame ||
+      window.mozRequestAnimationFrame ||
+      window.webkitRequestAnimationFrame ||
+      requestAnimationFrameShim
+    requestFn.call(window, callback)
+  }
+  Waypoint.Context = Context
+}())
+;(function() {
+  'use strict'
+
+  function byTriggerPoint(a, b) {
+    return a.triggerPoint - b.triggerPoint
+  }
+
+  function byReverseTriggerPoint(a, b) {
+    return b.triggerPoint - a.triggerPoint
+  }
+
+  var groups = {
+    vertical: {},
+    horizontal: {}
+  }
+  var Waypoint = window.Waypoint
+
+  /* http://imakewebthings.com/waypoints/api/group */
+  function Group(options) {
+    this.name = options.name
+    this.axis = options.axis
+    this.id = this.name + '-' + this.axis
+    this.waypoints = []
+    this.clearTriggerQueues()
+    groups[this.axis][this.name] = this
+  }
+
+  /* Private */
+  Group.prototype.add = function(waypoint) {
+    this.waypoints.push(waypoint)
+  }
+
+  /* Private */
+  Group.prototype.clearTriggerQueues = function() {
+    this.triggerQueues = {
+      up: [],
+      down: [],
+      left: [],
+      right: []
+    }
+  }
+
+  /* Private */
+  Group.prototype.flushTriggers = function() {
+    for (var direction in this.triggerQueues) {
+      var waypoints = this.triggerQueues[direction]
+      var reverse = direction === 'up' || direction === 'left'
+      waypoints.sort(reverse ? byReverseTriggerPoint : byTriggerPoint)
+      for (var i = 0, end = waypoints.length; i < end; i += 1) {
+        var waypoint = waypoints[i]
+        if (waypoint.options.continuous || i === waypoints.length - 1) {
+          waypoint.trigger([direction])
+        }
+      }
+    }
+    this.clearTriggerQueues()
+  }
+
+  /* Private */
+  Group.prototype.next = function(waypoint) {
+    this.waypoints.sort(byTriggerPoint)
+    var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
+    var isLast = index === this.waypoints.length - 1
+    return isLast ? null : this.waypoints[index + 1]
+  }
+
+  /* Private */
+  Group.prototype.previous = function(waypoint) {
+    this.waypoints.sort(byTriggerPoint)
+    var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
+    return index ? this.waypoints[index - 1] : null
+  }
+
+  /* Private */
+  Group.prototype.queueTrigger = function(waypoint, direction) {
+    this.triggerQueues[direction].push(waypoint)
+  }
+
+  /* Private */
+  Group.prototype.remove = function(waypoint) {
+    var index = Waypoint.Adapter.inArray(waypoint, this.waypoints)
+    if (index > -1) {
+      this.waypoints.splice(index, 1)
+    }
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/first */
+  Group.prototype.first = function() {
+    return this.waypoints[0]
+  }
+
+  /* Public */
+  /* http://imakewebthings.com/waypoints/api/last */
+  Group.prototype.last = function() {
+    return this.waypoints[this.waypoints.length - 1]
+  }
+
+  /* Private */
+  Group.findOrCreate = function(options) {
+    return groups[options.axis][options.name] || new Group(options)
+  }
+
+  Waypoint.Group = Group
+}())
+;(function() {
+  'use strict'
+
+  var $ = window.jQuery
+  var Waypoint = window.Waypoint
+
+  function JQueryAdapter(element) {
+    this.$element = $(element)
+  }
+
+  $.each([
+    'innerHeight',
+    'innerWidth',
+    'off',
+    'offset',
+    'on',
+    'outerHeight',
+    'outerWidth',
+    'scrollLeft',
+    'scrollTop'
+  ], function(i, method) {
+    JQueryAdapter.prototype[method] = function() {
+      var args = Array.prototype.slice.call(arguments)
+      return this.$element[method].apply(this.$element, args)
+    }
+  })
+
+  $.each([
+    'extend',
+    'inArray',
+    'isEmptyObject'
+  ], function(i, method) {
+    JQueryAdapter[method] = $[method]
+  })
+
+  Waypoint.adapters.push({
+    name: 'jquery',
+    Adapter: JQueryAdapter
+  })
+  Waypoint.Adapter = JQueryAdapter
+}())
+;(function() {
+  'use strict'
+
+  var Waypoint = window.Waypoint
+
+  function createExtension(framework) {
+    return function() {
+      var waypoints = []
+      var overrides = arguments[0]
+
+      if (framework.isFunction(arguments[0])) {
+        overrides = framework.extend({}, arguments[1])
+        overrides.handler = arguments[0]
+      }
+
+      this.each(function() {
+        var options = framework.extend({}, overrides, {
+          element: this
+        })
+        if (typeof options.context === 'string') {
+          options.context = framework(this).closest(options.context)[0]
+        }
+        waypoints.push(new Waypoint(options))
+      })
+
+      return waypoints
+    }
+  }
+
+  if (window.jQuery) {
+    window.jQuery.fn.waypoint = createExtension(window.jQuery)
+  }
+  if (window.Zepto) {
+    window.Zepto.fn.waypoint = createExtension(window.Zepto)
+  }
+}())
+;

+ 454 - 0
assets/js/plugins/modernizr.js

@@ -0,0 +1,454 @@
+/*!
+ * modernizr v3.6.0
+ * Build https://modernizr.com/download?-mq-setclasses-dontmin
+ *
+ * Copyright (c)
+ *  Faruk Ates
+ *  Paul Irish
+ *  Alex Sexton
+ *  Ryan Seddon
+ *  Patrick Kettner
+ *  Stu Cox
+ *  Richard Herrera
+
+ * MIT License
+ */
+
+/*
+ * Modernizr tests which native CSS3 and HTML5 features are available in the
+ * current UA and makes the results available to you in two ways: as properties on
+ * a global `Modernizr` object, and as classes on the `<html>` element. This
+ * information allows you to progressively enhance your pages with a granular level
+ * of control over the experience.
+*/
+
+;(function(window, document, undefined){
+  var classes = [];
+
+
+  var tests = [];
+
+
+  /**
+   *
+   * ModernizrProto is the constructor for Modernizr
+   *
+   * @class
+   * @access public
+   */
+
+  var ModernizrProto = {
+    // The current version, dummy
+    _version: '3.6.0',
+
+    // Any settings that don't work as separate modules
+    // can go in here as configuration.
+    _config: {
+      'classPrefix': '',
+      'enableClasses': true,
+      'enableJSClass': true,
+      'usePrefixes': true
+    },
+
+    // Queue of tests
+    _q: [],
+
+    // Stub these for people who are listening
+    on: function(test, cb) {
+      // I don't really think people should do this, but we can
+      // safe guard it a bit.
+      // -- NOTE:: this gets WAY overridden in src/addTest for actual async tests.
+      // This is in case people listen to synchronous tests. I would leave it out,
+      // but the code to *disallow* sync tests in the real version of this
+      // function is actually larger than this.
+      var self = this;
+      setTimeout(function() {
+        cb(self[test]);
+      }, 0);
+    },
+
+    addTest: function(name, fn, options) {
+      tests.push({name: name, fn: fn, options: options});
+    },
+
+    addAsyncTest: function(fn) {
+      tests.push({name: null, fn: fn});
+    }
+  };
+
+
+
+  // Fake some of Object.create so we can force non test results to be non "own" properties.
+  var Modernizr = function() {};
+  Modernizr.prototype = ModernizrProto;
+
+  // Leak modernizr globally when you `require` it rather than force it here.
+  // Overwrite name so constructor name is nicer :D
+  Modernizr = new Modernizr();
+
+
+
+  /**
+   * is returns a boolean if the typeof an obj is exactly type.
+   *
+   * @access private
+   * @function is
+   * @param {*} obj - A thing we want to check the type of
+   * @param {string} type - A string to compare the typeof against
+   * @returns {boolean}
+   */
+
+  function is(obj, type) {
+    return typeof obj === type;
+  }
+  ;
+
+  /**
+   * Run through all tests and detect their support in the current UA.
+   *
+   * @access private
+   */
+
+  function testRunner() {
+    var featureNames;
+    var feature;
+    var aliasIdx;
+    var result;
+    var nameIdx;
+    var featureName;
+    var featureNameSplit;
+
+    for (var featureIdx in tests) {
+      if (tests.hasOwnProperty(featureIdx)) {
+        featureNames = [];
+        feature = tests[featureIdx];
+        // run the test, throw the return value into the Modernizr,
+        // then based on that boolean, define an appropriate className
+        // and push it into an array of classes we'll join later.
+        //
+        // If there is no name, it's an 'async' test that is run,
+        // but not directly added to the object. That should
+        // be done with a post-run addTest call.
+        if (feature.name) {
+          featureNames.push(feature.name.toLowerCase());
+
+          if (feature.options && feature.options.aliases && feature.options.aliases.length) {
+            // Add all the aliases into the names list
+            for (aliasIdx = 0; aliasIdx < feature.options.aliases.length; aliasIdx++) {
+              featureNames.push(feature.options.aliases[aliasIdx].toLowerCase());
+            }
+          }
+        }
+
+        // Run the test, or use the raw value if it's not a function
+        result = is(feature.fn, 'function') ? feature.fn() : feature.fn;
+
+
+        // Set each of the names on the Modernizr object
+        for (nameIdx = 0; nameIdx < featureNames.length; nameIdx++) {
+          featureName = featureNames[nameIdx];
+          // Support dot properties as sub tests. We don't do checking to make sure
+          // that the implied parent tests have been added. You must call them in
+          // order (either in the test, or make the parent test a dependency).
+          //
+          // Cap it to TWO to make the logic simple and because who needs that kind of subtesting
+          // hashtag famous last words
+          featureNameSplit = featureName.split('.');
+
+          if (featureNameSplit.length === 1) {
+            Modernizr[featureNameSplit[0]] = result;
+          } else {
+            // cast to a Boolean, if not one already
+            if (Modernizr[featureNameSplit[0]] && !(Modernizr[featureNameSplit[0]] instanceof Boolean)) {
+              Modernizr[featureNameSplit[0]] = new Boolean(Modernizr[featureNameSplit[0]]);
+            }
+
+            Modernizr[featureNameSplit[0]][featureNameSplit[1]] = result;
+          }
+
+          classes.push((result ? '' : 'no-') + featureNameSplit.join('-'));
+        }
+      }
+    }
+  }
+  ;
+
+  /**
+   * docElement is a convenience wrapper to grab the root element of the document
+   *
+   * @access private
+   * @returns {HTMLElement|SVGElement} The root element of the document
+   */
+
+  var docElement = document.documentElement;
+
+
+  /**
+   * A convenience helper to check if the document we are running in is an SVG document
+   *
+   * @access private
+   * @returns {boolean}
+   */
+
+  var isSVG = docElement.nodeName.toLowerCase() === 'svg';
+
+
+  /**
+   * setClasses takes an array of class names and adds them to the root element
+   *
+   * @access private
+   * @function setClasses
+   * @param {string[]} classes - Array of class names
+   */
+
+  // Pass in an and array of class names, e.g.:
+  //  ['no-webp', 'borderradius', ...]
+  function setClasses(classes) {
+    var className = docElement.className;
+    var classPrefix = Modernizr._config.classPrefix || '';
+
+    if (isSVG) {
+      className = className.baseVal;
+    }
+
+    // Change `no-js` to `js` (independently of the `enableClasses` option)
+    // Handle classPrefix on this too
+    if (Modernizr._config.enableJSClass) {
+      var reJS = new RegExp('(^|\\s)' + classPrefix + 'no-js(\\s|$)');
+      className = className.replace(reJS, '$1' + classPrefix + 'js$2');
+    }
+
+    if (Modernizr._config.enableClasses) {
+      // Add the new classes
+      className += ' ' + classPrefix + classes.join(' ' + classPrefix);
+      if (isSVG) {
+        docElement.className.baseVal = className;
+      } else {
+        docElement.className = className;
+      }
+    }
+
+  }
+
+  ;
+
+  /**
+   * createElement is a convenience wrapper around document.createElement. Since we
+   * use createElement all over the place, this allows for (slightly) smaller code
+   * as well as abstracting away issues with creating elements in contexts other than
+   * HTML documents (e.g. SVG documents).
+   *
+   * @access private
+   * @function createElement
+   * @returns {HTMLElement|SVGElement} An HTML or SVG element
+   */
+
+  function createElement() {
+    if (typeof document.createElement !== 'function') {
+      // This is the case in IE7, where the type of createElement is "object".
+      // For this reason, we cannot call apply() as Object is not a Function.
+      return document.createElement(arguments[0]);
+    } else if (isSVG) {
+      return document.createElementNS.call(document, 'http://www.w3.org/2000/svg', arguments[0]);
+    } else {
+      return document.createElement.apply(document, arguments);
+    }
+  }
+
+  ;
+
+  /**
+   * getBody returns the body of a document, or an element that can stand in for
+   * the body if a real body does not exist
+   *
+   * @access private
+   * @function getBody
+   * @returns {HTMLElement|SVGElement} Returns the real body of a document, or an
+   * artificially created element that stands in for the body
+   */
+
+  function getBody() {
+    // After page load injecting a fake body doesn't work so check if body exists
+    var body = document.body;
+
+    if (!body) {
+      // Can't use the real body create a fake one.
+      body = createElement(isSVG ? 'svg' : 'body');
+      body.fake = true;
+    }
+
+    return body;
+  }
+
+  ;
+
+  /**
+   * injectElementWithStyles injects an element with style element and some CSS rules
+   *
+   * @access private
+   * @function injectElementWithStyles
+   * @param {string} rule - String representing a css rule
+   * @param {function} callback - A function that is used to test the injected element
+   * @param {number} [nodes] - An integer representing the number of additional nodes you want injected
+   * @param {string[]} [testnames] - An array of strings that are used as ids for the additional nodes
+   * @returns {boolean}
+   */
+
+  function injectElementWithStyles(rule, callback, nodes, testnames) {
+    var mod = 'modernizr';
+    var style;
+    var ret;
+    var node;
+    var docOverflow;
+    var div = createElement('div');
+    var body = getBody();
+
+    if (parseInt(nodes, 10)) {
+      // In order not to give false positives we create a node for each test
+      // This also allows the method to scale for unspecified uses
+      while (nodes--) {
+        node = createElement('div');
+        node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
+        div.appendChild(node);
+      }
+    }
+
+    style = createElement('style');
+    style.type = 'text/css';
+    style.id = 's' + mod;
+
+    // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
+    // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
+    (!body.fake ? div : body).appendChild(style);
+    body.appendChild(div);
+
+    if (style.styleSheet) {
+      style.styleSheet.cssText = rule;
+    } else {
+      style.appendChild(document.createTextNode(rule));
+    }
+    div.id = mod;
+
+    if (body.fake) {
+      //avoid crashing IE8, if background image is used
+      body.style.background = '';
+      //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
+      body.style.overflow = 'hidden';
+      docOverflow = docElement.style.overflow;
+      docElement.style.overflow = 'hidden';
+      docElement.appendChild(body);
+    }
+
+    ret = callback(div, rule);
+    // If this is done after page load we don't want to remove the body so check if body exists
+    if (body.fake) {
+      body.parentNode.removeChild(body);
+      docElement.style.overflow = docOverflow;
+      // Trigger layout so kinetic scrolling isn't disabled in iOS6+
+      // eslint-disable-next-line
+      docElement.offsetHeight;
+    } else {
+      div.parentNode.removeChild(div);
+    }
+
+    return !!ret;
+
+  }
+
+  ;
+
+  /**
+   * Modernizr.mq tests a given media query, live against the current state of the window
+   * adapted from matchMedia polyfill by Scott Jehl and Paul Irish
+   * gist.github.com/786768
+   *
+   * @memberof Modernizr
+   * @name Modernizr.mq
+   * @optionName Modernizr.mq()
+   * @optionProp mq
+   * @access public
+   * @function mq
+   * @param {string} mq - String of the media query we want to test
+   * @returns {boolean}
+   * @example
+   * Modernizr.mq allows for you to programmatically check if the current browser
+   * window state matches a media query.
+   *
+   * ```js
+   *  var query = Modernizr.mq('(min-width: 900px)');
+   *
+   *  if (query) {
+   *    // the browser window is larger than 900px
+   *  }
+   * ```
+   *
+   * Only valid media queries are supported, therefore you must always include values
+   * with your media query
+   *
+   * ```js
+   * // good
+   *  Modernizr.mq('(min-width: 900px)');
+   *
+   * // bad
+   *  Modernizr.mq('min-width');
+   * ```
+   *
+   * If you would just like to test that media queries are supported in general, use
+   *
+   * ```js
+   *  Modernizr.mq('only all'); // true if MQ are supported, false if not
+   * ```
+   *
+   *
+   * Note that if the browser does not support media queries (e.g. old IE) mq will
+   * always return false.
+   */
+
+  var mq = (function() {
+    var matchMedia = window.matchMedia || window.msMatchMedia;
+    if (matchMedia) {
+      return function(mq) {
+        var mql = matchMedia(mq);
+        return mql && mql.matches || false;
+      };
+    }
+
+    return function(mq) {
+      var bool = false;
+
+      injectElementWithStyles('@media ' + mq + ' { #modernizr { position: absolute; } }', function(node) {
+        bool = (window.getComputedStyle ?
+                window.getComputedStyle(node, null) :
+                node.currentStyle).position == 'absolute';
+      });
+
+      return bool;
+    };
+  })();
+
+
+  ModernizrProto.mq = mq;
+
+
+
+  // Run each test
+  testRunner();
+
+  // Remove the "no-js" class if it exists
+  setClasses(classes);
+
+  delete ModernizrProto.addTest;
+  delete ModernizrProto.addAsyncTest;
+
+  // Run the things that are supposed to run after the tests
+  for (var i = 0; i < Modernizr._q.length; i++) {
+    Modernizr._q[i]();
+  }
+
+  // Leak Modernizr namespace
+  window.Modernizr = Modernizr;
+
+
+;
+
+})(window, document);

+ 237 - 0
assets/js/plugins/respond.js

@@ -0,0 +1,237 @@
+/*! Respond.js v1.4.2: min/max-width media query polyfill
+ * Copyright 2014 Scott Jehl
+ * Licensed under MIT
+ * https://j.mp/respondjs */
+
+/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas. Dual MIT/BSD license */
+/*! NOTE: If you're already including a window.matchMedia polyfill via Modernizr or otherwise, you don't need this part */
+(function(w) {
+  "use strict";
+  w.matchMedia = w.matchMedia || function(doc, undefined) {
+    var bool, docElem = doc.documentElement, refNode = docElem.firstElementChild || docElem.firstChild, fakeBody = doc.createElement("body"), div = doc.createElement("div");
+    div.id = "mq-test-1";
+    div.style.cssText = "position:absolute;top:-100em";
+    fakeBody.style.background = "none";
+    fakeBody.appendChild(div);
+    return function(q) {
+      div.innerHTML = '&shy;<style media="' + q + '"> #mq-test-1 { width: 42px; }</style>';
+      docElem.insertBefore(fakeBody, refNode);
+      bool = div.offsetWidth === 42;
+      docElem.removeChild(fakeBody);
+      return {
+        matches: bool,
+        media: q
+      };
+    };
+  }(w.document);
+})(this);
+
+(function(w) {
+  "use strict";
+  var respond = {};
+  w.respond = respond;
+  respond.update = function() {};
+  var requestQueue = [], xmlHttp = function() {
+    var xmlhttpmethod = false;
+    try {
+      xmlhttpmethod = new w.XMLHttpRequest();
+    } catch (e) {
+      xmlhttpmethod = new w.ActiveXObject("Microsoft.XMLHTTP");
+    }
+    return function() {
+      return xmlhttpmethod;
+    };
+  }(), ajax = function(url, callback) {
+    var req = xmlHttp();
+    if (!req) {
+      return;
+    }
+    req.open("GET", url, true);
+    req.onreadystatechange = function() {
+      if (req.readyState !== 4 || req.status !== 200 && req.status !== 304) {
+        return;
+      }
+      callback(req.responseText);
+    };
+    if (req.readyState === 4) {
+      return;
+    }
+    req.send(null);
+  }, isUnsupportedMediaQuery = function(query) {
+    return query.replace(respond.regex.minmaxwh, "").match(respond.regex.other);
+  };
+  respond.ajax = ajax;
+  respond.queue = requestQueue;
+  respond.unsupportedmq = isUnsupportedMediaQuery;
+  respond.regex = {
+    media: /@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,
+    keyframes: /@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,
+    comments: /\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,
+    urls: /(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,
+    findStyles: /@media *([^\{]+)\{([\S\s]+?)$/,
+    only: /(only\s+)?([a-zA-Z]+)\s?/,
+    minw: /\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,
+    maxw: /\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,
+    minmaxwh: /\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,
+    other: /\([^\)]*\)/g
+  };
+  respond.mediaQueriesSupported = w.matchMedia && w.matchMedia("only all") !== null && w.matchMedia("only all").matches;
+  if (respond.mediaQueriesSupported) {
+    return;
+  }
+  var doc = w.document, docElem = doc.documentElement, mediastyles = [], rules = [], appendedEls = [], parsedSheets = {}, resizeThrottle = 30, head = doc.getElementsByTagName("head")[0] || docElem, base = doc.getElementsByTagName("base")[0], links = head.getElementsByTagName("link"), lastCall, resizeDefer, eminpx, getEmValue = function() {
+    var ret, div = doc.createElement("div"), body = doc.body, originalHTMLFontSize = docElem.style.fontSize, originalBodyFontSize = body && body.style.fontSize, fakeUsed = false;
+    div.style.cssText = "position:absolute;font-size:1em;width:1em";
+    if (!body) {
+      body = fakeUsed = doc.createElement("body");
+      body.style.background = "none";
+    }
+    docElem.style.fontSize = "100%";
+    body.style.fontSize = "100%";
+    body.appendChild(div);
+    if (fakeUsed) {
+      docElem.insertBefore(body, docElem.firstChild);
+    }
+    ret = div.offsetWidth;
+    if (fakeUsed) {
+      docElem.removeChild(body);
+    } else {
+      body.removeChild(div);
+    }
+    docElem.style.fontSize = originalHTMLFontSize;
+    if (originalBodyFontSize) {
+      body.style.fontSize = originalBodyFontSize;
+    }
+    ret = eminpx = parseFloat(ret);
+    return ret;
+  }, applyMedia = function(fromResize) {
+    var name = "clientWidth", docElemProp = docElem[name], currWidth = doc.compatMode === "CSS1Compat" && docElemProp || doc.body[name] || docElemProp, styleBlocks = {}, lastLink = links[links.length - 1], now = new Date().getTime();
+    if (fromResize && lastCall && now - lastCall < resizeThrottle) {
+      w.clearTimeout(resizeDefer);
+      resizeDefer = w.setTimeout(applyMedia, resizeThrottle);
+      return;
+    } else {
+      lastCall = now;
+    }
+    for (var i in mediastyles) {
+      if (mediastyles.hasOwnProperty(i)) {
+        var thisstyle = mediastyles[i], min = thisstyle.minw, max = thisstyle.maxw, minnull = min === null, maxnull = max === null, em = "em";
+        if (!!min) {
+          min = parseFloat(min) * (min.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
+        }
+        if (!!max) {
+          max = parseFloat(max) * (max.indexOf(em) > -1 ? eminpx || getEmValue() : 1);
+        }
+        if (!thisstyle.hasquery || (!minnull || !maxnull) && (minnull || currWidth >= min) && (maxnull || currWidth <= max)) {
+          if (!styleBlocks[thisstyle.media]) {
+            styleBlocks[thisstyle.media] = [];
+          }
+          styleBlocks[thisstyle.media].push(rules[thisstyle.rules]);
+        }
+      }
+    }
+    for (var j in appendedEls) {
+      if (appendedEls.hasOwnProperty(j)) {
+        if (appendedEls[j] && appendedEls[j].parentNode === head) {
+          head.removeChild(appendedEls[j]);
+        }
+      }
+    }
+    appendedEls.length = 0;
+    for (var k in styleBlocks) {
+      if (styleBlocks.hasOwnProperty(k)) {
+        var ss = doc.createElement("style"), css = styleBlocks[k].join("\n");
+        ss.type = "text/css";
+        ss.media = k;
+        head.insertBefore(ss, lastLink.nextSibling);
+        if (ss.styleSheet) {
+          ss.styleSheet.cssText = css;
+        } else {
+          ss.appendChild(doc.createTextNode(css));
+        }
+        appendedEls.push(ss);
+      }
+    }
+  }, translate = function(styles, href, media) {
+    var qs = styles.replace(respond.regex.comments, "").replace(respond.regex.keyframes, "").match(respond.regex.media), ql = qs && qs.length || 0;
+    href = href.substring(0, href.lastIndexOf("/"));
+    var repUrls = function(css) {
+      return css.replace(respond.regex.urls, "$1" + href + "$2$3");
+    }, useMedia = !ql && media;
+    if (href.length) {
+      href += "/";
+    }
+    if (useMedia) {
+      ql = 1;
+    }
+    for (var i = 0; i < ql; i++) {
+      var fullq, thisq, eachq, eql;
+      if (useMedia) {
+        fullq = media;
+        rules.push(repUrls(styles));
+      } else {
+        fullq = qs[i].match(respond.regex.findStyles) && RegExp.$1;
+        rules.push(RegExp.$2 && repUrls(RegExp.$2));
+      }
+      eachq = fullq.split(",");
+      eql = eachq.length;
+      for (var j = 0; j < eql; j++) {
+        thisq = eachq[j];
+        if (isUnsupportedMediaQuery(thisq)) {
+          continue;
+        }
+        mediastyles.push({
+          media: thisq.split("(")[0].match(respond.regex.only) && RegExp.$2 || "all",
+          rules: rules.length - 1,
+          hasquery: thisq.indexOf("(") > -1,
+          minw: thisq.match(respond.regex.minw) && parseFloat(RegExp.$1) + (RegExp.$2 || ""),
+          maxw: thisq.match(respond.regex.maxw) && parseFloat(RegExp.$1) + (RegExp.$2 || "")
+        });
+      }
+    }
+    applyMedia();
+  }, makeRequests = function() {
+    if (requestQueue.length) {
+      var thisRequest = requestQueue.shift();
+      ajax(thisRequest.href, function(styles) {
+        translate(styles, thisRequest.href, thisRequest.media);
+        parsedSheets[thisRequest.href] = true;
+        w.setTimeout(function() {
+          makeRequests();
+        }, 0);
+      });
+    }
+  }, ripCSS = function() {
+    for (var i = 0; i < links.length; i++) {
+      var sheet = links[i], href = sheet.href, media = sheet.media, isCSS = sheet.rel && sheet.rel.toLowerCase() === "stylesheet";
+      if (!!href && isCSS && !parsedSheets[href]) {
+        if (sheet.styleSheet && sheet.styleSheet.rawCssText) {
+          translate(sheet.styleSheet.rawCssText, href, media);
+          parsedSheets[href] = true;
+        } else {
+          if (!/^([a-zA-Z:]*\/\/)/.test(href) && !base || href.replace(RegExp.$1, "").split("/")[0] === w.location.host) {
+            if (href.substring(0, 2) === "//") {
+              href = w.location.protocol + href;
+            }
+            requestQueue.push({
+              href: href,
+              media: media
+            });
+          }
+        }
+      }
+    }
+    makeRequests();
+  };
+  ripCSS();
+  respond.update = ripCSS;
+  respond.getEmValue = getEmValue;
+  function callMedia() {
+    applyMedia(true);
+  }
+  if (w.addEventListener) {
+    w.addEventListener("resize", callMedia, false);
+  } else if (w.attachEvent) {
+    w.attachEvent("onresize", callMedia);
+  }
+})(this);

+ 227 - 0
assets/js/plugins/shards.js

@@ -0,0 +1,227 @@
+/**
+* Shards jQuery plug-in
+* Multilayered gradient background effect
+*
+* @homepage http://bite-software.co.uk/shards/
+* @version 1.1
+* @license MIT http://opensource.org/licenses/MIT
+*/
+(function($) {
+
+var Plugin = function(me,c1,c2,sh,steps,wheel,light,alf,fs){
+
+	this.el = me;
+	this.sharp = true;
+	this.fs = fs;
+	this.filter = '';
+	this.colours = {
+		c1 		: c1,
+		c2 		: c2,
+		c3		: c2,
+		shade 	: sh,
+		alpha 	: alf,
+		steps 	: steps,
+		wheel	: wheel,
+		light 	: ~~(light)
+	}
+	this.init();
+}
+Plugin.prototype.init = function(){
+
+	this.cssPrefix = false;
+
+	var ua = navigator.userAgent;
+	if(/Chrome\/(\S+)/.test(ua)|| /AppleWebKit\/(\S+)/.test(ua)) {
+		this.cssPrefix = '-webkit';
+	}
+	else if(/Firefox\/(\S+)/.test(ua)) {
+		this.cssPrefix = '-moz';
+	}else if(window.opera) {
+		this.cssPrefix = '-o';
+	}else if(/MSIE ([^;]+)/.test(ua)) {
+		this.cssPrefix = '-ms';
+	};
+
+	if(this.cssPrefix){
+		var steps = this.colours.steps;
+
+		while( steps > 0){
+			this.percents = this.percentage();
+			this.stringBuilder();
+			this.colourFilter();
+			steps -= 1;
+			if(steps > 0) this.filter += ', ';
+		}
+		this.el.css('background-image',this.filter);
+
+		if(this.fs) this.fit();
+	}else{
+		console.log('sorry bro, your browser isnt supported.');
+	}
+
+}
+Plugin.prototype.stringBuilder = function(){
+
+	var col = this.colours,
+		c1 = this.catcol(col.c1),
+		c2 = this.catcol(col.c2),
+		c3 = this.catcol(col.c3),
+		shade = this.catcol(col.shade),
+		deg = ~~(Math.random()*360);
+
+	this.filter += this.cssPrefix+'-linear-gradient('+deg+'deg,'+c1+' '+this.percents.a+' ,'+shade+' '+this.percents.b+', '+c2+' '+this.percents.c+', '+c3+' '+this.percents.d+')';
+
+}
+Plugin.prototype.catcol = function(col){
+
+	var beg = 'rgba(',
+		end = ')',
+		part = col.toString();
+
+	return beg.concat(part).concat(end);
+}
+Plugin.prototype.fit = function(){
+	this.el.css({
+		'width':'100%',
+		'height': window.innerHeight
+	})
+}
+
+Plugin.prototype.percentage = function(){
+
+	var p1 = ~~(Math.random()*85),
+	p2 = p1 + ~~(Math.random()*15),
+	p3 = p2,
+	p4 = 100-p2 + ~~(Math.random()*p2);
+
+	var percents = {
+		a:p1+'%',
+		b:p2+'%',
+		c:p3+'%',
+		d:p4+'%'
+	}
+
+	return percents;
+}
+Plugin.prototype.colourFilter = function(){
+
+	var col = this.colours;
+
+	col.c1 = this.colstep(col.c1);
+	col.c1.push(col.alpha);
+	col.c2 = this.colstep(col.c2);
+	col.c2.push(col.alpha);
+	col.c3 = this.colstep(col.c2);
+	col.c3.push(col.alpha);
+	col.shade = this.colstep(col.shade);
+	col.shade.push(col.alpha);
+}
+Plugin.prototype.colstep = function(col){
+
+	var hsl = this.hsl(col),
+		wheel = this.colours.wheel,
+		hue = (360 * wheel);
+
+	if(this.colours.light>3) this.colours.light = 3;
+
+	hsl[0] = hsl[0] - (~~(Math.random()*hue/2)) + (~~(Math.random()*hue/2));
+	hsl[1] = wheel * 100;
+	hsl[2] = 30 * this.colours.light;
+	return this.rgb(hsl);
+}
+Plugin.prototype.hsl = function(rgb){
+
+	var r1 = rgb[0] / 255;
+	var g1 = rgb[1] / 255;
+	var b1 = rgb[2] / 255;
+	var maxColor = Math.max(r1,g1,b1);
+	var minColor = Math.min(r1,g1,b1);
+	//Calculate L:
+	var L = (maxColor + minColor) / 2 ;
+	var S = 0;
+	var H = 0;
+	if(maxColor != minColor){
+	    //Calculate S:
+	    if(L < 0.5){
+	        S = (maxColor - minColor) / (maxColor + minColor);
+	    }else{
+	        S = (maxColor - minColor) / (2.0 - maxColor - minColor);
+	    }
+	    //Calculate H:
+	    if(r1 == maxColor){
+	        H = (g1-b1) / (maxColor - minColor);
+	    }else if(g1 == maxColor){
+	        H = 2.0 + (b1 - r1) / (maxColor - minColor);
+	    }else{
+	        H = 4.0 + (r1 - g1) / (maxColor - minColor);
+	    }
+	}
+
+	L = L * 100;
+	S = S * 100;
+	H = H * 60;
+	if(H<0){
+	    H += 360;
+	}
+
+	var result = [H, S, L];
+	return result;
+
+}
+Plugin.prototype.rgb = function(hsl){
+	var h = hsl[0];
+	var s = hsl[1];
+	var l = hsl[2];
+
+	var m1, m2, hue;
+	var r, g, b;
+	s /=100;
+	l /= 100;
+	if (s == 0)
+		r = g = b = (l * 255);
+	else {
+		if (l <= 0.5)
+			m2 = l * (s + 1);
+		else
+			m2 = l + s - l * s;
+		m1 = l * 2 - m2;
+		hue = h / 360;
+		r = this.hue2rgb(m1, m2, hue + 1/3);
+		g = this.hue2rgb(m1, m2, hue);
+		b = this.hue2rgb(m1, m2, hue - 1/3);
+	}
+	return [Math.round(r), Math.round(g), Math.round(b)];
+}
+Plugin.prototype.hue2rgb = function(m1, m2, hue) {
+	var v;
+	if (hue < 0)
+		hue += 1;
+	else if (hue > 1)
+		hue -= 1;
+
+	if (6 * hue < 1)
+		v = m1 + (m2 - m1) * hue * 6;
+	else if (2 * hue < 1)
+		v = m2;
+	else if (3 * hue < 2)
+		v = m1 + (m2 - m1) * (2/3 - hue) * 6;
+	else
+		v = m1;
+
+	return 255 * v;
+};
+$.fn.shards = function(colour1, colour2, shadeColour, steps, wheel, lightness, alpha, fullscreen){
+
+	var el = $(this);
+	var shards = new Plugin(el,colour1,colour2,shadeColour,steps,wheel,lightness,alpha,fullscreen);
+
+	if(fullscreen){
+		$(window).resize( function(){
+			shards.fit();
+		});
+	}
+
+	return this.el;
+}
+
+})(jQuery);

+ 1376 - 0
assets/js/plugins/trianglify.js

@@ -0,0 +1,1376 @@
+/*
+ * Trianglify.js
+ * https://github.com/qrohlf/trianglify
+ *
+ * Licensed under the GPLv3
+ */
+(function(e) {
+    if ("object" == typeof exports && "undefined" != typeof module) module.exports = e();
+    else if ("function" == typeof define && define.amd) define([], e);
+    else {
+        var f;
+        f = "undefined" == typeof window ? "undefined" == typeof global ? "undefined" == typeof self ? this : self : global : window, f.Trianglify = e()
+    }
+})(function() {
+    var e, f = Math.sqrt,
+        d = Math.abs,
+        a = Math.min,
+        n = Math.max,
+        l = Math.floor;
+    return function d(c, e, t) {
+        function f(s, n) {
+            if (!e[s]) {
+                if (!c[s]) {
+                    var i = "function" == typeof require && require;
+                    if (!n && i) return i(s, !0);
+                    if (r) return r(s, !0);
+                    var a = new Error("Cannot find module '" + s + "'");
+                    throw a.code = "MODULE_NOT_FOUND", a
+                }
+                var o = e[s] = {
+                    exports: {}
+                };
+                c[s][0].call(o.exports, function(d) {
+                    var e = c[s][1][d];
+                    return f(e ? e : d)
+                }, o, o.exports, d, c, e, t)
+            }
+            return e[s].exports
+        }
+        for (var r = "function" == typeof require && require, a = 0; a < t.length; a++) f(t[a]);
+        return f
+    }({
+        "./lib/trianglify.js": [function(e, f) {
+            function d(e) {
+                function f(e, f) {
+                    return a(n(e, f[0]), f[1])
+                }
+
+                function d(e, f, d) {
+                    return (e - f[0]) * (d[1] - d[0]) / (f[1] - f[0]) + d[0]
+                }
+
+                function h(e) {
+                    return {
+                        x: (e[0][0] + e[1][0] + e[2][0]) / 3,
+                        y: (e[0][1] + e[1][1] + e[2][1]) / 3
+                    }
+                }
+
+                function g() {
+                    if (e.palette instanceof Array) return e.palette[l(u() * e.palette.length)];
+                    var f = Object.keys(e.palette);
+                    return e.palette[f[l(u() * f.length)]]
+                }
+                var u;
+                if (e = function(e, f) {
+                        var d = {};
+                        for (var a in e) d[a] = e[a];
+                        for (a in f)
+                            if (e.hasOwnProperty(a)) d[a] = f[a];
+                            else throw new Error(a + " is not a configuration option for Trianglify. Check your spelling?");
+                        return d
+                    }(b, e), u = t(e.seed), "random" === e.x_colors && (e.x_colors = g()), "random" === e.y_colors && (e.y_colors = g()), "match_x" === e.y_colors && (e.y_colors = e.x_colors), !(0 < e.width && 0 < e.height)) throw new Error("Width and height must be numbers greater than 0");
+                if (2 > e.cell_size) throw new Error("Cell size must be greater than 2.");
+                if (!e.x_colors && !e.y_colors) throw new Error("X and Y colors can not be both undefined.");
+                var p;
+                if (e.color_function) p = function(f, d) {
+                    return s(e.color_function(f, d))
+                };
+                else if (e.x_colors && e.y_colors) {
+                    var m = s.scale(e.x_colors).mode(e.color_space),
+                        _ = s.scale(e.y_colors).mode(e.color_space);
+                    p = function(f, d) {
+                        return s.interpolate(m(f), _(d), 0.5, e.color_space)
+                    }
+                } else {
+                    var w = s.scale(e.x_colors || e.y_colors).mode(e.color_space);
+                    p = e.x_colors ? function(e) {
+                        return w(e)
+                    } : function(e, f) {
+                        return w(f)
+                    }
+                }
+                for (var y = e.width, x = e.height, j = l((y + 4 * e.cell_size) / e.cell_size), v = l((x + 4 * e.cell_size) / e.cell_size), k = (j * e.cell_size - y) / 2, q = (v * e.cell_size - x) / 2, C = e.cell_size * e.variance / 2, z = function(e) {
+                        return f(d(e, [0, y], [0, 1]), [0, 1])
+                    }, U = function(e) {
+                        return f(d(e, [0, x], [0, 1]), [0, 1])
+                    }, B = e.points || o(y, x, k, q, e.cell_size, C, u), G = new r(B).triangles, S = [], P = function(e) {
+                        return B[e]
+                    }, R = 0; R < G.length; R += 3) {
+                    var i = [G[R], G[R + 1], G[R + 2]].map(P),
+                        A = h(i),
+                        L = p(z(A.x), U(A.y)).css();
+                    S.push([L, i])
+                }
+                return c(S, e)
+            }
+            var r = e("delaunator"),
+                t = e("seedrandom"),
+                s = e("chroma-js"),
+                i = e("./colorbrewer"),
+                o = e("./points"),
+                c = e("./pattern"),
+                b = {
+                    width: 600,
+                    height: 400,
+                    cell_size: 75,
+                    variance: 0.75,
+                    seed: null,
+                    x_colors: "random",
+                    y_colors: "match_x",
+                    palette: i,
+                    color_space: "lab",
+                    color_function: null,
+                    stroke_width: 1.51,
+                    points: void 0
+                };
+            d.colorbrewer = i, d.defaults = b, f.exports = d
+        }, {
+            "./colorbrewer": "/Users/qrohlf/Code/trianglify/lib/colorbrewer.js",
+            "./pattern": "/Users/qrohlf/Code/trianglify/lib/pattern.js",
+            "./points": "/Users/qrohlf/Code/trianglify/lib/points.js",
+            "chroma-js": "/Users/qrohlf/Code/trianglify/node_modules/chroma-js/chroma.js",
+            delaunator: "/Users/qrohlf/Code/trianglify/node_modules/delaunator/index.js",
+            seedrandom: "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/index.js"
+        }],
+        "/Users/qrohlf/Code/trianglify/lib/colorbrewer.js": [function(e, f) {
+            f.exports = {
+                YlGn: ["#ffffe5", "#f7fcb9", "#d9f0a3", "#addd8e", "#78c679", "#41ab5d", "#238443", "#006837", "#004529"],
+                YlGnBu: ["#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb", "#41b6c4", "#1d91c0", "#225ea8", "#253494", "#081d58"],
+                GnBu: ["#f7fcf0", "#e0f3db", "#ccebc5", "#a8ddb5", "#7bccc4", "#4eb3d3", "#2b8cbe", "#0868ac", "#084081"],
+                BuGn: ["#f7fcfd", "#e5f5f9", "#ccece6", "#99d8c9", "#66c2a4", "#41ae76", "#238b45", "#006d2c", "#00441b"],
+                PuBuGn: ["#fff7fb", "#ece2f0", "#d0d1e6", "#a6bddb", "#67a9cf", "#3690c0", "#02818a", "#016c59", "#014636"],
+                PuBu: ["#fff7fb", "#ece7f2", "#d0d1e6", "#a6bddb", "#74a9cf", "#3690c0", "#0570b0", "#045a8d", "#023858"],
+                BuPu: ["#f7fcfd", "#e0ecf4", "#bfd3e6", "#9ebcda", "#8c96c6", "#8c6bb1", "#88419d", "#810f7c", "#4d004b"],
+                RdPu: ["#fff7f3", "#fde0dd", "#fcc5c0", "#fa9fb5", "#f768a1", "#dd3497", "#ae017e", "#7a0177", "#49006a"],
+                PuRd: ["#f7f4f9", "#e7e1ef", "#d4b9da", "#c994c7", "#df65b0", "#e7298a", "#ce1256", "#980043", "#67001f"],
+                OrRd: ["#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548", "#d7301f", "#b30000", "#7f0000"],
+                YlOrRd: ["#ffffcc", "#ffeda0", "#fed976", "#feb24c", "#fd8d3c", "#fc4e2a", "#e31a1c", "#bd0026", "#800026"],
+                YlOrBr: ["#ffffe5", "#fff7bc", "#fee391", "#fec44f", "#fe9929", "#ec7014", "#cc4c02", "#993404", "#662506"],
+                Purples: ["#fcfbfd", "#efedf5", "#dadaeb", "#bcbddc", "#9e9ac8", "#807dba", "#6a51a3", "#54278f", "#3f007d"],
+                Blues: ["#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"],
+                Greens: ["#f7fcf5", "#e5f5e0", "#c7e9c0", "#a1d99b", "#74c476", "#41ab5d", "#238b45", "#006d2c", "#00441b"],
+                Oranges: ["#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"],
+                Reds: ["#fff5f0", "#fee0d2", "#fcbba1", "#fc9272", "#fb6a4a", "#ef3b2c", "#cb181d", "#a50f15", "#67000d"],
+                Greys: ["#ffffff", "#f0f0f0", "#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"],
+                PuOr: ["#7f3b08", "#b35806", "#e08214", "#fdb863", "#fee0b6", "#f7f7f7", "#d8daeb", "#b2abd2", "#8073ac", "#542788", "#2d004b"],
+                BrBG: ["#543005", "#8c510a", "#bf812d", "#dfc27d", "#f6e8c3", "#f5f5f5", "#c7eae5", "#80cdc1", "#35978f", "#01665e", "#003c30"],
+                PRGn: ["#40004b", "#762a83", "#9970ab", "#c2a5cf", "#e7d4e8", "#f7f7f7", "#d9f0d3", "#a6dba0", "#5aae61", "#1b7837", "#00441b"],
+                PiYG: ["#8e0152", "#c51b7d", "#de77ae", "#f1b6da", "#fde0ef", "#f7f7f7", "#e6f5d0", "#b8e186", "#7fbc41", "#4d9221", "#276419"],
+                RdBu: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#f7f7f7", "#d1e5f0", "#92c5de", "#4393c3", "#2166ac", "#053061"],
+                RdGy: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#ffffff", "#e0e0e0", "#bababa", "#878787", "#4d4d4d", "#1a1a1a"],
+                RdYlBu: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4", "#313695"],
+                Spectral: ["#9e0142", "#d53e4f", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#e6f598", "#abdda4", "#66c2a5", "#3288bd", "#5e4fa2"],
+                RdYlGn: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#d9ef8b", "#a6d96a", "#66bd63", "#1a9850", "#006837"]
+            }
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/lib/pattern.js": [function(e, f) {
+            (function(d) {
+                var a = "undefined" == typeof document ? e("jsdom").jsdom("<html/>") : document;
+                f.exports = function(f, r) {
+                    function t(t) {
+                        var n;
+                        if ("object" == typeof d && "object" == typeof d.versions && "undefined" != typeof d.versions.node) try {
+                            e("canvas")
+                        } catch (f) {
+                            throw Error("The optional node-canvas dependency is needed for Trianglify to render using canvas in node.")
+                        }
+                        return t || (t = a.createElement("canvas")), t.setAttribute("width", r.width), t.setAttribute("height", r.height), n = t.getContext("2d"), n.canvas.width = r.width, n.canvas.height = r.height, f.forEach(function(e) {
+                            n.fillStyle = n.strokeStyle = e[0], n.lineWidth = r.stroke_width, n.beginPath(), n.moveTo.apply(n, e[1][0]), n.lineTo.apply(n, e[1][1]), n.lineTo.apply(n, e[1][2]), n.fill(), n.stroke()
+                        }), t
+                    }
+                    return {
+                        polys: f,
+                        opts: r,
+                        svg: function(e) {
+                            var d = a.createElementNS("http://www.w3.org/2000/svg", "svg");
+                            return d.setAttribute("width", r.width), d.setAttribute("height", r.height), e && e.includeNamespace && d.setAttribute("xmlns", "http://www.w3.org/2000/svg"), f.forEach(function(e) {
+                                var f = a.createElementNS("http://www.w3.org/2000/svg", "path");
+                                f.setAttribute("d", "M" + e[1].join("L") + "Z"), f.setAttribute("fill", e[0]), f.setAttribute("stroke", e[0]), f.setAttribute("stroke-width", r.stroke_width), d.appendChild(f)
+                            }), d
+                        },
+                        canvas: t,
+                        png: function() {
+                            return t().toDataURL("image/png")
+                        }
+                    }
+                }
+            }).call(this, e("_process"))
+        }, {
+            _process: "/Users/qrohlf/Code/trianglify/node_modules/process/browser.js",
+            canvas: "/Users/qrohlf/Code/trianglify/node_modules/browser-resolve/empty.js",
+            jsdom: "/Users/qrohlf/Code/trianglify/node_modules/browser-resolve/empty.js"
+        }],
+        "/Users/qrohlf/Code/trianglify/lib/points.js": [function(e, f) {
+            f.exports = function(e, f, d, a, r, t, n) {
+                for (var s = 0.5 * r, o = 2 * t, c = -t, b = [], h = -d; h < e + d; h += r)
+                    for (var i = -a; i < f + a; i += r) {
+                        var g = h + s + (n() * o + c),
+                            u = i + s + (n() * o + c);
+                        b.push([l(g), l(u)])
+                    }
+                return b
+            }
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/browser-resolve/empty.js": [function() {}, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/chroma-js/chroma.js": [function(r, t, s) {
+            (function() {
+                var o, r, c, u, i, h, p, b, g, y, _, m, x, w, j, v, k, q, C, U, B, z, G, S, P, R, A, L, Y, E, T, O, N, X, D, K, M, V, W, F = Number.MAX_VALUE,
+                    I = Math.cos,
+                    Z = Math.pow,
+                    J = Math.PI,
+                    H = Number.NaN,
+                    $ = Math.round;
+                y = function(e, f, d, a) {
+                    return new o(e, f, d, a)
+                }, "undefined" != typeof t && null !== t && null != t.exports && (t.exports = y), "function" == typeof e && e.amd ? e([], function() {
+                    return y
+                }) : (X = "undefined" != typeof s && null !== s ? s : this, X.chroma = y), y.color = function(e, f, d, a) {
+                    return new o(e, f, d, a)
+                }, y.hsl = function(e, f, d, r) {
+                    return new o(e, f, d, r, "hsl")
+                }, y.hsv = function(e, f, d, r) {
+                    return new o(e, f, d, r, "hsv")
+                }, y.rgb = function(e, f, d, r) {
+                    return new o(e, f, d, r, "rgb")
+                }, y.hex = function(e) {
+                    return new o(e)
+                }, y.css = function(e) {
+                    return new o(e)
+                }, y.lab = function(e, f, d) {
+                    return new o(e, f, d, "lab")
+                }, y.lch = function(e, f, d) {
+                    return new o(e, f, d, "lch")
+                }, y.hsi = function(e, f, d) {
+                    return new o(e, f, d, "hsi")
+                }, y.gl = function(e, f, d, r) {
+                    return new o(255 * e, 255 * f, 255 * d, r, "gl")
+                }, y.interpolate = function(e, d, a, f) {
+                    return null == e || null == d ? "#000" : ("string" === D(e) && (e = new o(e)), "string" === D(d) && (d = new o(d)), e.interpolate(a, d, f))
+                }, y.mix = y.interpolate, y.contrast = function(e, f) {
+                    var d, a;
+                    return "string" === D(e) && (e = new o(e)), "string" === D(f) && (f = new o(f)), d = e.luminance(), a = f.luminance(), d > a ? (d + 0.05) / (a + 0.05) : (a + 0.05) / (d + 0.05)
+                }, y.luminance = function(e) {
+                    return y(e).luminance()
+                }, y._Color = o, o = function() {
+                    function e() {
+                        var e, f, d, a, r, t, n, l, s, i, o, c, b, h, g, u;
+                        for (r = this, d = [], (i = 0, o = arguments.length); i < o; i++) f = arguments[i], null != f && d.push(f);
+                        if (0 === d.length) c = [255, 0, 255, 1, "rgb"], n = c[0], l = c[1], s = c[2], e = c[3], a = c[4];
+                        else if ("array" === D(d[0])) {
+                            if (3 === d[0].length) b = d[0], n = b[0], l = b[1], s = b[2], e = 1;
+                            else if (4 === d[0].length) h = d[0], n = h[0], l = h[1], s = h[2], e = h[3];
+                            else throw "unknown input argument";
+                            a = null == (g = d[1]) ? "rgb" : g
+                        } else "string" === D(d[0]) ? (n = d[0], a = "hex") : "object" === D(d[0]) ? (u = d[0]._rgb, n = u[0], l = u[1], s = u[2], e = u[3], a = "rgb") : 3 <= d.length && (n = d[0], l = d[1], s = d[2]);
+                        3 === d.length ? (a = "rgb", e = 1) : 4 === d.length ? "string" === D(d[3]) ? (a = d[3], e = 1) : "number" === D(d[3]) && (a = "rgb", e = d[3]) : 5 === d.length && (e = d[3], a = d[4]), null == e && (e = 1), "rgb" === a ? r._rgb = [n, l, s, e] : "gl" === a ? r._rgb = [255 * n, 255 * l, 255 * s, e] : "hsl" === a ? (r._rgb = k(n, l, s), r._rgb[3] = e) : "hsv" === a ? (r._rgb = q(n, l, s), r._rgb[3] = e) : "hex" === a ? r._rgb = j(n) : "lab" === a ? (r._rgb = U(n, l, s), r._rgb[3] = e) : "lch" === a ? (r._rgb = G(n, l, s), r._rgb[3] = e) : "hsi" === a && (r._rgb = v(n, l, s), r._rgb[3] = e), t = _(r._rgb)
+                    }
+                    return e.prototype.rgb = function() {
+                        return this._rgb.slice(0, 3)
+                    }, e.prototype.rgba = function() {
+                        return this._rgb
+                    }, e.prototype.hex = function() {
+                        return A(this._rgb)
+                    }, e.prototype.toString = function() {
+                        return this.name()
+                    }, e.prototype.hsl = function() {
+                        return Y(this._rgb)
+                    }, e.prototype.hsv = function() {
+                        return E(this._rgb)
+                    }, e.prototype.lab = function() {
+                        return T(this._rgb)
+                    }, e.prototype.lch = function() {
+                        return O(this._rgb)
+                    }, e.prototype.hsi = function() {
+                        return L(this._rgb)
+                    }, e.prototype.gl = function() {
+                        return [this._rgb[0] / 255, this._rgb[1] / 255, this._rgb[2] / 255, this._rgb[3]]
+                    }, e.prototype.luminance = function(f, a) {
+                        var r, t, n, s;
+                        return (null == a && (a = "rgb"), !arguments.length) ? P(this._rgb) : (0 === f && (this._rgb = [0, 0, 0, this._rgb[3]]), 1 === f && (this._rgb = [255, 255, 255, this._rgb[3]]), r = P(this._rgb), t = 1e-7, n = 20, s = function(e, r) {
+                            var l, i;
+                            return i = e.interpolate(0.5, r, a), l = i.luminance(), d(f - l) < t || !n-- ? i : l > f ? s(e, i) : s(i, r)
+                        }, this._rgb = (r > f ? s(new e("black"), this) : s(this, new e("white"))).rgba(), this)
+                    }, e.prototype.name = function() {
+                        var e, f;
+                        for (f in e = this.hex(), y.colors)
+                            if (e === y.colors[f]) return f;
+                        return e
+                    }, e.prototype.alpha = function(e) {
+                        return arguments.length ? (this._rgb[3] = e, this) : this._rgb[3]
+                    }, e.prototype.css = function(e) {
+                        var f, d, a, r;
+                        return (null == e && (e = "rgb"), d = this, a = d._rgb, 3 === e.length && 1 > a[3] && (e += "a"), "rgb" === e) ? e + "(" + a.slice(0, 3).map(Math.round).join(",") + ")" : "rgba" === e ? e + "(" + a.slice(0, 3).map(Math.round).join(",") + "," + a[3] + ")" : "hsl" === e || "hsla" === e ? (f = d.hsl(), r = function(e) {
+                            return $(100 * e) / 100
+                        }, f[0] = r(f[0]), f[1] = r(100 * f[1]) + "%", f[2] = r(100 * f[2]) + "%", 4 === e.length && (f[3] = a[3]), e + "(" + f.join(",") + ")") : void 0
+                    }, e.prototype.interpolate = function(d, f, a) {
+                        var r, t, n, l, s, i, o, c, b, h, g, u, p, m;
+                        if (c = this, null == a && (a = "rgb"), "string" === D(f) && (f = new e(f)), "hsl" === a || "hsv" === a || "lch" === a || "hsi" === a) "hsl" === a ? (p = c.hsl(), m = f.hsl()) : "hsv" === a ? (p = c.hsv(), m = f.hsv()) : "hsi" === a ? (p = c.hsi(), m = f.hsi()) : "lch" === a && (p = c.lch(), m = f.lch()), "h" === a.substr(0, 1) ? (n = p[0], g = p[1], i = p[2], l = m[0], u = m[1], o = m[2]) : (i = p[0], g = p[1], n = p[2], o = m[0], u = m[1], l = m[2]), isNaN(n) || isNaN(l) ? isNaN(n) ? isNaN(l) ? t = H : (t = l, (1 === i || 0 === i) && "hsv" !== a && (h = u)) : (t = n, (1 === o || 0 === o) && "hsv" !== a && (h = g)) : (r = l > n && 180 < l - n ? l - (n + 360) : l < n && 180 < n - l ? l + 360 - n : l - n, t = n + d * r), null == h && (h = g + d * (u - g)), s = i + d * (o - i), b = "h" === a.substr(0, 1) ? new e(t, h, s, a) : new e(s, h, t, a);
+                        else if ("rgb" === a) p = c._rgb, m = f._rgb, b = new e(p[0] + d * (m[0] - p[0]), p[1] + d * (m[1] - p[1]), p[2] + d * (m[2] - p[2]), a);
+                        else if ("lab" === a) p = c.lab(), m = f.lab(), b = new e(p[0] + d * (m[0] - p[0]), p[1] + d * (m[1] - p[1]), p[2] + d * (m[2] - p[2]), a);
+                        else throw "color mode " + a + " is not supported";
+                        return b.alpha(c.alpha() + d * (f.alpha() - c.alpha())), b
+                    }, e.prototype.premultiply = function() {
+                        var e, f;
+                        return f = this.rgb(), e = this.alpha(), y(f[0] * e, f[1] * e, f[2] * e, e)
+                    }, e.prototype.darken = function(e) {
+                        var f, d;
+                        return null == e && (e = 20), d = this, f = d.lch(), f[0] -= e, y.lch(f).alpha(d.alpha())
+                    }, e.prototype.darker = function(e) {
+                        return this.darken(e)
+                    }, e.prototype.brighten = function(e) {
+                        return null == e && (e = 20), this.darken(-e)
+                    }, e.prototype.brighter = function(e) {
+                        return this.brighten(e)
+                    }, e.prototype.saturate = function(e) {
+                        var f, d;
+                        return null == e && (e = 20), d = this, f = d.lch(), f[1] += e, y.lch(f).alpha(d.alpha())
+                    }, e.prototype.desaturate = function(e) {
+                        return null == e && (e = 20), this.saturate(-e)
+                    }, e
+                }(), _ = function(e) {
+                    for (var f in e) 3 > f ? (0 > e[f] && (e[f] = 0), 255 < e[f] && (e[f] = 255)) : 3 === f && (0 > e[f] && (e[f] = 0), 1 < e[f] && (e[f] = 1));
+                    return e
+                }, w = function(e) {
+                    var f, d, a, r, t, n, l, s;
+                    if (e = e.toLowerCase(), null != y.colors && y.colors[e]) return j(y.colors[e]);
+                    if (a = e.match(/rgb\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*\)/)) {
+                        for (r = a.slice(1, 4), d = t = 0; 2 >= t; d = ++t) r[d] = +r[d];
+                        r[3] = 1
+                    } else if (a = e.match(/rgba\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*,\s*([01]|[01]?\.\d+)\)/))
+                        for (r = a.slice(1, 5), d = n = 0; 3 >= n; d = ++n) r[d] = +r[d];
+                    else if (a = e.match(/rgb\(\s*(\-?\d+(?:\.\d+)?)%,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*\)/)) {
+                        for (r = a.slice(1, 4), d = l = 0; 2 >= l; d = ++l) r[d] = $(2.55 * r[d]);
+                        r[3] = 1
+                    } else if (a = e.match(/rgba\(\s*(\-?\d+(?:\.\d+)?)%,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)/)) {
+                        for (r = a.slice(1, 5), d = s = 0; 2 >= s; d = ++s) r[d] = $(2.55 * r[d]);
+                        r[3] = +r[3]
+                    } else(a = e.match(/hsl\(\s*(\-?\d+(?:\.\d+)?),\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*\)/)) ? (f = a.slice(1, 4), f[1] *= 0.01, f[2] *= 0.01, r = k(f), r[3] = 1) : (a = e.match(/hsla\(\s*(\-?\d+(?:\.\d+)?),\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)/)) && (f = a.slice(1, 4), f[1] *= 0.01, f[2] *= 0.01, r = k(f), r[3] = +a[4]);
+                    return r
+                }, j = function(e) {
+                    var f, d, a, t, r, n;
+                    if (e.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/)) return (4 === e.length || 7 === e.length) && (e = e.substr(1)), 3 === e.length && (e = e.split(""), e = e[0] + e[0] + e[1] + e[1] + e[2] + e[2]), n = parseInt(e, 16), t = n >> 16, a = 255 & n >> 8, d = 255 & n, [t, a, d, 1];
+                    if (e.match(/^#?([A-Fa-f0-9]{8})$/)) return 9 === e.length && (e = e.substr(1)), n = parseInt(e, 16), t = 255 & n >> 24, a = 255 & n >> 16, d = 255 & n >> 8, f = 255 & n, [t, a, d, f];
+                    if (r = w(e)) return r;
+                    throw "unknown color: " + e
+                }, v = function(e, f, d) {
+                    var a, t, n, r;
+                    return r = K(arguments), e = r[0], f = r[1], d = r[2], e /= 360, e < 1 / 3 ? (a = (1 - f) / 3, n = (1 + f * x(u * e) / x(c - u * e)) / 3, t = 1 - (a + n)) : e < 2 / 3 ? (e -= 1 / 3, n = (1 - f) / 3, t = (1 + f * x(u * e) / x(c - u * e)) / 3, a = 1 - (n + t)) : (e -= 2 / 3, t = (1 - f) / 3, a = (1 + f * x(u * e) / x(c - u * e)) / 3, n = 1 - (t + a)), n = S(3 * (d * n)), t = S(3 * (d * t)), a = S(3 * (d * a)), [255 * n, 255 * t, 255 * a]
+                }, k = function() {
+                    var e, f, d, a, t, n, l, r, s, i, o, c, b, h;
+                    if (b = K(arguments), a = b[0], r = b[1], n = b[2], 0 === r) l = d = e = 255 * n;
+                    else {
+                        for (o = [0, 0, 0], f = [0, 0, 0], i = 0.5 > n ? n * (1 + r) : n + r - n * r, s = 2 * n - i, a /= 360, o[0] = a + 1 / 3, o[1] = a, o[2] = a - 1 / 3, t = c = 0; 2 >= c; t = ++c) 0 > o[t] && (o[t] += 1), 1 < o[t] && (o[t] -= 1), f[t] = 1 > 6 * o[t] ? s + 6 * (i - s) * o[t] : 1 > 2 * o[t] ? i : 2 > 3 * o[t] ? s + 6 * ((i - s) * (2 / 3 - o[t])) : s;
+                        h = [$(255 * f[0]), $(255 * f[1]), $(255 * f[2])], l = h[0], d = h[1], e = h[2]
+                    }
+                    return [l, d, e]
+                }, q = function() {
+                    var e, d, f, a, n, i, o, c, r, s, t, b, h, g, u, p, m, y;
+                    return b = K(arguments), a = b[0], r = b[1], t = b[2], t *= 255, 0 === r ? c = f = e = t : (360 === a && (a = 0), 360 < a && (a -= 360), 0 > a && (a += 360), a /= 60, n = l(a), d = a - n, i = t * (1 - r), o = t * (1 - r * d), s = t * (1 - r * (1 - d)), 0 === n ? (h = [t, s, i], c = h[0], f = h[1], e = h[2]) : 1 === n ? (g = [o, t, i], c = g[0], f = g[1], e = g[2]) : 2 === n ? (u = [i, t, s], c = u[0], f = u[1], e = u[2]) : 3 === n ? (p = [i, o, t], c = p[0], f = p[1], e = p[2]) : 4 === n ? (m = [s, i, t], c = m[0], f = m[1], e = m[2]) : 5 === n ? (y = [t, i, o], c = y[0], f = y[1], e = y[2]) : void 0), (c = $(c), f = $(f), e = $(e), [c, f, e])
+                }, r = 18, i = 0.95047, h = 1, p = 1.08883, C = function() {
+                    var e, d, a, r, t, n;
+                    return n = K(arguments), t = n[0], e = n[1], d = n[2], a = f(e * e + d * d), r = 180 * (Math.atan2(d, e) / J), [t, a, r]
+                }, U = function(e, f, d) {
+                    var a, t, r, n, l, s, o;
+                    return void 0 !== e && 3 === e.length && (s = e, e = s[0], f = s[1], d = s[2]), void 0 !== e && 3 === e.length && (o = e, e = o[0], f = o[1], d = o[2]), n = (e + 16) / 116, r = n + f / 500, l = n - d / 200, r = B(r) * i, n = B(n) * h, l = B(l) * p, t = V(3.2404542 * r - 1.5371385 * n - 0.4985314 * l), a = V(-0.969266 * r + 1.8760108 * n + 0.041556 * l), d = V(0.0556434 * r - 0.2040259 * n + 1.0572252 * l), [S(t, 0, 255), S(a, 0, 255), S(d, 0, 255), 1]
+                }, B = function(e) {
+                    return 0.206893034 < e ? e * e * e : (e - 4 / 29) / 7.787037
+                }, V = function(e) {
+                    return $(255 * (0.00304 >= e ? 12.92 * e : 1.055 * Z(e, 1 / 2.4) - 0.055))
+                }, z = function() {
+                    var e, f, d, a;
+                    return a = K(arguments), d = a[0], e = a[1], f = a[2], f = f * J / 180, [d, I(f) * e, Math.sin(f) * e]
+                }, G = function(e, f, d) {
+                    var t, n, a, l, s, r, i;
+                    return r = z(e, f, d), t = r[0], n = r[1], a = r[2], i = U(t, n, a), s = i[0], l = i[1], a = i[2], [S(s, 0, 255), S(l, 0, 255), S(a, 0, 255)]
+                }, P = function(e, f, d) {
+                    var a;
+                    return a = K(arguments), e = a[0], f = a[1], d = a[2], e = R(e), f = R(f), d = R(d), 0.2126 * e + 0.7152 * f + 0.0722 * d
+                }, R = function(e) {
+                    return e /= 255, 0.03928 >= e ? e / 12.92 : Z((e + 0.055) / 1.055, 2.4)
+                }, A = function() {
+                    var e, f, d, a, r, t;
+                    return t = K(arguments), d = t[0], f = t[1], e = t[2], r = d << 16 | f << 8 | e, a = "000000" + r.toString(16), "#" + a.substr(a.length - 6)
+                }, L = function() {
+                    var e, d, t, n, l, i, o, r, s;
+                    return s = K(arguments), o = s[0], t = s[1], d = s[2], e = 2 * J, o /= 255, t /= 255, d /= 255, i = a(o, t, d), l = (o + t + d) / 3, r = 1 - i / l, 0 === r ? n = 0 : (n = (o - t + (o - d)) / 2, n /= f((o - t) * (o - t) + (o - d) * (t - d)), n = Math.acos(n), d > t && (n = e - n), n /= e), [360 * n, r, l]
+                }, Y = function(e, f, d) {
+                    var r, t, l, i, o, s;
+                    return void 0 !== e && 3 <= e.length && (s = e, e = s[0], f = s[1], d = s[2]), e /= 255, f /= 255, d /= 255, i = a(e, f, d), l = n(e, f, d), t = (l + i) / 2, l === i ? (o = 0, r = H) : o = 0.5 > t ? (l - i) / (l + i) : (l - i) / (2 - l - i), e === l ? r = (f - d) / (l - i) : f === l ? r = 2 + (d - e) / (l - i) : d === l && (r = 4 + (e - f) / (l - i)), r *= 60, 0 > r && (r += 360), [r, o, t]
+                }, E = function() {
+                    var e, f, d, t, l, i, o, r, s, c;
+                    return c = K(arguments), o = c[0], d = c[1], e = c[2], i = a(o, d, e), l = n(o, d, e), f = l - i, s = l / 255, 0 === l ? (t = H, r = 0) : (r = f / l, o === l && (t = (d - e) / f), d === l && (t = 2 + (e - o) / f), e === l && (t = 4 + (o - d) / f), t *= 60, 0 > t && (t += 360)), [t, r, s]
+                }, T = function() {
+                    var e, f, d, a, r, t, n;
+                    return n = K(arguments), d = n[0], f = n[1], e = n[2], d = N(d), f = N(f), e = N(e), a = M((0.4124564 * d + 0.3575761 * f + 0.1804375 * e) / i), r = M((0.2126729 * d + 0.7151522 * f + 0.072175 * e) / h), t = M((0.0193339 * d + 0.119192 * f + 0.9503041 * e) / p), [116 * r - 16, 500 * (a - r), 200 * (r - t)]
+                }, N = function(e) {
+                    return 0.04045 >= (e /= 255) ? e / 12.92 : Z((e + 0.055) / 1.055, 2.4)
+                }, M = function(e) {
+                    return 0.008856 < e ? Z(e, 1 / 3) : 7.787037 * e + 4 / 29
+                }, O = function() {
+                    var e, f, d, a, t, r, n;
+                    return r = K(arguments), t = r[0], d = r[1], f = r[2], n = T(t, d, f), a = n[0], e = n[1], f = n[2], C(a, e, f)
+                }, y.scale = function(e, r) {
+                    var t, s, f, i, o, c, b, h, g, u, p, m, x, _, w, j, v, q, k, C, z;
+                    return j = "rgb", v = y("#ccc"), z = 0, x = !1, m = [0, 1], u = [], k = !1, C = [], w = 0, _ = 1, p = !1, q = 0, g = {}, c = function(e, f) {
+                        var d, a, r, t, n, l, s;
+                        if (null == e && (e = ["#ddd", "#222"]), null != e && "string" === D(e) && null != (null == (n = y.brewer) ? void 0 : n[e]) && (e = y.brewer[e]), "array" === D(e)) {
+                            for (e = e.slice(0), d = r = 0, l = e.length - 1; 0 <= l ? r <= l : r >= l; d = 0 <= l ? ++r : --r) a = e[d], "string" === D(a) && (e[d] = y(a));
+                            if (null != f) C = f;
+                            else
+                                for (C = [], d = t = 0, s = e.length - 1; 0 <= s ? t <= s : t >= s; d = 0 <= s ? ++t : --t) C.push(d / (e.length - 1))
+                        }
+                        return o(), u = e
+                    }, b = function(e) {
+                        return null == e && (e = []), m = e, w = e[0], _ = e[e.length - 1], o(), q = 2 === e.length ? 0 : e.length - 1
+                    }, f = function(e) {
+                        var f, d;
+                        if (null != m) {
+                            for (d = m.length - 1, f = 0; f < d && e >= m[f];) f++;
+                            return f - 1
+                        }
+                        return 0
+                    }, h = function(e) {
+                        return e
+                    }, t = function(e) {
+                        var d, a, r, t, n;
+                        return n = e, 2 < m.length && (t = m.length - 1, d = f(e), r = m[0] + (m[1] - m[0]) * (0 + 0.5 * z), a = m[t - 1] + (m[t] - m[t - 1]) * (1 - 0.5 * z), n = w + (m[d] + 0.5 * (m[d + 1] - m[d]) - r) / (a - r) * (_ - w)), n
+                    }, i = function(e, d) {
+                        var r, s, o, c, i, b, p, t, x;
+                        if (null == d && (d = !1), isNaN(e)) return v;
+                        if (d ? p = e : 2 < m.length ? (r = f(e), p = r / (q - 1)) : (p = o = w === _ ? 0 : (e - w) / (_ - w), p = o = (e - w) / (_ - w), p = a(1, n(0, p))), d || (p = h(p)), i = l(1e4 * p), g[i]) s = g[i];
+                        else {
+                            if ("array" === D(u))
+                                for (c = t = 0, x = C.length - 1; 0 <= x ? t <= x : t >= x; c = 0 <= x ? ++t : --t) {
+                                    if (b = C[c], p <= b) {
+                                        s = u[c];
+                                        break
+                                    }
+                                    if (p >= b && c === C.length - 1) {
+                                        s = u[c];
+                                        break
+                                    }
+                                    if (p > b && p < C[c + 1]) {
+                                        p = (p - b) / (C[c + 1] - b), s = y.interpolate(u[c], u[c + 1], p, j);
+                                        break
+                                    }
+                                } else "function" === D(u) && (s = u(p));
+                            g[i] = s
+                        }
+                        return s
+                    }, o = function() {
+                        return g = {}
+                    }, c(e, r), s = function(e) {
+                        var f;
+                        return f = i(e), k && f[k] ? f[k]() : f
+                    }, s.domain = function(e, f, a, r) {
+                        var t;
+                        return (null == a && (a = "e"), !arguments.length) ? m : (null != f && (t = y.analyze(e, r), e = 0 === f ? [t.min, t.max] : y.limits(t, a, f)), b(e), s)
+                    }, s.mode = function(e) {
+                        return arguments.length ? (j = e, o(), s) : j
+                    }, s.range = function(e, f) {
+                        return c(e, f), s
+                    }, s.out = function(e) {
+                        return k = e, s
+                    }, s.spread = function(e) {
+                        return arguments.length ? (z = e, s) : z
+                    }, s.correctLightness = function(e) {
+                        return arguments.length ? (p = e, o(), h = p ? function(e) {
+                            var f, a, r, t, n, l, s, o, c;
+                            for (f = i(0, !0).lab()[0], a = i(1, !0).lab()[0], s = f > a, r = i(e, !0).lab()[0], n = f + (a - f) * e, t = r - n, o = 0, c = 1, l = 20; 0.01 < d(t) && 0 < l--;)(function() {
+                                return s && (t *= -1), 0 > t ? (o = e, e += 0.5 * (c - e)) : (c = e, e += 0.5 * (o - e)), r = i(e, !0).lab()[0], t = r - n
+                            })();
+                            return e
+                        } : function(e) {
+                            return e
+                        }, s) : p
+                    }, s.colors = function(f) {
+                        var d, a, r, t, n, l;
+                        if (null == f && (f = "hex"), e = [], a = [], 2 < m.length)
+                            for (d = r = 1, l = m.length; 1 <= l ? r < l : r > l; d = 1 <= l ? ++r : --r) a.push(0.5 * (m[d - 1] + m[d]));
+                        else a = m;
+                        for (t = 0, n = a.length; t < n; t++) d = a[t], e.push(s(d)[f]());
+                        return e
+                    }, s
+                }, null == (W = y.scales) && (y.scales = {}), y.scales.cool = function() {
+                    return y.scale([y.hsl(180, 1, .9), y.hsl(250, .7, .4)])
+                }, y.scales.hot = function() {
+                    return y.scale(["#000", "#f00", "#ff0", "#fff"], [0, 0.25, 0.75, 1]).mode("rgb")
+                }, y.analyze = function(e, f, d) {
+                    var a, t, n, r, l, s, i;
+                    if (n = {
+                            min: F,
+                            max: -1 * F,
+                            sum: 0,
+                            values: [],
+                            count: 0
+                        }, null == d && (d = function() {
+                            return !0
+                        }), a = function(e) {
+                            null == e || isNaN(e) || (n.values.push(e), n.sum += e, e < n.min && (n.min = e), e > n.max && (n.max = e), n.count += 1)
+                        }, l = function(e, r) {
+                            if (d(e, r)) return null != f && "function" === D(f) ? a(f(e)) : null != f && "string" === D(f) || "number" === D(f) ? a(e[f]) : a(e)
+                        }, "array" === D(e))
+                        for (s = 0, i = e.length; s < i; s++) r = e[s], l(r);
+                    else
+                        for (t in e) r = e[t], l(r, t);
+                    return n.domain = [n.min, n.max], n.limits = function(e, f) {
+                        return y.limits(n, e, f)
+                    }, n
+                }, y.limits = function(e, f, a) {
+                    var r, t, s, o, c, b, h, i, g, u, m, x, _, w, j, v, n, k, q, p, C, z, U, B, G, S, P, R, A, L, Y, E, T, O, N, X, K, M, V, W, I, J, H, $, Q, ee, fe, de, ae, re, te, ne, le, se, ie, oe, ce = Math.log,
+                        be = Math.LOG10E;
+                    if (null == f && (f = "equal"), null == a && (a = 7), "array" === D(e) && (e = y.analyze(e)), _ = e.min, m = e.max, U = e.sum, S = e.values.sort(function(e, f) {
+                            return e - f
+                        }), u = [], "c" === f.substr(0, 1) && (u.push(_), u.push(m)), "e" === f.substr(0, 1)) {
+                        for (u.push(_), h = P = 1, K = a - 1; 1 <= K ? P <= K : P >= K; h = 1 <= K ? ++P : --P) u.push(_ + h / a * (m - _));
+                        u.push(m)
+                    } else if ("l" === f.substr(0, 1)) {
+                        if (0 >= _) throw "Logarithmic scales are only possible for values > 0";
+                        for (w = be * ce(_), x = be * ce(m), u.push(_), (h = R = 1, $ = a - 1); 1 <= $ ? R <= $ : R >= $; h = 1 <= $ ? ++R : --R) u.push(Z(10, w + h / a * (x - w)));
+                        u.push(m)
+                    } else if ("q" === f.substr(0, 1)) {
+                        for (u.push(_), h = A = 1, Q = a - 1; 1 <= Q ? A <= Q : A >= Q; h = 1 <= Q ? ++A : --A) q = S.length * h / a, p = l(q), p === q ? u.push(S[p]) : (C = q - p, u.push(S[p] * C + S[p + 1] * (1 - C)));
+                        u.push(m)
+                    } else if ("k" === f.substr(0, 1)) {
+                        for (v = S.length, r = Array(v), c = Array(a), z = !0, n = 0, s = null, s = [], s.push(_), (h = L = 1, ee = a - 1); 1 <= ee ? L <= ee : L >= ee; h = 1 <= ee ? ++L : --L) s.push(_ + h / a * (m - _));
+                        for (s.push(m); z;) {
+                            for (i = Y = 0, fe = a - 1; 0 <= fe ? Y <= fe : Y >= fe; i = 0 <= fe ? ++Y : --Y) c[i] = 0;
+                            for (h = E = 0, de = v - 1; 0 <= de ? E <= de : E >= de; h = 0 <= de ? ++E : --E) {
+                                for (G = S[h], j = F, (i = T = 0, ae = a - 1); 0 <= ae ? T <= ae : T >= ae; i = 0 <= ae ? ++T : --T) b = d(s[i] - G), b < j && (j = b, t = i);
+                                c[t]++, r[h] = t
+                            }
+                            for (k = Array(a), i = O = 0, re = a - 1; 0 <= re ? O <= re : O >= re; i = 0 <= re ? ++O : --O) k[i] = null;
+                            for (h = N = 0, te = v - 1; 0 <= te ? N <= te : N >= te; h = 0 <= te ? ++N : --N) o = r[h], null === k[o] ? k[o] = S[h] : k[o] += S[h];
+                            for (i = X = 0, M = a - 1; 0 <= M ? X <= M : X >= M; i = 0 <= M ? ++X : --X) k[i] *= 1 / c[i];
+                            for (z = !1, i = ne = 0, V = a - 1; 0 <= V ? ne <= V : ne >= V; i = 0 <= V ? ++ne : --ne)
+                                if (k[i] !== s[h]) {
+                                    z = !0;
+                                    break
+                                } s = k, n++, 200 < n && (z = !1)
+                        }
+                        for (g = {}, i = le = 0, W = a - 1; 0 <= W ? le <= W : le >= W; i = 0 <= W ? ++le : --le) g[i] = [];
+                        for (h = se = 0, I = v - 1; 0 <= I ? se <= I : se >= I; h = 0 <= I ? ++se : --se) o = r[h], g[o].push(S[h]);
+                        for (B = [], i = ie = 0, J = a - 1; 0 <= J ? ie <= J : ie >= J; i = 0 <= J ? ++ie : --ie) B.push(g[i][0]), B.push(g[i][g[i].length - 1]);
+                        for (B = B.sort(function(e, f) {
+                                return e - f
+                            }), u.push(B[0]), (h = oe = 1, H = B.length - 1); oe <= H; h = oe += 2) isNaN(B[h]) || u.push(B[h])
+                    }
+                    return u
+                }, y.brewer = g = {
+                    OrRd: ["#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548", "#d7301f", "#b30000", "#7f0000"],
+                    PuBu: ["#fff7fb", "#ece7f2", "#d0d1e6", "#a6bddb", "#74a9cf", "#3690c0", "#0570b0", "#045a8d", "#023858"],
+                    BuPu: ["#f7fcfd", "#e0ecf4", "#bfd3e6", "#9ebcda", "#8c96c6", "#8c6bb1", "#88419d", "#810f7c", "#4d004b"],
+                    Oranges: ["#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"],
+                    BuGn: ["#f7fcfd", "#e5f5f9", "#ccece6", "#99d8c9", "#66c2a4", "#41ae76", "#238b45", "#006d2c", "#00441b"],
+                    YlOrBr: ["#ffffe5", "#fff7bc", "#fee391", "#fec44f", "#fe9929", "#ec7014", "#cc4c02", "#993404", "#662506"],
+                    YlGn: ["#ffffe5", "#f7fcb9", "#d9f0a3", "#addd8e", "#78c679", "#41ab5d", "#238443", "#006837", "#004529"],
+                    Reds: ["#fff5f0", "#fee0d2", "#fcbba1", "#fc9272", "#fb6a4a", "#ef3b2c", "#cb181d", "#a50f15", "#67000d"],
+                    RdPu: ["#fff7f3", "#fde0dd", "#fcc5c0", "#fa9fb5", "#f768a1", "#dd3497", "#ae017e", "#7a0177", "#49006a"],
+                    Greens: ["#f7fcf5", "#e5f5e0", "#c7e9c0", "#a1d99b", "#74c476", "#41ab5d", "#238b45", "#006d2c", "#00441b"],
+                    YlGnBu: ["#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb", "#41b6c4", "#1d91c0", "#225ea8", "#253494", "#081d58"],
+                    Purples: ["#fcfbfd", "#efedf5", "#dadaeb", "#bcbddc", "#9e9ac8", "#807dba", "#6a51a3", "#54278f", "#3f007d"],
+                    GnBu: ["#f7fcf0", "#e0f3db", "#ccebc5", "#a8ddb5", "#7bccc4", "#4eb3d3", "#2b8cbe", "#0868ac", "#084081"],
+                    Greys: ["#ffffff", "#f0f0f0", "#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"],
+                    YlOrRd: ["#ffffcc", "#ffeda0", "#fed976", "#feb24c", "#fd8d3c", "#fc4e2a", "#e31a1c", "#bd0026", "#800026"],
+                    PuRd: ["#f7f4f9", "#e7e1ef", "#d4b9da", "#c994c7", "#df65b0", "#e7298a", "#ce1256", "#980043", "#67001f"],
+                    Blues: ["#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"],
+                    PuBuGn: ["#fff7fb", "#ece2f0", "#d0d1e6", "#a6bddb", "#67a9cf", "#3690c0", "#02818a", "#016c59", "#014636"],
+                    Spectral: ["#9e0142", "#d53e4f", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#e6f598", "#abdda4", "#66c2a5", "#3288bd", "#5e4fa2"],
+                    RdYlGn: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#d9ef8b", "#a6d96a", "#66bd63", "#1a9850", "#006837"],
+                    RdBu: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#f7f7f7", "#d1e5f0", "#92c5de", "#4393c3", "#2166ac", "#053061"],
+                    PiYG: ["#8e0152", "#c51b7d", "#de77ae", "#f1b6da", "#fde0ef", "#f7f7f7", "#e6f5d0", "#b8e186", "#7fbc41", "#4d9221", "#276419"],
+                    PRGn: ["#40004b", "#762a83", "#9970ab", "#c2a5cf", "#e7d4e8", "#f7f7f7", "#d9f0d3", "#a6dba0", "#5aae61", "#1b7837", "#00441b"],
+                    RdYlBu: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4", "#313695"],
+                    BrBG: ["#543005", "#8c510a", "#bf812d", "#dfc27d", "#f6e8c3", "#f5f5f5", "#c7eae5", "#80cdc1", "#35978f", "#01665e", "#003c30"],
+                    RdGy: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#ffffff", "#e0e0e0", "#bababa", "#878787", "#4d4d4d", "#1a1a1a"],
+                    PuOr: ["#7f3b08", "#b35806", "#e08214", "#fdb863", "#fee0b6", "#f7f7f7", "#d8daeb", "#b2abd2", "#8073ac", "#542788", "#2d004b"],
+                    Set2: ["#66c2a5", "#fc8d62", "#8da0cb", "#e78ac3", "#a6d854", "#ffd92f", "#e5c494", "#b3b3b3"],
+                    Accent: ["#7fc97f", "#beaed4", "#fdc086", "#ffff99", "#386cb0", "#f0027f", "#bf5b17", "#666666"],
+                    Set1: ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999"],
+                    Set3: ["#8dd3c7", "#ffffb3", "#bebada", "#fb8072", "#80b1d3", "#fdb462", "#b3de69", "#fccde5", "#d9d9d9", "#bc80bd", "#ccebc5", "#ffed6f"],
+                    Dark2: ["#1b9e77", "#d95f02", "#7570b3", "#e7298a", "#66a61e", "#e6ab02", "#a6761d", "#666666"],
+                    Paired: ["#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f", "#ff7f00", "#cab2d6", "#6a3d9a", "#ffff99", "#b15928"],
+                    Pastel2: ["#b3e2cd", "#fdcdac", "#cbd5e8", "#f4cae4", "#e6f5c9", "#fff2ae", "#f1e2cc", "#cccccc"],
+                    Pastel1: ["#fbb4ae", "#b3cde3", "#ccebc5", "#decbe4", "#fed9a6", "#ffffcc", "#e5d8bd", "#fddaec", "#f2f2f2"]
+                }, y.colors = m = {
+                    indigo: "#4b0082",
+                    gold: "#ffd700",
+                    hotpink: "#ff69b4",
+                    firebrick: "#b22222",
+                    indianred: "#cd5c5c",
+                    yellow: "#ffff00",
+                    mistyrose: "#ffe4e1",
+                    darkolivegreen: "#556b2f",
+                    olive: "#808000",
+                    darkseagreen: "#8fbc8f",
+                    pink: "#ffc0cb",
+                    tomato: "#ff6347",
+                    lightcoral: "#f08080",
+                    orangered: "#ff4500",
+                    navajowhite: "#ffdead",
+                    lime: "#00ff00",
+                    palegreen: "#98fb98",
+                    darkslategrey: "#2f4f4f",
+                    greenyellow: "#adff2f",
+                    burlywood: "#deb887",
+                    seashell: "#fff5ee",
+                    mediumspringgreen: "#00fa9a",
+                    fuchsia: "#ff00ff",
+                    papayawhip: "#ffefd5",
+                    blanchedalmond: "#ffebcd",
+                    chartreuse: "#7fff00",
+                    dimgray: "#696969",
+                    black: "#000000",
+                    peachpuff: "#ffdab9",
+                    springgreen: "#00ff7f",
+                    aquamarine: "#7fffd4",
+                    white: "#ffffff",
+                    orange: "#ffa500",
+                    lightsalmon: "#ffa07a",
+                    darkslategray: "#2f4f4f",
+                    brown: "#a52a2a",
+                    ivory: "#fffff0",
+                    dodgerblue: "#1e90ff",
+                    peru: "#cd853f",
+                    lawngreen: "#7cfc00",
+                    chocolate: "#d2691e",
+                    crimson: "#dc143c",
+                    forestgreen: "#228b22",
+                    darkgrey: "#a9a9a9",
+                    lightseagreen: "#20b2aa",
+                    cyan: "#00ffff",
+                    mintcream: "#f5fffa",
+                    silver: "#c0c0c0",
+                    antiquewhite: "#faebd7",
+                    mediumorchid: "#ba55d3",
+                    skyblue: "#87ceeb",
+                    gray: "#808080",
+                    darkturquoise: "#00ced1",
+                    goldenrod: "#daa520",
+                    darkgreen: "#006400",
+                    floralwhite: "#fffaf0",
+                    darkviolet: "#9400d3",
+                    darkgray: "#a9a9a9",
+                    moccasin: "#ffe4b5",
+                    saddlebrown: "#8b4513",
+                    grey: "#808080",
+                    darkslateblue: "#483d8b",
+                    lightskyblue: "#87cefa",
+                    lightpink: "#ffb6c1",
+                    mediumvioletred: "#c71585",
+                    slategrey: "#708090",
+                    red: "#ff0000",
+                    deeppink: "#ff1493",
+                    limegreen: "#32cd32",
+                    darkmagenta: "#8b008b",
+                    palegoldenrod: "#eee8aa",
+                    plum: "#dda0dd",
+                    turquoise: "#40e0d0",
+                    lightgrey: "#d3d3d3",
+                    lightgoldenrodyellow: "#fafad2",
+                    darkgoldenrod: "#b8860b",
+                    lavender: "#e6e6fa",
+                    maroon: "#800000",
+                    yellowgreen: "#9acd32",
+                    sandybrown: "#f4a460",
+                    thistle: "#d8bfd8",
+                    violet: "#ee82ee",
+                    navy: "#000080",
+                    magenta: "#ff00ff",
+                    dimgrey: "#696969",
+                    tan: "#d2b48c",
+                    rosybrown: "#bc8f8f",
+                    olivedrab: "#6b8e23",
+                    blue: "#0000ff",
+                    lightblue: "#add8e6",
+                    ghostwhite: "#f8f8ff",
+                    honeydew: "#f0fff0",
+                    cornflowerblue: "#6495ed",
+                    slateblue: "#6a5acd",
+                    linen: "#faf0e6",
+                    darkblue: "#00008b",
+                    powderblue: "#b0e0e6",
+                    seagreen: "#2e8b57",
+                    darkkhaki: "#bdb76b",
+                    snow: "#fffafa",
+                    sienna: "#a0522d",
+                    mediumblue: "#0000cd",
+                    royalblue: "#4169e1",
+                    lightcyan: "#e0ffff",
+                    green: "#008000",
+                    mediumpurple: "#9370db",
+                    midnightblue: "#191970",
+                    cornsilk: "#fff8dc",
+                    paleturquoise: "#afeeee",
+                    bisque: "#ffe4c4",
+                    slategray: "#708090",
+                    darkcyan: "#008b8b",
+                    khaki: "#f0e68c",
+                    wheat: "#f5deb3",
+                    teal: "#008080",
+                    darkorchid: "#9932cc",
+                    deepskyblue: "#00bfff",
+                    salmon: "#fa8072",
+                    darkred: "#8b0000",
+                    steelblue: "#4682b4",
+                    palevioletred: "#db7093",
+                    lightslategray: "#778899",
+                    aliceblue: "#f0f8ff",
+                    lightslategrey: "#778899",
+                    lightgreen: "#90ee90",
+                    orchid: "#da70d6",
+                    gainsboro: "#dcdcdc",
+                    mediumseagreen: "#3cb371",
+                    lightgray: "#d3d3d3",
+                    mediumturquoise: "#48d1cc",
+                    lemonchiffon: "#fffacd",
+                    cadetblue: "#5f9ea0",
+                    lightyellow: "#ffffe0",
+                    lavenderblush: "#fff0f5",
+                    coral: "#ff7f50",
+                    purple: "#800080",
+                    aqua: "#00ffff",
+                    whitesmoke: "#f5f5f5",
+                    mediumslateblue: "#7b68ee",
+                    darkorange: "#ff8c00",
+                    mediumaquamarine: "#66cdaa",
+                    darksalmon: "#e9967a",
+                    beige: "#f5f5dc",
+                    blueviolet: "#8a2be2",
+                    azure: "#f0ffff",
+                    lightsteelblue: "#b0c4de",
+                    oldlace: "#fdf5e6"
+                }, D = function() {
+                    var e, f, d, a, r;
+                    for (e = {}, r = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Undefined", "Null"], (d = 0, a = r.length); d < a; d++) f = r[d], e["[object " + f + "]"] = f.toLowerCase();
+                    return function(f) {
+                        var d;
+                        return d = Object.prototype.toString.call(f), e[d] || "object"
+                    }
+                }(), S = function(e, f, d) {
+                    return null == f && (f = 0), null == d && (d = 1), e < f && (e = f), e > d && (e = d), e
+                }, K = function(e) {
+                    return 3 <= e.length ? e : e[0]
+                }, u = 2 * J, c = J / 3, x = I, b = function(e) {
+                    var f, d, a, r, n, l, s, o, t, i, c;
+                    return e = function() {
+                        var f, d, a;
+                        for (a = [], f = 0, d = e.length; f < d; f++) r = e[f], a.push(y(r));
+                        return a
+                    }(), 2 === e.length ? (t = function() {
+                        var f, d, a;
+                        for (a = [], f = 0, d = e.length; f < d; f++) r = e[f], a.push(r.lab());
+                        return a
+                    }(), n = t[0], l = t[1], f = function(e) {
+                        var f, d;
+                        return d = function() {
+                            var d, a;
+                            for (a = [], f = d = 0; 2 >= d; f = ++d) a.push(n[f] + e * (l[f] - n[f]));
+                            return a
+                        }(), y.lab.apply(y, d)
+                    }) : 3 === e.length ? (i = function() {
+                        var f, d, a;
+                        for (a = [], f = 0, d = e.length; f < d; f++) r = e[f], a.push(r.lab());
+                        return a
+                    }(), n = i[0], l = i[1], s = i[2], f = function(e) {
+                        var f, d;
+                        return d = function() {
+                            var d, a;
+                            for (a = [], f = d = 0; 2 >= d; f = ++d) a.push((1 - e) * (1 - e) * n[f] + 2 * (1 - e) * e * l[f] + e * e * s[f]);
+                            return a
+                        }(), y.lab.apply(y, d)
+                    }) : 4 === e.length ? (c = function() {
+                        var f, d, a;
+                        for (a = [], f = 0, d = e.length; f < d; f++) r = e[f], a.push(r.lab());
+                        return a
+                    }(), n = c[0], l = c[1], s = c[2], o = c[3], f = function(e) {
+                        var f, d;
+                        return d = function() {
+                            var d, a;
+                            for (a = [], f = d = 0; 2 >= d; f = ++d) a.push((1 - e) * (1 - e) * (1 - e) * n[f] + 3 * (1 - e) * (1 - e) * e * l[f] + 3 * (1 - e) * e * e * s[f] + e * e * e * o[f]);
+                            return a
+                        }(), y.lab.apply(y, d)
+                    }) : 5 === e.length && (d = b(e.slice(0, 3)), a = b(e.slice(2, 5)), f = function(e) {
+                        return 0.5 > e ? d(2 * e) : a(2 * (e - 0.5))
+                    }), f
+                }, y.interpolate.bezier = b
+            }).call(this)
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/delaunator/index.js": [function(e, a) {
+            "use strict";
+
+            function r(a, l, s) {
+                l || (l = m), s || (s = _);
+                for (var u = Infinity, w = Infinity, j = -Infinity, v = -Infinity, C = this.coords = [], z = this.ids = new Uint32Array(a.length), U = 0; U < a.length; U++) {
+                    var i = a[U],
+                        p = l(i),
+                        x = s(i);
+                    z[U] = U, C[2 * U] = p, C[2 * U + 1] = x, p < u && (u = p), x < w && (w = x), p > j && (j = p), x > v && (v = x)
+                }
+                var y, B, G, S = (u + j) / 2,
+                    P = (w + v) / 2,
+                    R = Infinity;
+                for (U = 0; U < a.length; U++) {
+                    var A = t(S, P, C[2 * U], C[2 * U + 1]);
+                    A < R && (y = U, R = A)
+                }
+                for (R = Infinity, U = 0; U < a.length; U++) U !== y && (A = t(C[2 * y], C[2 * y + 1], C[2 * U], C[2 * U + 1]), A < R && 0 < A && (B = U, R = A));
+                var d = Infinity;
+                for (U = 0; U < a.length; U++)
+                    if (U !== y && U !== B) {
+                        var L = o(C[2 * y], C[2 * y + 1], C[2 * B], C[2 * B + 1], C[2 * U], C[2 * U + 1]);
+                        L < d && (G = U, d = L)
+                    } if (d === Infinity) throw new Error("No Delaunay triangulation exists for this input.");
+                if (0 > n(C[2 * y], C[2 * y + 1], C[2 * B], C[2 * B + 1], C[2 * G], C[2 * G + 1])) {
+                    var r = B;
+                    B = G, G = r
+                }
+                var Y = C[2 * y],
+                    E = C[2 * y + 1],
+                    T = C[2 * B],
+                    O = C[2 * B + 1],
+                    N = C[2 * G],
+                    X = C[2 * G + 1],
+                    D = c(Y, E, T, O, N, X);
+                for (this._cx = D.x, this._cy = D.y, g(z, C, 0, z.length - 1, D.x, D.y), this._hashSize = Math.ceil(f(a.length)), this._hash = [], U = 0; U < this._hashSize; U++) this._hash[U] = null;
+                var K = this.hull = b(C, y);
+                this._hashEdge(K), K.t = 0, K = b(C, B, K), this._hashEdge(K), K.t = 1, K = b(C, G, K), this._hashEdge(K), K.t = 2;
+                var e = 2 * a.length - 5,
+                    M = this.triangles = new Uint32Array(3 * e),
+                    V = this.halfedges = new Int32Array(3 * e);
+                this.trianglesLen = 0, this._addTriangle(y, B, G, -1, -1, -1);
+                for (var W, F, I = 0; I < z.length; I++)
+                    if (U = z[I], p = C[2 * U], x = C[2 * U + 1], (p !== W || x !== F) && (W = p, F = x, (p !== Y || x !== E) && (p !== T || x !== O) && (p !== N || x !== X))) {
+                        var k, Z = this._hashKey(p, x),
+                            J = Z;
+                        do k = this._hash[J], J = (J + 1) % this._hashSize; while ((!k || k.removed) && J !== Z);
+                        for (K = k; 0 <= n(p, x, K.x, K.y, K.next.x, K.next.y);)
+                            if (K = K.next, K === k) throw new Error("Something is wrong with the input points.");
+                        var H = K === k,
+                            $ = this._addTriangle(K.i, U, K.next.i, -1, -1, K.t);
+                        K.t = $, K = b(C, U, K), K.t = this._legalize($ + 2), K.prev.prev.t === V[$ + 1] && (K.prev.prev.t = $ + 2);
+                        for (var Q = K.next; 0 > n(p, x, Q.x, Q.y, Q.next.x, Q.next.y);) $ = this._addTriangle(Q.i, U, Q.next.i, Q.prev.t, -1, Q.t), Q.prev.t = this._legalize($ + 2), this.hull = h(Q), Q = Q.next;
+                        if (H)
+                            for (Q = K.prev; 0 > n(p, x, Q.prev.x, Q.prev.y, Q.x, Q.y);) $ = this._addTriangle(Q.prev.i, U, Q.i, -1, Q.t, Q.prev.t), this._legalize($ + 2), Q.prev.t = $, this.hull = h(Q), Q = Q.prev;
+                        this._hashEdge(K), this._hashEdge(K.prev)
+                    } this.triangles = M.subarray(0, this.trianglesLen), this.halfedges = V.subarray(0, this.trianglesLen)
+            }
+
+            function t(e, f, d, a) {
+                var r = e - d,
+                    t = f - a;
+                return r * r + t * t
+            }
+
+            function n(e, f, d, a, r, t) {
+                return (a - f) * (r - d) - (d - e) * (t - a)
+            }
+
+            function s(e, f, d, a, r, t, n, l) {
+                e -= n, f -= l, d -= n, a -= l, r -= n, t -= l;
+                var s = e * e + f * f,
+                    i = d * d + a * a,
+                    o = r * r + t * t;
+                return 0 > e * (a * o - i * t) - f * (d * o - i * r) + s * (d * t - a * r)
+            }
+
+            function o(e, f, a, r, t, n) {
+                a -= e, r -= f, t -= e, n -= f;
+                var l = a * a + r * r,
+                    s = t * t + n * n;
+                if (0 == l || 0 == s) return Infinity;
+                var i = a * n - r * t;
+                if (0 == i) return Infinity;
+                var d = 0.5 * (n * l - r * s) / i,
+                    o = 0.5 * (a * s - t * l) / i;
+                return d * d + o * o
+            }
+
+            function c(e, f, a, r, t, n) {
+                a -= e, r -= f, t -= e, n -= f;
+                var l = a * a + r * r,
+                    s = t * t + n * n,
+                    i = a * n - r * t,
+                    d = 0.5 * (n * l - r * s) / i,
+                    o = 0.5 * (a * s - t * l) / i;
+                return {
+                    x: e + d,
+                    y: f + o
+                }
+            }
+
+            function b(e, f, d) {
+                var a = {
+                    i: f,
+                    x: e[2 * f],
+                    y: e[2 * f + 1],
+                    t: 0,
+                    prev: null,
+                    next: null,
+                    removed: !1
+                };
+                return d ? (a.next = d.next, a.prev = d, d.next.prev = a, d.next = a) : (a.prev = a, a.next = a), a
+            }
+
+            function h(e) {
+                return e.prev.next = e.next, e.next.prev = e.prev, e.removed = !0, e.prev
+            }
+
+            function g(e, f, d, a, r, t) {
+                var n, l, s;
+                if (20 >= a - d)
+                    for (n = d + 1; n <= a; n++) {
+                        for (s = e[n], l = n - 1; l >= d && 0 < u(f, e[l], s, r, t);) e[l + 1] = e[l--];
+                        e[l + 1] = s
+                    } else {
+                        for (n = d + 1, l = a, p(e, d + a >> 1, n), 0 < u(f, e[d], e[a], r, t) && p(e, d, a), 0 < u(f, e[n], e[a], r, t) && p(e, n, a), 0 < u(f, e[d], e[n], r, t) && p(e, d, n), s = e[n];;) {
+                            do n++; while (0 > u(f, e[n], s, r, t));
+                            do l--; while (0 < u(f, e[l], s, r, t));
+                            if (l < n) break;
+                            p(e, n, l)
+                        }
+                        e[d + 1] = e[l], e[l] = s, a - n + 1 >= l - d ? (g(e, f, n, a, r, t), g(e, f, d, l - 1, r, t)) : (g(e, f, d, l - 1, r, t), g(e, f, n, a, r, t))
+                    }
+            }
+
+            function u(e, f, d, a, r) {
+                var n = t(e[2 * f], e[2 * f + 1], a, r),
+                    l = t(e[2 * d], e[2 * d + 1], a, r);
+                return n - l || e[2 * f] - e[2 * d] || e[2 * f + 1] - e[2 * d + 1]
+            }
+
+            function p(e, f, d) {
+                var a = e[f];
+                e[f] = e[d], e[d] = a
+            }
+
+            function m(e) {
+                return e[0]
+            }
+
+            function _(e) {
+                return e[1]
+            }
+            a.exports = r, r.prototype = {
+                _hashEdge: function(f) {
+                    this._hash[this._hashKey(f.x, f.y)] = f
+                },
+                _hashKey: function(e, f) {
+                    var a = e - this._cx,
+                        r = f - this._cy,
+                        t = 1 - a / (d(a) + d(r));
+                    return l((2 + (0 > r ? -t : t)) / 4 * this._hashSize)
+                },
+                _legalize: function(e) {
+                    var f = this.triangles,
+                        d = this.coords,
+                        a = this.halfedges,
+                        r = a[e],
+                        t = e - e % 3,
+                        n = r - r % 3,
+                        l = t + (e + 2) % 3,
+                        i = n + (r + 2) % 3,
+                        o = f[l],
+                        c = f[e],
+                        b = f[t + (e + 1) % 3],
+                        h = f[i],
+                        g = s(d[2 * o], d[2 * o + 1], d[2 * c], d[2 * c + 1], d[2 * b], d[2 * b + 1], d[2 * h], d[2 * h + 1]);
+                    return g ? (f[e] = h, f[r] = o, this._link(e, a[i]), this._link(r, a[l]), this._link(l, i), this._legalize(e), this._legalize(n + (r + 1) % 3)) : l
+                },
+                _link: function(e, f) {
+                    this.halfedges[e] = f, -1 !== f && (this.halfedges[f] = e)
+                },
+                _addTriangle: function(e, f, d, r, a, n) {
+                    var l = this.trianglesLen;
+                    return this.triangles[l] = e, this.triangles[l + 1] = f, this.triangles[l + 2] = d, this._link(l, r), this._link(l + 1, a), this._link(l + 2, n), this.trianglesLen += 3, l
+                }
+            }
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/process/browser.js": [function(e, f) {
+            function d() {
+                if (!n) {
+                    n = !0;
+                    for (var e, f = t.length; f;) {
+                        e = t, t = [];
+                        for (var d = -1; ++d < f;) e[d]();
+                        f = t.length
+                    }
+                    n = !1
+                }
+            }
+
+            function a() {}
+            var r = f.exports = {},
+                t = [],
+                n = !1;
+            r.nextTick = function(e) {
+                t.push(e), n || setTimeout(d, 0)
+            }, r.title = "browser", r.browser = !0, r.env = {}, r.argv = [], r.version = "", r.versions = {}, r.on = a, r.addListener = a, r.once = a, r.off = a, r.removeListener = a, r.removeAllListeners = a, r.emit = a, r.binding = function() {
+                throw new Error("process.binding is not supported")
+            }, r.cwd = function() {
+                return "/"
+            }, r.chdir = function() {
+                throw new Error("process.chdir is not supported")
+            }, r.umask = function() {
+                return 0
+            }
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/index.js": [function(e, f) {
+            var d = e("./lib/alea"),
+                a = e("./lib/xor128"),
+                r = e("./lib/xorwow"),
+                t = e("./lib/xorshift7"),
+                n = e("./lib/xor4096"),
+                l = e("./lib/tychei"),
+                s = e("./seedrandom");
+            s.alea = d, s.xor128 = a, s.xorwow = r, s.xorshift7 = t, s.xor4096 = n, s.tychei = l, f.exports = s
+        }, {
+            "./lib/alea": "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/alea.js",
+            "./lib/tychei": "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/tychei.js",
+            "./lib/xor128": "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/xor128.js",
+            "./lib/xor4096": "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/xor4096.js",
+            "./lib/xorshift7": "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/xorshift7.js",
+            "./lib/xorwow": "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/xorwow.js",
+            "./seedrandom": "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/seedrandom.js"
+        }],
+        "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/alea.js": [function(f, d) {
+            (function(e, f, d) {
+                function a(e) {
+                    var f = this,
+                        d = n();
+                    f.next = function() {
+                        var e = 2091639 * f.s0 + 2.3283064365386963e-10 * f.c;
+                        return f.s0 = f.s1, f.s1 = f.s2, f.s2 = e - (f.c = 0 | e)
+                    }, f.c = 1, f.s0 = d(" "), f.s1 = d(" "), f.s2 = d(" "), f.s0 -= d(e), 0 > f.s0 && (f.s0 += 1), f.s1 -= d(e), 0 > f.s1 && (f.s1 += 1), f.s2 -= d(e), 0 > f.s2 && (f.s2 += 1), d = null
+                }
+
+                function r(e, f) {
+                    return f.c = e.c, f.s0 = e.s0, f.s1 = e.s1, f.s2 = e.s2, f
+                }
+
+                function t(e, f) {
+                    var d = new a(e),
+                        t = f && f.state,
+                        n = d.next;
+                    return n.int32 = function() {
+                        return 0 | 4294967296 * d.next()
+                    }, n.double = function() {
+                        return n() + 1.1102230246251565e-16 * (0 | 2097152 * n())
+                    }, n.quick = n, t && ("object" == typeof t && r(t, d), n.state = function() {
+                        return r(d, {})
+                    }), n
+                }
+
+                function n() {
+                    var e = 4022871197;
+                    return function(f) {
+                        f = f.toString();
+                        for (var d = 0; d < f.length; d++) {
+                            e += f.charCodeAt(d);
+                            var a = 0.02519603282416938 * e;
+                            e = a >>> 0, a -= e, a *= e, e = a >>> 0, a -= e, e += 4294967296 * a
+                        }
+                        return 2.3283064365386963e-10 * (e >>> 0)
+                    }
+                }
+                f && f.exports ? f.exports = t : d && d.amd ? d(function() {
+                    return t
+                }) : this.alea = t
+            })(this, "object" == typeof d && d, "function" == typeof e && e)
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/tychei.js": [function(f, d) {
+            (function(e, f, d) {
+                function a(e) {
+                    var f = this,
+                        d = "";
+                    f.next = function() {
+                        var e = f.b,
+                            r = f.c,
+                            t = f.d,
+                            d = f.a;
+                        return e = e << 25 ^ e >>> 7 ^ r, r = 0 | r - t, t = t << 24 ^ t >>> 8 ^ d, d = 0 | d - e, f.b = e = e << 20 ^ e >>> 12 ^ r, f.c = r = 0 | r - t, f.d = t << 16 ^ r >>> 16 ^ d, f.a = 0 | d - e
+                    }, f.a = 0, f.b = 0, f.c = -1640531527, f.d = 1367130551, e === l(e) ? (f.a = 0 | e / 4294967296, f.b = 0 | e) : d += e;
+                    for (var a = 0; a < d.length + 20; a++) f.b ^= 0 | d.charCodeAt(a), f.next()
+                }
+
+                function r(e, f) {
+                    return f.a = e.a, f.b = e.b, f.c = e.c, f.d = e.d, f
+                }
+
+                function t(e, f) {
+                    var d = new a(e),
+                        t = f && f.state,
+                        n = function() {
+                            return (d.next() >>> 0) / 4294967296
+                        };
+                    return n.double = function() {
+                        do var e = d.next() >>> 11,
+                            f = (d.next() >>> 0) / 4294967296,
+                            a = (e + f) / 2097152; while (0 === a);
+                        return a
+                    }, n.int32 = d.next, n.quick = n, t && ("object" == typeof t && r(t, d), n.state = function() {
+                        return r(d, {})
+                    }), n
+                }
+                f && f.exports ? f.exports = t : d && d.amd ? d(function() {
+                    return t
+                }) : this.tychei = t
+            })(this, "object" == typeof d && d, "function" == typeof e && e)
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/xor128.js": [function(f, d) {
+            (function(e, f, d) {
+                function a(e) {
+                    var f = this,
+                        d = "";
+                    f.x = 0, f.y = 0, f.z = 0, f.w = 0, f.next = function() {
+                        var e = f.x ^ f.x << 11;
+                        return f.x = f.y, f.y = f.z, f.z = f.w, f.w ^= f.w >>> 19 ^ e ^ e >>> 8
+                    }, e === (0 | e) ? f.x = e : d += e;
+                    for (var a = 0; a < d.length + 64; a++) f.x ^= 0 | d.charCodeAt(a), f.next()
+                }
+
+                function r(e, f) {
+                    return f.x = e.x, f.y = e.y, f.z = e.z, f.w = e.w, f
+                }
+
+                function t(e, f) {
+                    var d = new a(e),
+                        t = f && f.state,
+                        n = function() {
+                            return (d.next() >>> 0) / 4294967296
+                        };
+                    return n.double = function() {
+                        do var e = d.next() >>> 11,
+                            f = (d.next() >>> 0) / 4294967296,
+                            a = (e + f) / 2097152; while (0 === a);
+                        return a
+                    }, n.int32 = d.next, n.quick = n, t && ("object" == typeof t && r(t, d), n.state = function() {
+                        return r(d, {})
+                    }), n
+                }
+                f && f.exports ? f.exports = t : d && d.amd ? d(function() {
+                    return t
+                }) : this.xor128 = t
+            })(this, "object" == typeof d && d, "function" == typeof e && e)
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/xor4096.js": [function(f, d) {
+            (function(e, f, d) {
+                function a(e) {
+                    var f = this;
+                    f.next = function() {
+                            var e, d, a = f.w,
+                                r = f.X,
+                                t = f.i;
+                            return f.w = a = 0 | a + 1640531527, d = r[127 & t + 34], e = r[t = 127 & t + 1], d ^= d << 13, e ^= e << 17, d ^= d >>> 15, e ^= e >>> 12, d = r[t] = d ^ e, f.i = t, 0 | d + (a ^ a >>> 16)
+                        },
+                        function(e, f) {
+                            var d, a, r, t, l, s = [],
+                                i = 128;
+                            for (f === (0 | f) ? (a = f, f = null) : (f += "\0", a = 0, i = n(i, f.length)), r = 0, t = -32; t < i; ++t) f && (a ^= f.charCodeAt((t + 32) % f.length)), 0 === t && (l = a), a ^= a << 10, a ^= a >>> 15, a ^= a << 4, a ^= a >>> 13, 0 <= t && (l = 0 | l + 1640531527, d = s[127 & t] ^= a + l, r = 0 == d ? r + 1 : 0);
+                            for (128 <= r && (s[127 & (f && f.length || 0)] = -1), r = 127, t = 512; 0 < t; --t) a = s[127 & r + 34], d = s[r = 127 & r + 1], a ^= a << 13, d ^= d << 17, a ^= a >>> 15, d ^= d >>> 12, s[r] = a ^ d;
+                            e.w = l, e.X = s, e.i = r
+                        }(f, e)
+                }
+
+                function r(e, f) {
+                    return f.i = e.i, f.w = e.w, f.X = e.X.slice(), f
+                }
+
+                function t(e, f) {
+                    null == e && (e = +new Date);
+                    var d = new a(e),
+                        t = f && f.state,
+                        n = function() {
+                            return (d.next() >>> 0) / 4294967296
+                        };
+                    return n.double = function() {
+                        do var e = d.next() >>> 11,
+                            f = (d.next() >>> 0) / 4294967296,
+                            a = (e + f) / 2097152; while (0 === a);
+                        return a
+                    }, n.int32 = d.next, n.quick = n, t && (t.X && r(t, d), n.state = function() {
+                        return r(d, {})
+                    }), n
+                }
+                f && f.exports ? f.exports = t : d && d.amd ? d(function() {
+                    return t
+                }) : this.xor4096 = t
+            })(this, "object" == typeof d && d, "function" == typeof e && e)
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/xorshift7.js": [function(f, d) {
+            (function(e, f, d) {
+                function a(e) {
+                    var f = this;
+                    f.next = function() {
+                            var e, d, a = f.x,
+                                r = f.i;
+                            return e = a[r], e ^= e >>> 7, d = e ^ e << 24, e = a[7 & r + 1], d ^= e ^ e >>> 10, e = a[7 & r + 3], d ^= e ^ e >>> 3, e = a[7 & r + 4], d ^= e ^ e << 7, e = a[7 & r + 7], e ^= e << 13, d ^= e ^ e << 9, a[r] = d, f.i = 7 & r + 1, d
+                        },
+                        function(e, f) {
+                            var d, a, r = [];
+                            if (f === (0 | f)) a = r[0] = f;
+                            else
+                                for (f = "" + f, d = 0; d < f.length; ++d) r[7 & d] = r[7 & d] << 15 ^ f.charCodeAt(d) + r[7 & d + 1] << 13;
+                            for (; 8 > r.length;) r.push(0);
+                            for (d = 0; 8 > d && 0 === r[d]; ++d);
+                            for (a = 8 == d ? r[7] = -1 : r[d], e.x = r, e.i = 0, d = 256; 0 < d; --d) e.next()
+                        }(f, e)
+                }
+
+                function r(e, f) {
+                    return f.x = e.x.slice(), f.i = e.i, f
+                }
+
+                function t(e, f) {
+                    null == e && (e = +new Date);
+                    var d = new a(e),
+                        t = f && f.state,
+                        n = function() {
+                            return (d.next() >>> 0) / 4294967296
+                        };
+                    return n.double = function() {
+                        do var e = d.next() >>> 11,
+                            f = (d.next() >>> 0) / 4294967296,
+                            a = (e + f) / 2097152; while (0 === a);
+                        return a
+                    }, n.int32 = d.next, n.quick = n, t && (t.x && r(t, d), n.state = function() {
+                        return r(d, {})
+                    }), n
+                }
+                f && f.exports ? f.exports = t : d && d.amd ? d(function() {
+                    return t
+                }) : this.xorshift7 = t
+            })(this, "object" == typeof d && d, "function" == typeof e && e)
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/lib/xorwow.js": [function(f, d) {
+            (function(e, f, d) {
+                function a(e) {
+                    var f = this,
+                        d = "";
+                    f.next = function() {
+                        var e = f.x ^ f.x >>> 2;
+                        return f.x = f.y, f.y = f.z, f.z = f.w, f.w = f.v, 0 | (f.d = 0 | f.d + 362437) + (f.v = f.v ^ f.v << 4 ^ (e ^ e << 1))
+                    }, f.x = 0, f.y = 0, f.z = 0, f.w = 0, f.v = 0, e === (0 | e) ? f.x = e : d += e;
+                    for (var a = 0; a < d.length + 64; a++) f.x ^= 0 | d.charCodeAt(a), a == d.length && (f.d = f.x << 10 ^ f.x >>> 4), f.next()
+                }
+
+                function r(e, f) {
+                    return f.x = e.x, f.y = e.y, f.z = e.z, f.w = e.w, f.v = e.v, f.d = e.d, f
+                }
+
+                function t(e, f) {
+                    var d = new a(e),
+                        t = f && f.state,
+                        n = function() {
+                            return (d.next() >>> 0) / 4294967296
+                        };
+                    return n.double = function() {
+                        do var e = d.next() >>> 11,
+                            f = (d.next() >>> 0) / 4294967296,
+                            a = (e + f) / 2097152; while (0 === a);
+                        return a
+                    }, n.int32 = d.next, n.quick = n, t && ("object" == typeof t && r(t, d), n.state = function() {
+                        return r(d, {})
+                    }), n
+                }
+                f && f.exports ? f.exports = t : d && d.amd ? d(function() {
+                    return t
+                }) : this.xorwow = t
+            })(this, "object" == typeof d && d, "function" == typeof e && e)
+        }, {}],
+        "/Users/qrohlf/Code/trianglify/node_modules/seedrandom/seedrandom.js": [function(f, d) {
+            (function(a, r) {
+                function t(e, f, d) {
+                    var t = [];
+                    f = !0 == f ? {
+                        entropy: !0
+                    } : f || {};
+                    var b = i(s(f.entropy ? [e, c(a)] : null == e ? o() : e, 3), t),
+                        h = new n(t),
+                        x = function() {
+                            for (var e = h.g(u), f = m, d = 0; e < y;) e = (e + d) * g, f *= g, d = h.g(1);
+                            for (; e >= _;) e /= 2, f /= 2, d >>>= 1;
+                            return (e + d) / f
+                        };
+                    return x.int32 = function() {
+                        return 0 | h.g(4)
+                    }, x.quick = function() {
+                        return h.g(4) / 4294967296
+                    }, x.double = x, i(c(h.S), a), (f.pass || d || function(e, f, d, a) {
+                        return a && (a.S && l(a, h), e.state = function() {
+                            return l(h, {})
+                        }), d ? (r[p] = e, f) : e
+                    })(x, b, "global" in f ? f.global : this == r, f.state)
+                }
+
+                function n(e) {
+                    var f, d = e.length,
+                        a = this,
+                        r = 0,
+                        t = a.i = a.j = 0,
+                        n = a.S = [];
+                    for (d || (e = [d++]); r < g;) n[r] = r++;
+                    for (r = 0; r < g; r++) n[r] = n[t = x & t + e[r % d] + (f = n[r])], n[t] = f;
+                    (a.g = function(e) {
+                        for (var f, d = 0, r = a.i, t = a.j, n = a.S; e--;) f = n[r = x & r + 1], d = d * g + n[x & (n[r] = n[t = x & t + f]) + (n[t] = f)];
+                        return a.i = r, a.j = t, d
+                    })(g)
+                }
+
+                function l(e, f) {
+                    return f.i = e.i, f.j = e.j, f.S = e.S.slice(), f
+                }
+
+                function s(e, f) {
+                    var d, a = [],
+                        r = typeof e;
+                    if (f && "object" == r)
+                        for (d in e) try {
+                            a.push(s(e[d], f - 1))
+                        } catch (f) {}
+                    return a.length ? a : "string" == r ? e : e + "\0"
+                }
+
+                function i(e, f) {
+                    for (var d, a = e + "", r = 0; r < a.length;) f[x & r] = x & (d ^= 19 * f[x & r]) + a.charCodeAt(r++);
+                    return c(f)
+                }
+
+                function o() {
+                    try {
+                        var e;
+                        return b && (e = b.randomBytes) ? e = e(g) : (e = new Uint8Array(g), (h.crypto || h.msCrypto).getRandomValues(e)), c(e)
+                    } catch (r) {
+                        var f = h.navigator,
+                            d = f && f.plugins;
+                        return [+new Date, h, d, h.screen, c(a)]
+                    }
+                }
+
+                function c(e) {
+                    return String.fromCharCode.apply(0, e)
+                }
+                var b, h = this,
+                    g = 256,
+                    u = 6,
+                    p = "random",
+                    m = r.pow(g, u),
+                    y = r.pow(2, 52),
+                    _ = 2 * y,
+                    x = g - 1;
+                if (r["seed" + p] = t, i(r.random(), a), "object" == typeof d && d.exports) {
+                    d.exports = t;
+                    try {
+                        b = f("crypto")
+                    } catch (e) {}
+                } else "function" == typeof e && e.amd && e(function() {
+                    return t
+                })
+            })([], Math)
+        }, {
+            crypto: !1
+        }]
+    }, {}, ["./lib/trianglify.js"])("./lib/trianglify.js")
+});

+ 37 - 0
assets/js/skip-link-focus-fix.js

@@ -0,0 +1,37 @@
+/**
+ * Helps with accessibility for keyboard only users.
+ *
+ * Learn more: https://git.io/vWdr2
+ *
+ * @package Pen
+ */
+;( function() {
+	var isWebkit    = navigator.userAgent.toLowerCase().indexOf( 'webkit' ) > -1,
+			isOpera = navigator.userAgent.toLowerCase().indexOf( 'opera' ) > -1,
+			isIe    = navigator.userAgent.toLowerCase().indexOf( 'msie' ) > -1;
+
+	if ( ( isWebkit || isOpera || isIe ) && document.getElementById && window.addEventListener ) {
+		window.addEventListener(
+			'hashchange',
+			function() {
+				var id = location.hash.substring( 1 ),
+				element;
+
+				if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {
+					return;
+				}
+
+				element = document.getElementById( id );
+
+				if ( element ) {
+					if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {
+						element.tabIndex = -1;
+					}
+
+					element.focus();
+				}
+			},
+			false
+		);
+	}
+})();

+ 124 - 0
comments.php

@@ -0,0 +1,124 @@
+<?php
+/**
+ * The template for displaying comments.
+ *
+ * This is the template that displays the area of the page that contains both the current comments
+ * and the comment form.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+/**
+ * If the current post is protected by a password and
+ * the visitor has not yet entered the password we will
+ * return early without loading the comments.
+ */
+if ( post_password_required() ) {
+	return;
+}
+?>
+<div id="comments" class="comments-area">
+<?php
+if ( have_comments() ) {
+	?>
+	<h2 class="comments-title">
+	<?php
+	$pen_comment_count = get_comments_number();
+	if ( '1' === $pen_comment_count ) {
+		printf(
+			/* Translators: 1: title. */
+			esc_html__( 'One thought on &ldquo;%1$s&rdquo;', 'pen' ),
+			'<span>' . get_the_title() . '</span>'
+		);
+	} else {
+		printf( /* phpcs:ignore */
+			/* Translators: %1$s: comment count number, %2$s: title. */
+			esc_html( _nx( '%1$s thought on &ldquo;%2$s&rdquo;', '%1$s thoughts on &ldquo;%2$s&rdquo;', $pen_comment_count, 'comments title', 'pen' ) ),
+			number_format_i18n( $pen_comment_count ),
+			'<span>' . get_the_title() . '</span>'
+		);
+	}
+	?>
+	</h2>
+	<?php
+	/* Are there comments to navigate through? */
+	if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) {
+		?>
+	<nav id="comment-nav-above" class="navigation comment-navigation" role="navigation" aria-label="<?php esc_attr_e( 'Top Comments Menu', 'pen' ); ?>">
+		<h2 class="screen-reader-text">
+		<?php
+		esc_html_e( 'Comment navigation', 'pen' );
+		?>
+		</h2>
+		<div class="nav-links">
+			<div class="nav-previous">
+		<?php
+		previous_comments_link( esc_html__( 'Older Comments', 'pen' ) );
+		?>
+			</div>
+			<div class="nav-next">
+		<?php
+		next_comments_link( esc_html__( 'Newer Comments', 'pen' ) );
+		?>
+			</div>
+		</div><!-- .nav-links -->
+	</nav><!-- #comment-nav-above -->
+		<?php
+	}
+	?>
+	<ol class="comment-list">
+	<?php
+	wp_list_comments(
+		array(
+			'style'      => 'ol',
+			'short_ping' => true,
+		)
+	);
+	?>
+	</ol><!-- .comment-list -->
+	<?php
+	/* Are there comments to navigate through? */
+	if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) {
+		?>
+	<nav id="comment-nav-below" class="navigation comment-navigation" role="navigation" aria-label="<?php esc_attr_e( 'Bottom Comments Menu', 'pen' ); ?>">
+		<h2 class="screen-reader-text">
+		<?php
+		esc_html_e( 'Comment navigation', 'pen' );
+		?>
+		</h2>
+		<div class="nav-links">
+			<div class="nav-previous">
+		<?php
+		previous_comments_link( esc_html__( 'Older Comments', 'pen' ) );
+		?>
+			</div>
+			<div class="nav-next">
+		<?php
+		next_comments_link( esc_html__( 'Newer Comments', 'pen' ) );
+		?>
+			</div>
+		</div><!-- .nav-links -->
+	</nav><!-- #comment-nav-below -->
+		<?php
+	}
+}
+
+/* If comments are closed and there are comments, let's leave a little note, shall we? */
+if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) {
+	?>
+	<p class="no-comments">
+	<?php
+	esc_html_e( 'Comments are closed.', 'pen' );
+	?>
+	</p>
+	<?php
+}
+?>
+	<div id="pen_respond_wrapper" class="<?php pen_class_animation( 'comments' ); /* phpcs:ignore */ ?>">
+<?php
+comment_form();
+?>
+	</div>
+</div><!-- #comments -->

+ 111 - 0
footer.php

@@ -0,0 +1,111 @@
+<?php
+/**
+ * The template for displaying the footer.
+ *
+ * Contains the closing of the #content div and all content after.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
+ *
+ * @package Pen
+ */
+
+pen_sidebar_get( 'sidebar-left' );
+pen_sidebar_get( 'sidebar-right' );
+?>
+						</div><!-- #content -->
+					</div><!-- .pen_container -->
+<?php
+pen_html_jump_menu( 'site' );
+?>
+				</div><!-- #pen_section -->
+<?php
+pen_sidebar_get( 'sidebar-bottom' );
+
+$connect_html    = pen_html_connect( 'footer' );
+$connect_display = $connect_html ? 'show' : 'hide';
+$classes_footer  = trim(
+	implode(
+		' ',
+		array_filter(
+			array(
+				'site-footer',
+				'pen_html_connect_' . sanitize_html_class( $connect_display ),
+				pen_option_get( 'color_footer_background_transparent' ) ? 'pen_is_transparent' : 'pen_not_transparent',
+			)
+		)
+	)
+);
+?>
+				<footer id="pen_footer" class="<?php echo esc_attr( $classes_footer ); ?>" role="contentinfo">
+					<div class="pen_container">
+<?php
+pen_sidebar_get( 'sidebar-footer-left' );
+?>
+						<div class="pen_footer_inner">
+<?php
+pen_sidebar_get( 'sidebar-footer-top' );
+
+if ( pen_option_get( 'footer_menu_display' ) ) {
+	$menu_html = wp_nav_menu(
+		array(
+			'theme_location' => 'secondary',
+			'menu_id'        => 'secondary-menu',
+			'echo'           => false,
+			'fallback_cb'    => 'pen_html_footer_menu_fallback',
+		)
+	);
+	if ( '' !== trim( $menu_html ) ) {
+		?>
+							<nav id="pen_footer_menu" role="navigation" class="<?php pen_class_animation( 'footer_menu' ); ?>" aria-label="<?php esc_attr_e( 'Footer Menu', 'pen' ); ?>">
+		<?php
+		echo $menu_html; /* phpcs:ignore */
+		?>
+							</nav>
+		<?php
+	}
+}
+
+$phone_html = pen_option_get( 'phone', false );
+if ( $phone_html && pen_option_get( 'phone_footer_display' ) ) {
+	?>
+							<div class="pen_phone <?php pen_class_animation( 'phone_footer' ); /* phpcs:ignore */ ?>">
+								<a href="tel:<?php echo esc_attr( $phone_html ); ?>">
+	<?php
+	echo esc_html( $phone_html );
+	?>
+								</a>
+							</div>
+	<?php
+}
+
+echo $connect_html; /* phpcs:ignore */
+
+get_template_part( 'partials/content', 'copyright' );
+
+pen_sidebar_get( 'sidebar-footer-bottom' );
+?>
+						</div>
+<?php
+pen_sidebar_get( 'sidebar-footer-right' );
+?>
+					</div>
+<?php
+pen_html_jump_menu( 'footer' );
+?>
+				</footer><!-- #pen_footer -->
+			</div><!-- .pen_wrapper -->
+		</div><!-- #page -->
+		<a id="pen_back" href="#page" title="<?php esc_attr_e( 'Back to top', 'pen' ); ?>"<?php echo ( ! pen_option_get( 'footer_back_to_top_display' ) ) ? ' class="screen-reader-text' : ''; /* phpcs:ignore */ ?>>
+			<span class="screen-reader-text">
+<?php
+esc_html_e( 'Back to top', 'pen' );
+?>
+			</span>
+		</a>
+<?php
+wp_footer();
+?>
+	</body>
+</html>
+<?php
+ob_end_flush();

+ 22 - 0
functions.php

@@ -0,0 +1,22 @@
+<?php
+/**
+ * The functions.php file.
+ *
+ * @link https://developer.wordpress.org/themes/basics/theme-functions/
+ *
+ * @package Pen
+ */
+
+$template_directory = get_template_directory();
+require_once $template_directory . '/include/color.php';
+require_once $template_directory . '/include/general.php';
+require_once $template_directory . '/include/compress.php';
+require_once $template_directory . '/include/sanitize.php';
+require_once $template_directory . '/include/typography.php';
+require_once $template_directory . '/include/html.php';
+require_once $template_directory . '/include/configure.php';
+require_once $template_directory . '/include/assets.php';
+require_once $template_directory . '/include/sidebars.php';
+require_once $template_directory . '/include/widgets.php';
+require_once $template_directory . '/include/content.php';
+require_once $template_directory . '/include/customize.php';

+ 177 - 0
header.php

@@ -0,0 +1,177 @@
+<?php
+/**
+ * The header for our theme.
+ *
+ * This is the template that displays all of the <head> section and everything up until <div id="content">
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
+ *
+ * @package Pen
+ */
+
+ob_start();
+?><!doctype html>
+<html <?php language_attributes(); ?> class="no-js">
+	<head>
+		<meta charset="<?php bloginfo( 'charset' ); ?>">
+		<meta name="viewport" content="width=device-width, initial-scale=1">
+		<link rel="profile" href="https://gmpg.org/xfn/11">
+<?php
+wp_head();
+?>
+	</head>
+	<body <?php body_class(); ?>>
+		<div id="page" class="site">
+			<div class="pen_wrapper">
+<?php
+if ( ! is_customize_preview() ) {
+	pen_html_jump_menu( 'color_schemes' );
+	pen_html_jump_menu( 'font_presets' );
+}
+?>
+				<a class="screen-reader-shortcut screen-reader-text" href="#content">
+<?php
+esc_html_e( 'Skip to content', 'pen' );
+?>
+				</a>
+<?php
+$header_primary = false;
+if ( pen_sidebar_check( 'sidebar-header-primary' ) && is_active_sidebar( 'sidebar-header-primary' ) ) {
+	$header_primary = true;
+}
+$header_secondary = false;
+if ( pen_sidebar_check( 'sidebar-header-secondary' ) && is_active_sidebar( 'sidebar-header-secondary' ) ) {
+	$header_secondary = true;
+}
+$connect         = pen_html_connect( 'header' );
+$connect_display = 'hide';
+if ( $connect ) {
+	$connect_display = 'show';
+}
+$search_html     = pen_html_search_box();
+$search_location = '';
+$search_display  = 'hide';
+$search_location = get_post_meta( get_the_ID(), 'pen_content_search_location_override', true );
+if ( ! $search_location || 'default' === $search_location ) {
+	$search_location = pen_option_get( 'search_location' );
+}
+if ( $search_html ) {
+	if ( 'header' === $search_location ) {
+		$search_display = 'show';
+	} elseif ( 'content' === $search_location ) {
+		$search_display = 'show_toolbar';
+	}
+}
+$logo          = pen_html_logo();
+$phone         = pen_option_get( 'phone' );
+$phone_display = ( $phone && pen_option_get( 'phone_header_display' ) ) ? 'show' : 'hide';
+
+ob_start( 'trim' );
+get_template_part( 'partials/site', 'navigation' );
+$navigation = ob_get_clean();
+
+$classes_header = array(
+	'site-header',
+	$logo ? 'pen_has_logo' : '',
+	$navigation ? 'pen_navigation_show' : 'pen_navigation_hide',
+	'pen_phone_' . sanitize_html_class( $phone_display ),
+	'pen_connect_' . sanitize_html_class( $connect_display ),
+	'pen_search_' . sanitize_html_class( $search_display ),
+	'pen_navigation_' . sanitize_html_class( pen_option_get( 'navigation_display' ) ? 'show' : 'hide' ),
+	'pen_navigation_mobile_' . sanitize_html_class( pen_option_get( 'navigation_mobile_display' ) ? 'show' : 'hide' ),
+);
+
+$classes_header = trim( implode( ' ', array_filter( $classes_header ) ) );
+?>
+				<header id="pen_header" class="<?php echo esc_attr( $classes_header ); ?>" role="banner">
+					<div class="pen_header_inner">
+						<div class="pen_header_main">
+							<div class="pen_container clearfix">
+								<h1>
+<?php
+echo $logo; /* phpcs:ignore */
+
+get_template_part( 'partials/site', 'title' );
+?>
+								</h1>
+<?php
+if ( $header_primary || $header_secondary || 'show' === $phone_display || $connect || ( 'header' === $search_location && $search_html ) ) {
+	?>
+								<div class="pen_header_wrap pen_animate_on_scroll pen_custom_animation_fadeIn">
+	<?php
+	pen_sidebar_get( 'sidebar-header-primary' );
+
+	if ( 'show' === $phone_display ) {
+		?>
+									<div class="pen_phone <?php pen_class_animation( 'phone_header' ); /* phpcs:ignore */ ?>">
+										<a href="tel:<?php echo esc_attr( $phone ); ?>">
+		<?php
+		echo esc_html( $phone );
+		?>
+										</a>
+									</div>
+		<?php
+	}
+
+	echo $connect; /* phpcs:ignore */
+
+	if ( 'header' === $search_location ) {
+		echo $search_html; /* phpcs:ignore */
+	}
+
+	pen_sidebar_get( 'sidebar-header-secondary' );
+	?>
+								</div>
+	<?php
+}
+?>
+							</div>
+<?php
+pen_html_jump_menu( 'header' );
+?>
+						</div>
+<?php
+// Adds the main navigation menu.
+echo $navigation; /* phpcs:ignore */
+?>
+					</div><!-- .pen_header_inner -->
+<?php
+if ( $search_html && 'content' === $search_location ) {
+	?>
+					<div id="pen_search">
+						<div class="pen_container">
+	<?php
+	pen_sidebar_get( 'sidebar-search-top' );
+	?>
+						</div>
+						<div class="pen_container">
+	<?php
+	pen_sidebar_get( 'sidebar-search-left' );
+	?>
+							<div id="pen_search_form">
+	<?php
+	echo $search_html; /* phpcs:ignore */
+	?>
+							</div>
+	<?php
+	pen_sidebar_get( 'sidebar-search-right' );
+	?>
+						</div>
+						<div class="pen_container">
+	<?php
+	pen_sidebar_get( 'sidebar-search-bottom' );
+
+	pen_html_jump_menu( 'search_bar' );
+	?>
+						</div>
+					</div>
+	<?php
+}
+?>
+				</header>
+				<div id="pen_section">
+<?php
+pen_sidebar_get( 'sidebar-top' );
+?>
+					<div class="pen_container">
+						<div id="content" class="site-content clearfix">

+ 193 - 0
include/assets.php

@@ -0,0 +1,193 @@
+<?php
+/**
+ * JavaScript and CSS files.
+ *
+ * @package Pen
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+if ( ! function_exists( 'pen_assets' ) ) {
+	/**
+	 * Enqueue scripts and styles.
+	 */
+	function pen_assets() {
+
+		$theme_directory = get_template_directory_uri();
+
+		$css_files = array(
+			'normalize'  => '/assets/css/normalize.css',
+			'animate'    => '/assets/css/plugins/animate.css',
+			'slicknav'   => '/assets/css/plugins/jquery.slicknav.css',
+			'base'       => '/assets/css/pen-base.css',
+			'fonts'      => '/assets/css/pen-fonts.css',
+			'typography' => '/assets/css/pen-typography.css',
+			'layout'     => '/assets/css/pen-layout.css',
+			'buttons'    => '/assets/css/pen-buttons.css',
+			'bottom'     => '/assets/css/pen-bottom.css',
+			'comments'   => '/assets/css/pen-comments.css',
+			'footer'     => '/assets/css/pen-footer.css',
+			'header'     => '/assets/css/pen-header.css',
+			'menus'      => '/assets/css/pen-menus.css',
+			'navigation' => '/assets/css/pen-navigation.css',
+			'forms'      => '/assets/css/pen-forms.css',
+			'content'    => '/assets/css/pen-content.css',
+			'thumbnails' => '/assets/css/pen-thumbnails.css',
+			'author'     => '/assets/css/pen-author.css',
+			'pagination' => '/assets/css/pen-pagination.css',
+			'share'      => '/assets/css/pen-share.css',
+			'search-bar' => '/assets/css/pen-search-bar.css',
+			'top'        => '/assets/css/pen-top.css',
+			'widgets'    => '/assets/css/pen-widgets.css',
+		);
+
+		// The key has to be the same as the slug in the inline CSS of the customize.php file.
+		$css_files['css'] = '/assets/css/pen-general.css';
+
+		if ( file_exists( $theme_directory . '/assets/css/custom.css' ) ) {
+			$css_files['custom'] = '/assets/css/custom.css';
+		}
+
+		foreach ( $css_files as $key => $value ) {
+			wp_enqueue_style( 'pen-' . $key, $theme_directory . $value, array(), PEN_THEME_VERSION );
+		}
+
+		wp_enqueue_script( 'jquery-fittext', $theme_directory . '/assets/js/plugins/jquery.fittext.js', array( 'jquery' ), '1.2', true );
+		wp_enqueue_script( 'autosize', $theme_directory . '/assets/js/plugins/autosize.js', array(), '4.0', true );
+		wp_enqueue_script( 'respond', $theme_directory . '/assets/js/plugins/respond.js', array( 'jquery' ), '1.4.2', true );
+		wp_enqueue_script( 'pen-skip', $theme_directory . '/assets/js/skip-link-focus-fix.js', array( 'jquery' ), PEN_THEME_VERSION, true );
+
+		if ( is_singular() ) {
+			wp_enqueue_script( 'comment-reply' );
+		}
+
+		ob_start( 'pen_compress_html' );
+		get_template_part( 'partials/site', 'navigation' );
+		$navigation_easing = array();
+		$navigation        = ob_get_clean();
+		if ( $navigation ) {
+			wp_enqueue_script( 'hoverIntent' );
+			wp_enqueue_script( 'jquery-superfish', $theme_directory . '/assets/js/plugins/jquery.superfish.js', array( 'jquery' ), '1.7.9', true );
+			wp_enqueue_script( 'jquery-slicknav', $theme_directory . '/assets/js/plugins/jquery.slicknav.js', array( 'jquery' ), '1.0.10', true );
+			$easing = pen_option_get( 'navigation_easing' );
+			if ( $easing ) {
+				wp_enqueue_script( 'jquery-easing', $theme_directory . '/assets/js/plugins/jquery.easing.js', array( 'jquery' ), '1.3', true );
+				$navigation_easing = array(
+					'height' => array( 'show', $easing ),
+				);
+			}
+		}
+
+		wp_enqueue_script( 'jquery-waypoints', $theme_directory . '/assets/js/plugins/jquery.waypoints.js', array( 'jquery' ), '4.0.1', true );
+
+		$content_list_type = pen_list_type();
+		if ( 'masonry' === $content_list_type ) {
+			wp_enqueue_script( 'imagesloaded' );
+			wp_enqueue_script( 'masonry' );
+		}
+
+		wp_enqueue_script( 'pen-modernizr', $theme_directory . '/assets/js/plugins/modernizr.js', array(), '3.6', true );
+
+		$site_background_effect = pen_option_get( 'color_site_background_effect' );
+
+		$trianglify        = false;
+		$trianglify_colors = false;
+		if ( 'trianglify' === $site_background_effect ) {
+			$trianglify = true;
+			/**
+			 * Dear WP.org reviewer,
+			 * Base64 is required to generate a DataURI for a SVG background.
+			 * We can remove this feature entirely if you don't like it?
+			 */
+			wp_enqueue_script( 'base64', $theme_directory . '/assets/js/plugins/base64.js', array( 'jquery' ), PEN_THEME_VERSION, true );
+			$trianglify_colors = array(
+				pen_option_get( 'color_site_background' ),
+				pen_option_get( 'color_button_background_primary' ),
+				pen_option_get( 'color_button_background_secondary' ),
+				pen_option_get( 'color_header_background_primary' ),
+				pen_option_get( 'color_header_background_secondary' ),
+				pen_option_get( 'color_navigation_background_primary' ),
+				pen_option_get( 'color_navigation_background_secondary' ),
+			);
+			wp_enqueue_script( 'trianglify', $theme_directory . '/assets/js/plugins/trianglify.js', array( 'jquery', 'base64' ), '2.0.0', true );
+		}
+
+		$shards        = false;
+		$shards_colors = false;
+		if ( 'shards' === $site_background_effect ) {
+			$shards                      = true;
+			$site_background             = new \Pen\Color( pen_option_get( 'color_site_background' ) );
+			$site_background             = array_values( $site_background->getRgb() );
+			$site_background[]           = 0.25;
+			$header_background_primary   = new \Pen\Color( pen_option_get( 'color_header_background_primary' ) );
+			$header_background_primary   = array_values( $header_background_primary->getRgb() );
+			$header_background_primary[] = 0.25;
+			$shards_colors               = array(
+				$site_background,
+				$header_background_primary,
+			);
+			wp_enqueue_script( 'shards', $theme_directory . '/assets/js/plugins/shards.js', array( 'jquery' ), '1.1', true );
+		}
+
+		wp_enqueue_script(
+			'pen-js',
+			$theme_directory . '/assets/js/pen-scripts.js',
+			array_filter(
+				array(
+					'jquery',
+					'jquery-masonry',
+					$shards ? 'shards' : '',
+					$trianglify ? 'trianglify' : '',
+				)
+			),
+			PEN_THEME_VERSION,
+			true
+		);
+		wp_localize_script(
+			'pen-js',
+			'pen_js',
+			array(
+				'header_sticky'                => pen_option_get( 'header_sticky' ),
+				'list_type'                    => $content_list_type,
+				'trianglify_colors'            => $trianglify_colors,
+				'shards_colors'                => $shards_colors,
+				'navigation_arrows'            => pen_option_get( 'navigation_arrows' ) ? true : false,
+				'navigation_easing'            => $navigation_easing,
+				'navigation_mobile'            => pen_option_get( 'navigation_mobile_display' ) ? true : false,
+				'animation_comments'           => pen_option_get( 'comments_animation_reveal' ),
+				'animation_navigation_speed'   => pen_option_get( 'navigation_animation_speed' ),
+				'animation_list'               => pen_option_get( 'list_animation_reveal' ),
+				'animation_list_thumbnails'    => pen_option_get( 'list_thumbnail_animation_reveal' ),
+				'animation_content'            => pen_option_get( 'content_animation_reveal' ),
+				'animation_content_thumbnails' => pen_option_get( 'content_thumbnail_animation_reveal' ),
+				/* phpcs:disable */
+				'font_resize'                  => array(
+					'site_title'                    => pen_option_get( 'font_resize_sitetitle' ),
+				),
+				'text'                         => array(
+					'pen_theme'                     => __( 'Pen', 'pen' ),
+					'loading'                       => __( 'Loading...', 'pen' ),
+					'enter_keyword'                 => __( 'Please enter some keywords.', 'pen' ),
+					'close'                         => __( 'Close', 'pen' ),
+					'menu'                          => __( 'Menu', 'pen' ),
+					'overview_options_post'         => __( 'Content settings overview', 'pen' ),
+					'expand_collapse'               => __( 'Expand\Collapse', 'pen' ),
+					'theme_specific'                => __( "This is a part of the 'Pen' theme, so if you switch to another theme this nice little editing tool will be no longer available.", 'pen' ),
+				),
+				/* phpcs:enable */
+			)
+		);
+
+		if ( file_exists( $theme_directory . '/assets/js/custom.js' ) ) {
+			wp_enqueue_script( 'pen-custom', $theme_directory . '/assets/js/custom.js', array( 'jquery' ), PEN_THEME_VERSION, true );
+		}
+
+		wp_enqueue_script( 'html5shiv', $theme_directory . '/assets/js/plugins/html5.js', array(), '3.7.3', false );
+		wp_script_add_data( 'html5shiv', 'conditional', 'lt IE 9' );
+
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_assets' );
+
+}

+ 516 - 0
include/color.php

@@ -0,0 +1,516 @@
+<?php
+namespace Pen;
+
+/* phpcs:ignoreFile */
+/**
+ * A color utility that helps manipulate HEX colors
+ *
+ * Author: Arlo Carreon <http://arlocarreon.com>
+ * Info: http://mexitek.github.io/phpColors/
+ * License: http://arlo.mit-license.org/
+ */
+
+class Color {
+
+	private $_hex;
+	private $_hsl;
+	private $_rgb;
+
+	/**
+	 * Auto darkens/lightens by 10% for sexily-subtle gradients.
+	 * Set this to FALSE to adjust automatic shade to be between given color
+	 * and black (for darken) or white (for lighten)
+	 */
+	const DEFAULT_ADJUST = 10;
+
+	/**
+	 * Instantiates the class with a HEX value
+	 * @param string $hex
+	 * @throws Exception "Bad color format"
+	 */
+	function __construct( $hex ) {
+		// Strip # sign is present
+		$color = str_replace( '#', '', $hex );
+
+		// Make sure it's 6 digits
+		if ( strlen( $color ) === 3 ) {
+			$color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2];
+		} elseif ( strlen( $color ) != 6 ) {
+			throw new Exception( esc_html__( 'HEX color needs to be 6 or 3 digits long', 'pen' ) );
+		}
+
+		$this->_hsl = self::hexToHsl( $color );
+		$this->_hex = $color;
+		$this->_rgb = self::hexToRgb( $color );
+	}
+
+	// ====================
+	// = Public Interface =
+	// ====================
+
+	/**
+	 * Given a HEX string returns a HSL array equivalent.
+	 * @param string $color
+	 * @return array HSL associative array
+	 */
+	public static function hexToHsl( $color ) {
+
+		// Sanity check
+		$color = self::_checkHex( $color );
+
+		// Convert HEX to DEC
+		$R = hexdec( $color[0] . $color[1] );
+		$G = hexdec( $color[2] . $color[3] );
+		$B = hexdec( $color[4] . $color[5] );
+
+		$HSL = array();
+
+		$var_R = ( $R / 255 );
+		$var_G = ( $G / 255 );
+		$var_B = ( $B / 255 );
+
+		$var_Min = min( $var_R, $var_G, $var_B );
+		$var_Max = max( $var_R, $var_G, $var_B );
+		$del_Max = $var_Max - $var_Min;
+
+		$L = ( $var_Max + $var_Min ) / 2;
+
+		if ( $del_Max == 0 ) {
+			$H = 0;
+			$S = 0;
+		} else {
+			if ( $L < 0.5 ) {
+				$S = $del_Max / ( $var_Max + $var_Min );
+			} else {
+				$S = $del_Max / ( 2 - $var_Max - $var_Min );
+			}
+
+			$del_R = ( ( ( $var_Max - $var_R ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
+			$del_G = ( ( ( $var_Max - $var_G ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
+			$del_B = ( ( ( $var_Max - $var_B ) / 6 ) + ( $del_Max / 2 ) ) / $del_Max;
+
+			if ( $var_R == $var_Max ) {
+				$H = $del_B - $del_G;
+			} elseif ( $var_G == $var_Max ) {
+				$H = ( 1 / 3 ) + $del_R - $del_B;
+			} elseif ( $var_B == $var_Max ) {
+				$H = ( 2 / 3 ) + $del_G - $del_R;
+			}
+
+			if ( $H < 0 ) {
+				$H++;
+			}
+			if ( $H > 1 ) {
+				$H--;
+			}
+		}
+
+		$HSL['H'] = ( $H * 360 );
+		$HSL['S'] = $S;
+		$HSL['L'] = $L;
+
+		return $HSL;
+	}
+
+	/**
+	 *  Given a HSL associative array returns the equivalent HEX string
+	 * @param array $hsl
+	 * @return string HEX string
+	 * @throws Exception "Bad HSL Array"
+	 */
+	public static function hslToHex( $hsl = array() ) {
+		 // Make sure it's HSL
+		if ( empty( $hsl ) || ! isset( $hsl['H'] ) || ! isset( $hsl['S'] ) || ! isset( $hsl['L'] ) ) {
+			throw new Exception( esc_html__( 'Parameter was not an HSL array', 'pen' ) );
+		}
+
+		list($H,$S,$L) = array( $hsl['H'] / 360, $hsl['S'], $hsl['L'] );
+
+		if ( $S == 0 ) {
+			$r = $L * 255;
+			$g = $L * 255;
+			$b = $L * 255;
+		} else {
+
+			if ( $L < 0.5 ) {
+				$var_2 = $L * ( 1 + $S );
+			} else {
+				$var_2 = ( $L + $S ) - ( $S * $L );
+			}
+
+			$var_1 = 2 * $L - $var_2;
+
+			$r = round( 255 * self::_huetorgb( $var_1, $var_2, $H + ( 1 / 3 ) ) );
+			$g = round( 255 * self::_huetorgb( $var_1, $var_2, $H ) );
+			$b = round( 255 * self::_huetorgb( $var_1, $var_2, $H - ( 1 / 3 ) ) );
+
+		}
+
+		// Convert to hex
+		$r = dechex( $r );
+		$g = dechex( $g );
+		$b = dechex( $b );
+
+		// Make sure we get 2 digits for decimals
+		$r = ( strlen( '' . $r ) === 1 ) ? '0' . $r : $r;
+		$g = ( strlen( '' . $g ) === 1 ) ? '0' . $g : $g;
+		$b = ( strlen( '' . $b ) === 1 ) ? '0' . $b : $b;
+
+		return $r . $g . $b;
+	}
+
+
+	/**
+	 * Given a HEX string returns a RGB array equivalent.
+	 * @param string $color
+	 * @return array RGB associative array
+	 */
+	public static function hexToRgb( $color ) {
+
+		// Sanity check
+		$color = self::_checkHex( $color );
+
+		// Convert HEX to DEC
+		$R = hexdec( $color[0] . $color[1] );
+		$G = hexdec( $color[2] . $color[3] );
+		$B = hexdec( $color[4] . $color[5] );
+
+		$RGB['R'] = $R;
+		$RGB['G'] = $G;
+		$RGB['B'] = $B;
+
+		return $RGB;
+	}
+
+
+	/**
+	 *  Given an RGB associative array returns the equivalent HEX string
+	 * @param array $rgb
+	 * @return string RGB string
+	 * @throws Exception "Bad RGB Array"
+	 */
+	public static function rgbToHex( $rgb = array() ) {
+		 // Make sure it's RGB
+		if ( empty( $rgb ) || ! isset( $rgb['R'] ) || ! isset( $rgb['G'] ) || ! isset( $rgb['B'] ) ) {
+			throw new Exception( esc_html__( 'Parameter was not an RGB array', 'pen' ) );
+		}
+
+		// https://github.com/mexitek/phpColors/issues/25#issuecomment-88354815
+		// Convert RGB to HEX
+		$hex[0] = str_pad( dechex( $rgb['R'] ), 2, '0', STR_PAD_LEFT );
+		$hex[1] = str_pad( dechex( $rgb['G'] ), 2, '0', STR_PAD_LEFT );
+		$hex[2] = str_pad( dechex( $rgb['B'] ), 2, '0', STR_PAD_LEFT );
+
+		return implode( '', $hex );
+
+	}
+
+
+	/**
+	 * Given a HEX value, returns a darker color. If no desired amount provided, then the color halfway between
+	 * given HEX and black will be returned.
+	 * @param int $amount
+	 * @return string Darker HEX value
+	 */
+	public function darken( $amount = self::DEFAULT_ADJUST ) {
+		// Darken
+		$darkerHSL = $this->_darken( $this->_hsl, $amount );
+		// Return as HEX
+		return self::hslToHex( $darkerHSL );
+	}
+
+	/**
+	 * Given a HEX value, returns a lighter color. If no desired amount provided, then the color halfway between
+	 * given HEX and white will be returned.
+	 * @param int $amount
+	 * @return string Lighter HEX value
+	 */
+	public function lighten( $amount = self::DEFAULT_ADJUST ) {
+		// Lighten
+		$lighterHSL = $this->_lighten( $this->_hsl, $amount );
+		// Return as HEX
+		return self::hslToHex( $lighterHSL );
+	}
+
+	/**
+	 * Given a HEX value, returns a mixed color. If no desired amount provided, then the color mixed by this ratio
+	 * @param string $hex2 Secondary HEX value to mix with
+	 * @param int $amount = -100..0..+100
+	 * @return string mixed HEX value
+	 */
+	public function mix( $hex2, $amount = 0 ) {
+		$rgb2  = self::hexToRgb( $hex2 );
+		$mixed = $this->_mix( $this->_rgb, $rgb2, $amount );
+		// Return as HEX
+		return self::rgbToHex( $mixed );
+	}
+
+	/**
+	 * Creates an array with two shades that can be used to make a gradient
+	 * @param int $amount Optional percentage amount you want your contrast color
+	 * @return array An array with a 'light' and 'dark' index
+	 */
+	public function makeGradient( $amount = self::DEFAULT_ADJUST ) {
+		// Decide which color needs to be made
+		if ( $this->isLight() ) {
+			$lightColor = $this->_hex;
+			$darkColor  = $this->darken( $amount );
+		} else {
+			$lightColor = $this->lighten( $amount );
+			$darkColor  = $this->_hex;
+		}
+
+		// Return our gradient array
+		return array(
+			'light' => $lightColor,
+			'dark'  => $darkColor,
+		);
+	}
+
+
+	/**
+	 * Returns whether or not given color is considered "light"
+	 * @param string|Boolean $color
+	 * @param int $lighterThan
+	 * @return boolean
+	 */
+	public function isLight( $color = false, $lighterThan = 130 ) {
+		// Get our color
+		$color = ( $color ) ? $color : $this->_hex;
+
+		// Calculate straight from rbg
+		$r = hexdec( $color[0] . $color[1] );
+		$g = hexdec( $color[2] . $color[3] );
+		$b = hexdec( $color[4] . $color[5] );
+
+		return ( ( $r * 299 + $g * 587 + $b * 114 ) / 1000 > $lighterThan );
+	}
+
+	/**
+	 * Returns whether or not a given color is considered "dark"
+	 * @param string|Boolean $color
+	 * @param int $darkerThan
+	 * @return boolean
+	 */
+	public function isDark( $color = false, $darkerThan = 130 ) {
+		// Get our color
+		$color = ( $color ) ? $color : $this->_hex;
+
+		// Calculate straight from rbg
+		$r = hexdec( $color[0] . $color[1] );
+		$g = hexdec( $color[2] . $color[3] );
+		$b = hexdec( $color[4] . $color[5] );
+
+		return ( ( $r * 299 + $g * 587 + $b * 114 ) / 1000 <= $darkerThan );
+	}
+
+	/**
+	 * Returns the complimentary color
+	 * @return string Complementary hex color
+	 *
+	 */
+	public function complementary() {
+		// Get our HSL
+		$hsl = $this->_hsl;
+
+		// Adjust Hue 180 degrees
+		$hsl['H'] += ( $hsl['H'] > 180 ) ? -180 : 180;
+
+		// Return the new value in HEX
+		return self::hslToHex( $hsl );
+	}
+
+	/**
+	 * Returns your color's HSL array
+	 */
+	public function getHsl() {
+		return $this->_hsl;
+	}
+	/**
+	 * Returns your original color
+	 */
+	public function getHex() {
+		return $this->_hex;
+	}
+	/**
+	 * Returns your color's RGB array
+	 */
+	public function getRgb() {
+		return $this->_rgb;
+	}
+
+	/**
+	 * Returns the cross browser CSS3 gradient
+	 * @param int $amount Optional: percentage amount to light/darken the gradient
+	 * @param boolean $vintageBrowsers Optional: include vendor prefixes for browsers that almost died out already
+	 * @param string $prefix Optional: prefix for every lines
+	 * @param string $suffix Optional: suffix for every lines
+	 * @link  http://caniuse.com/css-gradients Resource for the browser support
+	 * @return string CSS3 gradient for chrome, safari, firefox, opera and IE10
+	 */
+	public function getCssGradient( $amount = self::DEFAULT_ADJUST, $vintageBrowsers = false, $suffix = '', $prefix = '' ) {
+
+		// Get the recommended gradient
+		$g = $this->makeGradient( $amount );
+
+		$css = '';
+		/* fallback/image non-cover color */
+		$css .= "{$prefix}background-color: #" . $this->_hex . ";{$suffix}";
+
+		/* IE Browsers */
+		$css .= "{$prefix}filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#" . $g['light'] . "', endColorstr='#" . $g['dark'] . "');{$suffix}";
+
+		/* Safari 4+, Chrome 1-9 */
+		if ( $vintageBrowsers ) {
+			$css .= "{$prefix}background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#" . $g['light'] . '), to(#' . $g['dark'] . "));{$suffix}";
+		}
+
+		/* Safari 5.1+, Mobile Safari, Chrome 10+ */
+		$css .= "{$prefix}background-image: -webkit-linear-gradient(top, #" . $g['light'] . ', #' . $g['dark'] . ");{$suffix}";
+
+		/* Firefox 3.6+ */
+		if ( $vintageBrowsers ) {
+			$css .= "{$prefix}background-image: -moz-linear-gradient(top, #" . $g['light'] . ', #' . $g['dark'] . ");{$suffix}";
+		}
+
+		/* Opera 11.10+ */
+		if ( $vintageBrowsers ) {
+			$css .= "{$prefix}background-image: -o-linear-gradient(top, #" . $g['light'] . ', #' . $g['dark'] . ");{$suffix}";
+		}
+
+		/* Unprefixed version (standards): FF 16+, IE10+, Chrome 26+, Safari 7+, Opera 12.1+ */
+		$css .= "{$prefix}background-image: linear-gradient(to bottom, #" . $g['light'] . ', #' . $g['dark'] . ");{$suffix}";
+
+		// Return our CSS
+		return $css;
+	}
+
+	// ===========================
+	// = Private Functions Below =
+	// ===========================
+
+
+	/**
+	 * Darkens a given HSL array
+	 * @param array $hsl
+	 * @param int $amount
+	 * @return array $hsl
+	 */
+	private function _darken( $hsl, $amount = self::DEFAULT_ADJUST ) {
+		// Check if we were provided a number
+		if ( $amount ) {
+			$hsl['L'] = ( $hsl['L'] * 100 ) - $amount;
+			$hsl['L'] = ( $hsl['L'] < 0 ) ? 0 : $hsl['L'] / 100;
+		} else {
+			// We need to find out how much to darken
+			$hsl['L'] = $hsl['L'] / 2;
+		}
+
+		return $hsl;
+	}
+
+	/**
+	 * Lightens a given HSL array
+	 * @param array $hsl
+	 * @param int $amount
+	 * @return array $hsl
+	 */
+	private function _lighten( $hsl, $amount = self::DEFAULT_ADJUST ) {
+		// Check if we were provided a number
+		if ( $amount ) {
+			$hsl['L'] = ( $hsl['L'] * 100 ) + $amount;
+			$hsl['L'] = ( $hsl['L'] > 100 ) ? 1 : $hsl['L'] / 100;
+		} else {
+			// We need to find out how much to lighten
+			$hsl['L'] += ( 1 - $hsl['L'] ) / 2;
+		}
+
+		return $hsl;
+	}
+
+	/**
+	 * Mix 2 rgb colors and return an rgb color
+	 * @param array $rgb1
+	 * @param array $rgb2
+	 * @param int $amount ranged -100..0..+100
+	 * @return array $rgb
+	 *
+	 *  ported from http://phpxref.pagelines.com/nav.html?includes/class.colors.php.source.html
+	 */
+	private function _mix( $rgb1, $rgb2, $amount = 0 ) {
+
+		 $r1 = ( $amount + 100 ) / 100;
+		 $r2 = 2 - $r1;
+
+		 $rmix = ( ( $rgb1['R'] * $r1 ) + ( $rgb2['R'] * $r2 ) ) / 2;
+		 $gmix = ( ( $rgb1['G'] * $r1 ) + ( $rgb2['G'] * $r2 ) ) / 2;
+		 $bmix = ( ( $rgb1['B'] * $r1 ) + ( $rgb2['B'] * $r2 ) ) / 2;
+
+		 return array(
+			 'R' => $rmix,
+			 'G' => $gmix,
+			 'B' => $bmix,
+		 );
+	}
+
+	/**
+	 * Given a Hue, returns corresponding RGB value
+	 * @param int $v1
+	 * @param int $v2
+	 * @param int $vH
+	 * @return int
+	 */
+	private static function _huetorgb( $v1, $v2, $vH ) {
+		if ( $vH < 0 ) {
+			$vH += 1;
+		}
+
+		if ( $vH > 1 ) {
+			$vH -= 1;
+		}
+
+		if ( ( 6 * $vH ) < 1 ) {
+			   return ( $v1 + ( $v2 - $v1 ) * 6 * $vH );
+		}
+
+		if ( ( 2 * $vH ) < 1 ) {
+			return $v2;
+		}
+
+		if ( ( 3 * $vH ) < 2 ) {
+			return ( $v1 + ( $v2 - $v1 ) * ( ( 2 / 3 ) - $vH ) * 6 );
+		}
+
+		return $v1;
+
+	}
+
+	/**
+	 * You need to check if you were given a good hex string
+	 * @param string $hex
+	 * @return string Color
+	 * @throws Exception "Bad color format"
+	 */
+	private static function _checkHex( $hex ) {
+		// Strip # sign is present
+		$color = str_replace( '#', '', $hex );
+
+		// Make sure it's 6 digits
+		if ( strlen( $color ) == 3 ) {
+			$color = $color[0] . $color[0] . $color[1] . $color[1] . $color[2] . $color[2];
+		} elseif ( strlen( $color ) != 6 ) {
+			throw new Exception( esc_html__( 'HEX color needs to be 6 or 3 digits long', 'pen' ) );
+		}
+
+		return $color;
+	}
+
+	/**
+	 * Converts object into its string representation
+	 * @return string Color
+	 */
+	public function __toString() {
+		return '#' . $this->getHex();
+	}
+
+}

+ 56 - 0
include/compress.php

@@ -0,0 +1,56 @@
+<?php
+/**
+ * Compression functions.
+ *
+ * @package Pen
+ */
+
+if ( ! function_exists( 'pen_compress_css' ) ) {
+	/**
+	 * Removes empty lines and white space from CSS.
+	 *
+	 * @param string $input The input CSS.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_compress_css( $input ) {
+		// Removes blank lines.
+		$output = preg_replace( '/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/', "\n", trim( $input ) );
+		// Removes comments.
+		$output = preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $output );
+		// Removes indentation.
+		$trimmed = array();
+		$output  = explode( "\n", $output );
+		foreach ( $output as $output ) {
+			$trimmed[] = trim( $output );
+		}
+		$output  = implode( $trimmed );
+		$search  = array( '{ ', ' }', '; ', ', ', ' {', '} ', ': ', ' ,', ' ;', ';}' );
+		$replace = array( '{', '}', ';', ',', '{', '}', ':', ',', ';', '}' );
+		$output  = str_replace( $search, $replace, $output );
+		return $output;
+	}
+}
+
+if ( ! function_exists( 'pen_compress_html' ) ) {
+	/**
+	 * Compresses HTML code.
+	 *
+	 * @param string $input The input.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_compress_html( $input ) {
+		if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
+			return $input;
+		}
+		$search  = array( '/\>[^\S ]+/s', '/[^\S ]+\</s', '/(\s)+/s' );
+		$replace = array( '>', '<', '\\1' );
+		$output  = preg_replace( $search, $replace, $input );
+		$output  = preg_replace( '!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $output );
+		$output  = trim( $output );
+		return $output;
+	}
+}

+ 3165 - 0
include/configure.php

@@ -0,0 +1,3165 @@
+<?php
+/**
+ * Theme configuration.
+ *
+ * @package Pen
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+if ( ! function_exists( 'pen_configuration' ) ) {
+	/**
+	 * A list of the theme settings, default values, and sanitizing functions.
+	 *
+	 * @since Pen 1.0.0
+	 * @return array
+	 */
+	function pen_configuration() {
+		return array(
+			/* phpcs:disable */
+			'pen_preset_color' => array(
+				'default'  => 'preset_1',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_preset_font' => array(
+				'default'  => 'preset_1',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_phone' => array(
+				'default'  => '123-456-789',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_phone_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_phone_header_animation_reveal' => array(
+				'default'  => 'fadeInRight',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_phone_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_phone_footer_animation_reveal' => array(
+				'default'  => 'fadeIn',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_twitter' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_twitter_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_twitter_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_facebook' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_facebook_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_facebook_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_instagram' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_instagram_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_instagram_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_vk' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_vk_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_vk_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_pinterest' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_pinterest_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_pinterest_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_linkedin' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_linkedin_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_linkedin_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_skype' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_skype_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_skype_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_telegram' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_telegram_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_telegram_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_whatsapp' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_whatsapp_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_whatsapp_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_rss' => array(
+				'default'  => get_bloginfo( 'rss2_url' ),
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_rss_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_rss_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_email' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_email_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_email_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_bitbucket' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_bitbucket_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_bitbucket_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_flickr' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_flickr_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_flickr_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_github' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_github_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_github_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_slack' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_url',
+			),
+			'pen_slack_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_slack_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_site_width' => array(
+				'default'  => 'standard',
+				'sanitize' => 'pen_sanitize_site_width',
+			),
+			'pen_round_corners' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_container_position' => array(
+				'default'  => 'center',
+				'sanitize' => 'pen_sanitize_alignment',
+			),
+			'pen_list_animation_reveal' => array(
+				'default'  => 'flipInY',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_list_effect' => array(
+				'default'  => 'none',
+				'sanitize' => 'pen_sanitize_list_effect',
+			),
+			'pen_list_type' => array(
+				'default'  => 'masonry',
+				'sanitize' => 'pen_sanitize_list_type',
+			),
+			'pen_list_masonry_columns' => array(
+				'default'  => 4,
+				'sanitize' => 'pen_sanitize_masonry_columns',
+			),
+			'pen_list_masonry_thumbnail_effect' => array(
+				'default'  => 'none',
+				'sanitize' => 'pen_sanitize_masonry_thumbnail',
+			),
+			'pen_list_masonry_thumbnail_style' => array(
+				'default'  => 1,
+				'sanitize' => 'pen_sanitize_integer',
+			),
+			'pen_list_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_post_header_alignment' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_header_primary_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_header_secondary_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_search_top_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_search_left_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_search_right_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_search_bottom_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_top_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_left_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_right_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_content_top_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_content_bottom_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_bottom_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_footer_top_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_footer_left_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_footer_right_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_front_sidebar_footer_bottom_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_title_alignment' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_title_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_author_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_author_animation_reveal' => array(
+				'default'  => 'fadeIn',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_list_date_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_category_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_category_only_first' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_thumbnail_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_thumbnail_animation_reveal' => array(
+				'default'  => 'fadeIn',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_list_thumbnail_rotate' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_thumbnail_alignment' => array(
+				'default'  => 'right',
+				'sanitize' => 'pen_sanitize_alignment',
+			),
+			'pen_list_thumbnail_frame' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_thumbnail_resize' => array(
+				'default'  => 'large',
+				'sanitize' => 'pen_sanitize_thumbnail_resize',
+			),
+			'pen_list_summary_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_excerpt' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_profile_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_footer_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_tags_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_button_comment_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_button_edit_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_list_author_location' => array(
+				'default'  => 'header',
+				'sanitize' => 'pen_sanitize_location',
+			),
+			'pen_list_date_location' => array(
+				'default'  => 'header',
+				'sanitize' => 'pen_sanitize_location',
+			),
+			'pen_list_category_location' => array(
+				'default'  => 'header',
+				'sanitize' => 'pen_sanitize_location',
+			),
+			'pen_list_pager_animation_reveal' => array(
+				'default'  => 'fadeInDown',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_content_animation_reveal' => array(
+				'default'  => 'none',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_content_header_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_header_alignment' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_title_alignment' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_title_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_author_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_author_animation_reveal' => array(
+				'default'  => 'fadeIn',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_content_date_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_category_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_category_only_first' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_thumbnail_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_thumbnail_animation_reveal' => array(
+				'default'  => 'swing',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_content_thumbnail_rotate' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_thumbnail_alignment' => array(
+				'default'  => 'right',
+				'sanitize' => 'pen_sanitize_alignment',
+			),
+			'pen_content_thumbnail_frame' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_thumbnail_resize' => array(
+				'default'  => 'medium',
+				'sanitize' => 'pen_sanitize_thumbnail_resize',
+			),
+			'pen_content_profile_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_footer_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_tags_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_share_display' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_content_author_location' => array(
+				'default'  => 'header',
+				'sanitize' => 'pen_sanitize_location',
+			),
+			'pen_content_date_location' => array(
+				'default'  => 'header',
+				'sanitize' => 'pen_sanitize_location',
+			),
+			'pen_content_category_location' => array(
+				'default'  => 'header',
+				'sanitize' => 'pen_sanitize_location',
+			),
+			'pen_content_share_location' => array(
+				'default'  => 'content',
+				'sanitize' => 'pen_sanitize_location',
+			),
+			'pen_content_pager_animation_reveal' => array(
+				'default'  => 'fadeInDown',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_comments_animation_reveal' => array(
+				'default'  => 'fadeIn',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_background_lights_dim' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_text' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#ffffff',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_shadow' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_site_shadow_display' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => true,
+					'preset_6'  => true,
+					'preset_7'  => true,
+					'preset_8'  => true,
+					'preset_9'  => true,
+					'preset_10' => true,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_site_background' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#222222',
+					'preset_3'  => '#000b0d',
+					'preset_4'  => '#03000a',
+					'preset_5'  => '#001b3b',
+					'preset_6'  => '#4a004a',
+					'preset_7'  => '#111111',
+					'preset_8'  => '#f2def1',
+					'preset_9'  => '#0c0e00',
+					'preset_10' => '#777777',
+					'preset_11' => '#0d1f1c',
+					'preset_12' => '#000000',
+					'preset_13' => '#444444',
+					'preset_14' => '#00050a',
+					'preset_15' => '#001f4a',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_site_background_effect' => array(
+				'default' => array(
+					'preset_1'  => 'trianglify',
+					'preset_2'  => 'shards',
+					'preset_3'  => 'trianglify',
+					'preset_4'  => 'shards',
+					'preset_5'  => 'trianglify',
+					'preset_6'  => 'shards',
+					'preset_7'  => 'trianglify',
+					'preset_8'  => 'shards',
+					'preset_9'  => 'trianglify',
+					'preset_10' => 'shards',
+					'preset_11' => 'trianglify',
+					'preset_12' => 'shards',
+					'preset_13' => 'trianglify',
+					'preset_14' => 'shards',
+					'preset_15' => 'trianglify',
+				),
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_color_link' => array(
+				'default' => array(
+					'preset_1'  => '#0087cc',
+					'preset_2'  => '#de5e00',
+					'preset_3'  => '#007773',
+					'preset_4'  => '#7100e2',
+					'preset_5'  => '#0071c7',
+					'preset_6'  => '#8c538c',
+					'preset_7'  => '#e00000',
+					'preset_8'  => '#ca43c2',
+					'preset_9'  => '#729800',
+					'preset_10' => '#d29d00',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#008aff',
+					'preset_15' => '#00a9ff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_link_hover' => array(
+				'default' => array(
+					'preset_1'  => '#18b1e7',
+					'preset_2'  => '#b74d00',
+					'preset_3'  => '#00aba5',
+					'preset_4'  => '#8d1cff',
+					'preset_5'  => '#007fe0',
+					'preset_6'  => '#7f447f',
+					'preset_7'  => '#c00000',
+					'preset_8'  => '#d22dc9',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#ffaa00',
+					'preset_11' => '#009f92',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#008af0',
+					'preset_15' => '#093a89',
+					'preset_15' => '#093a89',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_button_text' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#ffffff',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#142d29',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#777777',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_button_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#00a9ff',
+					'preset_2'  => '#ff5100',
+					'preset_3'  => '#007385',
+					'preset_4'  => '#34004c',
+					'preset_5'  => '#1a74c7',
+					'preset_6'  => '#a800a8',
+					'preset_7'  => '#c00000',
+					'preset_8'  => '#d437ca',
+					'preset_9'  => '#709500',
+					'preset_10' => '#222222',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#ffca00',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_button_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#093a89',
+					'preset_2'  => '#ab3c00',
+					'preset_3'  => '#00252b',
+					'preset_4'  => '#200027',
+					'preset_5'  => '#000e4f',
+					'preset_6'  => '#4a004a',
+					'preset_7'  => '#700000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#709500',
+					'preset_10' => '#000000',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#ffca00',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_button_border' => array(
+				'default' => array(
+					'preset_1'  => '#093a89',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#00252b',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000e4f',
+					'preset_6'  => '#333333',
+					'preset_7'  => '#300000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#3b4d11',
+					'preset_10' => '#000000',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#ffca00',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#404040',
+					'preset_3'  => '#001f24',
+					'preset_4'  => '#080019',
+					'preset_5'  => '#001a42',
+					'preset_6'  => '#fff2ff',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#ffddfd',
+					'preset_9'  => '#000000',
+					'preset_10' => '#ffe400',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#000000',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#000000',
+					'preset_15' => '#001a4a',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#dddddd',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#00121a',
+					'preset_4'  => '#0c001c',
+					'preset_5'  => '#003078',
+					'preset_6'  => '#eacaea',
+					'preset_7'  => '#111111',
+					'preset_8'  => '#fff5fe',
+					'preset_9'  => '#3b4d11',
+					'preset_10' => '#ffe400',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#000000',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#000000',
+					'preset_15' => '#001a4a',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_background_angle' => array(
+				'default' => array(
+					'preset_1'  => '125deg',
+					'preset_2'  => '125deg',
+					'preset_3'  => '125deg',
+					'preset_4'  => '125deg',
+					'preset_5'  => '125deg',
+					'preset_6'  => 'to bottom',
+					'preset_7'  => 'to bottom',
+					'preset_8'  => 'to bottom',
+					'preset_9'  => '125deg',
+					'preset_10' => '125deg',
+					'preset_11' => 'to bottom',
+					'preset_12' => 'to bottom',
+					'preset_13' => 'to bottom',
+					'preset_14' => 'to bottom',
+					'preset_15' => 'to bottom',
+				),
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_color_header_text' => array(
+				'default' => array(
+					'preset_1'  => '#777777',
+					'preset_2'  => '#eeeeee',
+					'preset_3'  => '#b0f4ff',
+					'preset_4'  => '#deb8f9',
+					'preset_5'  => '#b0f4ff',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#dddddd',
+					'preset_8'  => '#d437ca',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#444444',
+					'preset_11' => '#777777',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#333333',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_link' => array(
+				'default' => array(
+					'preset_1'  => '#777777',
+					'preset_2'  => '#de7e00',
+					'preset_3'  => '#b0f4ff',
+					'preset_4'  => '#deb8f9',
+					'preset_5'  => '#ffe000',
+					'preset_6'  => '#7f447f',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#e75ade',
+					'preset_9'  => '#f5ff83',
+					'preset_10' => '#000000',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#008aff',
+					'preset_15' => '#00a9ff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_link_hover' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#de5e00',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#fffc00',
+					'preset_6'  => '#aa73aa',
+					'preset_7'  => '#c00000',
+					'preset_8'  => '#d437ca',
+					'preset_9'  => '#edff25',
+					'preset_10' => '#444444',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#008af0',
+					'preset_15' => '#00a9ff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_sitetitle' => array(
+				'default' => array(
+					'preset_1'  => '#777777',
+					'preset_2'  => '#dddddd',
+					'preset_3'  => '#b0f4ff',
+					'preset_4'  => '#c8bcff',
+					'preset_5'  => '#b0daff',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#dddddd',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#333333',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_sitetitle_hover' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#96d5ff',
+					'preset_6'  => '#7b407b',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ca43c2',
+					'preset_9'  => '#caed3c',
+					'preset_10' => '#444444',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_sitedescription' => array(
+				'default' => array(
+					'preset_1'  => '#777777',
+					'preset_2'  => '#de7e00',
+					'preset_3'  => '#b0f4ff',
+					'preset_4'  => '#deb8f9',
+					'preset_5'  => '#5081c9',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#aaaaaa',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#555555',
+					'preset_11' => '#009f92',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_sitedescription_hover' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#de9b00',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#96d5ff',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#f00000',
+					'preset_8'  => '#ca43c2',
+					'preset_9'  => '#caed3c',
+					'preset_10' => '#000000',
+					'preset_11' => '#009f92',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_phone' => array(
+				'default' => array(
+					'preset_1'  => '#777777',
+					'preset_2'  => '#de7e00',
+					'preset_3'  => '#b0f4ff',
+					'preset_4'  => '#deb8f9',
+					'preset_5'  => '#96d5ff',
+					'preset_6'  => '#8c538c',
+					'preset_7'  => '#aaaaaa',
+					'preset_8'  => '#ca43c2',
+					'preset_9'  => '#caed3c',
+					'preset_10' => '#444444',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_phone_hover' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#de5e00',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#aa73aa',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#000000',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_text_shadow' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_text_shadow_display' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => true,
+					'preset_6'  => false,
+					'preset_7'  => true,
+					'preset_8'  => false,
+					'preset_9'  => true,
+					'preset_10' => false,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_header_field_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#303030',
+					'preset_3'  => '#a7f4ff',
+					'preset_4'  => '#1f1b58',
+					'preset_5'  => '#031c4f',
+					'preset_6'  => '#753775',
+					'preset_7'  => '#303030',
+					'preset_8'  => '#ffe0fd',
+					'preset_9'  => '#020300',
+					'preset_10' => '#fff283',
+					'preset_11' => '#009f92',
+					'preset_12' => '#333333',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#333333',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_field_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#333333',
+					'preset_3'  => '#c8f7ff',
+					'preset_4'  => '#311a8c',
+					'preset_5'  => '#031c4f',
+					'preset_6'  => '#753775',
+					'preset_7'  => '#3f3f3f',
+					'preset_8'  => '#ffe0fd',
+					'preset_9'  => '#1e2b00',
+					'preset_10' => '#fff283',
+					'preset_11' => '#009f92',
+					'preset_12' => '#333333',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#333333',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_field_text' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#eeeeee',
+					'preset_3'  => '#333333',
+					'preset_4'  => '#d5ccff',
+					'preset_5'  => '#a1d3ec',
+					'preset_6'  => '#f3dbf3',
+					'preset_7'  => '#aaaaaa',
+					'preset_8'  => '#b422ab',
+					'preset_9'  => '#e8fabe',
+					'preset_10' => '#333333',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#aaaaaa',
+					'preset_13' => '#555555',
+					'preset_14' => '#aaaaaa',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_search_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#00a9ff',
+					'preset_2'  => '#ff5100',
+					'preset_3'  => '#007385',
+					'preset_4'  => '#1e0057',
+					'preset_5'  => '#003694',
+					'preset_6'  => '#a800a8',
+					'preset_7'  => '#1f1f1f',
+					'preset_8'  => '#dc41d4',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#333333',
+					'preset_11' => '#005e5c',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#000000',
+					'preset_14' => '#285d9d',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_search_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#093a89',
+					'preset_2'  => '#ab3c00',
+					'preset_3'  => '#00252b',
+					'preset_4'  => '#060021',
+					'preset_5'  => '#001936',
+					'preset_6'  => '#333333',
+					'preset_7'  => '#0f0f0f',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#000000',
+					'preset_11' => '#005e5c',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#000000',
+					'preset_14' => '#285d9d',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_header_search_text' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#ffffff',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#000000',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#d1deec',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#00a9ff',
+					'preset_2'  => '#141414',
+					'preset_3'  => '#00121a',
+					'preset_4'  => '#1e003f',
+					'preset_5'  => '#ffe000',
+					'preset_6'  => '#f7e7f7',
+					'preset_7'  => '#df0000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#303030',
+					'preset_11' => '#005e5c',
+					'preset_12' => '#555555',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#3c97de',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#093a89',
+					'preset_2'  => '#404040',
+					'preset_3'  => '#001f24',
+					'preset_4'  => '#1f1c59',
+					'preset_5'  => '#ffbc00',
+					'preset_6'  => '#ead4ea',
+					'preset_7'  => '#b00000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#7b9b00',
+					'preset_10' => '#000000',
+					'preset_11' => '#005e5c',
+					'preset_12' => '#555555',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#3c97de',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_background_angle' => array(
+				'default' => array(
+					'preset_1'  => '125deg',
+					'preset_2'  => '125deg',
+					'preset_3'  => '125deg',
+					'preset_4'  => '125deg',
+					'preset_5'  => '125deg',
+					'preset_6'  => 'to bottom',
+					'preset_7'  => 'to bottom',
+					'preset_8'  => '125deg',
+					'preset_9'  => '125deg',
+					'preset_10' => '125deg',
+					'preset_11' => 'to bottom',
+					'preset_12' => 'to bottom',
+					'preset_13' => 'to bottom',
+					'preset_14' => 'to bottom',
+					'preset_15' => 'to bottom',
+				),
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_color_navigation_background_submenu_primary' => array(
+				'default' => array(
+					'preset_1'  => '#004d98',
+					'preset_2'  => '#1c1c1c',
+					'preset_3'  => '#001a21',
+					'preset_4'  => '#17002f',
+					'preset_5'  => '#ffbc00',
+					'preset_6'  => '#f7e7f7',
+					'preset_7'  => '#a00000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#333333',
+					'preset_11' => '#005e5c',
+					'preset_12' => '#303030',
+					'preset_13' => '#000000',
+					'preset_14' => '#3c97de',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_background_submenu_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#004d98',
+					'preset_2'  => '#1c1c1c',
+					'preset_3'  => '#001a21',
+					'preset_4'  => '#221158',
+					'preset_5'  => '#ffbc00',
+					'preset_6'  => '#f7e7f7',
+					'preset_7'  => '#f00000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#222222',
+					'preset_11' => '#005e5c',
+					'preset_12' => '#303030',
+					'preset_13' => '#000000',
+					'preset_14' => '#3c97de',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_background_submenu_angle' => array(
+				'default' => array(
+					'preset_1'  => '125deg',
+					'preset_2'  => 'to bottom',
+					'preset_3'  => '125deg',
+					'preset_4'  => '125deg',
+					'preset_5'  => '125deg',
+					'preset_6'  => '125deg',
+					'preset_7'  => 'to bottom',
+					'preset_8'  => 'to bottom',
+					'preset_9'  => '125deg',
+					'preset_10' => '125deg',
+					'preset_11' => 'to bottom',
+					'preset_12' => 'to bottom',
+					'preset_13' => 'to bottom',
+					'preset_14' => 'to bottom',
+					'preset_15' => 'to bottom',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_link' => array(
+				'default' => array(
+					'preset_1'  => '#c5e2ff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#b0f4ff',
+					'preset_4'  => '#bbaaf7',
+					'preset_5'  => '#003d87',
+					'preset_6'  => '#a555a5',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#212d04',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#333333',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#333333',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_link_hover' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#de5e00',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#f3edff',
+					'preset_5'  => '#005d9e',
+					'preset_6'  => '#ab34ab',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffd800',
+					'preset_9'  => '#415d00',
+					'preset_10' => '#ffcc00',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#000000',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#444444',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_text_shadow' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_text_shadow_display' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => false,
+					'preset_6'  => false,
+					'preset_7'  => true,
+					'preset_8'  => false,
+					'preset_9'  => false,
+					'preset_10' => true,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_navigation_link_submenu' => array(
+				'default' => array(
+					'preset_1'  => '#deeeff',
+					'preset_2'  => '#de7e00',
+					'preset_3'  => '#b0f4ff',
+					'preset_4'  => '#bbaaf7',
+					'preset_5'  => '#005d9e',
+					'preset_6'  => '#8c448c',
+					'preset_7'  => '#f3dddd',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#212e02',
+					'preset_10' => '#ffcc00',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#333333',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_link_hover_submenu' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#d98d00',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#f3edff',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#ab55ab',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffd800',
+					'preset_9'  => '#415d00',
+					'preset_10' => '#ffee00',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_text_shadow_submenu' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_navigation_text_shadow_display_submenu' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => false,
+					'preset_6'  => false,
+					'preset_7'  => true,
+					'preset_8'  => true,
+					'preset_9'  => false,
+					'preset_10' => true,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_search_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#8f8f8f',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#00171a',
+					'preset_4'  => '#1f1c59',
+					'preset_5'  => '#003078',
+					'preset_6'  => '#eacaea',
+					'preset_7'  => '#333333',
+					'preset_8'  => '#f4b3f0',
+					'preset_9'  => '#709500',
+					'preset_10' => '#ffd800',
+					'preset_11' => '#003e3c',
+					'preset_12' => '#333333',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#005fad',
+					'preset_15' => '#e5d500',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#5f5f5f',
+					'preset_2'  => '#121212',
+					'preset_3'  => '#000b0f',
+					'preset_4'  => '#1e003f',
+					'preset_5'  => '#001a42',
+					'preset_6'  => '#fff2ff',
+					'preset_7'  => '#111111',
+					'preset_8'  => '#e883e2',
+					'preset_9'  => '#709500',
+					'preset_10' => '#ffd800',
+					'preset_11' => '#003e3c',
+					'preset_12' => '#333333',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#005fad',
+					'preset_15' => '#e5d500',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_background_angle' => array(
+				'default' => array(
+					'preset_1'  => '125deg',
+					'preset_2'  => '125deg',
+					'preset_3'  => '125deg',
+					'preset_4'  => '125deg',
+					'preset_5'  => '125deg',
+					'preset_6'  => 'to bottom',
+					'preset_7'  => 'to bottom',
+					'preset_8'  => '125deg',
+					'preset_9'  => '125deg',
+					'preset_10' => '125deg',
+					'preset_11' => 'to bottom',
+					'preset_12' => 'to bottom',
+					'preset_13' => 'to bottom',
+					'preset_14' => 'to bottom',
+					'preset_15' => 'to bottom',
+				),
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_color_search_field_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#0b000c',
+					'preset_5'  => '#e1f1ff',
+					'preset_6'  => '#fff2ff',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#ffddfd',
+					'preset_9'  => '#f0f8dd',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#111111',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#0c1b2c',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_field_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#0b0020',
+					'preset_5'  => '#f8fcff',
+					'preset_6'  => '#ffffff',
+					'preset_7'  => '#111111',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#f0f8dd',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#111111',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#0c1b2c',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_field_text' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#333333',
+					'preset_3'  => '#333333',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#333333',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#aaaaaa',
+					'preset_8'  => '#333333',
+					'preset_9'  => '#445e08',
+					'preset_10' => '#333333',
+					'preset_11' => '#555555',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#555555',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#333333',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_button_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#00a9ff',
+					'preset_2'  => '#ff5100',
+					'preset_3'  => '#007385',
+					'preset_4'  => '#4400c4',
+					'preset_5'  => '#3697ff',
+					'preset_6'  => '#80437f',
+					'preset_7'  => '#222222',
+					'preset_8'  => '#cc1ac2',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#333333',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#333333',
+					'preset_14' => '#ffca00',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_button_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#093a89',
+					'preset_2'  => '#ab3c00',
+					'preset_3'  => '#00252b',
+					'preset_4'  => '#12003f',
+					'preset_5'  => '#0049bf',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#111111',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#3b4d11',
+					'preset_10' => '#000000',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#333333',
+					'preset_14' => '#ffca00',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_button_text' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#ffffff',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#000000',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#000000',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_text' => array(
+				'default' => array(
+					'preset_1'  => '#777777',
+					'preset_2'  => '#eeeeee',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#b0f4ff',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#dddddd',
+					'preset_8'  => '#d437ca',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#444444',
+					'preset_11' => '#777777',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#333333',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#333333',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_link' => array(
+				'default' => array(
+					'preset_1'  => '#80ddff',
+					'preset_2'  => '#de7e00',
+					'preset_3'  => '#b0f4ff',
+					'preset_4'  => '#deb8f9',
+					'preset_5'  => '#ffe000',
+					'preset_6'  => '#7f447f',
+					'preset_7'  => '#f00000',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#f5ff83',
+					'preset_10' => '#777777',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#ff3300',
+					'preset_14' => '#3c97de',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_link_hover' => array(
+				'default' => array(
+					'preset_1'  => '#cdf1ff',
+					'preset_2'  => '#de5e00',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#ffffff',
+					'preset_5'  => '#fffc00',
+					'preset_6'  => '#aa73aa',
+					'preset_7'  => '#c00000',
+					'preset_8'  => '#d437ca',
+					'preset_9'  => '#edff25',
+					'preset_10' => '#444444',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#ff3300',
+					'preset_14' => '#3c97de',
+					'preset_15' => '#1a74cc',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_text_shadow' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_search_text_shadow_display' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => true,
+					'preset_6'  => false,
+					'preset_7'  => true,
+					'preset_8'  => false,
+					'preset_9'  => true,
+					'preset_10' => false,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_content_title_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#1f1f1f',
+					'preset_3'  => '#002526',
+					'preset_4'  => '#1f0048',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#f7e7f7',
+					'preset_7'  => '#0f0f0f',
+					'preset_8'  => '#84007c',
+					'preset_9'  => '#7b9b00',
+					'preset_10' => '#000000',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#444444',
+					'preset_13' => '#333333',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#001a4a',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_title_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#dddddd',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#34004c',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#f7e7f7',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#101010',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#444444',
+					'preset_13' => '#333333',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#001a4a',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_title_background_angle' => array(
+				'default' => array(
+					'preset_1'  => '125deg',
+					'preset_2'  => '125deg',
+					'preset_3'  => '125deg',
+					'preset_4'  => '125deg',
+					'preset_5'  => '125deg',
+					'preset_6'  => '125deg',
+					'preset_7'  => 'to bottom',
+					'preset_8'  => '125deg',
+					'preset_9'  => '125deg',
+					'preset_10' => '125deg',
+					'preset_11' => 'to bottom',
+					'preset_12' => 'to bottom',
+					'preset_13' => 'to bottom',
+					'preset_14' => 'to bottom',
+					'preset_15' => 'to bottom',
+				),
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_color_content_title_text' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#eeeeee',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#e2d8ff',
+					'preset_5'  => '#333333',
+					'preset_6'  => '#841c84',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffff00',
+					'preset_11' => '#333333',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#333333',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_title_text_shadow' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_title_text_shadow_display' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => false,
+					'preset_6'  => false,
+					'preset_7'  => true,
+					'preset_8'  => true,
+					'preset_9'  => true,
+					'preset_10' => true,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_content_title_link' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#aaf0e9',
+					'preset_4'  => '#d5ccff',
+					'preset_5'  => '#0088cc',
+					'preset_6'  => '#bb71bb',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffd1fc',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffcc00',
+					'preset_11' => '#009f92',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#3c97de',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_title_link_hover' => array(
+				'default' => array(
+					'preset_1'  => '#0087cc',
+					'preset_2'  => '#ffab19',
+					'preset_3'  => '#82bfbd',
+					'preset_4'  => '#beb3fc',
+					'preset_5'  => '#b83a00',
+					'preset_6'  => '#841c84',
+					'preset_7'  => '#e00000',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#e9ff83',
+					'preset_10' => '#fff800',
+					'preset_11' => '#009f92',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#3c97de',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#efefef',
+					'preset_3'  => '#001012',
+					'preset_4'  => '#0f001c',
+					'preset_5'  => '#00123a',
+					'preset_6'  => '#ead4ea',
+					'preset_7'  => '#303030',
+					'preset_8'  => '#fff7ff',
+					'preset_9'  => '#000000',
+					'preset_10' => '#ffd800',
+					'preset_11' => '#f5f5f5',
+					'preset_12' => '#333333',
+					'preset_13' => '#000000',
+					'preset_14' => '#f0f0f0',
+					'preset_15' => '#000b29',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_thumbnail_frame' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#ffffff',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_list_thumbnail_frame' => array( /* Plain lists only */
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#ffffff',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#ffffff',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_list_thumbnail_background_primary' => array( /* Only for the jQuery Masonry layout */
+				'default' => array(
+					'preset_1'  => '#ff8800',
+					'preset_2'  => '#ff8800',
+					'preset_3'  => '#00b084',
+					'preset_4'  => '#3c0080',
+					'preset_5'  => '#ff8800',
+					'preset_6'  => '#c27abd',
+					'preset_7'  => '#555555',
+					'preset_8'  => '#950d8d',
+					'preset_9'  => '#71890e',
+					'preset_10' => '#ff8800',
+					'preset_11' => '#5cd4d0',
+					'preset_12' => '#52b8ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#2d77b3',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_list_thumbnail_background_secondary' => array( /* Only for the jQuery Masonry layout */
+				'default' => array(
+					'preset_1'  => '#ffd800',
+					'preset_2'  => '#ffd800',
+					'preset_3'  => '#00ffc9',
+					'preset_4'  => '#5e00e3',
+					'preset_5'  => '#ffd800',
+					'preset_6'  => '#ffdfff',
+					'preset_7'  => '#aaaaaa',
+					'preset_8'  => '#e3a0df',
+					'preset_9'  => '#b1e700',
+					'preset_10' => '#ff8800',
+					'preset_11' => '#5cd4d0',
+					'preset_12' => '#52b8ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#2d77b3',
+					'preset_15' => '#ffed00',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_field_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#00333a',
+					'preset_4'  => '#1b014c',
+					'preset_5'  => '#0f1e38',
+					'preset_6'  => '#fff2ff',
+					'preset_7'  => '#333333',
+					'preset_8'  => '#ffdffd',
+					'preset_9'  => '#333333',
+					'preset_10' => '#333333',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#555555',
+					'preset_13' => '#aaaaaa',
+					'preset_14' => '#123a5f',
+					'preset_15' => '#071d44',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_field_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#101010',
+					'preset_3'  => '#00545f',
+					'preset_4'  => '#1b003a',
+					'preset_5'  => '#031024',
+					'preset_6'  => '#ffffff',
+					'preset_7'  => '#444444',
+					'preset_8'  => '#fff9ff',
+					'preset_9'  => '#333333',
+					'preset_10' => '#444444',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#555555',
+					'preset_13' => '#aaaaaa',
+					'preset_14' => '#123a5f',
+					'preset_15' => '#071d44',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_field_text' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#ffffff',
+					'preset_3'  => '#c7e8ec',
+					'preset_4'  => '#dfcaff',
+					'preset_5'  => '#cee0f5',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#bbbbbb',
+					'preset_8'  => '#b70ead',
+					'preset_9'  => '#a3ca5b',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#333333',
+					'preset_12' => '#cccccc',
+					'preset_13' => '#333333',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_text' => array(
+				'default' => array(
+					'preset_1'  => '#333333',
+					'preset_2'  => '#333333',
+					'preset_3'  => '#d0eaed',
+					'preset_4'  => '#d7ceea',
+					'preset_5'  => '#70cdff',
+					'preset_6'  => '#2f152f',
+					'preset_7'  => '#eeeeee',
+					'preset_8'  => '#2c042a',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#000000',
+					'preset_11' => '#333333',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#333333',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_link' => array(
+				'default' => array(
+					'preset_1'  => '#0087cc',
+					'preset_2'  => '#de5e00',
+					'preset_3'  => '#51eddd',
+					'preset_4'  => '#998ace',
+					'preset_5'  => '#ffdd00',
+					'preset_6'  => '#b55fb5',
+					'preset_7'  => '#d00000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#ff5500',
+					'preset_11' => '#009f92',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#004c98',
+					'preset_15' => '#00a9ff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_content_link_hover' => array(
+				'default' => array(
+					'preset_1'  => '#18b1e7',
+					'preset_2'  => '#ff5100',
+					'preset_3'  => '#32b3a6',
+					'preset_4'  => '#4d3a90',
+					'preset_5'  => '#ffb700',
+					'preset_6'  => '#aa73aa',
+					'preset_7'  => '#e00000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#000000',
+					'preset_11' => '#009f92',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#123a5f',
+					'preset_15' => '#1f7ed4',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_background_transparent' => array(
+				'default' => array(
+					'preset_1'  => false,
+					'preset_2'  => false,
+					'preset_3'  => false,
+					'preset_4'  => false,
+					'preset_5'  => false,
+					'preset_6'  => false,
+					'preset_7'  => false,
+					'preset_8'  => false,
+					'preset_9'  => false,
+					'preset_10' => false,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_bottom_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#1f1f1f',
+					'preset_2'  => '#222222',
+					'preset_3'  => '#001f24',
+					'preset_4'  => '#1f0030',
+					'preset_5'  => '#003078',
+					'preset_6'  => '#ecddec',
+					'preset_7'  => '#101010',
+					'preset_8'  => '#5b0055',
+					'preset_9'  => '#000000',
+					'preset_10' => '#333333',
+					'preset_11' => '#000000',
+					'preset_12' => '#333333',
+					'preset_13' => '#333333',
+					'preset_14' => '#001a42',
+					'preset_15' => '#072b5f',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#1f1f1f',
+					'preset_2'  => '#121212',
+					'preset_3'  => '#00121a',
+					'preset_4'  => '#170021',
+					'preset_5'  => '#001a42',
+					'preset_6'  => '#ead4ea',
+					'preset_7'  => '#070707',
+					'preset_8'  => '#0a0009',
+					'preset_9'  => '#0e1100',
+					'preset_10' => '#0f0f0f',
+					'preset_11' => '#000000',
+					'preset_12' => '#333333',
+					'preset_13' => '#333333',
+					'preset_14' => '#001a42',
+					'preset_15' => '#072b5f',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_background_angle' => array(
+				'default' => array(
+					'preset_1'  => '125deg',
+					'preset_2'  => '125deg',
+					'preset_3'  => '125deg',
+					'preset_4'  => '125deg',
+					'preset_5'  => '125deg',
+					'preset_6'  => 'to bottom',
+					'preset_7'  => 'to bottom',
+					'preset_8'  => '125deg',
+					'preset_9'  => '125deg',
+					'preset_10' => '125deg',
+					'preset_11' => 'to bottom',
+					'preset_12' => 'to bottom',
+					'preset_13' => 'to bottom',
+					'preset_14' => 'to bottom',
+					'preset_15' => 'to bottom',
+				),
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_color_bottom_text' => array(
+				'default' => array(
+					'preset_1'  => '#fefefe',
+					'preset_2'  => '#9c9c9c',
+					'preset_3'  => '#67adb8',
+					'preset_4'  => '#7661ad',
+					'preset_5'  => '#fefefe',
+					'preset_6'  => '#5f2a5f',
+					'preset_7'  => '#eeeeee',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#e3fffa',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_link' => array(
+				'default' => array(
+					'preset_1'  => '#0087cc',
+					'preset_2'  => '#8d5b20',
+					'preset_3'  => '#189490',
+					'preset_4'  => '#a59ad6',
+					'preset_5'  => '#0087cc',
+					'preset_6'  => '#aa73aa',
+					'preset_7'  => '#aaaaaa',
+					'preset_8'  => '#ca43c2',
+					'preset_9'  => '#caed3c',
+					'preset_10' => '#ffcc00',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_link_hover' => array(
+				'default' => array(
+					'preset_1'  => '#18b1e7',
+					'preset_2'  => '#e34f04',
+					'preset_3'  => '#19e6d8',
+					'preset_4'  => '#aa71e2',
+					'preset_5'  => '#ffd800',
+					'preset_6'  => '#7f447f',
+					'preset_7'  => '#e00000',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#ffff00',
+					'preset_11' => '#00d3cf',
+					'preset_12' => '#eeeeee',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#ffca00',
+					'preset_15' => '#eeeeee',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_text_shadow' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_text_shadow_display' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => true,
+					'preset_6'  => false,
+					'preset_7'  => true,
+					'preset_8'  => true,
+					'preset_9'  => true,
+					'preset_10' => true,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_bottom_headings' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#e8a200',
+					'preset_3'  => '#bdfcff',
+					'preset_4'  => '#b797fc',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#aa73aa',
+					'preset_7'  => '#ffffff',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#ffffff',
+					'preset_10' => '#ffffff',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#ffffff',
+					'preset_13' => '#ffffff',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_headings_text_shadow' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_headings_text_shadow_display' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => true,
+					'preset_6'  => false,
+					'preset_7'  => true,
+					'preset_8'  => true,
+					'preset_9'  => true,
+					'preset_10' => true,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_bottom_field_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#1f1f1f',
+					'preset_2'  => '#333333',
+					'preset_3'  => '#002f40',
+					'preset_4'  => '#32034c',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#ffe2ff',
+					'preset_7'  => '#1f1f1f',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#1f1f1f',
+					'preset_10' => '#333333',
+					'preset_11' => '#f5fffe',
+					'preset_12' => '#555555',
+					'preset_13' => '#555555',
+					'preset_14' => '#1f4d94',
+					'preset_15' => '#081b3e',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_field_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#2f2f2f',
+					'preset_2'  => '#444444',
+					'preset_3'  => '#00475d',
+					'preset_4'  => '#32034c',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#ffeaff',
+					'preset_7'  => '#222222',
+					'preset_8'  => '#150014',
+					'preset_9'  => '#2f2f2f',
+					'preset_10' => '#444444',
+					'preset_11' => '#f5fffe',
+					'preset_12' => '#555555',
+					'preset_13' => '#555555',
+					'preset_14' => '#1f4d94',
+					'preset_15' => '#081b3e',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_bottom_field_text' => array(
+				'default' => array(
+					'preset_1'  => '#aaaaaa',
+					'preset_2'  => '#dddddd',
+					'preset_3'  => '#67adb8',
+					'preset_4'  => '#aa71e2',
+					'preset_5'  => '#ffffff',
+					'preset_6'  => '#5f2d5f',
+					'preset_7'  => '#af55a9',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#709500',
+					'preset_10' => '#ffcd00',
+					'preset_11' => '#333333',
+					'preset_12' => '#dddddd',
+					'preset_13' => '#cccccc',
+					'preset_14' => '#eeeeee',
+					'preset_15' => '#ffffff',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_footer_background_transparent' => array(
+				'default' => array(
+					'preset_1'  => false,
+					'preset_2'  => false,
+					'preset_3'  => false,
+					'preset_4'  => false,
+					'preset_5'  => false,
+					'preset_6'  => false,
+					'preset_7'  => false,
+					'preset_8'  => false,
+					'preset_9'  => false,
+					'preset_10' => false,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_color_footer_background_primary' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#00090d',
+					'preset_4'  => '#0c001e',
+					'preset_5'  => '#001a42',
+					'preset_6'  => '#ecddec',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#212d04',
+					'preset_10' => '#000000',
+					'preset_11' => '#255d5b',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#004c98',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_footer_background_secondary' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#0a0a0a',
+					'preset_3'  => '#00090a',
+					'preset_4'  => '#0a000a',
+					'preset_5'  => '#00030a',
+					'preset_6'  => '#ecddec',
+					'preset_7'  => '#0a0a0a',
+					'preset_8'  => '#ffffff',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#255d5b',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#004c98',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_footer_background_angle' => array(
+				'default' => array(
+					'preset_1'  => '125deg',
+					'preset_2'  => '125deg',
+					'preset_3'  => '125deg',
+					'preset_4'  => '125deg',
+					'preset_5'  => '125deg',
+					'preset_6'  => '125deg',
+					'preset_7'  => 'to bottom',
+					'preset_8'  => '125deg',
+					'preset_9'  => '125deg',
+					'preset_10' => '125deg',
+					'preset_11' => 'to bottom',
+					'preset_12' => 'to bottom',
+					'preset_13' => 'to bottom',
+					'preset_14' => 'to bottom',
+					'preset_15' => 'to bottom',
+				),
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_color_footer_text' => array(
+				'default' => array(
+					'preset_1'  => '#808080',
+					'preset_2'  => '#575757',
+					'preset_3'  => '#314e52',
+					'preset_4'  => '#a046f4',
+					'preset_5'  => '#ebf2ff',
+					'preset_6'  => '#777777',
+					'preset_7'  => '#aaaaaa',
+					'preset_8'  => '#7e0f78',
+					'preset_9'  => '#f0f8dd',
+					'preset_10' => '#555555',
+					'preset_11' => '#e3fffa',
+					'preset_12' => '#333333',
+					'preset_13' => '#777777',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#aaaaaa',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_footer_link' => array(
+				'default' => array(
+					'preset_1'  => '#dddddd',
+					'preset_2'  => '#de5e00',
+					'preset_3'  => '#316b66',
+					'preset_4'  => '#8224e3',
+					'preset_5'  => '#bddbff',
+					'preset_6'  => '#aa73aa',
+					'preset_7'  => '#aaaaaa',
+					'preset_8'  => '#a71b9f',
+					'preset_9'  => '#a0c11d',
+					'preset_10' => '#ffd800',
+					'preset_11' => '#e3fffa',
+					'preset_12' => '#dddddd',
+					'preset_13' => '#dddddd',
+					'preset_14' => '#93c9ff',
+					'preset_15' => '#dddddd',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_footer_link_hover' => array(
+				'default' => array(
+					'preset_1'  => '#ffffff',
+					'preset_2'  => '#b74d00',
+					'preset_3'  => '#11b0b0',
+					'preset_4'  => '#aa71e2',
+					'preset_5'  => '#ffbf00',
+					'preset_6'  => '#7f447f',
+					'preset_7'  => '#c00000',
+					'preset_8'  => '#ca43c2',
+					'preset_9'  => '#caed3c',
+					'preset_10' => '#ffff00',
+					'preset_11' => '#ffffff',
+					'preset_12' => '#00b7ff',
+					'preset_13' => '#f07c45',
+					'preset_14' => '#ffffff',
+					'preset_15' => '#eeeeee',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_footer_text_shadow' => array(
+				'default' => array(
+					'preset_1'  => '#000000',
+					'preset_2'  => '#000000',
+					'preset_3'  => '#000000',
+					'preset_4'  => '#000000',
+					'preset_5'  => '#000000',
+					'preset_6'  => '#000000',
+					'preset_7'  => '#000000',
+					'preset_8'  => '#000000',
+					'preset_9'  => '#000000',
+					'preset_10' => '#000000',
+					'preset_11' => '#000000',
+					'preset_12' => '#000000',
+					'preset_13' => '#000000',
+					'preset_14' => '#000000',
+					'preset_15' => '#000000',
+				),
+				'sanitize' => 'pen_sanitize_color',
+			),
+			'pen_color_footer_text_shadow_display' => array(
+				'default' => array(
+					'preset_1'  => true,
+					'preset_2'  => true,
+					'preset_3'  => true,
+					'preset_4'  => true,
+					'preset_5'  => true,
+					'preset_6'  => false,
+					'preset_7'  => true,
+					'preset_8'  => false,
+					'preset_9'  => false,
+					'preset_10' => false,
+					'preset_11' => false,
+					'preset_12' => false,
+					'preset_13' => false,
+					'preset_14' => false,
+					'preset_15' => false,
+				),
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_font_family_site' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_headings' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_sitetitle' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_sitedescription' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_phone_header' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_phone_footer' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_navigation' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_navigation_submenu' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_forms' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_buttons' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_title_list' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_title_content' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_widget_title_top' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_widget_title_left' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_widget_title_right' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_family_widget_title_bottom' => array(
+				'default' => array(
+					'preset_1'  => 'g:Roboto',
+					'preset_2'  => 'g:Cinzel',
+					'preset_3'  => 'g:Exo 2',
+					'preset_4'  => 'g:Neris',
+					'preset_5'  => 'g:Montserrat',
+					'preset_6'  => 'g:Roboto',
+					'preset_7'  => 'g:Roboto Slab',
+					'preset_8'  => 'g:Ubuntu',
+					'preset_9'  => 'g:Cabin',
+					'preset_10' => 'g:Raleway',
+				),
+				'sanitize' => 'pen_sanitize_font_family',
+			),
+			'pen_font_size_sitetitle' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_resize_sitetitle' => array(
+				'default'  => 'dynamic',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_font_size_sitedescription' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_social_header' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_social_footer' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_phone_header' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_phone_footer' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_navigation' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_title_list' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_title_content' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_widget_title_top' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_widget_title_left' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_widget_title_right' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_font_size_widget_title_bottom' => array(
+				'default'  => 'default',
+				'sanitize' => 'pen_sanitize_font_size',
+			),
+			'pen_background_image_navigation' => array(
+				'default'  => '',
+				'sanitize' => 'esc_url_raw',
+			),
+			'pen_background_image_navigation_submenu' => array(
+				'default'  => '',
+				'sanitize' => 'esc_url_raw',
+			),
+			'pen_background_image_search' => array(
+				'default'  => '',
+				'sanitize' => 'esc_url_raw',
+			),
+			'pen_background_image_content_title' => array(
+				'default'  => '',
+				'sanitize' => 'esc_url_raw',
+			),
+			'pen_background_image_content_title_dynamic' => array(
+				'default'  => false,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_background_image_bottom' => array(
+				'default'  => '',
+				'sanitize' => 'esc_url_raw',
+			),
+			'pen_background_image_footer' => array(
+				'default'  => '',
+				'sanitize' => 'esc_url_raw',
+			),
+			'pen_header_sticky' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_header_alignment' => array(
+				'default'  => 'left',
+				'sanitize' => 'pen_sanitize_alignment',
+			),
+			'pen_header_logo_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_header_logo_animation_reveal' => array(
+				'default'  => 'fadeInDown',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_header_logo_size' => array(
+				'default'  => 'height',
+				'sanitize' => 'pen_sanitize_logo_size',
+			),
+			'pen_header_sitetitle_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_header_sitetitle_animation_reveal' => array(
+				'default'  => 'fadeInRight',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_header_sitedescription_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_header_sitedescription_animation_reveal' => array(
+				'default'  => 'fadeInLeft',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_navigation_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_navigation_mobile_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_navigation_animation_reveal' => array(
+				'default'  => 'fadeIn',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_navigation_separator' => array(
+				'default'  => 1,
+				'sanitize' => 'pen_sanitize_integer',
+			),
+			'pen_navigation_separator_submenu' => array(
+				'default'  => 1,
+				'sanitize' => 'pen_sanitize_integer',
+			),
+			'pen_navigation_hover' => array(
+				'default'  => 1,
+				'sanitize' => 'pen_sanitize_integer',
+			),
+			'pen_navigation_arrows' => array(
+				'default'  => 1,
+				'sanitize' => 'pen_sanitize_integer',
+			),
+			'pen_navigation_easing' => array(
+				'default'  => 'swing',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			'pen_navigation_animation_speed' => array(
+				'default'  => 250,
+				'sanitize' => 'pen_sanitize_integer',
+			),
+			'pen_navigation_alignment' => array(
+				'default'  => 'left',
+				'sanitize' => 'pen_sanitize_alignment',
+			),
+			'pen_search_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_search_location' => array(
+				'default'  => 'header',
+				'sanitize' => 'pen_sanitize_location',
+			),
+			'pen_footer_alignment' => array(
+				'default'  => 'left',
+				'sanitize' => 'pen_sanitize_alignment',
+			),
+			'pen_footer_menu_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_footer_menu_animation_reveal' => array(
+				'default'  => 'fadeIn',
+				'sanitize' => 'pen_sanitize_animation',
+			),
+			'pen_footer_back_to_top_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_footer_copyright_display' => array(
+				'default'  => true,
+				'sanitize' => 'pen_sanitize_boolean',
+			),
+			'pen_footer_copyright_text' => array(
+				'default'  => '',
+				'sanitize' => 'pen_sanitize_string',
+			),
+			/* phpcs:enable */
+		);
+	}
+}
+
+if ( ! function_exists( 'pen_option_default' ) ) {
+	/**
+	 * Returns the default value for the specified settings.
+	 *
+	 * @param string $option The unique ID of the theme setting.
+	 * @since Pen 1.0.0
+	 * @return mixed
+	 */
+	function pen_option_default( $option ) {
+		if ( 'pen_' !== substr( $option, 0, 4 ) ) {
+			$option = 'pen_' . $option;
+		}
+		$preset = 'preset_1';
+		if ( false === strpos( $option, '[' ) ) {
+			$preset = pen_preset_get( $option );
+		} elseif ( preg_match( '/(.*)\[(.*)\]/', $option, $match ) ) {
+			$option = $match[1];
+			$preset = $match[2];
+		}
+		$configuration = pen_configuration();
+		if ( isset( $configuration[ $option ] ) ) {
+			if ( is_array( $configuration[ $option ]['default'] ) ) {
+				if ( isset( $configuration[ $option ]['default'][ $preset ] ) ) {
+					return $configuration[ $option ]['default'][ $preset ];
+				} else {
+					return null;
+				}
+			} else {
+				return $configuration[ $option ]['default'];
+			}
+		} else {
+			return null;
+		}
+	}
+}
+
+if ( ! function_exists( 'pen_option_sanitize' ) ) {
+	/**
+	 * Sanitizes theme settings.
+	 *
+	 * @param string $option    The unique ID of the theme setting.
+	 * @param mixed  $raw_data  Raw data.
+	 *
+	 * @since Pen 1.0.0
+	 * @return array
+	 */
+	function pen_option_sanitize( $option, $raw_data = null ) {
+		$options = pen_configuration();
+		if ( preg_match( '/(.*)\[(.*)\]/', $option, $match ) ) {
+			$option = $match[1];
+		}
+		if ( isset( $options[ $option ] ) ) {
+			$sanitizing_function = $options[ $option ]['sanitize'];
+			if ( is_null( $raw_data ) ) {
+				return $sanitizing_function;
+			}
+			if ( function_exists( $sanitizing_function ) ) {
+				return $sanitizing_function( $raw_data );
+			}
+		}
+		return null;
+	}
+}
+
+if ( ! function_exists( 'pen_option_get' ) ) {
+	/**
+	 * A wrapper for the get_theme_mod()
+	 *
+	 * @param string $option The unique ID of the theme option.
+	 *
+	 * @since Pen 1.0.0
+	 * @return mixed
+	 */
+	function pen_option_get( $option ) {
+		if ( ! is_string( $option ) ) {
+			return null;
+		}
+		if ( 'pen_' !== substr( $option, 0, 4 ) ) {
+			$option = 'pen_' . $option;
+		}
+		$default = pen_option_default( $option );
+		if ( is_null( $default ) ) {
+			if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
+				exit( esc_html( sprintf( 'Theme option missing: %s', $option ) ) );
+			}
+			return null;
+		}
+		$value = get_theme_mod( $option, $default );
+		if ( is_array( $value ) ) {
+			$preset = pen_preset_get( $option );
+			if ( isset( $value[ $preset ] ) ) {
+				return $value[ $preset ];
+			}
+			return $default;
+		} else {
+			return $value;
+		}
+	}
+}
+
+if ( ! function_exists( 'pen_preset_get' ) ) {
+	/**
+	 * Returns the current preset.
+	 *
+	 * @param string $option The option ID.
+	 * @since Pen 1.0.3
+	 * @return string
+	 */
+	function pen_preset_get( $option ) {
+		if ( 'pen_' === substr( $option, 0, 4 ) ) {
+			$option = ltrim( $option, 'pen_' );
+		}
+
+		if ( 'color' === substr( $option, 0, 5 ) ) {
+			$preview = (int) pen_filter_input( 'GET', 'pen_preview_color' );
+			if ( ! $preview ) {
+
+				$preview = (int) pen_filter_input( 'POST', 'pen_preview_color' );
+				if ( $preview && defined( 'DOING_AJAX' ) && DOING_AJAX ) {
+					if ( check_ajax_referer( 'save-customize_' . get_stylesheet(), 'nonce', false ) ) {
+						set_theme_mod( 'pen_preset_color', 'preset_' . $preview );
+					}
+				}
+			}
+			if ( $preview && $preview > 0 && $preview <= 15 ) {
+				return 'preset_' . $preview;
+			}
+			return PEN_PRESET_COLOR;
+		} elseif ( 'font_family' === substr( $option, 0, 11 ) ) {
+			$preview = (int) pen_filter_input( 'GET', 'pen_preview_font' );
+			if ( ! $preview ) {
+				$preview = (int) pen_filter_input( 'POST', 'pen_preview_font' );
+				if ( $preview && defined( 'DOING_AJAX' ) && DOING_AJAX ) {
+					if ( check_ajax_referer( 'save-customize_' . get_stylesheet(), 'nonce', false ) ) {
+						set_theme_mod( 'pen_preset_font', 'preset_' . $preview );
+					}
+				}
+			}
+			if ( $preview && $preview > 0 && $preview <= 10 ) {
+				return 'preset_' . $preview;
+			}
+			return PEN_PRESET_FONT;
+		}
+		return 'preset_1';
+	}
+}

+ 1583 - 0
include/content.php

@@ -0,0 +1,1583 @@
+<?php
+/**
+ * Post meta data fields.
+ *
+ * @package Pen
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+if ( ! function_exists( 'pen_post_classes' ) ) {
+	/**
+	 * Generates class names for posts.
+	 *
+	 * @param array $classes List of class names.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_post_classes( $classes = array() ) {
+
+		$post_id = get_the_ID();
+
+		if ( is_sticky() ) {
+			$classes[] = 'sticky';
+		}
+
+		if ( ! is_singular() ) {
+
+			if ( 'masonry' !== pen_list_type() ) {
+				$thumbnail_rotate = get_post_meta( $post_id, 'pen_list_thumbnail_rotate_override', true );
+				if ( ! $thumbnail_rotate || 'default' === $thumbnail_rotate ) {
+					$thumbnail_rotate = pen_option_get( 'list_thumbnail_rotate' );
+				}
+				if ( $thumbnail_rotate && 'no' !== $thumbnail_rotate ) {
+					$classes[] = 'pen_list_thumbnail_rotate';
+				} else {
+					$classes[] = 'pen_list_thumbnail_rotate_not';
+				}
+
+				$thumbnail_frame = get_post_meta( $post_id, 'pen_list_thumbnail_frame_override', true );
+				if ( ! $thumbnail_frame || 'default' === $thumbnail_frame ) {
+					$thumbnail_frame = pen_option_get( 'list_thumbnail_frame' );
+				}
+				if ( $thumbnail_frame && 'no' !== $thumbnail_frame ) {
+					$classes[] = 'pen_list_thumbnail_frame';
+				} else {
+					$classes[] = 'pen_list_thumbnail_frame_not';
+				}
+
+				$thumbnail_frame_color = get_post_meta( $post_id, 'pen_color_list_thumbnail_frame_override', true );
+				if ( ! $thumbnail_frame_color || 'default' === $thumbnail_frame_color ) {
+					$thumbnail_frame_color = pen_option_get( 'color_list_thumbnail_frame' );
+				}
+				if ( '#000000' === $thumbnail_frame_color ) {
+					$classes[] = 'pen_list_thumbnail_frame_dark';
+				} else {
+					$classes[] = 'pen_list_thumbnail_frame_light';
+				}
+
+				$thumbnail_alignment = get_post_meta( $post_id, 'pen_list_thumbnail_alignment_override', true );
+				if ( ! $thumbnail_alignment || 'default' === $thumbnail_alignment ) {
+					$thumbnail_alignment = pen_option_get( 'list_thumbnail_alignment' );
+				}
+				$classes[] = 'pen_list_thumbnail_' . $thumbnail_alignment;
+			}
+
+			$options_list = array(
+				'list_header_display'         => 'list_header_hide',
+				'list_title_display'          => 'list_title_hide',
+				'list_author_display'         => 'list_author_hide',
+				'list_date_display'           => 'list_date_hide',
+				'list_category_display'       => 'list_category_hide',
+				'list_thumbnail_display'      => 'list_thumbnail_hide',
+				'list_summary_display'        => 'list_summary_hide',
+				'list_footer_display'         => 'list_footer_hide',
+				'list_tags_display'           => 'list_tags_hide',
+				'list_button_comment_display' => 'list_button_comment_hide',
+				'list_button_edit_display'    => 'list_button_edit_hide',
+			);
+			foreach ( $options_list as $option => $class ) {
+				$value = get_post_meta( $post_id, 'pen_' . $option . '_override', true );
+				if ( $value && 'default' !== $value ) {
+					$classes[] = 'pen_' . $class;
+				}
+			}
+
+			$animation_reveal = get_post_meta( $post_id, 'pen_list_animation_reveal_override', true );
+			if ( ! $animation_reveal || 'default' === $animation_reveal ) {
+				$animation_reveal = pen_option_get( 'list_animation_reveal' );
+			}
+			if ( $animation_reveal ) {
+				$classes[] = 'pen_custom_animation_' . $animation_reveal;
+			}
+
+			$header_alignment = get_post_meta( $post_id, 'pen_list_post_header_alignment_override', true );
+			if ( ! $header_alignment || 'default' === $header_alignment ) {
+				$header_alignment = pen_option_get( 'list_post_header_alignment' );
+			}
+			if ( $header_alignment && 'no' !== $header_alignment ) {
+				$classes[] = 'pen_list_header_center';
+			}
+
+			$title_alignment = get_post_meta( $post_id, 'pen_list_title_alignment_override', true );
+			if ( ! $title_alignment || 'default' === $title_alignment ) {
+				$title_alignment = pen_option_get( 'list_title_alignment' );
+			}
+			if ( $title_alignment && 'no' !== $title_alignment ) {
+				$classes[] = 'pen_list_title_center';
+			}
+
+			$thumbnail_style = get_post_meta( $post_id, 'pen_list_masonry_thumbnail_style_override', true );
+			if ( false === $thumbnail_style || empty( $thumbnail_style ) || 'default' === $thumbnail_style ) {
+				$thumbnail_style = pen_option_get( 'list_masonry_thumbnail_style' );
+			}
+			$classes[] = 'pen_thumbnail_style_' . $thumbnail_style;
+
+		}
+		return post_class( $classes );
+	}
+}
+
+if ( ! function_exists( 'pen_post_excerpt' ) && ! is_admin() ) {
+	/**
+	 * Tweaks the automatically generated post excerpt.
+	 *
+	 * @param string $more Default 'more' string.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_post_excerpt( $more ) {
+		$link = sprintf(
+			'<a href="%1$s" class="more-link pen_button">%2$s</a>',
+			esc_url( get_permalink( get_the_ID() ) ),
+			sprintf(
+				/* Translators: %s: Name of current post */
+				__( 'Continue reading %s', 'pen' ),
+				sprintf(
+					'<span class="screen-reader-text">%1$s</span>',
+					get_the_title( get_the_ID() )
+				)
+			)
+		);
+		return ' &hellip;<br>' . $link;
+	}
+	add_filter( 'excerpt_more', 'pen_post_excerpt' );
+}
+
+if ( ! function_exists( 'pen_post_sticky' ) ) {
+	/**
+	 * Sends sticky posts to the top of the lists.
+	 *
+	 * @param WP_Posts $posts An instance of WP_Post.
+	 *
+	 * @since Pen 1.0.0
+	 */
+	function pen_post_sticky( $posts ) {
+		$is_sticky = array();
+		foreach ( $posts as $key => $post ) {
+			if ( is_sticky( $post->ID ) ) {
+				$is_sticky[] = $post;
+				unset( $posts[ $key ] );
+			}
+		}
+		return array_merge( $is_sticky, $posts );
+	}
+	add_filter( 'the_posts', 'pen_post_sticky' );
+}
+
+if ( ! function_exists( 'pen_post_meta' ) ) {
+	/**
+	 * Custom post meta data fields.
+	 *
+	 * @param object $post An instance of the $post.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_post_meta( $post ) {
+		$post_type = get_post_type();
+		ob_start( 'pen_compress_html' );
+		?>
+
+	<div id="pen_post_meta_hint">
+		<?php esc_html_e( 'If you switch to another theme these settings will be no longer used. The rest of the settings that are here are either parts of the WordPress core or added via plugins and they will be available with or without this theme.', 'pen' ); ?>
+	</div>
+
+	<div id="pen_post_meta">
+		<p>
+		<?php
+		esc_html_e( 'The following options would only apply to this post. If you want to apply them to all your posts you should go to Appearance &rarr; Customize &rarr; Content.', 'pen' );
+		?>
+		</p>
+
+		<div class="pen_post_meta_options pen_post_meta_full postbox">
+			<h3>
+		<?php
+		esc_html_e( 'Full Content', 'pen' );
+		?>
+			</h3>
+			<div class="pen_post_meta_container">
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Featured image', 'pen' );
+		?>
+					</legend>
+
+		<?php
+		$setting_id = 'background_image_content_title_dynamic';
+		$label      = __( 'Use as title background', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, 'content_' . $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_thumbnail_display';
+		$label      = __( 'Display featured image', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id      = 'content_thumbnail_resize';
+		$label           = __( 'Featured image size', 'pen' );
+		$default         = ucfirst( pen_option_get( $setting_id ) );
+		$thumbnail_sizes = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+		);
+		/* phpcs:disable */
+		foreach ( get_intermediate_image_sizes() as $size ) {
+			$thumbnail_sizes[ $size ] = ucfirst( $size );
+		}
+		/* phpcs:enable */
+		pen_post_meta_select( $post->ID, $setting_id, $thumbnail_sizes, $default, $label );
+
+		$setting_id = 'content_thumbnail_rotate';
+		$label      = __( 'Rotate', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_thumbnail_alignment';
+		$label      = __( 'Alignment', 'pen' );
+		$default    = ucfirst( pen_option_get( $setting_id ) );
+		$choices    = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'left'    => __( 'Left', 'pen' ),
+			'center'  => __( 'Center', 'pen' ),
+			'right'   => __( 'Right', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_thumbnail_frame';
+		$label      = __( 'Add frame', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'color_content_thumbnail_frame';
+		$label      = __( 'Frame color', 'pen' );
+		if ( '#000000' === pen_option_get( $setting_id ) ) {
+			$default = __( 'Dark', 'pen' );
+		} else {
+			$default = __( 'Light', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'#000000' => __( 'Dark', 'pen' ),
+			'#ffffff' => __( 'Light', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		?>
+				</fieldset>
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Layout', 'pen' );
+		?>
+					</legend>
+		<?php
+		$setting_id = 'site_width';
+		$label      = __( 'Site layout', 'pen' );
+		$default    = pen_option_get( $setting_id );
+		if ( 'default' === $default || 'standard' === $default ) {
+			$default = 'standard';
+		}
+		$default = ucfirst( $default );
+		$choices = array(
+			'default'  => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'standard' => __( 'Standard', 'pen' ),
+			'wide'     => __( 'Wide', 'pen' ),
+			'boxed'    => __( 'Boxed', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_header_alignment';
+		$label      = __( 'Center-align post header', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_title_alignment';
+		$label      = __( 'Center-align post title', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		?>
+
+				</fieldset>
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Animation', 'pen' );
+		?>
+					</legend>
+		<?php
+		$setting_id = 'content_animation_reveal';
+		$label      = __( 'Content area', 'pen' );
+		$default    = ucfirst( pen_option_get( $setting_id ) );
+		$animations = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+		);
+		$animations = array_merge( $animations, pen_animations() );
+		pen_post_meta_select( $post->ID, $setting_id, $animations, $default, $label );
+
+		$setting_id = 'content_thumbnail_animation_reveal';
+		$label      = __( 'Featured image', 'pen' );
+		$default    = ucfirst( pen_option_get( $setting_id ) );
+		$animations = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+		);
+		$animations = array_merge( $animations, pen_animations() );
+		pen_post_meta_select( $post->ID, $setting_id, $animations, $default, $label );
+		?>
+				</fieldset>
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Visibility', 'pen' );
+		?>
+					</legend>
+		<?php
+		$setting_id = 'content_header_display';
+		$label      = __( 'Display post header', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_title_display';
+		$label      = __( 'Display post title', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		if ( 'post' === $post_type ) {
+
+			$setting_id = 'content_author_display';
+			$label      = __( 'Display author link', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'content_date_display';
+			$label      = __( 'Display post date', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'content_category_display';
+			$label      = __( 'Display category links', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'content_profile_display';
+			$label      = __( 'Display author profile', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'content_tags_display';
+			$label      = __( 'Display post tags', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		}
+		?>
+
+		<?php
+		$setting_id = 'content_share_display';
+		$label      = __( 'Display share buttons', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_footer_display';
+		$label      = __( 'Display post footer', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_search_display';
+		$label      = __( 'Display search box', 'pen' );
+		if ( pen_option_get( 'search_display' ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+		?>
+				</fieldset>
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Location', 'pen' );
+		?>
+					</legend>
+		<?php
+		if ( 'post' === $post_type ) {
+
+			$setting_id = 'content_author_location';
+			$label      = __( 'Author location', 'pen' );
+			$default    = ucfirst( pen_option_get( $setting_id ) );
+			$choices    = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'header'  => __( 'Post header', 'pen' ),
+				'footer'  => __( 'Post footer', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'content_date_location';
+			$label      = __( 'Date location', 'pen' );
+			$default    = ucfirst( pen_option_get( $setting_id ) );
+			$choices    = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'header'  => __( 'Post header', 'pen' ),
+				'footer'  => __( 'Post footer', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'content_category_location';
+			$label      = __( 'Categories location', 'pen' );
+			$default    = ucfirst( pen_option_get( $setting_id ) );
+			$choices    = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'header'  => __( 'Post header', 'pen' ),
+				'footer'  => __( 'Post footer', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		}
+
+		$setting_id = 'content_share_location';
+		$label      = __( 'Share buttons location', 'pen' );
+		$default    = ucfirst( pen_option_get( $setting_id ) );
+		$choices    = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'header'  => __( 'Post header', 'pen' ),
+			'content' => __( 'Post content', 'pen' ),
+			'footer'  => __( 'Post footer', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'content_search_location';
+		$label      = __( 'Search box location', 'pen' );
+		$default    = ucfirst( pen_option_get( 'search_location' ) );
+		$choices    = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'header'  => __( 'Site header', 'pen' ),
+			'content' => __( 'Content area', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		?>
+				</fieldset>
+
+				<fieldset class="pen_sidebars">
+					<legend>
+		<?php
+		esc_html_e( 'Sidebars', 'pen' );
+		?>
+					</legend>
+
+					<p>
+		<?php
+		esc_html_e( 'You can control the visibility of your sidebars for this specific post.', 'pen' );
+		?>
+					</p>
+		<?php
+		$setting_id = 'pen_sidebar_header_primary_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Header - Primary', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_header_secondary_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Header - Secondary', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_search_top_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Search - Top', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_search_left_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Search - Left', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_search_right_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Search - Right', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_search_bottom_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Search - Bottom', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_top_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Top', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_left_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Left', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_right_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Right', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_content_top_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Content - Top', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_content_bottom_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Content - Bottom', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_bottom_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Bottom', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_footer_top_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Footer - Top', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_footer_left_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Footer - Left', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_footer_right_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Footer - Right', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+
+		$setting_id = 'pen_sidebar_footer_bottom_display';
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Footer - Bottom', 'pen' )
+		);
+		pen_post_meta_checkbox( $post->ID, $setting_id, $label );
+		?>
+				</fieldset>
+
+			</div>
+		</div>
+
+		<div class="pen_post_meta_options pen_post_meta_list postbox">
+
+			<h3>
+		<?php
+		esc_html_e( 'Lists', 'pen' );
+		?>
+			</h3>
+			<div class="pen_post_meta_container">
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Featured image', 'pen' );
+		?>
+					</legend>
+					<p>
+		<?php
+		esc_html_e( 'The image settings below except for the the "Display featured image" would only apply to "Plain" lists (Customize &rarr; Content &rarr; Layout).', 'pen' );
+		?>
+					</p>
+		<?php
+		$setting_id = 'background_image_content_title_dynamic';
+		$label      = __( 'Use as title background', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, 'list_' . $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_thumbnail_display';
+		$label      = __( 'Display featured image', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_thumbnail_resize';
+		$label      = __( 'Featured image size', 'pen' );
+		$default    = ucfirst( pen_option_get( $setting_id ) );
+		pen_post_meta_select( $post->ID, $setting_id, $thumbnail_sizes, $default, $label );
+
+		$setting_id = 'list_thumbnail_rotate';
+		$label      = __( 'Rotate', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_thumbnail_alignment';
+		$label      = __( 'Alignment', 'pen' );
+		$default    = ucfirst( pen_option_get( $setting_id ) );
+		$choices    = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'left'    => __( 'Left', 'pen' ),
+			'center'  => __( 'Center', 'pen' ),
+			'right'   => __( 'Right', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_thumbnail_frame';
+		$label      = __( 'Add frame', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'color_list_thumbnail_frame';
+		$label      = __( 'Frame color', 'pen' );
+		if ( '#000000' === pen_option_get( $setting_id ) ) {
+			$default = __( 'Dark', 'pen' );
+		} else {
+			$default = __( 'Light', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'#000000' => __( 'Dark', 'pen' ),
+			'#ffffff' => __( 'Light', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_masonry_thumbnail_style';
+		$label      = __( 'Thumbnail style', 'pen' );
+		$default    = pen_option_get( $setting_id );
+		$choices    = array(
+			'default' => sprintf(
+				/* Translators: %s a number. */
+				__( 'Default (Style %s)', 'pen' ),
+				esc_html( $default )
+			),
+			0         => __( 'None', 'pen' ),
+		);
+		for ( $i = 1; $i <= 10; $i++ ) {
+			/* Translators: %d the style number. */
+			$choices[ $i ] = sprintf( __( 'Style %d', 'pen' ), $i );
+		}
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+		?>
+				</fieldset>
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Layout', 'pen' );
+		?>
+					</legend>
+		<?php
+		$setting_id = 'list_post_header_alignment';
+		$label      = __( 'Center-align post header', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_title_alignment';
+		$label      = __( 'Center-align post title', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		?>
+				</fieldset>
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Animation', 'pen' );
+		?>
+					</legend>
+		<?php
+		$setting_id = 'list_animation_reveal';
+		$label      = __( 'Post', 'pen' );
+		$default    = ucfirst( pen_option_get( $setting_id ) );
+		$animations = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+		);
+		$animations = array_merge( $animations, pen_animations() );
+		pen_post_meta_select( $post->ID, $setting_id, $animations, $default, $label );
+
+		$setting_id = 'list_thumbnail_animation_reveal';
+		$label      = __( 'Thumbnail', 'pen' );
+		$default    = ucfirst( pen_option_get( $setting_id ) );
+		$animations = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+		);
+		$animations = array_merge( $animations, pen_animations() );
+		pen_post_meta_select( $post->ID, $setting_id, $animations, $default, $label );
+
+		?>
+				</fieldset>
+
+				<fieldset>
+					<legend>
+		<?php
+		esc_html_e( 'Visibility', 'pen' );
+		?>
+					</legend>
+		<?php
+		$setting_id = 'list_header_display';
+		$label      = __( 'Display post header', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_title_display';
+		$label      = __( 'Display post title', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		if ( 'post' === $post_type ) {
+
+			$setting_id = 'list_author_display';
+			$label      = __( 'Display author link', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'list_date_display';
+			$label      = __( 'Display post date', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'list_category_display';
+			$label      = __( 'Display category links', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'list_summary_display';
+			$label      = __( 'Display post summary', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'list_profile_display';
+			$label      = __( 'Display author profile', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'list_tags_display';
+			$label      = __( 'Display post tags', 'pen' );
+			if ( pen_option_get( $setting_id ) ) {
+				$default = __( 'Yes', 'pen' );
+			} else {
+				$default = __( 'No', 'pen' );
+			}
+			$choices = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'yes'     => __( 'Yes', 'pen' ),
+				'no'      => __( 'No', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		}
+
+		$setting_id = 'list_footer_display';
+		$label      = __( 'Display post footer', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_button_comment_display';
+		$label      = __( 'Display comment button', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		$setting_id = 'list_button_edit_display';
+		$label      = __( 'Display post edit button', 'pen' );
+		if ( pen_option_get( $setting_id ) ) {
+			$default = __( 'Yes', 'pen' );
+		} else {
+			$default = __( 'No', 'pen' );
+		}
+		$choices = array(
+			'default' => sprintf(
+				'%s (%s)',
+				esc_html__( 'Default', 'pen' ),
+				esc_html( $default )
+			),
+			'yes'     => __( 'Yes', 'pen' ),
+			'no'      => __( 'No', 'pen' ),
+		);
+		pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+		?>
+				</fieldset>
+
+		<?php
+		if ( 'post' === $post_type ) {
+			?>
+				<fieldset>
+					<legend>
+			<?php
+			esc_html_e( 'Location', 'pen' );
+			?>
+					</legend>
+
+			<?php
+
+			$setting_id = 'list_author_location';
+			$label      = __( 'Author link location', 'pen' );
+			$default    = ucfirst( pen_option_get( $setting_id ) );
+			$choices    = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'header'  => __( 'Post header', 'pen' ),
+				'footer'  => __( 'Post footer', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'list_date_location';
+			$label      = __( 'Post date location', 'pen' );
+			$default    = ucfirst( pen_option_get( $setting_id ) );
+			$choices    = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'header'  => __( 'Post header', 'pen' ),
+				'footer'  => __( 'Post footer', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			$setting_id = 'list_category_location';
+			$label      = __( 'Category links location', 'pen' );
+			$default    = ucfirst( pen_option_get( $setting_id ) );
+			$choices    = array(
+				'default' => sprintf(
+					'%s (%s)',
+					esc_html__( 'Default', 'pen' ),
+					esc_html( $default )
+				),
+				'header'  => __( 'Post header', 'pen' ),
+				'footer'  => __( 'Post footer', 'pen' ),
+			);
+			pen_post_meta_select( $post->ID, $setting_id, $choices, $default, $label );
+
+			?>
+				</fieldset>
+			<?php
+		}
+		?>
+			</div>
+		</div>
+	</div>
+
+	<div id="pen_meta_box_footer">
+		<?php
+		$pen_post_meta_hp = esc_attr( md5( NONCE_SALT . $post->ID . date( 'd' ) ) );
+		?>
+
+		<input class="screen-reader-text" type="email" name="<?php echo $pen_post_meta_hp; ?>" id="<?php echo $pen_post_meta_hp; ?>" size="30" value="" />
+
+		<div class="pen_right">
+			<a href="<?php echo esc_url( PEN_SUPPORT_URL ); ?>" class="button pen_order" target="_blank" title="<?php esc_attr_e( 'Request new features and get them in a week!', 'pen' ); ?>">
+		<?php
+		esc_html_e( 'Order new features! (free of charge)', 'pen' );
+		?>
+			</a>
+		</div>
+	</div>
+
+	<div style="clear:both"></div>
+		<?php
+		echo ob_get_clean(); /* phpcs:ignore */
+	}
+}
+
+if ( ! function_exists( 'pen_post_meta_select' ) ) {
+	/**
+	 * Generates HTML for <select> fields.
+	 *
+	 * @param integer $post_id     The content ID.
+	 * @param string  $setting_id  The setting ID.
+	 * @param array   $choices     Choices.
+	 * @param array   $default     The default.
+	 * @param array   $label       Field label.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_post_meta_select( $post_id, $setting_id, $choices, $default, $label ) {
+		$setting_id = 'pen_' . $setting_id . '_override';
+		$value      = get_post_meta( $post_id, $setting_id, true );
+		$setting_id = esc_attr( $setting_id );
+		?>
+		<div class="pen_wrap">
+			<label>
+		<?php
+		echo esc_html( $label );
+		?>
+			</label>
+			<select class="widefat" name="<?php echo $setting_id; /* phpcs:ignore */ ?>" id="<?php echo $setting_id; /* phpcs:ignore */ ?>">
+		<?php
+		foreach ( $choices as $id => $name ) {
+			?>
+				<option value="<?php echo esc_attr( $id ); ?>"<?php selected( $value, $id ); ?>>
+			<?php
+			echo esc_html( $name );
+			?>
+				</option>
+			<?php
+		}
+		?>
+			</select>
+		</div>
+		<?php
+	}
+}
+
+if ( ! function_exists( 'pen_post_meta_checkbox' ) ) {
+	/**
+	 * Generates HTML for checkboxes fields.
+	 *
+	 * @param integer $post_id    The content ID.
+	 * @param string  $setting_id The setting ID.
+	 * @param string  $label      Field label.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_post_meta_checkbox( $post_id, $setting_id, $label ) {
+		$value      = get_post_meta( $post_id, $setting_id, true );
+		$setting_id = esc_attr( $setting_id );
+		?>
+		<label for="<?php echo $setting_id; /* phpcs:ignore */ ?>" class="pen_wrap">
+			<input type="checkbox" name="<?php echo $setting_id; /* phpcs:ignore */ ?>" id="<?php echo $setting_id; /* phpcs:ignore */ ?>" <?php checked( $value, 'on' ); ?>>
+		<?php
+		echo esc_html( $label );
+		?>
+		</label>
+		<?php
+	}
+}
+
+if ( ! function_exists( 'pen_post_meta_save' ) ) {
+	/**
+	 * Saves the meta data.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_post_meta_save() {
+
+		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
+			return;
+		}
+
+		global $post;
+		if ( ! is_object( $post ) ) {
+			return;
+		}
+
+		if ( wp_is_post_revision( $post->ID ) ) {
+			return;
+		}
+
+		if ( ! current_user_can( 'edit_post', $post->ID ) ) {
+			return;
+		}
+
+		// Honey pot.
+		if ( pen_filter_input( 'POST', md5( NONCE_SALT . $post->ID . date( 'd' ) ) ) ) {
+			return;
+		}
+
+		$options = pen_post_meta_options();
+		foreach ( $options as $option => $label ) {
+			$new = pen_filter_input( 'POST', $option );
+			if ( $new ) {
+				update_post_meta( $post->ID, $option, $new );
+			} else {
+				delete_post_meta( $post->ID, $option );
+			}
+		}
+	}
+	add_action( 'save_post', 'pen_post_meta_save' );
+}
+
+if ( ! function_exists( 'pen_post_meta_box' ) ) {
+	/**
+	 * Adds the meta box.
+	 *
+	 * @param object $post An instance of the $post.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_post_meta_box( $post ) {
+		if ( in_array( (string) get_post_type(), array( 'page', 'post' ), true ) ) {
+			add_meta_box( 'pen_meta_box', __( 'Options', 'pen' ), 'pen_post_meta', get_post_type(), 'normal', 'high' );
+		}
+	}
+	add_action( 'add_meta_boxes', 'pen_post_meta_box' );
+}
+
+if ( ! function_exists( 'pen_post_meta_scripts' ) ) {
+	/**
+	 * Adds post meta JavaScripts.
+	 *
+	 * @param string $hook_suffix The file name.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_post_meta_scripts( $hook_suffix ) {
+		if ( 'post.php' === $hook_suffix || 'post-new.php' === $hook_suffix ) {
+			wp_enqueue_script( 'pen-postmeta-js', get_template_directory_uri() . '/assets/js/pen-backend.js', array( 'jquery' ), PEN_THEME_VERSION, true );
+			wp_localize_script(
+				'pen-postmeta-js',
+				'pen_backend_js',
+				array(
+					'ajax_url' => admin_url( 'admin-ajax.php' ),
+					'text'     => array(
+						'pen_theme'        => __( 'Pen', 'pen' ),
+						'nothing_selected' => __( 'Please select an item.', 'pen' ),
+						'toggle'           => __( 'Toggle panel: Pen Options', 'pen' ),
+					),
+				)
+			);
+				wp_enqueue_style( 'pen-postmeta-css', get_template_directory_uri() . '/assets/css/pen-backend.css', array(), PEN_THEME_VERSION );
+		}
+	}
+	add_action( 'admin_enqueue_scripts', 'pen_post_meta_scripts' );
+}
+
+if ( ! function_exists( 'pen_content_title_background' ) ) {
+	/**
+	 * Returns background image URL for content header.
+	 *
+	 * @param bool $is_singular Result of is_singular(), for better performance.
+	 * @param int  $post_id     The post ID.
+	 *
+	 * @since Pen 1.1.1
+	 * @return string
+	 */
+	function pen_content_title_background( $is_singular, $post_id ) {
+		$background_image_dynamic = '';
+		if ( $is_singular ) {
+			$thumbnail_as_background = get_post_meta( $post_id, 'pen_content_background_image_content_title_dynamic_override', true );
+			if ( ! $thumbnail_as_background || 'default' === $thumbnail_as_background ) {
+				$thumbnail_as_background = pen_option_get( 'background_image_content_title_dynamic' );
+			}
+		} else {
+			$thumbnail_as_background = get_post_meta( $post_id, 'pen_list_background_image_content_title_dynamic_override', true );
+			if ( ! $thumbnail_as_background || 'default' === $thumbnail_as_background ) {
+				$thumbnail_as_background = pen_option_get( 'background_image_content_title_dynamic' );
+			}
+		}
+		if ( $thumbnail_as_background ) {
+			$thumbnail = esc_url( get_the_post_thumbnail_url( null, 'large' ) );
+			if ( $thumbnail ) {
+				$background_image_dynamic = $thumbnail;
+			}
+		}
+		return $background_image_dynamic;
+	}
+}

+ 3987 - 0
include/customize.php

@@ -0,0 +1,3987 @@
+<?php
+/**
+ * Theme Customizer.
+ *
+ * @package Pen
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+if ( ! function_exists( 'pen_customize_color' ) ) {
+	/**
+	 * Adds color options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_color( &$wp_customize ) {
+
+		$preset = esc_html( pen_preset_get( 'color' ) );
+
+		$panel = 'pen_panel_colors';
+		$wp_customize->add_panel(
+			$panel,
+			array(
+				'title'    => __( 'Colors', 'pen' ),
+				'priority' => 1,
+			)
+		);
+
+		$wp_customize->get_section( 'colors' )->title    = __( 'General', 'pen' );
+		$wp_customize->get_section( 'colors' )->priority = 1;
+		$wp_customize->get_section( 'colors' )->panel    = 'pen_colors';
+
+		/**
+		 * General.
+		 */
+		$section = 'pen_section_colors_general';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'General', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_color_shadow[$preset]";
+		$label      = __( 'Shadows', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_site_shadow_display[$preset]";
+		$label      = __( 'Shadow display', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_site_background[$preset]";
+		$label      = __( 'Site background color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_site_background_effect[$preset]";
+		$label      = __( 'Site background effect', 'pen' );
+		$choices    = array(
+			'none'       => __( 'None', 'pen' ),
+			'trianglify' => __( 'Trianglify', 'pen' ),
+			'shards'     => __( 'Shards', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_color_text[$preset]";
+		$label      = __( 'Text', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_link[$preset]";
+		$label      = __( 'Links color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_link_hover[$preset]";
+		$label      = __( 'Links (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_button_background_primary[$preset]";
+		$label      = __( 'Buttons background (top)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_button_background_secondary[$preset]";
+		$label      = __( 'Buttons background (bottom)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_button_text[$preset]";
+		$label      = __( 'Buttons text', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_button_border[$preset]";
+		$label      = __( 'Buttons border', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		/**
+		 * Header.
+		 */
+		$section = 'pen_section_colors_header';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'              => __( 'Header', 'pen' ),
+				'panel'              => $panel,
+				'description_hidden' => true,
+			)
+		);
+
+		$setting_id = "pen_color_header_background_primary[$preset]";
+		$label      = __( 'Background (primary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_header_background_secondary[$preset]";
+		$label      = __( 'Background (secondary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_header_background_angle[$preset]";
+		$label      = __( 'Angle', 'pen' );
+		$choices    = array(
+			'to right'  => __( 'Horizontal', 'pen' ),
+			'125deg'    => __( 'Diagonal', 'pen' ),
+			'to bottom' => __( 'Vertical', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_color_header_text_shadow[$preset]";
+		$label      = __( 'Text shadow color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_text_shadow_display[$preset]";
+		$label      = __( 'Text shadow', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_sitetitle[$preset]";
+		$label      = __( 'Site title color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_sitetitle_hover[$preset]";
+		$label      = __( 'Site title (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_sitedescription[$preset]";
+		$label      = __( 'Site description color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_sitedescription_hover[$preset]";
+		$label      = __( 'Site description (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_phone[$preset]";
+		$label      = __( 'Phone color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_phone_hover[$preset]";
+		$label      = __( 'Phone (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_link[$preset]";
+		$label      = __( 'Links color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_link_hover[$preset]";
+		$label      = __( 'Links (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_text[$preset]";
+		$label      = __( 'Text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_field_background_primary[$preset]";
+		$label      = __( 'Form fields background (top)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_field_background_secondary[$preset]";
+		$label      = __( 'Form fields background (bottom)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_field_text[$preset]";
+		$label      = __( 'Form fields text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_header_search_background_primary[$preset]";
+		$label      = __( 'Search button (top)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_header_search_background_secondary[$preset]";
+		$label      = __( 'Search button (bottom)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_header_search_text[$preset]";
+		$label      = __( 'Search button text', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		/**
+		 * Navigation colors.
+		 */
+		$section = 'pen_section_colors_navigation';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Navigation', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_color_navigation_background_primary[$preset]";
+		$label      = __( 'Background (primary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_navigation_background_secondary[$preset]";
+		$label      = __( 'Background (secondary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_navigation_background_angle[$preset]";
+		$label      = __( 'Angle', 'pen' );
+		$choices    = array(
+			'to right'  => __( 'Horizontal', 'pen' ),
+			'125deg'    => __( 'Diagonal', 'pen' ),
+			'to bottom' => __( 'Vertical', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_color_navigation_background_submenu_primary[$preset]";
+		$label      = __( 'Sub-menu background (primary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_navigation_background_submenu_secondary[$preset]";
+		$label      = __( 'Sub-menu background (secondary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_navigation_background_submenu_angle[$preset]";
+		$label      = __( 'Angle', 'pen' );
+		$choices    = array(
+			'to right'  => __( 'Horizontal', 'pen' ),
+			'125deg'    => __( 'Diagonal', 'pen' ),
+			'to bottom' => __( 'Vertical', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_color_navigation_text_shadow[$preset]";
+		$label      = __( 'Text shadow color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_navigation_text_shadow_display[$preset]";
+		$label      = __( 'Text shadow', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_navigation_link[$preset]";
+		$label      = __( 'Links color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_navigation_link_hover[$preset]";
+		$label      = __( 'Links (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_navigation_link_submenu[$preset]";
+		$label      = __( 'Submenu links color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_navigation_link_hover_submenu[$preset]";
+		$label      = __( 'Submenu links (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_navigation_text_shadow_submenu[$preset]";
+		$label      = __( 'Text shadow (submenus)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_navigation_text_shadow_display_submenu[$preset]";
+		$label      = __( 'Text shadow (submenus)', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		/**
+		 * Search.
+		 */
+		$section = 'pen_section_colors_search';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'       => __( 'Search Bar', 'pen' ),
+				'panel'       => $panel,
+				'description' => __( 'Please make sure you have the search box added to the top of the content area through Customize &rarr; Header &rarr; Search, otherwise changes that you will make in this section cannot be previewed live like the rest of the settings.', 'pen' ),
+			)
+		);
+
+		$setting_id = "pen_color_search_background_primary[$preset]";
+		$label      = __( 'Background (primary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_search_background_secondary[$preset]";
+		$label      = __( 'Background (secondary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_search_background_angle[$preset]";
+		$label      = __( 'Angle', 'pen' );
+		$choices    = array(
+			'to right'  => __( 'Horizontal', 'pen' ),
+			'125deg'    => __( 'Diagonal', 'pen' ),
+			'to bottom' => __( 'Vertical', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_color_search_field_background_primary[$preset]";
+		$label      = __( 'Search fields background (top)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_field_background_secondary[$preset]";
+		$label      = __( 'Search fields background (bottom)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_field_text[$preset]";
+		$label      = __( 'Form fields text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_button_background_primary[$preset]";
+		$label      = __( 'Search button (top)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_button_background_secondary[$preset]";
+		$label      = __( 'Search button (bottom)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_button_text[$preset]";
+		$label      = __( 'Search button text', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_text[$preset]";
+		$label      = __( 'Text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_link[$preset]";
+		$label      = __( 'Links color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_link_hover[$preset]";
+		$label      = __( 'Links (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_text_shadow[$preset]";
+		$label      = __( 'Text shadow color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_search_text_shadow_display[$preset]";
+		$label      = __( 'Text shadow', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		/**
+		 * Content.
+		 */
+		$section = 'pen_section_colors_content';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Posts & pages', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_color_content_title_background_primary[$preset]";
+		$label      = __( 'Post title background (primary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_title_background_secondary[$preset]";
+		$label      = __( 'Post title background (secondary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_title_background_angle[$preset]";
+		$label      = __( 'Angle', 'pen' );
+		$choices    = array(
+			'to right'  => __( 'Horizontal', 'pen' ),
+			'125deg'    => __( 'Diagonal', 'pen' ),
+			'to bottom' => __( 'Vertical', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'postMessage', $choices, $label );
+
+		$setting_id = "pen_color_content_title_text[$preset]";
+		$label      = __( 'Post title text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_title_text_shadow[$preset]";
+		$label      = __( 'Post title text shadow color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_title_text_shadow_display[$preset]";
+		$label      = __( 'Post title text shadow', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_title_link[$preset]";
+		$label      = __( 'Post title link color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_title_link_hover[$preset]";
+		$label      = __( 'Post title link (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_background_primary[$preset]";
+		$label      = __( 'Background color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id  = "pen_color_content_thumbnail_frame[$preset]";
+		$label       = __( 'Featured image frame (Full content)', 'pen' );
+		$description = __( 'Make sure the thumbnail frame is enabled in Customize &rarr; Content &rarr; Full content view.', 'pen' );
+		$choices     = array(
+			'#ffffff' => __( 'Light', 'pen' ),
+			'#000000' => __( 'Dark', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'postMessage', $choices, $label, $description );
+
+		$setting_id = "pen_color_content_text[$preset]";
+		$label      = __( 'Text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_link[$preset]";
+		$label      = __( 'Links', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_link_hover[$preset]";
+		$label      = __( 'Links (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_field_background_primary[$preset]";
+		$label      = __( 'Form fields background (top)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_field_background_secondary[$preset]";
+		$label      = __( 'Form fields background (bottom)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_content_field_text[$preset]";
+		$label      = __( 'Form fields text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		/**
+		 * Lists.
+		 */
+		$section = 'pen_section_colors_list';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'List views', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_color_list_thumbnail_frame[$preset]";
+		$label       = __( 'Featured image frame (plain list)', 'pen' );
+		$description = __( 'Make sure the thumbnail frame is enabled in Customize &rarr; Content &rarr; List Views.', 'pen' );
+		$choices     = array(
+			'#ffffff' => __( 'Light', 'pen' ),
+			'#000000' => __( 'Dark', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'postMessage', $choices, $label, $description );
+
+		$setting_id  = "pen_color_list_thumbnail_background_primary[$preset]";
+		$label       = __( 'Thumbnails background (primary)', 'pen' );
+		$description = __( 'Only for the jQuery Masonry layouts.', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id  = "pen_color_list_thumbnail_background_secondary[$preset]";
+		$label       = __( 'Thumbnails background (secondary)', 'pen' );
+		$description = __( 'Only for the jQuery Masonry layouts.', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		/**
+		 * Bottom.
+		 */
+		$section = 'pen_section_colors_bottom';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Bottom', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_color_bottom_background_transparent[$preset]";
+		$label      = __( 'Transparent background', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_bottom_background_primary[$preset]";
+		$label      = __( 'Background (primary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_bottom_background_secondary[$preset]";
+		$label      = __( 'Background (secondary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_bottom_background_angle[$preset]";
+		$label      = __( 'Angle', 'pen' );
+		$choices    = array(
+			'to right'  => __( 'Horizontal', 'pen' ),
+			'125deg'    => __( 'Diagonal', 'pen' ),
+			'to bottom' => __( 'Vertical', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_color_bottom_text[$preset]";
+		$label      = __( 'Text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_bottom_link[$preset]";
+		$label      = __( 'Links color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_bottom_link_hover[$preset]";
+		$label      = __( 'Links (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_bottom_text_shadow[$preset]";
+		$label      = __( 'Text shadow color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_bottom_text_shadow_display[$preset]";
+		$label      = __( 'Text shadow', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id  = "pen_color_bottom_headings[$preset]";
+		$label       = __( 'Headings color', 'pen' );
+		$description = __( 'Only applies to widgets with no color scheme.', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label, $description );
+
+		$setting_id  = "pen_color_bottom_headings_text_shadow[$preset]";
+		$label       = __( 'Headings shadow color', 'pen' );
+		$description = __( 'Only applies to widgets with no color scheme.', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label, $description );
+
+		$setting_id = "pen_color_bottom_headings_text_shadow_display[$preset]";
+		$label      = __( 'Headings shadow', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_bottom_field_background_primary[$preset]";
+		$label      = __( 'Form fields background (top)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_bottom_field_background_secondary[$preset]";
+		$label      = __( 'Form fields background (bottom)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_bottom_field_text[$preset]";
+		$label      = __( 'Form fields text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		/**
+		 * Footer.
+		 */
+		$section = 'pen_section_colors_footer';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Footer', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_color_footer_background_transparent[$preset]";
+		$label      = __( 'Transparent background', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_footer_background_primary[$preset]";
+		$label      = __( 'Background (primary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_footer_background_secondary[$preset]";
+		$label      = __( 'Background (secondary)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_footer_background_angle[$preset]";
+		$label      = __( 'Angle', 'pen' );
+		$choices    = array(
+			'to right'  => __( 'Horizontal', 'pen' ),
+			'125deg'    => __( 'Diagonal', 'pen' ),
+			'to bottom' => __( 'Vertical', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_color_footer_text[$preset]";
+		$label      = __( 'Text color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_footer_link[$preset]";
+		$label      = __( 'Links color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_footer_link_hover[$preset]";
+		$label      = __( 'Links (hover)', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_color_footer_text_shadow[$preset]";
+		$label      = __( 'Text shadow color', 'pen' );
+		pen_control_color( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_color_footer_text_shadow_display[$preset]";
+		$label      = __( 'Text shadow', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_typography' ) ) {
+	/**
+	 * Adds typography options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_typography( &$wp_customize ) {
+
+		$preset      = 'preset_1';
+		$preset_font = esc_html( pen_preset_get( 'font_family' ) );
+
+		$list_fonts = array_merge(
+			array(
+				'default' => __( 'Default', 'pen' ),
+			),
+			pen_fonts_all()
+		);
+
+		$list_sizes = array(
+			'0.5em'   => __( 'Very Small', 'pen' ),
+			'0.75em'  => __( 'Small', 'pen' ),
+			'default' => __( 'Default', 'pen' ),
+			'2em'     => __( 'Large', 'pen' ),
+			'3em'     => __( 'Very Large', 'pen' ),
+		);
+
+		$panel = 'pen_panel_typography';
+		$wp_customize->add_panel(
+			$panel,
+			array(
+				'title'    => __( 'Typography', 'pen' ),
+				'priority' => 2,
+			)
+		);
+
+		/**
+		 * General.
+		 */
+		$section = 'pen_section_typography_general';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'General', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_font_family_site[$preset_font]";
+		$label      = __( 'Base font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_family_headings[$preset_font]";
+		$label      = __( 'Headings font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_family_title_list[$preset_font]";
+		$label      = __( 'Content title font (In lists)', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_title_list[$preset]";
+		$label      = __( 'Content title font size (In lists)', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id = "pen_font_family_title_content[$preset_font]";
+		$label      = __( 'Content title font (Full content)', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_title_content[$preset]";
+		$label      = __( 'Content title font size (Full content)', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id = "pen_font_family_forms[$preset_font]";
+		$label      = __( 'Forms font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_family_buttons[$preset_font]";
+		$label      = __( 'Buttons font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		/**
+		 * Header.
+		 */
+		$section = 'pen_section_typography_header';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Header', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_font_family_sitetitle[$preset_font]";
+		$label      = __( 'Site title font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_sitetitle[$preset]";
+		$label      = __( 'Site title font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id  = "pen_font_resize_sitetitle[$preset]";
+		$label       = __( 'Site title font resize', 'pen' );
+		$description = __( 'Font size enhancement on small screens', 'pen' );
+		$choices     = array(
+			'none'    => __( 'Disabled', 'pen' ),
+			'dynamic' => __( 'Dynamic', 'pen' ),
+			'resize'  => __( 'Shrink to fit', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label, $description );
+
+		$setting_id = "pen_font_family_sitedescription[$preset_font]";
+		$label      = __( 'Site description font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_sitedescription[$preset]";
+		$label      = __( 'Site description font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id = "pen_font_size_social_header[$preset]";
+		$label      = __( 'Social links font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id = "pen_font_family_phone_header[$preset_font]";
+		$label      = __( 'Phone font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_phone_header[$preset]";
+		$label      = __( 'Phone font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		/**
+		 * Footer fonts.
+		 */
+		$section = 'pen_section_typography_footer';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Footer', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_font_family_phone_footer[$preset_font]";
+		$label      = __( 'Phone font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_phone_footer[$preset]";
+		$label      = __( 'Phone font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		/**
+		 * Navigation font.
+		 */
+		$section = 'pen_section_typography_navigation';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Navigation', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_font_family_navigation[$preset_font]";
+		$label      = __( 'Navigation font (parents)', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_navigation[$preset]";
+		$label      = __( 'Navigation font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id = "pen_font_family_navigation_submenu[$preset_font]";
+		$label      = __( 'Navigation font (sub-menus)', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		/**
+		 * Sidebars.
+		 */
+		$section = 'pen_section_typography_sidebars';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Sidebars', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_font_family_widget_title_top[$preset_font]";
+		$label      = __( 'Top: Widget title font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_widget_title_top[$preset]";
+		$label      = __( 'Top: Widget title font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id = "pen_font_family_widget_title_left[$preset_font]";
+		$label      = __( 'Left: Widget title font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_widget_title_left[$preset]";
+		$label      = __( 'Left: Widget title font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id = "pen_font_family_widget_title_right[$preset_font]";
+		$label      = __( 'Right: Widget title font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_widget_title_right[$preset]";
+		$label      = __( 'Right: Widget title font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+		$setting_id = "pen_font_family_widget_title_bottom[$preset_font]";
+		$label      = __( 'Bottom: Widget title font', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_fonts, $label );
+
+		$setting_id = "pen_font_size_widget_title_bottom[$preset]";
+		$label      = __( 'Bottom: Widget title font size', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $list_sizes, $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_header' ) ) {
+	/**
+	 * Adds header options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_header( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$panel = 'pen_panel_header';
+		$wp_customize->add_panel(
+			$panel,
+			array(
+				'title'    => __( 'Header', 'pen' ),
+				'priority' => 3,
+			)
+		);
+
+		/*
+		 * Layout.
+		 */
+		$section = 'pen_section_header_general';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'General', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_header_sticky[$preset]";
+		$label      = __( 'Sticky header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_header_sitetitle_display[$preset]";
+		$label      = __( 'Display the site title', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_header_sitetitle_animation_reveal[$preset]";
+		$label      = __( 'Site title animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_header_sitedescription_display[$preset]";
+		$label      = __( 'Display the site description', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_header_sitedescription_animation_reveal[$preset]";
+		$label      = __( 'Site description animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_header_alignment[$preset]";
+		$label      = __( 'Header alignment', 'pen' );
+		$choices    = array(
+			'left'   => __( 'Left', 'pen' ),
+			'center' => __( 'Center', 'pen' ),
+			'right'  => __( 'Right', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'postMessage', $choices, $label );
+
+		/*
+		 * Search.
+		 */
+		$section = 'pen_section_header_search';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Search', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_search_display[$preset]";
+		$label      = __( 'Display the search box', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_search_location[$preset]";
+		$label      = __( 'Search box location', 'pen' );
+		$choices    = array(
+			'header'  => __( 'Header', 'pen' ),
+			'content' => __( 'Content area', 'pen' ),
+		);
+		pen_control_radio( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		/*
+		 * Navigation.
+		 */
+		$section = 'pen_section_header_navigation';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Navigation', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_navigation_display[$preset]";
+		$label      = __( 'Display the main navigation menu', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_navigation_mobile_display[$preset]";
+		$label      = __( 'Display the mobile navigation menu', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_navigation_animation_reveal[$preset]";
+		$label      = __( 'Animation on page load', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_navigation_separator[$preset]";
+		$label      = __( 'Menu separator', 'pen' );
+		$choices    = array(
+			0 => __( 'None', 'pen' ),
+		);
+		for ( $i = 1; $i <= 10; $i++ ) {
+			/* Translators: %d the style number. */
+			$choices[ $i ] = sprintf( __( 'Style %d', 'pen' ), $i );
+		}
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_navigation_separator_submenu[$preset]";
+		$label      = __( 'Sub-menu separator', 'pen' );
+		$choices    = array(
+			0 => __( 'None', 'pen' ),
+		);
+		for ( $i = 1; $i <= 10; $i++ ) {
+			/* Translators: %d the style number. */
+			$choices[ $i ] = sprintf( __( 'Style %d', 'pen' ), $i );
+		}
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_navigation_hover[$preset]";
+		$label      = __( 'Hover style', 'pen' );
+		$choices    = array(
+			0 => __( 'None', 'pen' ),
+		);
+		for ( $i = 1; $i <= 10; $i++ ) {
+			/* Translators: %d the style number. */
+			$choices[ $i ] = sprintf( __( 'Style %d', 'pen' ), $i );
+		}
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_navigation_arrows[$preset]";
+		$label      = __( 'Dropdown arrows', 'pen' );
+		$choices    = array(
+			0 => __( 'None', 'pen' ),
+		);
+		for ( $i = 1; $i <= 10; $i++ ) {
+			/* Translators: %d the style number. */
+			$choices[ $i ] = sprintf( __( 'Style %d', 'pen' ), $i );
+		}
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_navigation_easing[$preset]";
+		$label      = __( 'Dropdown animation', 'pen' );
+		$choices    = array(
+			''              => __( 'None', 'pen' ),
+			'easeInBack'    => 'easeInBack',
+			'easeInBounce'  => 'easeInBounce',
+			'easeInCirc'    => 'easeInCirc',
+			'easeInCubic'   => 'easeInCubic',
+			'easeInElastic' => 'easeInElastic',
+			'easeInExpo'    => 'easeInExpo',
+			'easeInQuad'    => 'easeInQuad',
+			'easeInQuart'   => 'easeInQuart',
+			'easeInQuint'   => 'easeInQuint',
+			'easeInSine'    => 'easeInSine',
+			'swing'         => 'swing',
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_navigation_animation_speed[$preset]";
+		$label      = __( 'Dropdown animation speed', 'pen' );
+		$choices    = array(
+			2000 => __( 'Very Slow', 'pen' ),
+			1000 => __( 'Slow', 'pen' ),
+			500  => __( 'Normal', 'pen' ),
+			250  => __( 'Fast', 'pen' ),
+			100  => __( 'Very Fast', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_navigation_alignment[$preset]";
+		$label      = __( 'Navigation alignment', 'pen' );
+		$choices    = array(
+			'left'   => __( 'Left', 'pen' ),
+			'center' => __( 'Center', 'pen' ),
+			'right'  => __( 'Right', 'pen' ),
+		);
+		pen_control_radio( $wp_customize, $setting_id, $section, 'postMessage', $choices, $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_content_list' ) ) {
+	/**
+	 * Adds "Content list" options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_content_list( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$panel = 'pen_panel_content';
+		$wp_customize->add_panel(
+			$panel,
+			array(
+				'title'    => __( 'Content', 'pen' ),
+				'priority' => 4,
+			)
+		);
+
+		$section = 'pen_section_list';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'       => __( 'List Views', 'pen' ),
+				'panel'       => $panel,
+				'description' => __( 'The following options apply to both "Plain list" and "jQuery Masonry" layouts.', 'pen' ),
+			)
+		);
+
+		$setting_id = "pen_list_type[$preset]";
+		$label      = __( 'Layout', 'pen' );
+		$choices    = array(
+			'masonry' => __( 'jQuery Masonry', 'pen' ),
+			'plain'   => __( 'Plain list', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id  = "pen_list_masonry_columns[$preset]";
+		$label       = __( 'jQuery Masonry: Columns', 'pen' );
+		$description = __( 'Maximum number of columns', 'pen' );
+		$choices     = array(
+			'2' => __( 'Two', 'pen' ),
+			'3' => __( 'Three', 'pen' ),
+			'4' => __( 'Four', 'pen' ),
+			'5' => __( 'Five', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label, $description );
+
+		$setting_id = "pen_list_masonry_thumbnail_effect[$preset]";
+		$label      = __( 'jQuery Masonry: Thumbnails effect', 'pen' );
+		$choices    = array(
+			'none'     => __( 'None', 'pen' ),
+			'zoom_in'  => __( 'Zoom in', 'pen' ),
+			'zoom_out' => __( 'Zoom out', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_list_masonry_thumbnail_style[$preset]";
+		$label      = __( 'jQuery Masonry: Thumbnails style', 'pen' );
+		$choices    = array(
+			0 => __( 'None', 'pen' ),
+		);
+		for ( $i = 1; $i <= 25; $i++ ) {
+			/* Translators: %d the style number. */
+			$choices[ $i ] = sprintf( __( 'Style %d', 'pen' ), $i );
+		}
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_list_animation_reveal[$preset]";
+		$label      = __( 'Content list animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id  = "pen_list_effect[$preset]";
+		$label       = __( 'Content list effect', 'pen' );
+		$description = __( 'This may not work in conjunction with some of the animations in the "Content list animation" above.', 'pen' );
+		$choices     = array(
+			'none'         => __( 'None', 'pen' ),
+			'enlarge'      => __( 'Enlarge', 'pen' ),
+			'fade'         => __( 'Fade', 'pen' ),
+			'enlarge_fade' => __( 'Enlarge + Fade', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label, $description );
+
+		$setting_id = "pen_list_header_display[$preset]";
+		$label      = __( 'Display post header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_post_header_alignment[$preset]";
+		$label      = __( 'Center-align post header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_title_alignment[$preset]";
+		$label      = __( 'Center-align post titles', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_excerpt[$preset]";
+		$label      = __( 'Display excerpt', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_footer_display[$preset]";
+		$label      = __( 'Display post footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_title_display[$preset]";
+		$label      = __( 'Display post titles', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_author_location[$preset]";
+		$label      = __( 'Post author location', 'pen' );
+		$choices    = array(
+			'header' => __( 'Post header', 'pen' ),
+			'footer' => __( 'Post footer', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_list_author_display[$preset]";
+		$label      = __( 'Display post authors', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_author_animation_reveal[$preset]";
+		$label      = __( 'Author profile animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_list_date_location[$preset]";
+		$label      = __( 'Post date location', 'pen' );
+		$choices    = array(
+			'header' => __( 'Post header', 'pen' ),
+			'footer' => __( 'Post footer', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_list_date_display[$preset]";
+		$label      = __( 'Display post date', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_category_location[$preset]";
+		$label      = __( 'Post categories location', 'pen' );
+		$choices    = array(
+			'header' => __( 'Post header', 'pen' ),
+			'footer' => __( 'Post footer', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_list_category_display[$preset]";
+		$label      = __( 'Display post categories', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_category_only_first[$preset]";
+		$label      = __( 'Display the first category only', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_thumbnail_display[$preset]";
+		$label      = __( 'Display post thumbnails', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_thumbnail_animation_reveal[$preset]";
+		$label      = __( 'Thumbnails animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id  = "pen_list_thumbnail_rotate[$preset]";
+		$label       = __( 'Post thumbnail rotate', 'pen' );
+		$description = __( 'Does not apply to the jQuery Masonry layout.', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id  = "pen_list_thumbnail_frame[$preset]";
+		$label       = __( 'Post thumbnail frame', 'pen' );
+		$description = __( 'Does not apply to the jQuery Masonry layout.', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id  = "pen_list_thumbnail_alignment[$preset]";
+		$label       = __( 'Post thumbnail alignment', 'pen' );
+		$description = __( 'Does not apply to the jQuery Masonry layout.', 'pen' );
+		$choices     = array(
+			'left'   => __( 'Left', 'pen' ),
+			'center' => __( 'Center', 'pen' ),
+			'right'  => __( 'Right', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label, $description );
+
+		$setting_id      = "pen_list_thumbnail_resize[$preset]";
+		$label           = __( 'Post thumbnail size', 'pen' );
+		$description     = __( 'Does not apply to the jQuery Masonry layout.', 'pen' );
+		$thumbnail_sizes = array(
+			'none' => __( 'None', 'pen' ),
+		);
+		foreach ( get_intermediate_image_sizes() as $size ) { /* phpcs:ignore */
+			$thumbnail_sizes[ $size ] = ucfirst( $size );
+		}
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $thumbnail_sizes, $label, $description );
+
+		$setting_id = "pen_list_summary_display[$preset]";
+		$label      = __( 'Display post summaries', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_profile_display[$preset]";
+		$label      = __( 'Display author profile', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_tags_display[$preset]";
+		$label      = __( 'Footer: Display post tags', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_button_comment_display[$preset]";
+		$label      = __( 'Footer: Display post comment buttons', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_button_edit_display[$preset]";
+		$label      = __( 'Footer: Display post edit buttons', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_list_pager_animation_reveal[$preset]";
+		$label      = __( 'Pagination buttons animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_content_full' ) ) {
+	/**
+	 * Adds "Full content" options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.2
+	 * @return void
+	 */
+	function pen_customize_content_full( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$panel = 'pen_panel_content';
+
+		$section = 'pen_section_content';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'       => __( 'Full Content Views', 'pen' ),
+				'description' => __( 'You can override these settings for individual contents through Posts (or Pages) &rarr; Edit &rarr; Pen Options.', 'pen' ),
+				'panel'       => $panel,
+			)
+		);
+
+		$setting_id = "pen_content_animation_reveal[$preset]";
+		$label      = __( 'Content area animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_content_header_display[$preset]";
+		$label      = __( 'Display post header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_header_alignment[$preset]";
+		$label      = __( 'Center-align post header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_footer_display[$preset]";
+		$label      = __( 'Display post footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_title_alignment[$preset]";
+		$label      = __( 'Center-align post titles', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_title_display[$preset]";
+		$label      = __( 'Display post title', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_author_location[$preset]";
+		$label      = __( 'Post author location', 'pen' );
+		$choices    = array(
+			'header' => __( 'Post header', 'pen' ),
+			'footer' => __( 'Post footer', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_content_author_display[$preset]";
+		$label      = __( 'Display post author', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_author_animation_reveal[$preset]";
+		$label      = __( 'Author profile animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_content_date_location[$preset]";
+		$label      = __( 'Post date location', 'pen' );
+		$choices    = array(
+			'header' => __( 'Post header', 'pen' ),
+			'footer' => __( 'Post footer', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_content_date_display[$preset]";
+		$label      = __( 'Display post date', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_category_location[$preset]";
+		$label      = __( 'Post categories location', 'pen' );
+		$choices    = array(
+			'header' => __( 'Post header', 'pen' ),
+			'footer' => __( 'Post footer', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_content_category_display[$preset]";
+		$label      = __( 'Display post category', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_category_only_first[$preset]";
+		$label      = __( 'Display the first category only', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_thumbnail_display[$preset]";
+		$label      = __( 'Display post thumbnail', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_thumbnail_animation_reveal[$preset]";
+		$label      = __( 'Thumbnails animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_content_thumbnail_alignment[$preset]";
+		$label      = __( 'Post thumbnail alignment', 'pen' );
+		$choices    = array(
+			'left'   => __( 'Left', 'pen' ),
+			'center' => __( 'Center', 'pen' ),
+			'right'  => __( 'Right', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id      = "pen_content_thumbnail_resize[$preset]";
+		$label           = __( 'Post thumbnail size', 'pen' );
+		$thumbnail_sizes = array(
+			'none' => __( 'None', 'pen' ),
+		);
+		foreach ( get_intermediate_image_sizes() as $size ) { /* phpcs:ignore */
+			$thumbnail_sizes[ $size ] = ucfirst( $size );
+		}
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $thumbnail_sizes, $label );
+
+		$setting_id = "pen_content_thumbnail_rotate[$preset]";
+		$label      = __( 'Post thumbnail rotate', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_thumbnail_frame[$preset]";
+		$label      = __( 'Post thumbnail framed', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_tags_display[$preset]";
+		$label      = __( 'Display post tags', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_share_location[$preset]";
+		$label      = __( 'Share buttons location', 'pen' );
+		$choices    = array(
+			'header'  => __( 'Post header', 'pen' ),
+			'content' => __( 'Post content', 'pen' ),
+			'footer'  => __( 'Post footer', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+		$setting_id = "pen_content_share_display[$preset]";
+		$label      = __( 'Display share buttons', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_content_profile_display[$preset]";
+		$label      = __( 'Display author profile', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_comments_animation_reveal[$preset]";
+		$label      = __( 'Comments animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_content_pager_animation_reveal[$preset]";
+		$label      = __( 'Pagination animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_site_layout' ) ) {
+	/**
+	 * Adds "Site layout" options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_site_layout( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$panel = 'pen_panel_content';
+
+		$section = 'pen_section_layout';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Site layout', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_site_width[$preset]";
+		$label      = __( 'Site layout', 'pen' );
+		$choices    = array(
+			'standard' => __( 'Standard', 'pen' ),
+			'wide'     => __( 'Wide', 'pen' ),
+			'boxed'    => __( 'Boxed', 'pen' ),
+		);
+		pen_control_radio( $wp_customize, $setting_id, $section, 'postMessage', $choices, $label );
+
+		$setting_id = "pen_container_position[$preset]";
+		$label      = __( 'Content area alignment', 'pen' );
+		$choices    = array(
+			'left'   => __( 'Left', 'pen' ),
+			'center' => __( 'Center', 'pen' ),
+			'right'  => __( 'Right', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'postMessage', $choices, $label );
+
+		$setting_id = "pen_round_corners[$preset]";
+		$label      = __( 'Round corners', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_front' ) ) {
+	/**
+	 * "Front page" options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.2
+	 * @return void
+	 */
+	function pen_customize_front( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$panel = 'pen_panel_front';
+		$wp_customize->add_panel(
+			$panel,
+			array(
+				'title'    => __( 'Front Page', 'pen' ),
+				'priority' => 5,
+			)
+		);
+
+		$wp_customize->get_section( 'static_front_page' )->panel = $panel;
+		$wp_customize->get_section( 'static_front_page' )->title = __( 'Front Page Content', 'pen' );
+
+		$section = 'pen_section_front_sidebars';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'       => __( 'Front page sidebars', 'pen' ),
+				'description' => __( 'You may also use some plugins such as the "Widget Visibility" or "Conditional Logic".', 'pen' ),
+				'panel'       => $panel,
+			)
+		);
+
+		$setting_id = "pen_front_sidebar_header_primary_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Header - Primary', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_header_secondary_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Header - Secondary', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_search_top_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Search - Top', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_search_left_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Search - Left', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_search_right_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Search - Right', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_search_bottom_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Search - Bottom', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_top_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Top', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_left_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Left', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_right_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Right', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_content_top_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Content - Top', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_content_bottom_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Content - Bottom', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_bottom_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Bottom', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_footer_top_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Footer - Top', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_footer_left_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Footer - Left', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_footer_right_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Footer - Right', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_front_sidebar_footer_bottom_display[$preset]";
+		$label      = sprintf(
+			/* Translators: %s: a widget are name. */
+			__( 'Hide the "%s" widget area', 'pen' ),
+			__( 'Footer - Bottom', 'pen' )
+		);
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_footer' ) ) {
+	/**
+	 * Adds footer options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_footer( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$section = 'pen_section_footer';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'       => __( 'Footer', 'pen' ),
+				'description' => __( 'You can control the visibility of the phone number and social network icons through Customize &rarr; Contact and the colors of the footer links through Customize &rarr; Colors &rarr; Footer.', 'pen' ),
+				'priority'    => 6,
+			)
+		);
+
+		$setting_id = "pen_footer_alignment[$preset]";
+		$label      = __( 'Footer alignment', 'pen' );
+		$choices    = array(
+			'left'   => __( 'Left', 'pen' ),
+			'center' => __( 'Center', 'pen' ),
+			'right'  => __( 'Right', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'postMessage', $choices, $label );
+
+		$setting_id = "pen_footer_menu_display[$preset]";
+		$label      = __( 'Display footer navigation', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id = "pen_footer_menu_animation_reveal[$preset]";
+		$label      = __( 'Footer menu animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_footer_back_to_top_display[$preset]";
+		$label      = __( 'Display "back to top" link', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_footer_copyright_display[$preset]";
+		$label      = __( 'Display copyright', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'postMessage', $label );
+
+		$setting_id  = "pen_footer_copyright_text[$preset]";
+		$label       = __( 'Copyright notice', 'pen' );
+		$description = sprintf(
+			/* Translators: %s: HTML list. */
+			__( 'The following tokens are available:%s', 'pen' ),
+			sprintf(
+				'<br><ul><li>%s</li><li>%s</li><li>%s</li></ul>%s',
+				__( '<strong>%YEAR%</strong> for the current year.', 'pen' ),
+				__( '<strong>%SITE_NAME%</strong> for your site name as set in Settings &rarr; General.', 'pen' ),
+				__( '<strong>%SITE_URL%</strong> for your site URL as set in Settings &rarr; General.', 'pen' ),
+				sprintf(
+					/* Translators: %s: some text. */
+					__( '<strong>Examples:</strong>%s', 'pen' ),
+					sprintf(
+						'<br><small>%s</small><br><small>%s</small><br><small><em>%s</em></small>',
+						'&amp;copy; %YEAR% by %SITE_NAME%. All Rights Reserved.',
+						'&amp;copy; %YEAR% by &lt;a href="%SITE_URL%"&gt;%SITE_NAME%&lt;/a&gt;. All Rights Reserved.',
+						__( '(Supports limited HTML)', 'pen' )
+					)
+				)
+			)
+		);
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_contact' ) ) {
+	/**
+	 * Adds contact details options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_contact( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$panel = 'pen_panel_contact';
+		$wp_customize->add_panel(
+			$panel,
+			array(
+				'title'    => __( 'Contact information', 'pen' ),
+				'priority' => 7,
+			)
+		);
+
+		$section = 'pen_section_twitter';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Twitter', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_twitter[$preset]";
+		$label       = __( 'Twitter URL', 'pen' );
+		$description = 'https://twitter.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_twitter_header_display[$preset]";
+		$label      = __( 'Twitter link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_twitter_footer_display[$preset]";
+		$label      = __( 'Twitter link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_facebook';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Facebook', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_facebook[$preset]";
+		$label       = __( 'Facebook URL', 'pen' );
+		$description = 'https://facebook.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_facebook_header_display[$preset]";
+		$label      = __( 'Facebook link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_facebook_footer_display[$preset]";
+		$label      = __( 'Facebook link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_instagram';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Instagram', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_instagram[$preset]";
+		$label       = __( 'Instagram URL', 'pen' );
+		$description = 'https://instagram.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_instagram_header_display[$preset]";
+		$label      = __( 'Instagram link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_instagram_footer_display[$preset]";
+		$label      = __( 'Instagram link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_vk';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'VK', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_vk[$preset]";
+		$label       = __( 'VK URL', 'pen' );
+		$description = 'https://vk.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_vk_header_display[$preset]";
+		$label      = __( 'VK link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_vk_footer_display[$preset]";
+		$label      = __( 'VK link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_pinterest';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Pinterest', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_pinterest[$preset]";
+		$label       = __( 'Pinterest URL', 'pen' );
+		$description = 'https://pinterest.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_pinterest_header_display[$preset]";
+		$label      = __( 'Pinterest link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_pinterest_footer_display[$preset]";
+		$label      = __( 'Pinterest link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_linkedin';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'LinkedIn', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_linkedin[$preset]";
+		$label       = __( 'LinkedIn URL', 'pen' );
+		$description = 'https://linkedin.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_linkedin_header_display[$preset]";
+		$label      = __( 'LinkedIn link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_linkedin_footer_display[$preset]";
+		$label      = __( 'LinkedIn link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_flickr';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Flickr', 'pen' ),
+				'panel' => 'pen_panel_contact',
+			)
+		);
+
+		$setting_id  = "pen_flickr[$preset]";
+		$label       = __( 'Flickr URL', 'pen' );
+		$description = 'https://flickr.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_flickr_header_display[$preset]";
+		$label      = __( 'Flickr link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_flickr_footer_display[$preset]";
+		$label      = __( 'Flickr link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_bitbucket';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'BitBucket', 'pen' ),
+				'panel' => 'pen_panel_contact',
+			)
+		);
+
+		$setting_id  = "pen_bitbucket[$preset]";
+		$label       = __( 'BitBucket URL', 'pen' );
+		$description = 'https://bitbucket.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_bitbucket_header_display[$preset]";
+		$label      = __( 'BitBucket link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_bitbucket_footer_display[$preset]";
+		$label      = __( 'BitBucket link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_github';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Github', 'pen' ),
+				'panel' => 'pen_panel_contact',
+			)
+		);
+
+		$setting_id  = "pen_github[$preset]";
+		$label       = __( 'Github URL', 'pen' );
+		$description = 'https://github.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_github_header_display[$preset]";
+		$label      = __( 'Github link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_github_footer_display[$preset]";
+		$label      = __( 'Github link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_slack';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Slack', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_slack[$preset]";
+		$label       = __( 'Slack URL', 'pen' );
+		$description = 'https://slack.com/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_slack_header_display[$preset]";
+		$label      = __( 'Slack link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_slack_footer_display[$preset]";
+		$label      = __( 'Slack link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_telegram';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Telegram', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_telegram[$preset]";
+		$label       = __( 'Telegram URL', 'pen' );
+		$description = 'https://t.me/example';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_telegram_header_display[$preset]";
+		$label      = __( 'Telegram link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_telegram_footer_display[$preset]";
+		$label      = __( 'Telegram link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_whatsapp';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'WhatsApp', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_whatsapp[$preset]";
+		$label       = __( 'WhatsApp Link', 'pen' );
+		$description = 'whatsapp://send?text=Hi!&phone=+123456789';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_whatsapp_header_display[$preset]";
+		$label      = __( 'WhatsApp link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_whatsapp_footer_display[$preset]";
+		$label      = __( 'WhatsApp link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_skype';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Skype', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_skype[$preset]";
+		$label       = __( 'Skype Link', 'pen' );
+		$description = 'skype:username?call';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_skype_header_display[$preset]";
+		$label      = __( 'Skype link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_skype_footer_display[$preset]";
+		$label      = __( 'Skype link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_phone';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Phone', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id = "pen_phone[$preset]";
+		$label      = __( 'Phone number', 'pen' );
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_phone_header_display[$preset]";
+		$label      = __( 'Phone number in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_phone_header_animation_reveal[$preset]";
+		$label      = __( 'Header phone number animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_phone_footer_display[$preset]";
+		$label      = __( 'Phone number in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_phone_footer_animation_reveal[$preset]";
+		$label      = __( 'Footer phone number animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$section = 'pen_section_rss';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'Feed', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_rss[$preset]";
+		$label       = __( 'Feed URL', 'pen' );
+		$description = 'http://example.com/rss.xml';
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_rss_header_display[$preset]";
+		$label      = __( 'RSS link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_rss_footer_display[$preset]";
+		$label      = __( 'RSS link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_email';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title' => __( 'E-mail', 'pen' ),
+				'panel' => $panel,
+			)
+		);
+
+		$setting_id  = "pen_email[$preset]";
+		$label       = __( 'Your e-mail or URL to a "Contact us" page', 'pen' );
+		$description = __( 'mail@example.com or http://example.com/contact-us', 'pen' );
+		pen_control_text( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$setting_id = "pen_email_header_display[$preset]";
+		$label      = __( 'E-mail link in the header', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_email_footer_display[$preset]";
+		$label      = __( 'E-mail link in the footer', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_background' ) ) {
+	/**
+	 * Adds the background image options.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_background( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$panel = 'p_panel_background_images';
+		$wp_customize->add_panel(
+			$panel,
+			array(
+				'title'    => __( 'Background images', 'pen' ),
+				'priority' => 10,
+			)
+		);
+
+		$section = 'background_image';
+
+		$wp_customize->get_section( $section )->title     = __( 'Site', 'pen' );
+		$wp_customize->get_section( $section )->priority  = 1;
+		$wp_customize->get_section( $section )->transport = 'refresh';
+		$wp_customize->get_section( $section )->panel     = $panel;
+
+		$setting_id  = "pen_background_lights_dim[$preset]";
+		$label       = __( 'Dim the lights', 'pen' );
+		$description = __( '(This feature is a part of the "Pen" theme.)', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label, $description );
+
+		$section = 'header_image';
+
+		$wp_customize->get_section( $section )->title     = __( 'Header', 'pen' );
+		$wp_customize->get_section( $section )->priority  = 2;
+		$wp_customize->get_section( $section )->transport = 'refresh';
+		$wp_customize->get_section( $section )->panel     = $panel;
+
+		$section = 'pen_section_background_image_navigation';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'    => __( 'Navigation', 'pen' ),
+				'priority' => 3,
+				'panel'    => $panel,
+			)
+		);
+
+		$setting_id = "pen_background_image_navigation[$preset]";
+		$label      = __( 'Navigation', 'pen' );
+		pen_control_image( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_background_image_navigation_submenu[$preset]";
+		$label      = __( 'Navigation (Sub-menus)', 'pen' );
+		pen_control_image( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_background_image_search';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'       => __( 'Search Bar', 'pen' ),
+				'priority'    => 4,
+				'description' => __( 'Please make sure you have the search box added to the top of the content area through Customize &rarr; Search so you can see your background image.', 'pen' ),
+				'panel'       => $panel,
+			)
+		);
+
+		$setting_id = "pen_background_image_search[$preset]";
+		$label      = __( 'Search Bar', 'pen' );
+		pen_control_image( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_background_image_content_title';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'    => __( 'Content', 'pen' ),
+				'priority' => 5,
+				'panel'    => $panel,
+			)
+		);
+
+		$setting_id = "pen_background_image_content_title[$preset]";
+		$label      = __( 'Content Title', 'pen' );
+		pen_control_image( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_background_image_content_title_dynamic[$preset]";
+		$label      = __( 'Use featured image as background', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_background_image_bottom';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'    => __( 'Bottom', 'pen' ),
+				'priority' => 6,
+				'panel'    => $panel,
+			)
+		);
+
+		$setting_id = "pen_background_image_bottom[$preset]";
+		$label      = __( 'Bottom', 'pen' );
+		pen_control_image( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$section = 'pen_section_background_image_footer';
+		$wp_customize->add_section(
+			$section,
+			array(
+				'title'    => __( 'Footer', 'pen' ),
+				'priority' => 7,
+				'panel'    => $panel,
+			)
+		);
+
+		$setting_id = "pen_background_image_footer[$preset]";
+		$label      = __( 'Footer', 'pen' );
+		pen_control_image( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_customize_logo' ) ) {
+	/**
+	 * Moves logo options to "Site Identity".
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_customize_logo( &$wp_customize ) {
+
+		$preset = 'preset_1';
+
+		$section = 'title_tagline';
+
+		$setting_id = "pen_header_logo_display[$preset]";
+		$label      = __( 'Display the site logo', 'pen' );
+		pen_control_checkbox( $wp_customize, $setting_id, $section, 'refresh', $label );
+
+		$setting_id = "pen_header_logo_animation_reveal[$preset]";
+		$label      = __( 'Logo animation', 'pen' );
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', pen_animations(), $label );
+
+		$setting_id = "pen_header_logo_size[$preset]";
+		$label      = __( 'Logo size', 'pen' );
+		$choices    = array(
+			'none'   => __( 'None', 'pen' ),
+			'height' => __( 'Limit height', 'pen' ),
+			'width'  => __( 'Limit width', 'pen' ),
+		);
+		pen_control_select( $wp_customize, $setting_id, $section, 'refresh', $choices, $label );
+
+	}
+}
+
+if ( ! function_exists( 'pen_control_color' ) ) {
+	/**
+	 * Color control.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 * @param string               $setting_id   The setting ID.
+	 * @param string               $section      Field section.
+	 * @param string               $transport    Transport type.
+	 * @param string               $label        Field label.
+	 * @param string               $description  Field description.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_control_color( &$wp_customize, $setting_id, $section, $transport, $label, $description = '' ) {
+		$wp_customize->add_setting(
+			$setting_id,
+			array(
+				'default'           => pen_option_default( $setting_id ),
+				'sanitize_callback' => pen_option_sanitize( $setting_id ),
+				'transport'         => $transport,
+			)
+		);
+		$wp_customize->add_control(
+			new WP_Customize_Color_Control(
+				$wp_customize,
+				$setting_id,
+				array(
+					'label'       => $label,
+					'description' => $description,
+					'section'     => $section,
+					'settings'    => $setting_id,
+				)
+			)
+		);
+	}
+}
+
+if ( ! function_exists( 'pen_control_image' ) ) {
+	/**
+	 * Image control.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 * @param string               $setting_id   The setting ID.
+	 * @param string               $section      Field section.
+	 * @param string               $transport    Transport type.
+	 * @param string               $label        Field label.
+	 * @param string               $description  Field description.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_control_image( &$wp_customize, $setting_id, $section, $transport, $label, $description = '' ) {
+		$wp_customize->add_setting(
+			$setting_id,
+			array(
+				'default'           => pen_option_default( $setting_id ),
+				'sanitize_callback' => pen_option_sanitize( $setting_id ),
+				'transport'         => $transport,
+			)
+		);
+		$wp_customize->add_control(
+			new WP_Customize_Image_Control(
+				$wp_customize,
+				$setting_id,
+				array(
+					'label'       => $label,
+					'description' => $description,
+					'section'     => $section,
+					'settings'    => $setting_id,
+				)
+			)
+		);
+	}
+}
+
+if ( ! function_exists( 'pen_control_checkbox' ) ) {
+	/**
+	 * Checkbox control.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 * @param string               $setting_id   The setting ID.
+	 * @param string               $section      Field section.
+	 * @param string               $transport    Transport type.
+	 * @param string               $label        Field label.
+	 * @param string               $description  Field description.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_control_checkbox( &$wp_customize, $setting_id, $section, $transport, $label, $description = '' ) {
+		$wp_customize->add_setting(
+			$setting_id,
+			array(
+				'default'           => pen_option_default( $setting_id ),
+				'sanitize_callback' => pen_option_sanitize( $setting_id ),
+				'transport'         => $transport,
+			)
+		);
+		$wp_customize->add_control(
+			$setting_id,
+			array(
+				'label'       => $label,
+				'description' => $description,
+				'section'     => $section,
+				'type'        => 'checkbox',
+			)
+		);
+	}
+}
+
+if ( ! function_exists( 'pen_control_radio' ) ) {
+	/**
+	 * Radio button control.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 * @param string               $setting_id   The setting ID.
+	 * @param string               $section      Field section.
+	 * @param string               $transport    Transport type.
+	 * @param array                $choices      Choices.
+	 * @param string               $label        Field label.
+	 * @param string               $description  Field description.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_control_radio( &$wp_customize, $setting_id, $section, $transport, $choices, $label, $description = '' ) {
+		$wp_customize->add_setting(
+			$setting_id,
+			array(
+				'default'           => pen_option_default( $setting_id ),
+				'sanitize_callback' => pen_option_sanitize( $setting_id ),
+				'transport'         => $transport,
+			)
+		);
+		$wp_customize->add_control(
+			$setting_id,
+			array(
+				'label'       => $label,
+				'description' => $description,
+				'section'     => $section,
+				'type'        => 'radio',
+				'choices'     => $choices,
+			)
+		);
+	}
+}
+
+if ( ! function_exists( 'pen_control_select' ) ) {
+	/**
+	 * Select control.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 * @param string               $setting_id   The setting ID.
+	 * @param string               $section      Field section.
+	 * @param string               $transport    Transport type.
+	 * @param array                $choices      Choices.
+	 * @param string               $label        Field label.
+	 * @param string               $description  Field description.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_control_select( &$wp_customize, $setting_id, $section, $transport, $choices, $label, $description = '' ) {
+		$wp_customize->add_setting(
+			$setting_id,
+			array(
+				'default'           => pen_option_default( $setting_id ),
+				'sanitize_callback' => pen_option_sanitize( $setting_id ),
+				'transport'         => $transport,
+			)
+		);
+		$wp_customize->add_control(
+			$setting_id,
+			array(
+				'label'       => $label,
+				'description' => $description,
+				'section'     => $section,
+				'type'        => 'select',
+				'choices'     => $choices,
+			)
+		);
+	}
+}
+
+if ( ! function_exists( 'pen_control_text' ) ) {
+	/**
+	 * Text control.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 * @param string               $setting_id   The setting ID.
+	 * @param string               $section      Field section.
+	 * @param string               $transport    Transport type.
+	 * @param string               $label        Field label.
+	 * @param string               $description  Field description.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_control_text( &$wp_customize, $setting_id, $section, $transport, $label, $description = '' ) {
+		$wp_customize->add_setting(
+			$setting_id,
+			array(
+				'default'           => pen_option_default( $setting_id ),
+				'sanitize_callback' => pen_option_sanitize( $setting_id ),
+				'transport'         => $transport,
+			)
+		);
+		$wp_customize->add_control(
+			$setting_id,
+			array(
+				'label'       => $label,
+				'description' => $description,
+				'section'     => $section,
+				'type'        => 'text',
+			)
+		);
+	}
+}
+
+if ( ! function_exists( 'pen_inline_css_general' ) ) {
+	/**
+	 * Adds inline CSS.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_inline_css_general() {
+		$css                = '';
+		$preset_color       = esc_html( pen_preset_get( 'color' ) );
+		$preset_font        = esc_html( pen_preset_get( 'font_family' ) );
+		$background         = esc_html( pen_option_get( 'color_site_background' ) );
+		$background_default = pen_option_default( 'color_site_background' );
+		$color              = esc_html( pen_option_get( 'color_text' ) );
+		$color_default      = pen_option_default( 'color_text' );
+		$site_font          = esc_html( pen_option_get( 'font_family_site' ) );
+
+		if ( 'preset_1' !== $preset_color || $background !== $background_default || 'default' !== $site_font || $color !== $color_default ) {
+			// background overrides any linear-gradient in the CSS files
+			// and background-color for any background image.
+			$css .= 'body {
+				background-color:' . $background . ';
+				background:' . $background . ';';
+			if ( 'preset_1' !== $preset_color || $color !== $color_default ) {
+				$css .= 'color:' . $color . ';';
+			}
+			if ( 'default' !== $site_font ) {
+				$css .= 'font-family:"' . ltrim( $site_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;';
+			}
+			$css .= '}';
+		}
+
+		$headings_font = esc_html( pen_option_get( 'font_family_headings' ) );
+		if ( 'default' !== $headings_font ) {
+			$css .= 'h1,h2,h3,h4,h5 {
+				font-family:"' . ltrim( $headings_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+			}';
+		}
+
+		if ( pen_option_get( 'color_site_shadow_display' ) ) {
+			$shadow_color         = esc_html( pen_option_get( 'color_shadow' ) );
+			$shadow_color_default = pen_option_default( 'color_shadow' );
+			if ( 'preset_1' !== $preset_color || $shadow_color !== $shadow_color_default ) {
+				$shadow_color = new \Pen\Color( $shadow_color );
+				$shadow_color = $shadow_color->getRgb();
+				$shadow_color = 'rgba(' . implode( ',', $shadow_color ) . ',0.5)';
+
+				$css .= 'body.pen_drop_shadow #pen_header .pen_header_inner,
+				body.pen_drop_shadow #pen_search,
+				body.pen_drop_shadow #pen_bottom.pen_not_transparent,
+				body.pen_drop_shadow #pen_footer.pen_not_transparent {
+					box-shadow:0 0 20px ' . $shadow_color . ';
+				}
+				body.pen_drop_shadow #comments,
+				body.pen_drop_shadow #main .page-content,
+				body.pen_drop_shadow #main .pen_article_wrapper > article,
+				body.pen_drop_shadow.pen_list_masonry #pen_masonry article,
+				body.pen_drop_shadow.pen_list_plain #pen_pager,
+				body.pen_drop_shadow #main .pen_customize_overview.pen_off_screen {
+					box-shadow:0 5px 10px ' . $shadow_color . ', 0 0 5px ' . $shadow_color . ';
+				}';
+			}
+		}
+
+		$link_color               = esc_html( pen_option_get( 'color_link' ) );
+		$link_color_default       = pen_option_default( 'color_link' );
+		$link_color_hover         = esc_html( pen_option_get( 'color_link_hover' ) );
+		$link_color_hover_default = pen_option_default( 'color_link_hover' );
+		if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default ) {
+			$css .= 'a {
+				color:' . $link_color . ';
+			}';
+		}
+		if ( 'preset_1' !== $preset_color || $link_color_hover !== $link_color_hover_default ) {
+			$css .= 'a:focus,
+			a:hover,
+			a:active {
+				color:' . $link_color_hover . ';
+			}';
+		}
+
+		$form_font = esc_html( pen_option_get( 'font_family_forms' ) );
+		if ( 'default' !== $form_font ) {
+			$css .= 'input[type="date"],
+			input[type="email"],
+			input[type="file"],
+			input[type="number"],
+			input[type="tel"],
+			input[type="time"],
+			input[type="text"],
+			input[type="url"],
+			legend,
+			option,
+			select,
+			textarea,
+			#pen_header .pen_header_main .search-form .search-field,
+			#pen_search .search-form .search-field {
+				font-family:"' . ltrim( $form_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;
+			}';
+		}
+		$field_background_primary           = esc_html( pen_option_get( 'color_bottom_field_background_primary' ) );
+		$field_background_primary_default   = pen_option_default( 'color_bottom_field_background_primary' );
+		$field_background_secondary         = esc_html( pen_option_get( 'color_bottom_field_background_secondary' ) );
+		$field_background_secondary_default = pen_option_default( 'color_bottom_field_background_secondary' );
+		$field_text                         = esc_html( pen_option_get( 'color_bottom_field_text' ) );
+		$field_text_default                 = pen_option_default( 'color_bottom_field_text' );
+
+		if ( 'preset_1' !== $preset_color || $field_background_primary !== $field_background_primary_default || $field_background_secondary !== $field_background_secondary_default || $field_text !== $field_text_default ) {
+			$css .= '#pen_bottom input[type="date"],
+			#pen_bottom input[type="email"],
+			#pen_bottom input[type="file"],
+			#pen_bottom input[type="number"],
+			#pen_bottom input[type="tel"],
+			#pen_bottom input[type="time"],
+			#pen_bottom input[type="text"],
+			#pen_bottom input[type="url"],
+			#pen_bottom option,
+			#pen_bottom select,
+			#pen_bottom textarea {
+				background:' . $field_background_secondary . ';';
+			if ( $field_background_primary !== $field_background_secondary ) {
+				$css .= 'background:-ms-linear-gradient(top,' . $field_background_primary . ' 0%,' . $field_background_secondary . ' 100%);
+				background:linear-gradient(to bottom,' . $field_background_primary . ' 0%,' . $field_background_secondary . ' 100%);';
+			}
+			if ( 'preset_1' !== $preset_color || $field_text !== $field_text_default ) {
+				$css .= 'color:' . $field_text . ';';
+			}
+			$css .= '}';
+		}
+
+		$button_color_text              = esc_html( pen_option_get( 'color_button_text' ) );
+		$button_color_text_default      = pen_option_default( 'color_button_text' );
+		$button_color_primary           = esc_html( pen_option_get( 'color_button_background_primary' ) );
+		$button_color_primary_default   = pen_option_default( 'color_button_background_primary' );
+		$button_color_secondary         = esc_html( pen_option_get( 'color_button_background_secondary' ) );
+		$button_color_secondary_default = pen_option_default( 'color_button_background_secondary' );
+		$button_color_border            = esc_html( pen_option_get( 'color_button_border' ) );
+		$button_color_border_default    = pen_option_default( 'color_button_border' );
+		$button_font                    = esc_html( pen_option_get( 'font_family_buttons' ) );
+
+		if ( 'preset_1' !== $preset_color || $button_color_text !== $button_color_text_default || $button_color_primary !== $button_color_primary_default || $button_color_secondary !== $button_color_secondary_default || $button_color_border !== $button_color_border_default || 'default' !== $button_font ) {
+			$css .= '#primary .pen_button,
+				#primary .comments-link a,
+				#primary a.post-edit-link,
+				#primary .comment-list a.comment-edit-link,
+				#primary .comment-list .reply a,
+				#primary input[type="submit"],
+				#primary .entry-footer .tags-links a,
+				#page .hpcf_button_submit,
+				#cancel-comment-reply-link,
+				#content .page-links a,
+				#content .comment-navigation a,
+				#content .posts-navigation a,
+				#content .post-navigation a,
+				#content .wp-pagenavi a,
+				#content .wp-pagenavi span {';
+			if ( 'preset_1' !== $preset_color || $button_color_primary !== $button_color_primary_default || $button_color_secondary !== $button_color_secondary_default ) {
+				$css .= 'background-color:' . $button_color_secondary . ';
+				background:' . $button_color_secondary . ';';
+				if ( $button_color_primary !== $button_color_secondary ) {
+					$css .= 'background:-ms-linear-gradient(top,' . $button_color_primary . ' 0%,' . $button_color_secondary . ' 100%);
+					background:linear-gradient(to bottom,' . $button_color_primary . ' 0%,' . $button_color_secondary . ' 100%);';
+				}
+			}
+			if ( 'preset_1' !== $preset_color || $button_color_text !== $button_color_text_default ) {
+				$css .= 'color:' . $button_color_text . ' !important;';
+			}
+			if ( 'preset_1' !== $preset_color || $button_color_border !== $button_color_border_default ) {
+				$css .= 'border:1px solid' . $button_color_border . ' !important;';
+			}
+			if ( 'default' !== $button_font ) {
+				$css .= 'font-family:"' . ltrim( $button_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+					font-weight:normal;';
+			}
+			$css .= '}';
+			if ( 'preset_1' !== $preset_color || $button_color_primary !== $button_color_primary_default || $button_color_secondary !== $button_color_secondary_default ) {
+				$css .= '#primary .pen_button:active,
+				#primary .comments-link a:active,
+				#primary a.post-edit-link:active,
+				#primary .comment-list a.comment-edit-link:active,
+				#primary .comment-list .reply a:active,
+				#primary input[type="submit"]:active,
+				#primary .entry-footer .tags-links a:active,
+				#cancel-comment-reply-link:active,
+				#content .entry-content input[type="submit"]:active,
+				#content .page-links a:active,
+				#content .comment-navigation a:active,
+				#content .posts-navigation a:active,
+				#content .post-navigation a:active,
+				#content .wp-pagenavi span,
+				#content .wp-pagenavi .current {
+					background:' . $button_color_secondary . ';
+				}';
+			}
+			if ( 'default' !== $button_font ) {
+				$css .= '#pen_header .pen_header_main .search-form .search-submit {
+						font-family:"' . ltrim( $button_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+						font-weight:normal;
+					}';
+			}
+		}
+
+		if ( pen_sidebar_check( 'sidebar-top' ) ) {
+
+			$widget_title_top_font              = esc_html( pen_option_get( 'font_family_widget_title_top' ) );
+			$widget_title_top_font_size         = esc_html( pen_option_get( 'font_size_widget_title_top' ) );
+			$widget_title_top_font_size_default = pen_option_default( 'font_size_widget_title_top' );
+
+			if ( 'default' !== $widget_title_top_font || $widget_title_top_font_size !== $widget_title_top_font_size_default ) {
+				$css .= '#pen_top .widget-title {';
+				if ( 'default' !== $widget_title_top_font ) {
+					$css .= 'font-family:"' . ltrim( $widget_title_top_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+				}
+				if ( $widget_title_top_font_size !== $widget_title_top_font_size_default ) {
+					$css .= 'font-size:' . $widget_title_top_font_size . ';';
+				}
+				$css .= '}';
+			}
+		}
+
+		if ( pen_sidebar_check( 'sidebar-left' ) ) {
+
+			$widget_title_left_font              = esc_html( pen_option_get( 'font_family_widget_title_left' ) );
+			$widget_title_left_font_size         = esc_html( pen_option_get( 'font_size_widget_title_left' ) );
+			$widget_title_left_font_size_default = pen_option_default( 'font_size_widget_title_left' );
+
+			if ( 'default' !== $widget_title_left_font || $widget_title_left_font_size !== $widget_title_left_font_size_default ) {
+				$css .= '#pen_left .widget-title {';
+				if ( 'default' !== $widget_title_left_font ) {
+					$css .= 'font-family:"' . ltrim( $widget_title_left_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+				}
+				if ( $widget_title_left_font_size !== $widget_title_left_font_size_default ) {
+					$css .= 'font-size:' . $widget_title_left_font_size . ';';
+				}
+				$css .= '}';
+			}
+		}
+
+		if ( pen_sidebar_check( 'sidebar-right' ) ) {
+
+			$widget_title_right_font              = esc_html( pen_option_get( 'font_family_widget_title_right' ) );
+			$widget_title_right_font_size         = esc_html( pen_option_get( 'font_size_widget_title_right' ) );
+			$widget_title_right_font_size_default = pen_option_default( 'font_size_widget_title_right' );
+
+			if ( 'default' !== $widget_title_right_font || $widget_title_right_font_size !== $widget_title_right_font_size_default ) {
+				$css .= '#pen_right .widget-title {';
+				if ( 'default' !== $widget_title_right_font ) {
+					$css .= 'font-family:"' . ltrim( $widget_title_right_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+				}
+				if ( $widget_title_right_font_size !== $widget_title_right_font_size_default ) {
+					$css .= 'font-size:' . $widget_title_right_font_size . ';';
+				}
+				$css .= '}';
+			}
+		}
+
+		if ( pen_sidebar_check( 'sidebar-bottom' ) ) {
+
+			$widget_title_bottom_font              = esc_html( pen_option_get( 'font_family_widget_title_bottom' ) );
+			$widget_title_bottom_font_size         = esc_html( pen_option_get( 'font_size_widget_title_bottom' ) );
+			$widget_title_bottom_font_size_default = pen_option_default( 'font_size_widget_title_bottom' );
+
+			if ( 'default' !== $widget_title_bottom_font || $widget_title_bottom_font_size !== $widget_title_bottom_font_size_default ) {
+				$css .= '#pen_bottom .widget-title {';
+				if ( 'default' !== $widget_title_bottom_font ) {
+					$css .= 'font-family:"' . ltrim( $widget_title_bottom_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+				}
+				if ( $widget_title_bottom_font_size !== $widget_title_bottom_font_size_default ) {
+					$css .= 'font-size:' . $widget_title_bottom_font_size . ';';
+				}
+				$css .= '}';
+			}
+		}
+
+		$css = pen_compress_css( $css );
+
+		wp_add_inline_style( 'pen-css', $css );
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_inline_css_general' );
+}
+
+if ( ! function_exists( 'pen_inline_css_header' ) ) {
+	/**
+	 * Adds inline CSS for the header.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_inline_css_header() {
+		$css                      = '';
+		$preset_color             = esc_html( pen_preset_get( 'color' ) );
+		$background_left          = esc_html( pen_option_get( 'color_header_background_primary' ) );
+		$background_left_default  = pen_option_default( 'color_header_background_primary' );
+		$background_right         = esc_html( pen_option_get( 'color_header_background_secondary' ) );
+		$background_right_default = pen_option_default( 'color_header_background_secondary' );
+		$header_image             = get_header_image();
+
+		$angle         = esc_html( pen_option_get( 'color_header_background_angle' ) );
+		$angle_default = pen_option_default( 'color_header_background_angle' );
+		if ( 'to right' === $angle ) {
+			$angle_ie = 'left';
+		} elseif ( 'to bottom' === $angle ) {
+			$angle_ie = 'top';
+		} elseif ( false !== strpos( $angle, 'deg' ) ) {
+			$angle_ie = ( str_replace( 'deg', '', $angle ) + 200 ) . 'deg';
+		}
+
+		if ( 'preset_1' !== $preset_color || $background_left !== $background_left_default || $background_right !== $background_right_default || $header_image || $angle !== $angle_default ) {
+			$css .= '#pen_header .pen_header_inner {
+				background-color:' . $background_left . ';
+				background:' . $background_left . ';';
+			if ( $background_left !== $background_right ) {
+				$css .= 'background:-ms-linear-gradient(' . $angle_ie . ',' . $background_left . ' 0%,' . $background_right . ' 100%);
+				background:linear-gradient(' . $angle . ',' . $background_left . ' 0%,' . $background_right . ' 100%);';
+			}
+			if ( $header_image ) {
+				$css .= "background-image:url('" . $header_image . "');
+				background-repeat:no-repeat;
+				background-position:top center;
+				background-size:cover;";
+			}
+			$css .= '}';
+		}
+
+		$text_color         = esc_html( pen_option_get( 'color_header_text' ) );
+		$text_color_default = pen_option_default( 'color_header_text' );
+		if ( ! pen_option_get( 'color_header_text_shadow_display' ) ) {
+			$text_shadow = 'none';
+		} else {
+			$text_shadow = '1px 1px 1px ' . esc_html( pen_option_get( 'color_header_text_shadow' ) );
+		}
+		if ( 'preset_1' !== $preset_color || $text_color !== $text_color_default || '1px 1px 1px ' . pen_option_default( 'color_header_text_shadow' ) !== $text_shadow ) {
+			$css .= '#pen_header .pen_header_main {';
+			if ( 'preset_1' !== $preset_color || $text_color !== $text_color_default ) {
+				$css .= 'color:' . $text_color . ';';
+			}
+			if ( 'preset_1' !== $preset_color || '1px 1px 1px ' . pen_option_default( 'color_header_text_shadow' ) !== $text_shadow ) {
+				$css .= 'text-shadow:' . $text_shadow . ';';
+			}
+			$css .= '}';
+		}
+
+		$link_color               = esc_html( pen_option_get( 'color_header_link' ) );
+		$link_color_default       = pen_option_default( 'color_header_link' );
+		$link_color_hover         = esc_html( pen_option_get( 'color_header_link_hover' ) );
+		$link_color_hover_default = pen_option_default( 'color_header_link_hover' );
+		if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default ) {
+			$css .= '#pen_header .pen_header_main a {
+				color:' . $link_color . ';
+			}';
+		}
+		if ( 'preset_1' !== $preset_color || $link_color_hover !== $link_color_hover_default ) {
+			$css .= '#pen_header .pen_header_main a:focus,
+			#pen_header .pen_header_main a:hover,
+			#pen_header .pen_header_main a:active,
+			#pen_header .pen_social_networks a:focus,
+			#pen_header .pen_social_networks a:hover,
+			#pen_header .pen_social_networks a:active {
+				color:' . $link_color_hover . ' !important;
+			}';
+		}
+
+		$sitetitle_color               = esc_html( pen_option_get( 'color_header_sitetitle' ) );
+		$sitetitle_color_default       = pen_option_default( 'color_header_sitetitle' );
+		$sitetitle_color_hover         = esc_html( pen_option_get( 'color_header_sitetitle_hover' ) );
+		$sitetitle_color_hover_default = pen_option_default( 'color_header_sitetitle_hover' );
+		$sitetitle_font                = esc_html( pen_option_get( 'font_family_sitetitle' ) );
+		$sitetitle_size                = esc_html( pen_option_get( 'font_size_sitetitle' ) );
+		$sitetitle_size_default        = pen_option_default( 'font_size_sitetitle' );
+
+		if ( 'preset_1' !== $preset_color || $sitetitle_color !== $sitetitle_color_default || $link_color !== $link_color_default // || because $link_color may affect the sitetitle_color.
+			|| 'default' !== $sitetitle_font || $sitetitle_size !== $sitetitle_size_default ) {
+			$css .= '#pen_header h1 a .site-title {';
+			if ( 'preset_1' !== $preset_color || $sitetitle_color !== $sitetitle_color_default || $link_color !== $link_color_default ) {
+				$css .= 'color:' . $sitetitle_color . ';';
+			}
+			if ( 'default' !== $sitetitle_font ) {
+				$css .= 'font-family:"' . ltrim( $sitetitle_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+			font-weight:normal;';
+			}
+			if ( $sitetitle_size !== $sitetitle_size_default ) {
+				$css .= 'font-size:' . $sitetitle_size . ';';
+			}
+			$css .= '}';
+		}
+		if ( 'preset_1' !== $preset_color || $sitetitle_color_hover !== $sitetitle_color_hover_default || $link_color_hover !== $link_color_hover_default ) {
+			$css .= '#pen_header h1 a:focus .site-title,
+			#pen_header h1 a:hover .site-title,
+			#pen_header h1 a:active .site-title {
+				color:' . $sitetitle_color_hover . ';
+			}';
+		}
+
+		$sitedescription_color               = esc_html( pen_option_get( 'color_header_sitedescription' ) );
+		$sitedescription_color_default       = pen_option_default( 'color_header_sitedescription' );
+		$sitedescription_color_hover         = esc_html( pen_option_get( 'color_header_sitedescription_hover' ) );
+		$sitedescription_color_hover_default = pen_option_default( 'color_header_sitedescription_hover' );
+		$sitedescription_font                = esc_html( pen_option_get( 'font_family_sitedescription' ) );
+		$sitedescription_size                = esc_html( pen_option_get( 'font_size_sitedescription' ) );
+		$sitedescription_size_default        = pen_option_default( 'font_size_sitedescription' );
+
+		if ( 'preset_1' !== $preset_color || $sitedescription_color !== $sitedescription_color_default || $link_color !== $link_color_default || 'default' !== $sitedescription_font || $sitedescription_size !== $sitedescription_size_default ) {
+			$css .= '#pen_header h1 a .site-description {';
+			if ( 'preset_1' !== $preset_color || $sitedescription_color !== $sitedescription_color_default || $link_color !== $link_color_default ) {
+				$css .= 'color:' . $sitedescription_color . ';';
+			}
+			if ( 'default' !== $sitedescription_font ) {
+				$css .= 'font-family:"' . ltrim( $sitedescription_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+			font-weight:normal;';
+			}
+			if ( $sitedescription_size !== $sitedescription_size_default ) {
+				$css .= 'font-size:' . $sitedescription_size . ';';
+			}
+			$css .= '}';
+		}
+		if ( 'preset_1' !== $preset_color || $sitedescription_color_hover !== $sitedescription_color_hover_default || $link_color_hover !== $link_color_hover_default ) {
+			$css .= '#pen_header h1 a:focus .site-description,
+			#pen_header h1 a:hover .site-description,
+			#pen_header h1 a:active .site-description {
+				color:' . $sitedescription_color_hover . ';
+			}';
+		}
+
+		$social_size         = esc_html( pen_option_get( 'font_size_social_header' ) );
+		$social_size_default = pen_option_default( 'font_size_social_header' );
+		if ( $social_size !== $social_size_default ) {
+			$css .= '#pen_header .pen_social_networks li {
+				font-size:' . $social_size . '
+			}';
+		}
+
+		if ( pen_option_get( 'phone' ) && pen_option_get( 'phone_header_display' ) ) {
+
+			$phone_color               = esc_html( pen_option_get( 'color_header_phone' ) );
+			$phone_color_default       = pen_option_default( 'color_header_phone' );
+			$phone_color_hover         = esc_html( pen_option_get( 'color_header_phone_hover' ) );
+			$phone_color_hover_default = pen_option_default( 'color_header_phone_hover' );
+			$phone_font                = esc_html( pen_option_get( 'font_family_phone_header' ) );
+			$phone_size                = esc_html( pen_option_get( 'font_size_phone_header' ) );
+			$phone_size_default        = pen_option_default( 'font_size_phone_header' );
+
+			if ( 'preset_1' !== $preset_color || $phone_color !== $phone_color_default || 'default' !== $phone_font || $phone_size !== $phone_size_default ) {
+				$css .= '#pen_header .pen_header_main .pen_phone a {';
+				if ( 'preset_1' !== $preset_color || $phone_color !== $phone_color_default ) {
+					$css .= 'color:' . $phone_color . ';';
+				}
+				if ( 'default' !== $phone_font ) {
+					$css .= 'font-family:"' . ltrim( $phone_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+				}
+				if ( $phone_size !== $phone_size_default ) {
+					$css .= 'font-size:' . $phone_size . ';';
+				}
+				$css .= '}';
+			}
+			if ( 'preset_1' !== $preset_color || $phone_color_hover !== $phone_color_hover_default ) {
+				$css .= '#pen_header .pen_header_main .pen_phone a:focus,
+				#pen_header .pen_header_main .pen_phone a:hover,
+				#pen_header .pen_header_main .pen_phone a:active {
+					color:' . $phone_color_hover . ' !important;
+				}';
+			}
+		}
+
+		$field_background_primary           = esc_html( pen_option_get( 'color_header_field_background_primary' ) );
+		$field_background_primary_default   = pen_option_default( 'color_header_field_background_primary' );
+		$field_background_secondary         = esc_html( pen_option_get( 'color_header_field_background_secondary' ) );
+		$field_background_secondary_default = pen_option_default( 'color_header_field_background_secondary' );
+		$field_text                         = esc_html( pen_option_get( 'color_header_field_text' ) );
+		$field_text_default                 = pen_option_default( 'color_header_field_text' );
+
+		if ( 'preset_1' !== $preset_color || $field_background_primary !== $field_background_primary_default || $field_background_secondary !== $field_background_secondary_default || $field_text !== $field_text_default ) {
+			$css .= '#pen_header .pen_header_main input[type="date"],
+			#pen_header .pen_header_main input[type="email"],
+			#pen_header .pen_header_main input[type="file"],
+			#pen_header .pen_header_main input[type="number"],
+			#pen_header .pen_header_main input[type="tel"],
+			#pen_header .pen_header_main input[type="time"],
+			#pen_header .pen_header_main input[type="text"],
+			#pen_header .pen_header_main input[type="url"],
+			#pen_header .pen_header_main option,
+			#pen_header .pen_header_main select,
+			#pen_header .pen_header_main textarea,
+			#pen_header .pen_header_main .search-form .search-field {
+				background:' . $field_background_secondary . ';';
+			if ( $field_background_primary !== $field_background_secondary ) {
+				$css .= 'background:-ms-linear-gradient(top,' . $field_background_primary . ' 0%,' . $field_background_secondary . ' 100%);
+				background:linear-gradient(to bottom,' . $field_background_primary . ' 0%,' . $field_background_secondary . ' 100%);';
+			}
+			if ( 'preset_1' !== $preset_color || $field_text !== $field_text_default ) {
+				$css .= 'color:' . $field_text . ';';
+			}
+			$css .= '}';
+		}
+
+		$search_background_top            = esc_html( pen_option_get( 'color_header_search_background_primary' ) );
+		$search_background_top_default    = pen_option_default( 'color_header_search_background_primary' );
+		$search_background_bottom         = esc_html( pen_option_get( 'color_header_search_background_secondary' ) );
+		$search_background_bottom_default = pen_option_default( 'color_header_search_background_secondary' );
+		$search_text                      = esc_html( pen_option_get( 'color_header_search_text' ) );
+		$search_text_default              = pen_option_default( 'color_header_search_text' );
+
+		$background_dark   = false;
+		$search_text_check = new \Pen\Color( $search_text );
+		if ( $search_text_check->isDark() ) {
+			$background_dark = true;
+		}
+
+		if ( 'preset_1' !== $preset_color || $search_background_top !== $search_background_top_default || $search_background_bottom !== $search_background_bottom_default || $search_text !== $search_text_default || $background_dark ) {
+			$css .= '#pen_header .pen_header_main .search-form .search-submit {
+				background-color:' . $search_background_bottom . ';
+				background:' . $search_background_bottom . ';';
+			if ( $search_background_top !== $search_background_bottom ) {
+				$css .= 'background:-ms-linear-gradient(top,' . $search_background_top . ' 0%,' . $search_background_bottom . ' 100%);
+				background:linear-gradient(to bottom,' . $search_background_top . ' 0%,' . $search_background_bottom . ' 100%);';
+			}
+			if ( 'preset_1' !== $preset_color || $search_text !== $search_text_default ) {
+				$css .= 'color:' . $search_text . ';';
+			}
+			$css .= '}';
+			if ( $background_dark ) {
+				$css .= 'body.pen_drop_shadow #pen_header .pen_header_main .search-form .search-submit {
+					text-shadow:1px 1px 2px rgba(255,255,255,0.5);
+				}';
+			}
+			$css .= 'body.pen_drop_shadow #pen_header .pen_header_main input[type="date"]:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="date"]:active,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="email"]:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="email"]:active,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="file"]:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="file"]:active,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="number"]:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="number"]:active,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="tel"]:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="tel"]:active,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="time"]:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="time"]:active,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="text"]:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="text"]:active,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="url"]:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main input[type="url"]:active,
+			body.pen_drop_shadow #pen_header .pen_header_main option:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main option:active,
+			body.pen_drop_shadow #pen_header .pen_header_main select:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main select:active,
+			body.pen_drop_shadow #pen_header .pen_header_main textarea:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main textarea:active,
+			body.pen_drop_shadow #pen_header .pen_header_main .search-form .search-field:focus,
+			body.pen_drop_shadow #pen_header .pen_header_main .search-form .search-field:active {
+				box-shadow:2px 2px 2px rgba(0,0,0,0.2) inset, 0 0 7px ' . $search_background_bottom . ';
+			}
+			#pen_header .pen_header_main .search-form .search-submit:focus,
+			#pen_header .pen_header_main .search-form .search-submit:active {
+				background:' . $search_background_bottom . ';
+			}';
+		}
+
+		$css = pen_compress_css( $css );
+
+		wp_add_inline_style( 'pen-css', $css );
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_inline_css_header' );
+}
+
+if ( ! function_exists( 'pen_inline_css_navigation' ) ) {
+	/**
+	 * Adds inline CSS for the main navigation menu.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_inline_css_navigation() {
+		$css = '';
+
+		if ( pen_option_get( 'navigation_display' ) ) {
+
+			$preset_color             = esc_html( pen_preset_get( 'color' ) );
+			$background_left          = esc_html( pen_option_get( 'color_navigation_background_primary' ) );
+			$background_left_default  = pen_option_default( 'color_navigation_background_primary' );
+			$background_right         = esc_html( pen_option_get( 'color_navigation_background_secondary' ) );
+			$background_right_default = pen_option_default( 'color_navigation_background_secondary' );
+			$background_image         = esc_html( pen_option_get( 'background_image_navigation' ) );
+
+			$angle         = esc_html( pen_option_get( 'color_navigation_background_angle' ) );
+			$angle_default = pen_option_default( 'color_navigation_background_angle' );
+			if ( 'to right' === $angle ) {
+				$angle_ie = 'left';
+			} elseif ( 'to bottom' === $angle ) {
+				$angle_ie = 'top';
+			} elseif ( false !== strpos( $angle, 'deg' ) ) {
+				$angle_ie = ( str_replace( 'deg', '', $angle ) + 200 ) . 'deg';
+			}
+
+			if ( 'preset_1' !== $preset_color || $background_left !== $background_left_default || $background_right !== $background_right_default || $background_image || $angle !== $angle_default ) {
+				$css .= '#pen_navigation {
+					background-color:' . $background_left . ';
+					background:' . $background_left . ';';
+				if ( $background_left !== $background_right ) {
+					$css .= 'background:-ms-linear-gradient(' . $angle_ie . ',' . $background_left . ' 0%,' . $background_right . ' 100%);
+					background:linear-gradient(' . $angle . ',' . $background_left . ' 0%,' . $background_right . ' 100%);';
+				}
+				if ( $background_image ) {
+					$css .= "background-image:url('" . $background_image . "');
+					background-repeat:no-repeat;
+					background-position:top center;
+					background-size:cover;";
+				}
+				$css .= '}';
+			}
+
+			$background_submenu_left          = esc_html( pen_option_get( 'color_navigation_background_submenu_primary' ) );
+			$background_submenu_left_default  = pen_option_default( 'color_navigation_background_submenu_primary' );
+			$background_submenu_right         = esc_html( pen_option_get( 'color_navigation_background_submenu_secondary' ) );
+			$background_submenu_right_default = pen_option_default( 'color_navigation_background_submenu_secondary' );
+			$background_submenu_image         = esc_html( pen_option_get( 'background_image_navigation_submenu' ) );
+
+			$angle         = esc_html( pen_option_get( 'color_navigation_background_submenu_angle' ) );
+			$angle_default = pen_option_default( 'color_navigation_background_submenu_angle' );
+			if ( 'to right' === $angle ) {
+				$angle_ie = 'left';
+			} elseif ( 'to bottom' === $angle ) {
+				$angle_ie = 'top';
+			} elseif ( false !== strpos( $angle, 'deg' ) ) {
+				$angle_ie = ( str_replace( 'deg', '', $angle ) + 200 ) . 'deg';
+			}
+
+			if ( 'preset_1' !== $preset_color || $background_submenu_left !== $background_submenu_left_default || $background_submenu_right !== $background_submenu_right_default || $background_submenu_image || $angle !== $angle_default ) {
+				$css .= '#pen_navigation ul ul {
+					background-color:' . $background_submenu_left . ';
+					background:' . $background_submenu_left . ';';
+				if ( $background_submenu_left !== $background_submenu_right ) {
+					$css .= 'background:-ms-linear-gradient(' . $angle_ie . ',' . $background_submenu_left . ' 0%,' . $background_submenu_right . ' 100%);
+					background:linear-gradient(' . $angle . ',' . $background_submenu_left . ' 0%,' . $background_submenu_right . ' 100%);';
+				}
+				if ( $background_submenu_image ) {
+					$css .= "background-image:url('" . $background_submenu_image . "');
+					background-repeat:no-repeat;
+					background-position:top center;
+					background-size:cover;";
+				}
+				$css .= '}';
+			}
+
+			$link_color               = esc_html( pen_option_get( 'color_navigation_link' ) );
+			$link_color_default       = pen_option_default( 'color_navigation_link' );
+			$link_color_hover         = esc_html( pen_option_get( 'color_navigation_link_hover' ) );
+			$link_color_hover_default = pen_option_default( 'color_navigation_link_hover' );
+			$navigation_font          = esc_html( pen_option_get( 'font_family_navigation' ) );
+			$navigation_size          = esc_html( pen_option_get( 'font_size_navigation' ) );
+			$navigation_size_default  = pen_option_default( 'font_size_navigation' );
+
+			if ( ! pen_option_get( 'color_navigation_text_shadow_display' ) ) {
+				$text_shadow = 'none';
+			} else {
+				$text_shadow = '1px 1px 1px ' . esc_html( pen_option_get( 'color_navigation_text_shadow' ) );
+			}
+			if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default || '1px 1px 1px ' . pen_option_default( 'color_navigation_text_shadow' ) !== $text_shadow || 'default' !== $navigation_font || $navigation_size !== $navigation_size_default ) {
+				$css .= '#pen_navigation a {';
+				if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default ) {
+					$css .= 'color:' . $link_color . ';';
+				}
+				if ( 'default' !== $navigation_font ) {
+					$css .= 'font-family:"' . ltrim( $navigation_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+				}
+				if ( $navigation_size !== $navigation_size_default ) {
+					$css .= 'font-size:' . $navigation_size . ';';
+				}
+				if ( 'preset_1' !== $preset_color || '1px 1px 1px ' . pen_option_default( 'color_navigation_text_shadow' ) !== $text_shadow ) {
+					$css .= 'text-shadow:' . $text_shadow . ';';
+				}
+				$css .= '}';
+
+				$separator = esc_html( pen_option_get( 'navigation_separator' ) );
+				if ( 'preset_1' !== $preset_color && $separator ) {
+					if ( in_array( $separator, array( 1, 2, 3 ), true ) ) {
+						$css .= '#pen_navigation.pen_separator_' . $separator . ' div#primary-menu > ul > li:after,
+						#pen_navigation.pen_separator_' . $separator . ' ul#primary-menu > li:after {
+							background:-ms-linear-gradient(270deg, rgba(0,0,0,0) 0%, ' . $link_color . ' 50%, rgba(0,0,0,0) 100%);
+							background:linear-gradient(180deg, rgba(0,0,0,0) 0%, ' . $link_color . ' 50%, rgba(0,0,0,0) 100%);
+						}';
+					} elseif ( in_array( $separator, array( 4, 5, 7 ), true ) ) {
+						$css .= '#pen_navigation.pen_separator_' . $separator . ' div#primary-menu > ul > li:after,
+						#pen_navigation.pen_separator_' . $separator . ' ul#primary-menu > li:after {
+							background:' . $link_color . ';
+						}';
+					} elseif ( 6 === $separator ) {
+						$css .= '#pen_navigation.pen_separator_' . $separator . ' div#primary-menu > ul > li:before,
+						#pen_navigation.pen_separator_' . $separator . ' ul#primary-menu > li:before,
+						#pen_navigation.pen_separator_' . $separator . ' div#primary-menu > ul > li:after,
+						#pen_navigation.pen_separator_' . $separator . ' ul#primary-menu > li:after {
+							background:' . $link_color . ';
+						}';
+					} elseif ( in_array( $separator, array( 8, 9 ), true ) ) {
+						$css .= '#pen_navigation.pen_separator_' . $separator . ' div#primary-menu > ul > li:after,
+						#pen_navigation.pen_separator_' . $separator . ' ul#primary-menu > li:after {
+							border-color:' . $link_color . ';
+						}';
+					} elseif ( 10 === $separator ) {
+						$css .= '#pen_navigation.pen_separator_' . $separator . ' div#primary-menu > ul > li:after,
+						#pen_navigation.pen_separator_' . $separator . ' ul#primary-menu > li:after {
+							color:' . $link_color . ';
+						}';
+					}
+				}
+
+				$hover = esc_html( pen_option_get( 'navigation_hover' ) );
+				if ( 'preset_1' !== $preset_color && $hover ) {
+					if ( 1 === $hover || 2 === $hover ) {
+						$link_color_check = new \Pen\Color( $link_color );
+						if ( $link_color_check->isDark() ) {
+							$css .= '#pen_navigation.pen_hover_' . $hover . ' div#primary-menu > ul > li.sfHover > a,
+								#pen_navigation.pen_hover_' . $hover . ' div#primary-menu > ul > li > a:focus,
+								#pen_navigation.pen_hover_' . $hover . ' div#primary-menu > ul > li > a:hover,
+								#pen_navigation.pen_hover_' . $hover . ' div#primary-menu > ul > li > a:active,
+								#pen_navigation.pen_hover_' . $hover . ' div#primary-menu > ul > li.current-menu-item > a,
+								#pen_navigation.pen_hover_' . $hover . ' ul#primary-menu > li.sfHover > a,
+								#pen_navigation.pen_hover_' . $hover . ' ul#primary-menu > li > a:focus,
+								#pen_navigation.pen_hover_' . $hover . ' ul#primary-menu > li > a:hover,
+								#pen_navigation.pen_hover_' . $hover . ' ul#primary-menu > li > a:active,
+								#pen_navigation.pen_hover_' . $hover . ' ul#primary-menu > li.current-menu-item > a {';
+							if ( 'preset_15' === $preset_color ) {
+								$css .= 'background:rgba(255,255,255,0.5);';
+							} else {
+								$css .= 'background:rgba(255,255,255,0.3);';
+							}
+							$css .= '}';
+						}
+					} elseif ( in_array( $hover, array( 3, 4, 5, 6, 7, 10 ), true ) ) {
+						$css .= '#pen_navigation.pen_hover_' . $hover . ' div#primary-menu > ul > li > a:after,
+						#pen_navigation.pen_hover_' . $hover . ' ul#primary-menu > li > a:after {
+							background:' . $link_color . ';
+						}';
+					} elseif ( 8 === $hover ) {
+						$css .= '#pen_navigation.pen_hover_' . $hover . ' div#primary-menu > ul > li > a:after,
+						#pen_navigation.pen_hover_' . $hover . ' ul#primary-menu > li > a:after {
+							border-top-color:' . $link_color . ';
+						}';
+					} elseif ( 9 === $hover ) {
+						$css .= '#pen_navigation.pen_hover_' . $hover . ' div#primary-menu > ul > li > a:after,
+						#pen_navigation.pen_hover_' . $hover . ' ul#primary-menu > li > a:after {
+							border-bottom-color:' . $link_color . ';
+						}';
+					}
+				}
+			}
+
+			if ( 'preset_1' !== $preset_color || $link_color_hover !== $link_color_hover_default ) {
+				$css .= '#pen_navigation li.sfHover > a,
+				#pen_navigation a:focus,
+				#pen_navigation a:hover,
+				#pen_navigation a:active {
+					color:' . $link_color_hover . ';
+				}';
+			}
+
+			$link_color_submenu               = esc_html( pen_option_get( 'color_navigation_link_submenu' ) );
+			$link_color_submenu_default       = pen_option_default( 'color_navigation_link_submenu' );
+			$link_color_hover_submenu         = esc_html( pen_option_get( 'color_navigation_link_hover_submenu' ) );
+			$link_color_hover_submenu_default = pen_option_default( 'color_navigation_link_hover_submenu' );
+
+			$navigation_submenu_font = esc_html( pen_option_get( 'font_family_navigation_submenu' ) );
+
+			if ( ! pen_option_get( 'color_navigation_text_shadow_display_submenu' ) ) {
+				$text_shadow_submenu = 'none';
+			} else {
+				$text_shadow_submenu = '1px 1px 1px ' . esc_html( pen_option_get( 'color_navigation_text_shadow_submenu' ) );
+			}
+			if ( 'preset_1' !== $preset_color || $link_color_submenu !== $link_color_submenu_default || '1px 1px 1px ' . pen_option_default( 'color_navigation_text_shadow_submenu' ) !== $text_shadow_submenu || 'default' !== $navigation_submenu_font || $navigation_size !== $navigation_size_default ) {
+				$css .= '#pen_navigation li li a {';
+				if ( 'preset_1' !== $preset_color || $link_color_submenu !== $link_color_submenu_default ) {
+					$css .= 'color:' . $link_color_submenu . ';';
+				}
+				if ( 'default' !== $navigation_submenu_font ) {
+					$css .= 'font-family:"' . ltrim( $navigation_submenu_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+				}
+				if ( $navigation_size !== $navigation_size_default ) {
+					$css .= 'font-size:' . $navigation_size . ';';
+				}
+				if ( 'preset_1' !== $preset_color || '1px 1px 1px ' . pen_option_default( 'color_navigation_text_shadow_submenu' ) !== $text_shadow_submenu ) {
+					$css .= 'text-shadow:' . $text_shadow_submenu . ';';
+				}
+				$css .= '}';
+
+				$separator = esc_html( pen_option_get( 'navigation_separator_submenu' ) );
+				if ( 'preset_1' !== $preset_color && $separator ) {
+					if ( 1 === $separator ) {
+						$css .= '#pen_navigation.pen_separator_submenu_' . $separator . ' li li:after {
+							background:-ms-linear-gradient(180deg,rgba(0,0,0,0) 0%, ' . $link_color_submenu . ' 25%,rgba(0,0,0,0) 100%);
+							background:linear-gradient(90deg,rgba(0,0,0,0) 0%, ' . $link_color_submenu . ' 25%,rgba(0,0,0,0) 100%);
+						}';
+					} elseif ( 2 === $separator ) {
+						$css .= '#pen_navigation.pen_separator_submenu_' . $separator . ' li li:after {
+							background:-ms-linear-gradient(180deg,rgba(0,0,0,0) 0%, ' . $link_color_submenu . ' 50%,rgba(0,0,0,0) 100%);
+							background:linear-gradient(90deg,rgba(0,0,0,0) 0%, ' . $link_color_submenu . ' 50%,rgba(0,0,0,0) 100%);
+						}';
+					} elseif ( 3 === $separator ) {
+						$css .= '#pen_navigation.pen_separator_submenu_' . $separator . ' li li:after {
+							background:-ms-linear-gradient(180deg,rgba(0,0,0,0) 0%, ' . $link_color_submenu . ' 75%,rgba(0,0,0,0) 100%);
+							background:linear-gradient(90deg,rgba(0,0,0,0) 0%, ' . $link_color_submenu . ' 75%,rgba(0,0,0,0) 100%);
+						}';
+					} elseif ( in_array( $separator, array( 4, 5, 7 ), true ) ) {
+						$css .= '#pen_navigation.pen_separator_submenu_' . $separator . ' li li:after {
+							background:' . $link_color_submenu . ';
+						}';
+					} elseif ( 6 === $separator ) {
+						$css .= '#pen_navigation.pen_separator_submenu_' . $separator . ' li li:before,
+						#pen_navigation.pen_separator_' . $separator . ' li li:after {
+							background:' . $link_color_submenu . ';
+						}';
+					} elseif ( in_array( $separator, array( 8, 9 ), true ) ) {
+						$css .= '#pen_navigation.pen_separator_submenu_' . $separator . ' li li:after {
+							border-color:' . $link_color . ';
+						}';
+					} elseif ( 10 === $separator ) {
+						$css .= '#pen_navigation.pen_separator_submenu_' . $separator . ' li li:after {
+							color:' . $link_color . ';
+						}';
+					}
+				}
+			}
+			if ( 'preset_1' !== $preset_color || $link_color_hover_submenu !== $link_color_hover_submenu_default ) {
+				$css .= '#pen_navigation li li.sfHover > a,
+				#pen_navigation li li a:focus,
+				#pen_navigation li li a:hover,
+				#pen_navigation li li a:active {
+					color:' . $link_color_hover_submenu . ';
+				}';
+			}
+			$css = pen_compress_css( $css );
+		}
+
+		wp_add_inline_style( 'pen-css', $css );
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_inline_css_navigation' );
+}
+
+if ( ! function_exists( 'pen_inline_css_search' ) ) {
+	/**
+	 * Adds inline CSS for the search bar.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_inline_css_search() {
+		$css = '';
+
+		$search_location = get_post_meta( get_the_ID(), 'pen_content_search_location_override', true );
+		if ( ! $search_location || 'default' === $search_location ) {
+			$search_location = esc_html( pen_option_get( 'search_location' ) );
+		}
+		$search = pen_html_search_box();
+		if ( $search && 'content' === $search_location ) {
+
+			$preset_color                       = esc_html( pen_preset_get( 'color' ) );
+			$field_background_primary           = esc_html( pen_option_get( 'color_search_field_background_primary' ) );
+			$field_background_primary_default   = pen_option_default( 'color_search_field_background_primary' );
+			$field_background_secondary         = esc_html( pen_option_get( 'color_search_field_background_secondary' ) );
+			$field_background_secondary_default = pen_option_default( 'color_search_field_background_secondary' );
+			$field_text                         = esc_html( pen_option_get( 'color_search_field_text' ) );
+			$field_text_default                 = pen_option_default( 'color_search_field_text' );
+
+			if ( 'preset_1' !== $preset_color || $field_background_primary !== $field_background_primary_default || $field_background_secondary !== $field_background_secondary_default || $field_text !== $field_text_default ) {
+				$css .= '#pen_search .search-form .search-field {
+					background:' . $field_background_secondary . ';';
+				if ( $field_background_primary !== $field_background_secondary ) {
+					$css .= 'background:-ms-linear-gradient(top,' . $field_background_primary . ' 0%,' . $field_background_secondary . ' 100%);
+					background:linear-gradient(to bottom,' . $field_background_primary . ' 0%,' . $field_background_secondary . ' 100%);';
+				}
+				if ( 'preset_1' !== $preset_color || $field_text !== $field_text_default ) {
+					$css .= 'color:' . $field_text . ';';
+				}
+				$css .= '}';
+			}
+
+			$background_left          = esc_html( pen_option_get( 'color_search_background_primary' ) );
+			$background_left_default  = pen_option_default( 'color_search_background_primary' );
+			$background_right         = esc_html( pen_option_get( 'color_search_background_secondary' ) );
+			$background_right_default = pen_option_default( 'color_search_background_secondary' );
+			$background_image         = esc_html( pen_option_get( 'background_image_search' ) );
+
+			$angle         = esc_html( pen_option_get( 'color_search_background_angle' ) );
+			$angle_default = pen_option_default( 'color_search_background_angle' );
+			if ( 'to right' === $angle ) {
+				$angle_ie = 'left';
+			} elseif ( 'to bottom' === $angle ) {
+				$angle_ie = 'top';
+			} elseif ( false !== strpos( $angle, 'deg' ) ) {
+				$angle_ie = ( str_replace( 'deg', '', $angle ) + 200 ) . 'deg';
+			}
+
+			if ( 'preset_1' !== $preset_color || $background_left !== $background_left_default || $background_right !== $background_right_default || $background_image || $angle !== $angle_default ) {
+				$css .= '#pen_search {
+					background-color:' . $background_left . ';
+					background:' . $background_left . ';';
+				if ( $background_left !== $background_right ) {
+					$css .= 'background:-ms-linear-gradient(' . $angle_ie . ',' . $background_left . ' 0%,' . $background_right . ' 100%);
+					background:linear-gradient(' . $angle . ',' . $background_left . ' 0%,' . $background_right . ' 100%);';
+				}
+				if ( $background_image ) {
+					$css .= "background-image:url('" . $background_image . "');
+					background-repeat:no-repeat;
+					background-position:top center;
+					background-size:cover;";
+				}
+				$css .= '}';
+			}
+
+			$text_color         = esc_html( pen_option_get( 'color_search_text' ) );
+			$text_color_default = pen_option_default( 'color_search_text' );
+			if ( 'preset_1' !== $preset_color || $text_color !== $text_color_default ) {
+				$css .= '#pen_search .widget {
+					color:' . $text_color . ';
+				}';
+			}
+
+			if ( ! pen_option_get( 'color_search_text_shadow_display' ) ) {
+				$text_shadow = 'none';
+			} else {
+				$text_shadow = '1px 1px 1px ' . esc_html( pen_option_get( 'color_search_text_shadow' ) );
+			}
+			if ( 'preset_1' !== $preset_color || '1px 1px 1px ' . pen_option_default( 'color_search_text_shadow' ) !== $text_shadow ) {
+				$css .= 'body.pen_drop_shadow #pen_search .widget {
+					text-shadow:' . $text_shadow . ';
+				}';
+			}
+
+			$link_color               = esc_html( pen_option_get( 'color_search_link' ) );
+			$link_color_default       = pen_option_default( 'color_search_link' );
+			$link_color_hover         = esc_html( pen_option_get( 'color_search_link_hover' ) );
+			$link_color_hover_default = pen_option_default( 'color_search_link_hover' );
+			if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default ) {
+				$css .= '#pen_search .widget a {
+					color:' . $link_color . ';
+				}';
+			}
+			if ( 'preset_1' !== $preset_color || $link_color_hover !== $link_color_hover_default ) {
+				$css .= '#pen_search .widget a:focus,
+				#pen_search .widget a:hover,
+				#pen_search .widget a:active {
+					color:' . $link_color_hover . ' !important;
+				}';
+			}
+
+			$search_background_top            = esc_html( pen_option_get( 'color_search_button_background_primary' ) );
+			$search_background_top_default    = pen_option_default( 'color_search_button_background_primary' );
+			$search_background_bottom         = esc_html( pen_option_get( 'color_search_button_background_secondary' ) );
+			$search_background_bottom_default = pen_option_default( 'color_search_button_background_secondary' );
+			$search_text                      = esc_html( pen_option_get( 'color_search_button_text' ) );
+			$search_text_default              = pen_option_default( 'color_search_button_text' );
+
+			$background_dark   = false;
+			$search_text_check = new \Pen\Color( $search_text );
+			if ( $search_text_check->isDark() ) {
+				$background_dark = true;
+			}
+
+			if ( 'preset_1' !== $preset_color || $search_background_top !== $search_background_top_default || $search_background_bottom !== $search_background_bottom_default || $search_text !== $search_text_default || $background_dark ) {
+				$css .= '#pen_search .search-form .search-submit {
+					background:' . $search_background_bottom . ';';
+				if ( $search_background_top !== $search_background_bottom ) {
+					$css .= 'background:-ms-linear-gradient(top,' . $search_background_top . ' 0%,' . $search_background_bottom . ' 100%);
+					background:linear-gradient(to bottom,' . $search_background_top . ' 0%,' . $search_background_bottom . ' 100%);';
+				}
+				if ( 'preset_1' !== $preset_color || $search_text !== $search_text_default ) {
+					$css .= 'color:' . $search_text . ';';
+				}
+				$css .= '}
+				#pen_search .search-form .search-submit:active {
+					background:' . $search_background_bottom . ';
+				}';
+				if ( $background_dark ) {
+					$css .= 'body.pen_drop_shadow #pen_search .search-form .search-submit {
+						text-shadow:1px 1px 2px rgba(255,255,255,0.5);
+					}';
+				}
+			}
+
+			$css = pen_compress_css( $css );
+
+		}
+
+		wp_add_inline_style( 'pen-css', $css );
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_inline_css_search' );
+}
+
+if ( ! function_exists( 'pen_inline_css_content' ) ) {
+	/**
+	 * Adds inline CSS for the content area.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_inline_css_content() {
+		$css                      = '';
+		$preset_color             = esc_html( pen_preset_get( 'color' ) );
+		$background_left          = esc_html( pen_option_get( 'color_content_title_background_primary' ) );
+		$background_left_default  = pen_option_default( 'color_content_title_background_primary' );
+		$background_right         = esc_html( pen_option_get( 'color_content_title_background_secondary' ) );
+		$background_right_default = pen_option_default( 'color_content_title_background_secondary' );
+		$background_image         = esc_html( pen_option_get( 'background_image_content_title' ) );
+		$angle                    = esc_html( pen_option_get( 'color_content_title_background_angle' ) );
+		$angle_default            = pen_option_default( 'color_content_title_background_angle' );
+		if ( 'to right' === $angle ) {
+			$angle_ie = 'left';
+		} elseif ( 'to bottom' === $angle ) {
+			$angle_ie = 'top';
+		} elseif ( false !== strpos( $angle, 'deg' ) ) {
+			$angle_ie = ( str_replace( 'deg', '', $angle ) + 200 ) . 'deg';
+		}
+
+		if ( 'preset_1' !== $preset_color || $background_left !== $background_left_default || $background_right !== $background_right_default || $angle !== $angle_default || $background_image ) {
+			$css .= '#main article header {
+				background-color:' . $background_left . ';
+				background:' . $background_left . ';';
+			if ( $background_left !== $background_right ) {
+				$css .= 'background:-ms-linear-gradient(' . $angle_ie . ',' . $background_left . ' 0%,' . $background_right . ' 100%);
+				background:linear-gradient(' . $angle . ',' . $background_left . ' 0%,' . $background_right . ' 100%);';
+			}
+			if ( $background_image ) {
+				$css .= "background-image:url('" . $background_image . "');
+				background-repeat:no-repeat;
+				background-position:top center;
+				background-size:cover;";
+			}
+			$css .= '}';
+		}
+
+		$text_color         = esc_html( pen_option_get( 'color_content_text' ) );
+		$text_color_default = pen_option_default( 'color_content_text' );
+		if ( 'preset_1' !== $preset_color || $text_color !== $text_color_default ) {
+			$css .= '#main .page-content,
+			#main .entry-content,
+			#main .entry-summary,
+			#main .entry-footer,
+			#main label,
+			#comments,
+			#comments h3 {
+				color:' . $text_color . ';
+			}';
+
+			$view            = is_singular() ? 'content' : 'list';
+			$profile_display = get_post_meta( get_the_ID(), 'pen_' . $view . '_profile_display_override', true );
+			if ( ! $profile_display || 'default' === $profile_display ) {
+				$profile_display = esc_html( pen_option_get( $view . '_profile_display' ) );
+			}
+			if ( $profile_display ) {
+				$css .= '#primary .pen_author_profile:before {
+					background: -ms-linear-gradient(180deg, rgba(255,255,255,0) 0%,' . $text_color . ' 50%, rgba(255,255,255,0) 100%);
+					background: linear-gradient(90deg, rgba(255,255,255,0) 0%,' . $text_color . ' 50%, rgba(255,255,255,0) 100%);
+				}';
+			}
+		}
+
+		$background_color         = esc_html( pen_option_get( 'color_content_background_primary' ) );
+		$background_color_default = pen_option_default( 'color_content_background_primary' );
+		if ( 'preset_1' !== $preset_color || $background_color !== $background_color_default ) {
+			$css .= '#main .page-content,
+			#main .pen_article_wrapper > article,
+			body.pen_list_masonry #pen_masonry article,
+			#primary .pen_author_profile .pen_author_avatar,
+			#comments,
+			#comments ol.comment-list li.comment div.comment-author .photo,
+			body.pen_list_plain #pen_pager {
+				background-color:' . $background_color . ';
+				background:' . $background_color . ';
+			}';
+		}
+
+		$link_color               = esc_html( pen_option_get( 'color_content_link' ) );
+		$link_color_default       = pen_option_default( 'color_content_link' );
+		$link_color_hover         = esc_html( pen_option_get( 'color_content_link_hover' ) );
+		$link_color_hover_default = pen_option_default( 'color_content_link_hover' );
+		if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default ) {
+			$css .= '#primary a {
+				color:' . $link_color . ';
+			}';
+		}
+		if ( 'preset_1' !== $preset_color || $link_color_hover !== $link_color_hover_default ) {
+			$css .= '#primary a:focus,
+			#primary a:hover,
+			#primary a:active {
+				color:' . $link_color_hover . ';
+			}';
+		}
+
+		if ( ! pen_option_get( 'color_content_title_text_shadow_display' ) ) {
+			$text_shadow = 'none';
+		} else {
+			$text_shadow = '1px 1px 1px ' . esc_html( pen_option_get( 'color_content_title_text_shadow' ) );
+		}
+
+		if ( is_singular() ) {
+			$title_font         = esc_html( pen_option_get( 'font_family_title_content' ) );
+			$title_size         = esc_html( pen_option_get( 'font_size_title_content' ) );
+			$title_size_default = pen_option_default( 'font_size_title_content' );
+		} else {
+			$title_font         = esc_html( pen_option_get( 'font_family_title_list' ) );
+			$title_size         = esc_html( pen_option_get( 'font_size_title_list' ) );
+			$title_size_default = pen_option_default( 'font_size_title_list' );
+		}
+
+		if ( 'preset_1' !== $preset_color || $title_size !== $title_size_default || '1px 1px 1px ' . pen_option_default( 'color_content_title_text_shadow' ) !== $text_shadow || 'default' !== $title_font ) {
+			$css .= '#main header .entry-title,
+			#main header .page-title {';
+			if ( 'default' !== $title_font ) {
+				$css .= 'font-family:"' . ltrim( $title_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+			}
+			if ( $title_size !== $title_size_default ) {
+				$css .= 'font-size:' . $title_size . ' !important;';
+			}
+			if ( 'preset_1' !== $preset_color || '1px 1px 1px ' . pen_option_default( 'color_content_title_text_shadow' ) !== $text_shadow ) {
+				$css .= 'text-shadow:' . $text_shadow . ';';
+			}
+			$css .= '}';
+		}
+
+		$title_color         = esc_html( pen_option_get( 'color_content_title_text' ) );
+		$title_color_default = pen_option_default( 'color_content_title_text' );
+
+		if ( 'preset_1' !== $preset_color || $title_color !== $title_color_default ) {
+			$css .= '#main article header {
+				color:' . $title_color . ';
+			}
+			#main article .entry-meta > span:after {
+				background: -ms-linear-gradient(270deg, rgba(0,0,0,0) 0%,' . $title_color . ' 50%, rgba(0,0,0,0) 100%);
+				background: linear-gradient(180deg, rgba(0,0,0,0) 0%,' . $title_color . ' 50%, rgba(0,0,0,0) 100%);
+			}';
+		}
+
+		$link_color               = esc_html( pen_option_get( 'color_content_title_link' ) );
+		$link_color_default       = pen_option_default( 'color_content_title_link' );
+		$link_color_hover         = esc_html( pen_option_get( 'color_content_title_link_hover' ) );
+		$link_color_hover_default = pen_option_default( 'color_content_title_link_hover' );
+		if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default ) {
+			$css .= '#main article header a {
+				color:' . $link_color . ';
+			}';
+		}
+		if ( 'preset_1' !== $preset_color || $link_color_hover !== $link_color_hover_default ) {
+			$css .= '#main article header a:focus,
+			#main article header a:hover,
+			#main article header a:active {
+				color:' . $link_color_hover . ';
+			}';
+		}
+
+		$field_background_primary           = esc_html( pen_option_get( 'color_content_field_background_primary' ) );
+		$field_background_primary_default   = pen_option_default( 'color_content_field_background_primary' );
+		$field_background_secondary         = esc_html( pen_option_get( 'color_content_field_background_secondary' ) );
+		$field_background_secondary_default = pen_option_default( 'color_content_field_background_secondary' );
+		$field_text                         = esc_html( pen_option_get( 'color_content_field_text' ) );
+		$field_text_default                 = pen_option_default( 'color_content_field_text' );
+
+		if ( 'preset_1' !== $preset_color || $field_background_primary !== $field_background_primary_default || $field_background_secondary !== $field_background_secondary_default || $field_text !== $field_text_default ) {
+			$css .= '#main input[type="date"],
+			#main input[type="email"],
+			#main input[type="file"],
+			#main input[type="number"],
+			#main input[type="tel"],
+			#main input[type="time"],
+			#main input[type="text"],
+			#main input[type="url"],
+			#main option,
+			#main select,
+			#main textarea {
+				background:' . $field_background_secondary . ';';
+			if ( $field_background_primary !== $field_background_secondary ) {
+				$css .= 'background:-ms-linear-gradient(top,' . $field_background_primary . ' 0%,' . $field_background_secondary . ' 100%);
+				background:linear-gradient(to bottom,' . $field_background_primary . ' 0%,' . $field_background_secondary . ' 100%);';
+			}
+			if ( 'preset_1' !== $preset_color || $field_text !== $field_text_default ) {
+				$css .= 'color:' . $field_text . ';';
+			}
+			$css .= '}';
+		}
+
+		$css = pen_compress_css( $css );
+
+		wp_add_inline_style( 'pen-css', $css );
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_inline_css_content' );
+}
+
+if ( ! function_exists( 'pen_inline_css_list' ) ) {
+	/**
+	 * Adds inline CSS for lists.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_inline_css_list() {
+
+		$css          = '';
+		$preset_color = esc_html( pen_preset_get( 'color' ) );
+
+		if ( 'masonry' === pen_list_type() ) {
+			$list_masonry_thumbnail_style                      = esc_html( pen_option_get( 'list_masonry_thumbnail_style' ) );
+			$color_list_thumbnail_background_primary           = esc_html( pen_option_get( 'color_list_thumbnail_background_primary' ) );
+			$color_list_thumbnail_background_primary_default   = pen_option_default( 'color_list_thumbnail_background_primary' );
+			$color_list_thumbnail_background_secondary         = esc_html( pen_option_get( 'color_list_thumbnail_background_secondary' ) );
+			$color_list_thumbnail_background_secondary_default = pen_option_default( 'color_list_thumbnail_background_secondary' );
+			if ( 'preset_1' !== $preset_color || $color_list_thumbnail_background_primary !== $color_list_thumbnail_background_primary_default || $color_list_thumbnail_background_secondary !== $color_list_thumbnail_background_secondary_default ) {
+				$css .= 'body.pen_list_masonry #pen_masonry article.pen_thumbnail_style_' . $list_masonry_thumbnail_style . ' .post-thumbnail {
+					background: -ms-linear-gradient(180deg, ' . $color_list_thumbnail_background_primary . ' 0%, ' . $color_list_thumbnail_background_secondary . ' 50%, ' . $color_list_thumbnail_background_primary . ' 100%);
+					background: linear-gradient(90deg, ' . $color_list_thumbnail_background_primary . ' 0%, ' . $color_list_thumbnail_background_secondary . ' 50%, ' . $color_list_thumbnail_background_primary . ' 100%);
+				}';
+			}
+		}
+
+		$css = pen_compress_css( $css );
+
+		wp_add_inline_style( 'pen-css', $css );
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_inline_css_list' );
+}
+
+if ( ! function_exists( 'pen_inline_css_bottom' ) ) {
+	/**
+	 * Adds inline CSS for the bottom area.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_inline_css_bottom() {
+		$css = '';
+
+		if ( pen_sidebar_check( 'sidebar-bottom' ) ) {
+
+			$preset_color             = esc_html( pen_preset_get( 'color' ) );
+			$background_left          = esc_html( pen_option_get( 'color_bottom_background_primary' ) );
+			$background_left_default  = pen_option_default( 'color_bottom_background_primary' );
+			$background_right         = esc_html( pen_option_get( 'color_bottom_background_secondary' ) );
+			$background_right_default = pen_option_default( 'color_bottom_background_secondary' );
+			$background_image         = esc_html( pen_option_get( 'background_image_bottom' ) );
+			$angle                    = esc_html( pen_option_get( 'color_bottom_background_angle' ) );
+			$angle_default            = pen_option_default( 'color_bottom_background_angle' );
+			if ( 'to right' === $angle ) {
+				$angle_ie = 'left';
+			} elseif ( 'to bottom' === $angle ) {
+				$angle_ie = 'top';
+			} elseif ( false !== strpos( $angle, 'deg' ) ) {
+				$angle_ie = ( str_replace( 'deg', '', $angle ) + 200 ) . 'deg';
+			}
+
+			$text_color         = esc_html( pen_option_get( 'color_bottom_text' ) );
+			$text_color_default = pen_option_default( 'color_bottom_text' );
+			if ( ! pen_option_get( 'color_bottom_text_shadow_display' ) ) {
+				$text_shadow = 'none';
+			} else {
+				$text_shadow = '1px 1px 2px ' . esc_html( pen_option_get( 'color_bottom_text_shadow' ) );
+			}
+
+			if ( 'preset_1' !== $preset_color || $background_left !== $background_left_default || $background_right !== $background_right_default || $background_image || '1px 1px 2px ' . pen_option_default( 'color_bottom_text_shadow' ) !== $text_shadow || $angle !== $angle_default ) {
+				$css .= '#pen_bottom.pen_not_transparent {
+					background-color:' . $background_left . ';
+					background:' . $background_left . ';';
+				if ( $background_left !== $background_right ) {
+					$css .= 'background:-ms-linear-gradient(' . $angle_ie . ',' . $background_left . ' 0%,' . $background_right . ' 100%);
+					background:linear-gradient(' . $angle . ',' . $background_left . ' 0%,' . $background_right . ' 100%);';
+				}
+				if ( $background_image ) {
+					$css .= "background-image:url('" . $background_image . "');
+					background-repeat:no-repeat;
+					background-position:top center;
+					background-size:cover;";
+				}
+				if ( 'preset_1' !== $preset_color || $text_color !== $text_color_default ) {
+					$css .= 'color:' . $text_color . ';';
+				}
+				if ( 'preset_1' !== $preset_color || '1px 1px 2px ' . pen_option_default( 'color_bottom_text_shadow' ) !== $text_shadow ) {
+					$css .= 'text-shadow:' . $text_shadow . ';';
+				}
+				$css .= '}';
+			}
+
+			$headings_color         = esc_html( pen_option_get( 'color_bottom_headings' ) );
+			$headings_color_default = pen_option_default( 'color_bottom_headings' );
+			if ( ! pen_option_get( 'color_bottom_headings_text_shadow_display' ) ) {
+				$headings_shadow = 'none';
+			} else {
+				$headings_shadow = '1px 1px 2px ' . esc_html( pen_option_get( 'color_bottom_headings_text_shadow' ) );
+			}
+			if ( 'preset_1' !== $preset_color || $headings_color !== $headings_color_default || '1px 1px 2px ' . pen_option_default( 'color_bottom_headings_text_shadow' ) !== $headings_shadow ) {
+				$css .= '#pen_bottom .pen_widget_transparent h3,
+				#pen_bottom .pen_widget_transparent h4,
+				#pen_bottom .pen_widget_transparent h5 {';
+				if ( 'preset_1' !== $preset_color || $headings_color !== $headings_color_default ) {
+					$css .= 'color:' . $headings_color . ';';
+				}
+				if ( 'preset_1' !== $preset_color || '1px 1px 2px ' . pen_option_default( 'color_bottom_headings_text_shadow' ) !== $headings_shadow ) {
+					$css .= 'text-shadow:' . $headings_shadow . ';';
+				}
+				$css .= '}';
+			}
+
+			$link_color               = esc_html( pen_option_get( 'color_bottom_link' ) );
+			$link_color_default       = pen_option_default( 'color_bottom_link' );
+			$link_color_hover         = esc_html( pen_option_get( 'color_bottom_link_hover' ) );
+			$link_color_hover_default = pen_option_default( 'color_bottom_link_hover' );
+			if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default ) {
+				$css .= '#pen_bottom a {
+					color:' . $link_color . ';
+				}';
+			}
+			if ( 'preset_1' !== $preset_color || $link_color_hover !== $link_color_hover_default ) {
+				$css .= '#pen_bottom a:focus,
+				#pen_bottom a:hover,
+				#pen_bottom a:active {
+					color:' . $link_color_hover . ';
+				}';
+			}
+			$css = pen_compress_css( $css );
+		}
+
+		wp_add_inline_style( 'pen-css', $css );
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_inline_css_bottom' );
+}
+
+if ( ! function_exists( 'pen_inline_css_footer' ) ) {
+	/**
+	 * Adds inline CSS for the footer area.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_inline_css_footer() {
+		$css                      = '';
+		$preset_color             = esc_html( pen_preset_get( 'color' ) );
+		$background_left          = esc_html( pen_option_get( 'color_footer_background_primary' ) );
+		$background_left_default  = pen_option_default( 'color_footer_background_primary' );
+		$background_right         = esc_html( pen_option_get( 'color_footer_background_secondary' ) );
+		$background_right_default = pen_option_default( 'color_footer_background_secondary' );
+		$background_image         = esc_html( pen_option_get( 'background_image_footer' ) );
+		$angle                    = esc_html( pen_option_get( 'color_footer_background_angle' ) );
+		$angle_default            = pen_option_default( 'color_footer_background_angle' );
+		if ( 'to right' === $angle ) {
+			$angle_ie = 'left';
+		} elseif ( 'to bottom' === $angle ) {
+			$angle_ie = 'top';
+		} elseif ( false !== strpos( $angle, 'deg' ) ) {
+			$angle_ie = ( str_replace( 'deg', '', $angle ) + 200 ) . 'deg';
+		}
+
+		$text_color         = esc_html( pen_option_get( 'color_footer_text' ) );
+		$text_color_default = pen_option_default( 'color_footer_text' );
+		$link_color         = esc_html( pen_option_get( 'color_footer_link' ) );
+		$link_color_default = pen_option_default( 'color_footer_link' );
+
+		if ( ! pen_option_get( 'color_footer_text_shadow_display' ) ) {
+			$text_shadow = 'none';
+		} else {
+			$text_shadow = '1px 1px 2px ' . esc_html( pen_option_get( 'color_footer_text_shadow' ) );
+		}
+		if ( 'preset_1' !== $preset_color || $background_left !== $background_left_default || $background_right !== $background_right_default || $background_image || $angle !== $angle_default ) {
+			$css .= '#pen_footer.pen_not_transparent {
+				background-color:' . $background_left . ';
+				background:' . $background_left . ';';
+			if ( $background_left !== $background_right ) {
+				$css .= 'background:-ms-linear-gradient(' . $angle_ie . ',' . $background_left . ' 0%,' . $background_right . ' 100%);
+				background:linear-gradient(' . $angle . ',' . $background_left . ' 0%,' . $background_right . ' 100%);';
+			}
+			if ( $background_image ) {
+				$css .= "background-image:url('" . $background_image . "');
+				background-repeat:no-repeat;
+				background-position:top center;
+				background-size:cover;";
+			}
+			if ( 'preset_1' !== $preset_color || $text_color !== $text_color_default ) {
+				$css .= 'color:' . $text_color . ';';
+			}
+			if ( 'preset_1' !== $preset_color || '1px 1px 2px ' . pen_option_default( 'color_footer_text_shadow' ) !== $text_shadow ) {
+				$css .= 'text-shadow:' . $text_shadow . ';';
+			}
+			$css .= '}
+			a#pen_back {
+				background:' . $background_right . ';
+				color:' . $link_color . ';
+				text-shadow:' . $text_shadow . ';
+			}';
+		}
+
+		$link_color_hover         = esc_html( pen_option_get( 'color_footer_link_hover' ) );
+		$link_color_hover_default = pen_option_default( 'color_footer_link_hover' );
+
+		if ( 'preset_1' !== $preset_color || $link_color !== $link_color_default ) {
+			$css .= '#pen_footer a,
+			#pen_footer .pen_footer_inner .pen_social_networks a {
+				color:' . $link_color . ';
+			}
+			#pen_footer .pen_footer_inner .pen_social_networks a {
+				border-color:' . $link_color . ';
+			}
+			@media only screen and (min-width:728px) {
+				#pen_footer .pen_footer_inner #pen_footer_menu li a:after {
+					background: -ms-linear-gradient(270deg, rgba(0,0,0,0) 0%,' . $link_color . ' 50%, rgba(0,0,0,0) 100%);
+					background: linear-gradient(180deg, rgba(0,0,0,0) 0%,' . $link_color . ' 50%, rgba(0,0,0,0) 100%);
+				}
+			}';
+		}
+		if ( 'preset_1' !== $preset_color || $link_color_hover !== $link_color_hover_default ) {
+			$css .= '#pen_footer a:focus,
+			#pen_footer a:hover,
+			#pen_footer a:active,
+			#pen_footer .pen_footer_inner .pen_social_networks a:focus,
+			#pen_footer .pen_footer_inner .pen_social_networks a:hover,
+			#pen_footer .pen_footer_inner .pen_social_networks a:active {
+				color:' . $link_color_hover . ';
+			}
+			#pen_footer .pen_footer_inner .pen_social_networks a:focus,
+			#pen_footer .pen_footer_inner .pen_social_networks a:hover,
+			#pen_footer .pen_footer_inner .pen_social_networks a:active {
+				border-color:' . $link_color_hover . ';
+			}';
+		}
+
+		if ( pen_option_get( 'phone' ) && pen_option_get( 'phone_footer_display' ) ) {
+
+			$phone_font         = esc_html( pen_option_get( 'font_family_phone_footer' ) );
+			$phone_size         = esc_html( pen_option_get( 'font_size_phone_footer' ) );
+			$phone_size_default = pen_option_default( 'font_size_phone_footer' );
+
+			if ( 'preset_1' !== $preset_color || 'default' !== $phone_font || $phone_size !== $phone_size_default ) {
+				$css .= '#pen_footer .pen_footer_inner .pen_phone a {';
+				if ( 'default' !== $phone_font ) {
+					$css .= 'font-family:"' . ltrim( $phone_font, 'g:' ) . '", Arial, Helvetica, Sans-serif;
+				font-weight:normal;';
+				}
+				if ( $phone_size !== $phone_size_default ) {
+					$css .= 'font-size:' . $phone_size . ';';
+				}
+				$css .= '}';
+			}
+		}
+
+		$css = pen_compress_css( $css );
+
+		wp_add_inline_style( 'pen-css', $css );
+	}
+	add_action( 'wp_enqueue_scripts', 'pen_inline_css_footer' );
+}
+
+if ( ! function_exists( 'pen_customize_register' ) ) {
+	/**
+	 * Add postMessage support for site title and description for the Theme Customizer.
+	 *
+	 * @param WP_Customize_Manager $wp_customize Theme Customizer object.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customize_register( $wp_customize ) {
+
+		pen_customize_contact( $wp_customize );
+		pen_customize_color( $wp_customize );
+		pen_customize_typography( $wp_customize );
+		pen_customize_header( $wp_customize );
+		pen_customize_content_list( $wp_customize );
+		pen_customize_content_full( $wp_customize );
+		pen_customize_site_layout( $wp_customize );
+		pen_customize_front( $wp_customize );
+		pen_customize_footer( $wp_customize );
+		pen_customize_background( $wp_customize );
+		pen_customize_logo( $wp_customize );
+
+	}
+	add_action( 'customize_register', 'pen_customize_register' );
+}
+
+if ( ! function_exists( 'pen_customizer_preview_js' ) ) {
+	/**
+	 * Enhancements for the the Theme Customizer.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customizer_preview_js() {
+		wp_enqueue_script( 'pen-customizer-preview', get_template_directory_uri() . '/assets/js/pen-customize-preview.js', array( 'customize-preview', 'wp-backbone' ), wp_get_theme( 'pen' )->get( 'Version' ), true );
+		wp_localize_script(
+			'pen-customizer-preview',
+			'pen_preview_js',
+			array(
+				'preset_color' => pen_preset_get( 'color' ),
+			)
+		);
+	}
+	add_action( 'customize_preview_init', 'pen_customizer_preview_js' );
+}
+
+if ( ! function_exists( 'pen_customizer_main_js' ) ) {
+	/**
+	 * Binds JS handlers to make Theme Customizer preview reload changes asynchronously.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_customizer_main_js() {
+
+		$preset_preview = false;
+		if ( pen_filter_input( 'GET', 'pen_preview_color' ) || pen_filter_input( 'GET', 'pen_preview_font' ) ) {
+			$preset_preview = true;
+		}
+
+		wp_enqueue_script( 'pen-customizer-main', get_template_directory_uri() . '/assets/js/pen-customize-main.js', array(), wp_get_theme( 'pen' )->get( 'Version' ), true );
+		wp_localize_script(
+			'pen-customizer-main',
+			'pen_customize_js',
+			array(
+				'support_url'    => esc_url( PEN_SUPPORT_URL ),
+				'preset_preview' => $preset_preview,
+				'preset_color'   => str_replace( 'preset_', '', pen_preset_get( 'color' ) ),
+				'preset_font'    => str_replace( 'preset_', '', pen_preset_get( 'font_family' ) ),
+				'text'           => array(
+					'pen_theme'           => __( 'Pen', 'pen' ),
+					'support_text'        => __( 'Do you need help?', 'pen' ),
+					'support_description' => __( 'Request Support', 'pen' ),
+					'theme_specific'      => sprintf(
+						"%1\$s\r\n%2\$s",
+						__( 'Pen theme only:', 'pen' ),
+						__( "This is a part of the 'Pen' theme so if you switch to another theme these settings will be no longer used. The rest of the settings that are here are either parts of the WordPress core or added via plugins and they are available with or without this theme.", 'pen' )
+					),
+				),
+			)
+		);
+	}
+	add_action( 'customize_controls_enqueue_scripts', 'pen_customizer_main_js' );
+}

+ 1311 - 0
include/general.php

@@ -0,0 +1,1311 @@
+<?php
+/**
+ * Common functions.
+ *
+ * @package Pen
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+if ( ! function_exists( 'pen_setup' ) ) {
+	/**
+	 * Sets up theme defaults and registers support for various WordPress features.
+	 *
+	 * Note that this function is hooked into the after_setup_theme hook, which
+	 * runs before the init hook. The init hook is too late for some features, such
+	 * as indicating support for post thumbnails.
+	 */
+	function pen_setup() {
+
+		if ( pen_filter_input( 'GET', 'pen_preview_color' ) || pen_filter_input( 'GET', 'pen_preview_font' ) ) {
+			// Disables the "Autoptimize" plugin.
+			define( 'DONOTMINIFY', true );
+			// Disables the "WP Super Cache" plugin.
+			define( 'DONOTCACHEPAGE', true );
+		}
+
+		/**
+		 * Make theme available for translation.
+		 * Translations can be filed in the /languages/ directory.
+		 * If you're building a theme based on Pen, use a find and replace
+		 * to change 'pen' to the name of your theme in all the template files.
+		 */
+		load_theme_textdomain( 'pen', get_template_directory() . '/languages' );
+
+		add_theme_support( 'editor-styles' );
+
+		/**
+		 * Let WordPress manage the document title.
+		 * By adding theme support, we declare that this theme does not use a
+		 * hard-coded <title> tag in the document head, and expect WordPress to
+		 * provide it for us.
+		 */
+		add_theme_support( 'title-tag' );
+
+		/**
+		 * Enable support for custom logo.
+		 */
+		add_theme_support(
+			'custom-logo',
+			array(
+				'height'      => 512,
+				'width'       => 512,
+				'flex-height' => true,
+			)
+		);
+
+		/**
+		 * Enable support for Post Thumbnails on posts and pages.
+		 */
+		add_theme_support( 'post-thumbnails' );
+		set_post_thumbnail_size( 225, 225, true );
+
+		/**
+		 * Adds default RSS feed links to the <head>.
+		 */
+		add_theme_support( 'automatic-feed-links' );
+
+		// This theme uses wp_nav_menu() in one location.
+		register_nav_menus(
+			array(
+				'primary'   => esc_html__( 'Header', 'pen' ),
+				'secondary' => esc_html__( 'Footer', 'pen' ),
+			)
+		);
+
+		/**
+		 * Switch default core markup for search form to output valid HTML5.
+		 */
+		add_theme_support(
+			'html5',
+			array(
+				'search-form',
+				'gallery',
+				'caption',
+				'comment-form',
+				'comment-list',
+			)
+		);
+
+		// Add theme support for selective refresh for widgets.
+		add_theme_support( 'customize-selective-refresh-widgets' );
+
+		/**
+		 * Enable support for Post Formats.
+		 * See https://developer.wordpress.org/themes/functionality/post-formats/
+		 */
+		add_theme_support(
+			'post-formats',
+			array(
+				'aside',
+				'image',
+				'video',
+				'quote',
+				'link',
+			)
+		);
+
+		// Set up the WordPress core custom background feature.
+		add_theme_support(
+			'custom-background',
+			apply_filters(
+				'pen_custom_background_args',
+				array(
+					'default-color' => '333333',
+					'default-image' => '',
+				)
+			)
+		);
+
+		$theme = wp_get_theme( 'pen' );
+		define( 'PEN_THEME_VERSION', $theme->get( 'Version' ) );
+
+		define( 'PEN_PRESET_COLOR', get_theme_mod( 'pen_preset_color', 'preset_1' ) );
+		define( 'PEN_PRESET_FONT', get_theme_mod( 'pen_preset_font', 'preset_1' ) );
+
+		define( 'PEN_SUPPORT_URL', 'https://wordpress.org/support/theme/pen/' );
+
+		add_action( 'wp_ajax_pen_post_meta', 'pen_post_meta_ajax' );
+
+	}
+	add_action( 'after_setup_theme', 'pen_setup' );
+}
+
+if ( ! function_exists( 'pen_archive_title_override' ) ) {
+	/**
+	 * Adds extra markup to archive titles.
+	 *
+	 * @param string $title The title.
+	 * @since Pen 1.0.5
+	 * @return string
+	 */
+	function pen_archive_title_override( $title ) {
+		$output = $title;
+		if ( false !== strpos( $title, ': ' ) ) {
+			$title   = explode( ': ', $title );
+			$output  = '<span class="pen_heading_main">';
+			$output .= $title[0] . ':';
+			$output .= '</span>';
+			unset( $title[0] );
+			$output .= implode( '', $title );
+		}
+		return $output;
+	}
+	add_filter( 'get_the_archive_title', 'pen_archive_title_override' );
+}
+
+if ( ! function_exists( 'pen_pingback' ) ) {
+	/**
+	 * Add a pingback URL auto-discovery header for singularly identifiable articles.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_pingback() {
+		if ( is_singular() && pings_open() ) {
+			echo '<link rel="pingback" href="' . esc_url( get_bloginfo( 'pingback_url' ) ) . '">';
+		}
+	}
+	add_action( 'wp_head', 'pen_pingback' );
+}
+
+if ( ! function_exists( 'pen_content_width' ) ) {
+	/**
+	 * Set the content width in pixels, based on the theme's design and stylesheet.
+	 *
+	 * Priority 0 to make it available to lower priority callbacks.
+	 *
+	 * @global int $content_width
+	 */
+	function pen_content_width() {
+		$GLOBALS['content_width'] = apply_filters( 'pen_content_width', 1140 );
+	}
+	add_action( 'after_setup_theme', 'pen_content_width', 0 );
+}
+
+if ( ! function_exists( 'pen_header_background' ) ) {
+	/**
+	 * Set up the WordPress core custom header feature.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_header_background() {
+		add_theme_support(
+			'custom-header',
+			apply_filters(
+				'pen_custom_header_args',
+				array(
+					'default-image'      => '',
+					'default-text-color' => '333333',
+					'header-text'        => false,
+					'width'              => 1800,
+					'height'             => 250,
+					'flex-height'        => true,
+				)
+			)
+		);
+	}
+	add_action( 'after_setup_theme', 'pen_header_background' );
+}
+
+if ( ! function_exists( 'pen_body_classes' ) ) {
+	/**
+	 * Adds custom classes to the array of body_class filter.
+	 *
+	 * @global object $post
+	 *
+	 * @param array $classes Classes for the body element.
+	 *
+	 * @since Pen 1.0.0
+	 * @return array
+	 */
+	function pen_body_classes( $classes ) {
+
+		global $post;
+
+		if ( ! is_home() && ! is_front_page() ) {
+			$classes[] = 'not-home';
+		}
+
+		$sidebars = array(
+			'sidebar-header-primary',
+			'sidebar-header-secondary',
+			'sidebar-top',
+			'sidebar-search-top',
+			'sidebar-search-left',
+			'sidebar-search-right',
+			'sidebar-search-bottom',
+			'sidebar-left',
+			'sidebar-right',
+			'sidebar-bottom',
+			'sidebar-footer-top',
+			'sidebar-footer-left',
+			'sidebar-footer-right',
+			'sidebar-footer-bottom',
+		);
+
+		foreach ( $sidebars as $sidebar ) {
+			if ( pen_sidebar_check( $sidebar ) && is_active_sidebar( $sidebar ) ) {
+				$classes[] = 'visible-' . sanitize_html_class( $sidebar );
+			} else {
+				$classes[] = 'invisible-' . sanitize_html_class( $sidebar );
+			}
+		}
+
+		if ( pen_option_get( 'header_logo_display' ) ) {
+			$classes[] = 'pen_header_logo_size_' . pen_option_get( 'header_logo_size' );
+		}
+
+		if ( is_multi_author() ) {
+			$classes[] = 'group-blog';
+		}
+
+		if ( pen_option_get( 'color_site_shadow_display' ) ) {
+			$classes[] = 'pen_drop_shadow';
+		}
+		if ( pen_option_get( 'background_lights_dim' ) ) {
+			$classes[] = 'pen_background_lights_dim';
+		}
+		if ( pen_option_get( 'header_sticky' ) ) {
+			$classes[] = 'pen_header_sticky';
+		}
+		if ( pen_option_get( 'round_corners' ) ) {
+			$classes[] = 'pen_round_corners';
+		}
+
+		$header_logo = pen_option_get( 'header_logo_display' );
+		if ( 'none' !== $header_logo ) {
+			$classes[] = 'pen_header_logo_size_' . pen_option_get( 'header_logo_size' );
+		}
+
+		$classes[] = 'pen_list_effect_' . pen_option_get( 'list_effect' );
+		$classes[] = 'pen_header_alignment_' . pen_option_get( 'header_alignment' );
+		$classes[] = 'pen_navigation_alignment_' . pen_option_get( 'navigation_alignment' );
+		$classes[] = 'pen_footer_alignment_' . pen_option_get( 'footer_alignment' );
+		$classes[] = 'pen_main_container_' . pen_option_get( 'container_position' );
+
+		if ( is_sticky() ) {
+			$classes[] = 'sticky';
+		}
+
+		if ( is_singular() ) {
+
+			$post_id = (int) get_queried_object_id(); // $post->ID doesn't return the correct post ID.
+
+			// Hiding parts of the content with Web accessibility and SEO in mind.
+			$options_content = array(
+				'content_header_display'    => 'content_header_hide',
+				'content_title_display'     => 'content_title_hide',
+				'content_author_display'    => 'content_author_hide',
+				'content_date_display'      => 'content_date_hide',
+				'content_category_display'  => 'content_category_hide',
+				'content_thumbnail_display' => 'content_thumbnail_hide',
+				'content_share_display'     => 'content_share_hide',
+				'content_tags_display'      => 'content_tags_hide',
+				'content_footer_display'    => 'content_footer_hide',
+			);
+			foreach ( $options_content as $option => $class ) {
+				$display = get_post_meta( $post_id, 'pen_' . $option . '_override', true );
+				if ( ! $display || 'default' === $display ) {
+					$display = pen_option_get( $option );
+				}
+				if ( ! $display || 'no' === $display ) {
+					$classes[] = 'pen_' . $class;
+				}
+			}
+
+			$site_width = get_post_meta( $post_id, 'pen_site_width_override', true );
+			if ( ! $site_width || 'default' === $site_width ) {
+				$site_width = pen_option_get( 'site_width' );
+			}
+			$classes[] = 'pen_width_' . $site_width;
+
+			$header_alignment = get_post_meta( $post_id, 'pen_content_header_alignment_override', true );
+			if ( ! $header_alignment || 'default' === $header_alignment ) {
+				$header_alignment = pen_option_get( 'content_header_alignment' );
+			}
+			if ( $header_alignment && 'no' !== $header_alignment ) {
+				$classes[] = 'pen_content_header_center';
+			}
+
+			$title_alignment = get_post_meta( $post_id, 'pen_content_title_alignment_override', true );
+			if ( ! $title_alignment || 'default' === $title_alignment ) {
+				$title_alignment = pen_option_get( 'content_title_alignment' );
+			}
+			if ( $title_alignment && 'no' !== $title_alignment ) {
+				$classes[] = 'pen_content_title_center';
+			}
+
+			$thumbnail_rotate = get_post_meta( $post_id, 'pen_content_thumbnail_rotate_override', true );
+			if ( ! $thumbnail_rotate || 'default' === $thumbnail_rotate ) {
+				$thumbnail_rotate = pen_option_get( 'content_thumbnail_rotate' );
+			}
+			if ( $thumbnail_rotate && 'no' !== $thumbnail_rotate ) {
+				$classes[] = 'pen_content_thumbnail_rotate';
+			}
+
+			$thumbnail_frame = get_post_meta( $post_id, 'pen_content_thumbnail_frame_override', true );
+			if ( ! $thumbnail_frame || 'default' === $thumbnail_frame ) {
+				$thumbnail_frame = pen_option_get( 'content_thumbnail_frame' );
+			}
+			if ( $thumbnail_frame && 'no' !== $thumbnail_frame ) {
+				$classes[] = 'pen_content_thumbnail_frame';
+			}
+
+			$thumbnail_frame_color = get_post_meta( $post_id, 'pen_color_content_thumbnail_frame_override', true );
+			if ( ! $thumbnail_frame_color || 'default' === $thumbnail_frame_color ) {
+				$thumbnail_frame_color = pen_option_get( 'color_content_thumbnail_frame' );
+			}
+			if ( '#000000' === $thumbnail_frame_color ) {
+				$classes[] = 'pen_thumbnail_frame_dark';
+			}
+
+			$thumbnail_alignment = get_post_meta( $post_id, 'pen_content_thumbnail_alignment_override', true );
+			if ( ! $thumbnail_alignment || 'default' === $thumbnail_alignment ) {
+				$thumbnail_alignment = pen_option_get( 'content_thumbnail_alignment' );
+			}
+			$classes[] = 'pen_content_thumbnail_' . $thumbnail_alignment;
+			$classes[] = 'pen_content_thumbnail_' . pen_option_get( 'content_thumbnail_resize' );
+			$classes[] = 'pen_singular';
+
+		} else {
+
+			// Hiding parts of the content with Web accessibility and SEO in mind.
+			$options_list = array(
+				'list_header_display'         => 'list_header_hide',
+				'list_title_display'          => 'list_title_hide',
+				'list_author_display'         => 'list_author_hide',
+				'list_date_display'           => 'list_date_hide',
+				'list_category_display'       => 'list_category_hide',
+				'list_thumbnail_display'      => 'list_thumbnail_hide',
+				'list_summary_display'        => 'list_summary_hide',
+				'list_footer_display'         => 'list_footer_hide',
+				'list_tags_display'           => 'list_tags_hide',
+				'list_button_comment_display' => 'list_button_comment_hide',
+				'list_button_edit_display'    => 'list_button_edit_hide',
+			);
+			foreach ( $options_list as $option => $class ) {
+				if ( ! pen_option_get( $option ) ) {
+					$classes[] = 'pen_' . $class;
+				}
+			}
+
+			$classes[] = 'pen_width_' . pen_option_get( 'site_width' );
+
+			if ( pen_option_get( 'list_post_header_alignment' ) ) {
+				$classes[] = 'pen_list_header_center';
+			}
+			if ( pen_option_get( 'list_title_alignment' ) ) {
+				$classes[] = 'pen_list_title_center';
+			}
+
+			if ( 'none' !== pen_option_get( 'list_animation_reveal' ) ) {
+				$classes[] = 'pen_has_animation';
+			} else {
+				$classes[] = 'pen_no_animation';
+			}
+
+			$classes[] = 'pen_multiple';
+			$classes[] = 'hfeed';
+		}
+
+		$list_type = pen_list_type();
+
+		$classes[] = 'pen_list_' . $list_type;
+
+		if ( ! is_singular() ) {
+			if ( 'masonry' === $list_type ) {
+				$classes[] = 'pen_masonry_columns_' . pen_option_get( 'list_masonry_columns' );
+				$classes[] = 'pen_thumbnail_' . pen_option_get( 'list_masonry_thumbnail_effect' );
+			} else {
+				// The following apply to all the posts in the list.
+				if ( '#000000' === pen_option_get( 'color_list_thumbnail_frame' ) ) {
+					$classes[] = 'pen_thumbnail_frame_dark';
+				}
+				$classes[] = 'pen_list_thumbnail_' . pen_option_get( 'list_thumbnail_alignment' );
+				$classes[] = 'pen_list_thumbnail_' . pen_option_get( 'list_thumbnail_resize' );
+				if ( pen_option_get( 'list_thumbnail_rotate' ) ) {
+					$classes[] = 'pen_list_thumbnail_rotate';
+				}
+				if ( pen_option_get( 'list_thumbnail_frame' ) ) {
+					$classes[] = 'pen_list_thumbnail_frame';
+				}
+			}
+		}
+
+		if ( class_exists( 'HPCF' ) && is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'HPCF' ) ) {
+			$classes[] = 'pen_has_contact_form';
+		}
+
+		return $classes;
+	}
+	add_filter( 'body_class', 'pen_body_classes' );
+}
+
+if ( ! function_exists( 'pen_content_classes' ) ) {
+	/**
+	 * Content classes.
+	 *
+	 * @since Pen 1.0.3
+	 * @return string
+	 */
+	function pen_content_classes() {
+		$classes   = 'site-main';
+		$animation = get_post_meta( get_the_ID(), 'pen_content_animation_reveal_override', true );
+		if ( ! $animation || 'default' === $animation ) {
+			$animation = pen_option_get( 'content_animation_reveal' );
+		}
+		if ( $animation ) {
+			$classes .= ' pen_custom_animation_' . $animation;
+		}
+		return $classes;
+	}
+}
+
+if ( ! function_exists( 'pen_categorized_blog' ) ) {
+	/**
+	 * Returns true if a blog has more than 1 category.
+	 *
+	 * @since Pen 1.0.0
+	 * @return bool
+	 */
+	function pen_categorized_blog() {
+		$all_the_cool_cats = get_transient( 'pen_categories' );
+		if ( false === $all_the_cool_cats ) {
+			// Create an array of all the categories that are attached to posts.
+			$all_the_cool_cats = get_categories(
+				array(
+					'fields'     => 'ids',
+					'hide_empty' => 1,
+					// We only need to know if there is more than one category.
+					'number'     => 2,
+				)
+			);
+
+			// Count the number of categories that are attached to the posts.
+			$all_the_cool_cats = count( $all_the_cool_cats );
+
+			set_transient( 'pen_categories', $all_the_cool_cats );
+		}
+
+		if ( $all_the_cool_cats > 1 ) {
+			// This blog has more than 1 category so pen_categorized_blog should return true.
+			return true;
+		} else {
+			// This blog has only 1 category so pen_categorized_blog should return false.
+			return false;
+		}
+
+	}
+}
+
+if ( ! function_exists( 'pen_category_transient_flusher' ) ) {
+	/**
+	 * Flush out the transients used in pen_categorized_blog.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void|string
+	 */
+	function pen_category_transient_flusher() {
+		if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
+			return;
+		}
+		// Like, beat it. Dig?
+		delete_transient( 'pen_categories' );
+	}
+	add_action( 'edit_category', 'pen_category_transient_flusher' );
+	add_action( 'save_post', 'pen_category_transient_flusher' );
+}
+
+if ( ! function_exists( 'pen_editor_styles' ) ) {
+	/**
+	 * Adds theme stylesheet to the visual editor.
+	 *
+	 * @uses add_editor_style() Links a stylesheet to visual editor
+	 * @uses get_template_directory_uri() Returns URI of theme directory
+	 * @since Pen 1.0.0
+	 */
+	function pen_editor_styles() {
+		add_editor_style( get_template_directory_uri() . '/assets/css/pen-editor.css' );
+	}
+	add_action( 'admin_init', 'pen_editor_styles' );
+}
+
+if ( ! function_exists( 'pen_class_lists' ) ) {
+	/**
+	 * Creates a class name for hidden elements.
+	 *
+	 * @param string $option The option ID.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_class_lists( $option ) {
+		$hidden = '';
+		$option = 'pen_list_' . $option;
+		if ( ! is_singular() ) {
+			$display = get_post_meta( get_the_ID(), $option, true );
+			if ( 'no' === $display ) {
+				$hidden = ' pen_element_hidden';
+			} elseif ( 'yes' === $display ) {
+				$hidden = ' pen_element_visible';
+			} else {
+				$hidden = ' pen_element_default';
+			}
+		}
+		return $hidden;
+	}
+}
+
+if ( ! function_exists( 'pen_filter_input' ) ) {
+	/**
+	 * Sanitization function similar to filter_input and filter_input_array.
+	 *
+	 * @param string $source The input source, can be GET, POST, or SERVER.
+	 * @param string $name   The input name, false returns an array similar to $_GET etc.
+	 *
+	 * @since Pen 1.0.0
+	 * @return mixed Returns null when source is not provided or input does not exist.
+	 */
+	function pen_filter_input( $source, $name = false ) {
+		if ( 'GET' !== $source && 'POST' !== $source && 'SERVER' !== $source ) {
+			return null;
+		}
+		// Gets the sources.
+		/* phpcs:disable */
+		if ( 'GET' === $source ) {
+			$source = $_GET;
+		} elseif ( 'POST' === $source ) {
+			$source = $_POST;
+		} else {
+			$source = $_SERVER;
+		}
+		/* phpcs:enable */
+		// Sanitization.
+		if ( ! $name ) {
+			array_walk_recursive( $source, 'pen_filter_input_help' );
+			if ( $source ) {
+				return $source;
+			} else {
+				return null;
+			}
+		} elseif ( ! isset( $source[ $name ] ) ) {
+			return null;
+		} elseif ( is_array( $source[ $name ] ) ) {
+			array_walk_recursive( $source[ $name ], 'pen_filter_input_help' );
+			return $source[ $name ];
+		} else {
+			return htmlspecialchars( trim( stripslashes( $source[ $name ] ) ), ENT_NOQUOTES, 'UTF-8' );
+		}
+		return null;
+	}
+}
+
+if ( ! function_exists( 'pen_filter_input_help' ) ) {
+	/**
+	 * Helper function necessary for array_walk_recursive on older PHP versions.
+	 *
+	 * @param mixed $value The value to be processed.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_filter_input_help( &$value ) {
+		$value = htmlspecialchars( trim( stripslashes( $value ) ), ENT_NOQUOTES, 'UTF-8' );
+	}
+}
+
+if ( ! function_exists( 'pen_list_type' ) ) {
+	/**
+	 * Returns the content list type.
+	 *
+	 * @since Pen 1.0.5
+	 * @return string
+	 */
+	function pen_list_type() {
+		return pen_option_get( 'list_type' );
+	}
+}
+
+if ( ! function_exists( 'pen_animations' ) ) {
+	/**
+	 * Returns a list of the available animations.
+	 *
+	 * @since Pen 1.0.5
+	 * @return string
+	 */
+	function pen_animations() {
+		return array(
+			'none'              => __( 'None', 'pen' ),
+			'bounce'            => 'bounce',
+			'flash'             => 'flash',
+			'pulse'             => 'pulse',
+			'rubberBand'        => 'rubberBand',
+			'shake'             => 'shake',
+			'headShake'         => 'headShake',
+			'swing'             => 'swing',
+			'tada'              => 'tada',
+			'wobble'            => 'wobble',
+			'jello'             => 'jello',
+			'bounceIn'          => 'bounceIn',
+			'bounceInDown'      => 'bounceInDown',
+			'bounceInLeft'      => 'bounceInLeft',
+			'bounceInRight'     => 'bounceInRight',
+			'bounceInUp'        => 'bounceInUp',
+			'fadeIn'            => 'fadeIn',
+			'fadeInDown'        => 'fadeInDown',
+			'fadeInDownBig'     => 'fadeInDownBig',
+			'fadeInLeft'        => 'fadeInLeft',
+			'fadeInLeftBig'     => 'fadeInLeftBig',
+			'fadeInRight'       => 'fadeInRight',
+			'fadeInRightBig'    => 'fadeInRightBig',
+			'fadeInUp'          => 'fadeInUp',
+			'fadeInUpBig'       => 'fadeInUpBig',
+			'flipInX'           => 'flipInX',
+			'flipInY'           => 'flipInY',
+			'lightSpeedIn'      => 'lightSpeedIn',
+			'rotateIn'          => 'rotateIn',
+			'rotateInDownLeft'  => 'rotateInDownLeft',
+			'rotateInDownRight' => 'rotateInDownRight',
+			'rotateInUpLeft'    => 'rotateInUpLeft',
+			'rotateInUpRight'   => 'rotateInUpRight',
+			'jackInTheBox'      => 'jackInTheBox',
+			'rollIn'            => 'rollIn',
+			'zoomIn'            => 'zoomIn',
+			'zoomInDown'        => 'zoomInDown',
+			'zoomInLeft'        => 'zoomInLeft',
+			'zoomInRight'       => 'zoomInRight',
+			'zoomInUp'          => 'zoomInUp',
+			'slideInDown'       => 'slideInDown',
+			'slideInLeft'       => 'slideInLeft',
+			'slideInRight'      => 'slideInRight',
+			'slideInUp'         => 'slideInUp',
+		);
+	}
+}
+
+if ( ! function_exists( 'pen_class_navigation' ) ) {
+	/**
+	 * Generates class names for the navigation menu.
+	 *
+	 * @since Pen 1.0.8
+	 * @return string
+	 */
+	function pen_class_navigation() {
+		$hover             = pen_option_get( 'navigation_hover' );
+		$arrows            = pen_option_get( 'navigation_arrows' );
+		$separator         = pen_option_get( 'navigation_separator' );
+		$separator_submenu = pen_option_get( 'navigation_separator_submenu' );
+		$classes           = trim(
+			implode(
+				' ',
+				array(
+					'main-navigation',
+					'pen_hover_' . ( $hover ? $hover : 'none' ),
+					'pen_arrows_' . ( $arrows ? $arrows : 'none' ),
+					'pen_separator_' . ( $separator ? $separator : 'none' ),
+					'pen_separator_submenu_' . ( $separator_submenu ? $separator_submenu : 'none' ),
+				)
+			)
+		);
+		return $classes;
+	}
+}
+
+if ( ! function_exists( 'pen_class_animation' ) ) {
+	/**
+	 * Generates animation class names.
+	 *
+	 * @param string  $option_id The option ID.
+	 * @param boolean $echo      Whether to echo or return.
+	 *
+	 * @since Pen 1.0.7
+	 * @return void|string
+	 */
+	function pen_class_animation( $option_id, $echo = true ) {
+		$animation = pen_option_get( $option_id . '_animation_reveal' );
+		if ( $animation && 'none' !== $animation ) {
+			$class = sprintf(
+				'pen_animate_on_scroll pen_custom_animation_%s',
+				sanitize_html_class( $animation )
+			);
+			if ( $echo ) {
+				echo $class; /* phpcs:ignore */
+			} else {
+				return $class;
+			}
+		}
+	}
+}
+
+if ( ! function_exists( 'pen_url_customizer' ) ) {
+	/**
+	 * Generates a URL for the customizer.
+	 *
+	 * @param string $focus Focus on specific option.
+	 * @param string $page  The active page.
+	 *
+	 * @since Pen 1.0.8
+	 * @return string
+	 */
+	function pen_url_customizer( $focus = '', $page = '' ) {
+		if ( is_customize_preview() ) {
+			return '#';
+		}
+		$query['return'] = rawurlencode( pen_filter_input( 'SERVER', 'REQUEST_URI' ) );
+		if ( $focus && false !== strpos( $focus, ',' ) ) {
+			list( $container_type, $container_name ) = explode( ',', $focus );
+
+			$generic = array(
+				'background_image',
+				'header_image',
+				'nav_menus',
+				'title_tagline',
+				'widgets',
+			);
+			if ( ! in_array( $container_name, $generic, true ) && false === strpos( $container_name, 'sidebar-widgets-' ) ) {
+				$container_name = 'pen_' . $container_type . '_' . $container_name;
+			}
+			$query[ 'autofocus[' . $container_type . ']' ] = $container_name;
+		}
+		if ( $page ) {
+			$query['url'] = rawurlencode( $page );
+		} elseif ( ! is_admin() ) {
+			$query['url'] = rawurlencode( pen_filter_input( 'SERVER', 'REQUEST_URI' ) );
+		}
+		return esc_url( add_query_arg( $query, wp_customize_url() ) );
+	}
+}
+
+if ( ! function_exists( 'pen_jump_menu' ) ) {
+	/**
+	 * Provides easier access to various parts of the back-end.
+	 *
+	 * @param string $element Target element.
+	 *
+	 * @since Pen 1.0.8
+	 * @return string
+	 */
+	function pen_jump_menu( $element ) {
+		/* phpcs:disable */
+		switch ( $element ) {
+			case 'color_schemes':
+
+				$preset_color_current = (int) str_replace( 'preset_', '', pen_preset_get( 'color' ) );
+
+				$items = array();
+				for ( $i = 1; $i <= 15; $i++ ) {
+					$url_customizer = esc_url( add_query_arg( 'url', rawurlencode( pen_filter_input( 'SERVER', 'REQUEST_URI' ) ), wp_customize_url() ) . '&autofocus[panel]=pen_panel_colors&pen_preview_color=' . (int) $i );
+					$items[ $url_customizer ] = sprintf( __( 'Style %d', 'pen' ), $i );
+					if ( $i === $preset_color_current ) {
+						$items[ $url_customizer ] .= sprintf( ' (%s)', __( 'Current', 'pen' ) );
+					}
+				}
+
+				$menu = array(
+					'name'  => __( 'Color Schemes', 'pen' ),
+					'items' => $items,
+				);
+				return $menu;
+
+			case 'font_presets':
+
+				$preset_font_current  = (int) str_replace( 'preset_', '', pen_preset_get( 'font_family' ) );
+
+				$items = array();
+
+				for ( $i = 1; $i <= 10; $i++ ) {
+					$url_customizer = esc_url( add_query_arg( 'url', rawurlencode( pen_filter_input( 'SERVER', 'REQUEST_URI' ) ), wp_customize_url() ) . '&autofocus[panel]=pen_panel_typography&pen_preview_font=' . (int) $i );
+					$items[ $url_customizer ] = sprintf( __( 'Font Preset %d', 'pen' ), $i );
+					if ( $i === $preset_font_current ) {
+						$items[ $url_customizer ] .= sprintf( ' (%s)', __( 'Current', 'pen' ) );
+					}
+				}
+
+				$menu = array(
+					'name'  => __( 'Font Presets', 'pen' ),
+					'items' => $items,
+				);
+				return $menu;
+
+			case 'site':
+				$menu = array(
+					'name'  => __( 'General Settings', 'pen' ),
+					'items' => array(
+						'section,background_image'   => __( '<span>Site </span>Background Image', 'pen' ),
+						'section,colors_general'     => __( 'Colors', 'pen' ),
+						'section,typography_general' => __( 'Typography', 'pen' ),
+						'section,layout'             => __( '<span>Site </span>Layout', 'pen' ),
+					),
+				);
+				if ( is_home() || is_front_page() ) {
+					$menu['items'][ ( 'panel,front' ) ] = __( 'Front Page', 'pen' );
+				}
+				return $menu;
+
+			case 'header':
+				return array(
+					'name'  => __( 'Header', 'pen' ),
+					'items' => array(
+						'section,header_general'    => __( 'General<span> Header Settings</span>', 'pen' ),
+						'section,header_image'      => __( '<span>Header </span>Background Image', 'pen' ),
+						'section,title_tagline'     => __( 'Logo', 'pen' ),
+						'section,header_search'     => __( 'Search', 'pen' ),
+						'section,colors_header'     => __( '<span>Header </span>Colors', 'pen' ),
+						'section,typography_header' => __( '<span>Header </span>Typography', 'pen' ),
+						'panel,contact'             => __( '<span>Site </span>Contacts', 'pen' ),
+					),
+				);
+
+			case 'navigation':
+				return array(
+					'name'  => __( 'Navigation', 'pen' ),
+					'items' => array(
+						'section,header_navigation'           => __( 'General<span> Navigation Settings</span>', 'pen' ),
+						'panel,nav_menus'                     => __( 'Menus', 'pen' ),
+						'section,background_image_navigation' => __( '<span>Navigation </span>Background Image', 'pen' ),
+						'section,colors_navigation'           => __( '<span>Navigation </span>Colors', 'pen' ),
+						'section,typography_navigation'       => __( '<span>Navigation </span>Typography', 'pen' ),
+					),
+				);
+
+			case 'search_bar':
+				return array(
+					'name'  => __( 'Search Bar', 'pen' ),
+					'items' => array(
+						'section,header_search'           => __( 'General<span> Search Settings</span>', 'pen' ),
+						'section,background_image_search' => __( '<span>Search Bar </span>Background Image', 'pen' ),
+						'section,colors_search'           => __( '<span>Search Bar </span>Colors', 'pen' ),
+
+					),
+				);
+
+			case 'content':
+				$menu = array(
+					'name'  => __( 'Content Area', 'pen' ),
+					'items' => array(
+						'section,content'        => __( 'General<span> Content Area Settings</span>', 'pen' ),
+						'section,colors_content' => __( '<span>Content Area </span>Colors', 'pen' ),
+						'section,layout'         => __( '<span>Site </span>Layout', 'pen' ),
+					),
+				);
+				$post_id = get_the_ID();
+				if ( $post_id ) {
+					$url_post_edit = self_admin_url(
+						sprintf(
+							'post.php?post=%d&action=edit',
+							esc_attr( $post_id )
+						)
+					);
+					$menu['items'][ $url_post_edit ] = sprintf(
+						/* Translators: %s: post type. */
+						__( '<span>Edit </span>This %s', 'pen' ),
+						ucwords( get_post_type() )
+					);
+				}
+				return $menu;
+
+			case 'list':
+				return array(
+					'name'  => __( 'List Views', 'pen' ),
+					'items' => array(
+						'section,list'        => __( 'General<span> List Views Settings</span>', 'pen' ),
+						'section,colors_list' => __( '<span>Content List </span>Colors', 'pen' ),
+						'section,layout'      => __( '<span>Site </span>Layout', 'pen' ),
+					),
+				);
+
+			case 'sidebar-header-primary':
+				return array(
+					'name'  => __( 'Header - Primary', 'pen' ),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-header-primary' => sprintf(
+							'<span>%1$s </span>%2$s',
+							__( 'Header - Primary', 'pen' ),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-header-secondary':
+				return array(
+					'name'  => __( 'Header - Secondary', 'pen' ),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-header-secondary' => sprintf(
+							'<span>%1$s </span>%2$s',
+							__( 'Header - Secondary', 'pen' ),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-top':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Widget Area', 'pen' ),
+						__( 'Top', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-top' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Top', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-search-top':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Widget Area', 'pen' ),
+						__( 'Search - Top', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-search-top' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Search - Top', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-search-left':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Widget Area', 'pen' ),
+						__( 'Search - Left', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-search-left' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Search - Left', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-search-right':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Widget Area', 'pen' ),
+						__( 'Search - Right', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-search-right' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Search - Right', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-search-bottom':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Widget Area', 'pen' ),
+						__( 'Search - Bottom', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-search-bottom' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Search - Bottom', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-content-top':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Widget Area', 'pen' ),
+						__( 'Content - Top', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-content-top' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Content - Top', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-content-bottom':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Widget Area', 'pen' ),
+						__( 'Content - Bottom', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-content-bottom' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Content - Bottom', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-left':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Sidebar', 'pen' ),
+						__( 'Left', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-left' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Sidebar', 'pen' ),
+								__( 'Left', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-right':
+				return array(
+					'name'  => sprintf(
+						__( '"%s" Sidebar', 'pen' ),
+						__( 'Right', 'pen' )
+					),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-right' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Sidebar', 'pen' ),
+								__( 'Right', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-bottom':
+				return array(
+					'name'  => __( 'Bottom', 'pen' ),
+					'items' => array(
+						'section,background_image_bottom' => __( '<span>Bottom Widget Area - </span>Background Image', 'pen' ),
+						'section,colors_bottom'           => __( '<span>Bottom Widget Area - </span>Colors', 'pen' ),
+						'section,sidebar-widgets-sidebar-bottom' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Bottom', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-footer-top':
+				return array(
+					'name'  => __( 'Footer - Top', 'pen' ),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-footer-top' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Footer - Top', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-footer-left':
+				return array(
+					'name'  => __( 'Footer - Left', 'pen' ),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-footer-left' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Footer - Left', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-footer-right':
+				return array(
+					'name'  => __( 'Footer - Right', 'pen' ),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-footer-right' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Footer - Right', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'sidebar-footer-bottom':
+				return array(
+					'name'  => __( 'Footer - Bottom', 'pen' ),
+					'items' => array(
+						'section,sidebar-widgets-sidebar-footer-bottom' => sprintf(
+							'<span>%1$s </span>%2$s',
+							sprintf(
+								__( '"%s" Widget Area', 'pen' ),
+								__( 'Footer - Bottom', 'pen' )
+							),
+							__( 'Configure Widgets', 'pen' )
+						),
+					),
+				);
+
+			case 'footer':
+				return array(
+					'name'  => __( 'Footer', 'pen' ),
+					'items' => array(
+						'section,footer'                  => __( 'General<span> - Footer Settings</span>', 'pen' ),
+						'section,background_image_footer' => __( '<span>Footer - </span>Background Image', 'pen' ),
+						'section,colors_footer'           => __( '<span>Footer - </span>Colors', 'pen' ),
+						'section,typography_footer'       => __( '<span>Footer - </span>Typography', 'pen' ),
+						'panel,contact'                   => __( '<span>Site </span>Contacts', 'pen' ),
+					),
+				);
+		}
+
+		/* phpcs:enable */
+	}
+}
+
+if ( ! function_exists( 'pen_post_meta_options' ) ) {
+	/**
+	 * Returns a list of post meta options.
+	 *
+	 * @param string $group Which group of options to return.
+	 *
+	 * @since Pen 1.0.5
+	 * @return array
+	 */
+	function pen_post_meta_options( $group = 'all' ) {
+		/* phpcs:disable */
+		$options_list = array(
+			// Do not reorder alphabetically.
+			'pen_list_post_header_alignment_override'                  => __( 'Center-align content header', 'pen' ),
+			'pen_list_title_alignment_override'                        => __( 'Center-align content title', 'pen' ),
+			'pen_list_title_display_override'                          => __( 'Content title', 'pen' ),
+			'pen_list_animation_reveal_override'                       => __( 'Content animation', 'pen' ),
+			'pen_list_author_display_override'                         => __( 'Content author', 'pen' ),
+			'pen_list_date_display_override'                           => __( 'Content date', 'pen' ),
+			'pen_list_date_location_override'                          => __( 'Content date location', 'pen' ),
+			'pen_list_footer_display_override'                         => __( 'Content footer', 'pen' ),
+			'pen_list_header_display_override'                         => __( 'Content header', 'pen' ),
+			'pen_list_summary_display_override'                        => __( 'Content summary', 'pen' ),
+			'pen_list_tags_display_override'                           => __( 'Content tags', 'pen' ),
+			'pen_list_thumbnail_animation_reveal_override'             => __( 'Content animation', 'pen' ),
+			'pen_list_category_display_override'                       => __( 'Category links', 'pen' ),
+			'pen_list_category_location_override'                      => __( 'Category links location', 'pen' ),
+			'pen_list_profile_display_override'                        => __( 'Author profile', 'pen' ),
+			'pen_list_author_location_override'                        => __( 'Author link location', 'pen' ),
+			'pen_list_share_location_override'                         => __( 'Share buttons location', 'pen' ),
+			'pen_list_background_image_content_title_dynamic_override' => __( 'Featured image as title background', 'pen' ),
+			'pen_list_thumbnail_display_override'                      => __( 'Thumbnail', 'pen' ),
+			'pen_list_thumbnail_alignment_override'                    => __( 'Thumbnail alignment', 'pen' ),
+			'pen_color_list_thumbnail_frame_override'                  => __( 'Thumbnail frame color', 'pen' ),
+			'pen_list_thumbnail_frame_override'                        => __( 'Thumbnail frame', 'pen' ),
+			'pen_list_thumbnail_resize_override'                       => __( 'Thumbnail size', 'pen' ),
+			'pen_list_thumbnail_rotate_override'                       => __( 'Thumbnail rotate', 'pen' ),
+			'pen_list_masonry_thumbnail_style_override'                => __( 'Thumbnail style', 'pen' ),
+			'pen_list_button_comment_display_override'                 => __( 'Comment button', 'pen' ),
+			'pen_list_button_edit_display_override'                    => __( 'Edit button', 'pen' ),
+		);
+
+		$options_content = array(
+			// Do not reorder alphabetically.
+			'pen_site_width_override'                                     => __( 'Site Width', 'pen' ),
+			'pen_content_header_alignment_override'                       => __( 'Center-align content header', 'pen' ),
+			'pen_content_title_alignment_override'                        => __( 'Center-align content title', 'pen' ),
+			'pen_content_title_display_override'                          => __( 'Content title', 'pen' ),
+			'pen_content_animation_reveal_override'                       => __( 'Content area animation', 'pen' ),
+			'pen_content_author_display_override'                         => __( 'Content author', 'pen' ),
+			'pen_content_date_display_override'                           => __( 'Content date', 'pen' ),
+			'pen_content_date_location_override'                          => __( 'Content date location', 'pen' ),
+			'pen_content_footer_display_override'                         => __( 'Content footer', 'pen' ),
+			'pen_content_header_display_override'                         => __( 'Content header', 'pen' ),
+			'pen_content_tags_display_override'                           => __( 'Content tags', 'pen' ),
+			'pen_content_profile_display_override'                        => __( 'Author profile', 'pen' ),
+			'pen_content_author_location_override'                        => __( 'Author link location', 'pen' ),
+			'pen_content_share_display_override'                          => __( 'Share buttons', 'pen' ),
+			'pen_content_share_location_override'                         => __( 'Share buttons location', 'pen' ),
+			'pen_content_category_display_override'                       => __( 'Category links', 'pen' ),
+			'pen_content_category_location_override'                      => __( 'Category links location', 'pen' ),
+			'pen_content_search_display_override'                         => __( 'Search box', 'pen' ),
+			'pen_content_search_location_override'                        => __( 'Search box location', 'pen' ),
+			'pen_content_background_image_content_title_dynamic_override' => __( 'Featured image as title background', 'pen' ),
+			'pen_content_thumbnail_display_override'                      => __( 'Thumbnail', 'pen' ),
+			'pen_color_content_thumbnail_frame_override'                  => __( 'Thumbnail frame color', 'pen' ),
+			'pen_content_thumbnail_alignment_override'                    => __( 'Thumbnail alignment', 'pen' ),
+			'pen_content_thumbnail_animation_reveal_override'             => __( 'Thumbnail animation', 'pen' ),
+			'pen_content_thumbnail_frame_override'                        => __( 'Thumbnail frame', 'pen' ),
+			'pen_content_thumbnail_resize_override'                       => __( 'Thumbnail size', 'pen' ),
+			'pen_content_thumbnail_rotate_override'                       => __( 'Thumbnail rotate', 'pen' ),
+		);
+
+		$options_sidebar = array(
+			'pen_sidebar_header_primary_display'   => __( 'Header - Primary', 'pen' ),
+			'pen_sidebar_header_secondary_display' => __( 'Header - Secondary', 'pen' ),
+			'pen_sidebar_search_top_display'       => __( 'Search - Top', 'pen' ),
+			'pen_sidebar_search_left_display'      => __( 'Search - Left', 'pen' ),
+			'pen_sidebar_search_right_display'     => __( 'Search - Right', 'pen' ),
+			'pen_sidebar_search_bottom_display'    => __( 'Search - Bottom', 'pen' ),
+			'pen_sidebar_top_display'              => __( 'Top', 'pen' ),
+			'pen_sidebar_left_display'             => __( 'Left', 'pen' ),
+			'pen_sidebar_right_display'            => __( 'Right', 'pen' ),
+			'pen_sidebar_content_top_display'      => __( 'Content - Top', 'pen' ),
+			'pen_sidebar_content_bottom_display'   => __( 'Content - Bottom', 'pen' ),
+			'pen_sidebar_bottom_display'           => __( 'Bottom', 'pen' ),
+			'pen_sidebar_footer_top_display'       => __( 'Footer - Top', 'pen' ),
+			'pen_sidebar_footer_left_display'      => __( 'Footer - Left', 'pen' ),
+			'pen_sidebar_footer_right_display'     => __( 'Footer - Right', 'pen' ),
+			'pen_sidebar_footer_bottom_display'    => __( 'Footer - Bottom', 'pen' ),
+		);
+		/* phpcs:enable */
+
+		if ( ! $group || 'all' === $group ) {
+			return array_merge( $options_list, $options_content, $options_sidebar );
+		}
+
+		if ( 'list' === $group ) {
+			return $options_list;
+		}
+
+		if ( 'content' === $group ) {
+			return $options_content;
+		}
+
+		if ( 'sidebar' === $group ) {
+			return $options_sidebar;
+		}
+
+	}
+}

+ 1078 - 0
include/html.php

@@ -0,0 +1,1078 @@
+<?php
+/**
+ * Template functions.
+ *
+ * @package Pen
+ */
+
+if ( ! function_exists( 'pen_html_logo' ) ) {
+	/**
+	 * Displays the custom logo.
+	 *
+	 * Does nothing if the custom logo is not available.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_html_logo() {
+		if ( function_exists( 'get_custom_logo' ) && pen_option_get( 'header_logo_display' ) ) {
+			$logo = trim( get_custom_logo() );
+			if ( $logo ) {
+				return sprintf(
+					'<div class="pen_logo %1$s">%2$s</div>',
+					pen_class_animation( 'header_logo', false ),
+					$logo
+				);
+			}
+		}
+		return '';
+	}
+}
+
+if ( ! function_exists( 'pen_html_connect' ) ) {
+	/**
+	 * Generates markup for the social network links.
+	 *
+	 * @param string $location The location of the social network links (for now it can be header or footer).
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_html_connect( $location ) {
+		ob_start( 'pen_compress_html' );
+		$rss_display = pen_option_get( 'rss_' . $location . '_display' );
+		$rss_url     = pen_option_get( 'rss' );
+		if ( $rss_url && $rss_display ) {
+			$rss_url = explode( '|', $rss_url );
+			foreach ( $rss_url as $rss_url ) {
+				?>
+				<li class="pen_rss" title="<?php esc_attr_e( 'Subscribe the RSS', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $rss_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'RSS', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$email_display = pen_option_get( 'email_' . $location . '_display' );
+		$email         = pen_option_get( 'email' );
+		if ( $email && $email_display ) {
+			$email = explode( '|', $email );
+			foreach ( $email as $email ) {
+				if ( false !== strpos( $email, '@' ) ) {
+					$email = 'mailto:' . antispambot( $email );
+				}
+				?>
+				<li class="pen_email" title="<?php esc_attr_e( 'E-mail', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $email ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'E-mail', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$facebook_display = pen_option_get( 'facebook_' . $location . '_display' );
+		$facebook_url     = pen_option_get( 'facebook' );
+		if ( $facebook_url && $facebook_display ) {
+			$facebook_url = explode( '|', $facebook_url );
+			foreach ( $facebook_url as $facebook_url ) {
+				?>
+				<li class="pen_facebook" title="<?php esc_attr_e( 'Facebook', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $facebook_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Facebook', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$instagram_display = pen_option_get( 'instagram_' . $location . '_display' );
+		$instagram_url     = pen_option_get( 'instagram' );
+		if ( $instagram_url && $instagram_display ) {
+			$instagram_url = explode( '|', $instagram_url );
+			foreach ( $instagram_url as $instagram_url ) {
+				?>
+				<li class="pen_instagram" title="<?php esc_attr_e( 'Instagram', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $instagram_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Instagram', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$vk_display = pen_option_get( 'vk_' . $location . '_display' );
+		$vk_url     = pen_option_get( 'vk' );
+		if ( $vk_url && $vk_display ) {
+			$vk_url = explode( '|', $vk_url );
+			foreach ( $vk_url as $vk_url ) {
+				?>
+				<li class="pen_vk" title="<?php esc_attr_e( 'VK', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $vk_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'VK', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$pinterest_display = pen_option_get( 'pinterest_' . $location . '_display' );
+		$pinterest_url     = pen_option_get( 'pinterest' );
+		if ( $pinterest_url && $pinterest_display ) {
+			$pinterest_url = explode( '|', $pinterest_url );
+			foreach ( $pinterest_url as $pinterest_url ) {
+				?>
+				<li class="pen_pinterest" title="<?php esc_attr_e( 'Pinterest', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $pinterest_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Pinterest', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$twitter_display = pen_option_get( 'twitter_' . $location . '_display' );
+		$twitter_url     = pen_option_get( 'twitter' );
+		if ( $twitter_url && $twitter_display ) {
+			$twitter_url = explode( '|', $twitter_url );
+			foreach ( $twitter_url as $twitter_url ) {
+				?>
+				<li class="pen_twitter" title="<?php esc_attr_e( 'Twitter', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $twitter_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Twitter', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$linkedin_display = pen_option_get( 'linkedin_' . $location . '_display' );
+		$linkedin_url     = pen_option_get( 'linkedin' );
+		if ( $linkedin_url && $linkedin_display ) {
+			$linkedin_url = explode( '|', $linkedin_url );
+			foreach ( $linkedin_url as $linkedin_url ) {
+				?>
+				<li class="pen_linkedin" title="<?php esc_attr_e( 'LinkedIn', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $linkedin_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'LinkedIn', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$bitbucket_display = pen_option_get( 'bitbucket_' . $location . '_display' );
+		$bitbucket_url     = pen_option_get( 'bitbucket' );
+		if ( $bitbucket_url && $bitbucket_display ) {
+			$bitbucket_url = explode( '|', $bitbucket_url );
+			foreach ( $bitbucket_url as $bitbucket_url ) {
+				?>
+				<li class="pen_bitbucket" title="<?php esc_attr_e( 'BitBucket', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $bitbucket_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'BitBucket', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$flickr_display = pen_option_get( 'flickr_' . $location . '_display' );
+		$flickr_url     = pen_option_get( 'flickr' );
+		if ( $flickr_url && $flickr_display ) {
+			$flickr_url = explode( '|', $flickr_url );
+			foreach ( $flickr_url as $flickr_url ) {
+				?>
+				<li class="pen_flickr" title="<?php esc_attr_e( 'Flickr', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $flickr_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Flickr', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$github_display = pen_option_get( 'github_' . $location . '_display' );
+		$github_url     = pen_option_get( 'github' );
+		if ( $github_url && $github_display ) {
+			$github_url = explode( '|', $github_url );
+			foreach ( $github_url as $github_url ) {
+				?>
+				<li class="pen_github" title="<?php esc_attr_e( 'Github', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $github_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Github', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$telegram_display = pen_option_get( 'telegram_' . $location . '_display' );
+		$telegram_url     = pen_option_get( 'telegram' );
+		if ( $telegram_url && $telegram_display ) {
+			$telegram_url = explode( '|', $telegram_url );
+			foreach ( $telegram_url as $telegram_url ) {
+				?>
+				<li class="pen_telegram" title="<?php esc_attr_e( 'Telegram', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $telegram_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Telegram', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$whatsapp_display = pen_option_get( 'whatsapp_' . $location . '_display' );
+		$whatsapp_url     = pen_option_get( 'whatsapp' );
+		if ( $whatsapp_url && $whatsapp_display ) {
+			$whatsapp_url = explode( '|', $whatsapp_url );
+			foreach ( $whatsapp_url as $whatsapp_url ) {
+				?>
+				<li class="pen_whatsapp" title="<?php esc_attr_e( 'WhatsApp', 'pen' ); ?>">
+					<a href="<?php echo esc_attr( $whatsapp_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'WhatsApp', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$skype_display = pen_option_get( 'skype_' . $location . '_display' );
+		$skype_url     = pen_option_get( 'skype' );
+		if ( $skype_url && $skype_display ) {
+			$skype_url = explode( '|', $skype_url );
+			foreach ( $skype_url as $skype_url ) {
+				?>
+				<li class="pen_skype" title="<?php esc_attr_e( 'Skype', 'pen' ); ?>">
+					<a href="<?php echo esc_attr( $skype_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Skype', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$slack_display = pen_option_get( 'slack_' . $location . '_display' );
+		$slack_url     = pen_option_get( 'slack' );
+		if ( $slack_url && $slack_display ) {
+			$slack_url = explode( '|', $slack_url );
+			foreach ( $slack_url as $slack_url ) {
+				?>
+				<li class="pen_slack" title="<?php esc_attr_e( 'Slack', 'pen' ); ?>">
+					<a href="<?php echo esc_url( $slack_url ); ?>">
+						<span class="screen-reader-text">
+				<?php
+				esc_html_e( 'Slack', 'pen' );
+				?>
+						</span>
+					</a>
+				</li>
+				<?php
+			}
+		}
+		$output = ob_get_clean();
+		if ( $output ) {
+			return '<div class="pen_social_networks pen_animate_on_scroll pen_custom_animation_fadeIn"><ul>' . $output . '</ul></div><!-- .pen_social_networks -->';
+		}
+		return false;
+	}
+}
+
+if ( ! function_exists( 'pen_html_search_box' ) ) {
+	/**
+	 * Generates markup for the search box.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_html_search_box() {
+		$search_display = get_post_meta( get_the_ID(), 'pen_content_search_display_override', true );
+		if ( ! $search_display || 'default' === $search_display ) {
+			$search_display = pen_option_get( 'search_display' );
+		}
+		if ( $search_display && 'no' !== $search_display ) {
+			return trim( get_search_form( false ) );
+		}
+		return false;
+	}
+}
+
+if ( ! function_exists( 'pen_html_navigation_fallback' ) ) {
+	/**
+	 * Fallback navigation menu.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_html_navigation_fallback() {
+		if ( current_user_can( 'edit_theme_options' ) ) {
+			?>
+	<nav id="pen_navigation" class="<?php echo esc_attr( pen_class_navigation() ); ?>" role="navigation" title="<?php esc_html_e( 'This is a shortcut link for users with theme customization permission, invisible for the rest.', 'pen' ); ?>" aria-label="<?php esc_attr_e( 'Header Menu', 'pen' ); ?>">
+		<div class="pen_container <?php pen_class_animation( 'navigation' ); /* phpcs:ignore */ ?>">
+			<ul id="primary-menu" class="menu">
+				<li class="pen_menu_create">
+			<?php
+			if ( is_customize_preview() ) {
+				$url        = '#';
+				$attributes = ' class="pen_customizer_shortcut" data-type="panel" data-target="nav_menus"';
+			} else {
+				$url        = esc_url( self_admin_url( 'nav-menus.php' ) );
+				$attributes = '';
+			}
+			printf(
+				'<a href="%1$s"%2$s>%3$s</a>',
+				esc_attr( $url ),
+				$attributes, /* phpcs:ignore */
+				esc_html__( 'Create a menu?', 'pen' )
+			);
+			?>
+				</li>
+			</ul>
+		</div>
+			<?php
+			pen_html_jump_menu( 'navigation' );
+			?>
+	</nav>
+			<?php
+		}
+	}
+}
+
+if ( ! function_exists( 'pen_html_footer_menu_fallback' ) ) {
+	/**
+	 * Fallback footer menu.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_html_footer_menu_fallback() {
+		if ( current_user_can( 'edit_theme_options' ) ) {
+			?>
+	<nav id="pen_footer_menu" role="navigation" class="<?php pen_class_animation( 'footer_menu' ); /* phpcs:ignore */ ?>" title="<?php esc_html_e( 'This is a shortcut link for users with theme customization permission, invisible for the rest.', 'pen' ); ?>" aria-label="<?php esc_attr_e( 'Footer Menu', 'pen' ); ?>">
+		<ul id="secondary-menu" class="menu">
+			<li class="pen_menu_create">
+			<?php
+			if ( is_customize_preview() ) {
+				$url        = '#';
+				$attributes = ' class="pen_customizer_shortcut" data-type="panel" data-target="nav_menus"';
+			} else {
+				$url        = esc_url( self_admin_url( 'nav-menus.php' ) );
+				$attributes = '';
+			}
+			printf(
+				'<a href="%1$s"%2$s>%3$s</a>',
+				esc_attr( $url ),
+				$attributes, /* phpcs:ignore */
+				esc_html__( 'Create a menu?', 'pen' )
+			);
+			?>
+			</li>
+		</ul>
+	</nav>
+			<?php
+		}
+	}
+}
+
+if ( ! function_exists( 'pen_html_content_information' ) ) {
+	/**
+	 * Prints HTML with meta information for the current post-date/time and author.
+	 *
+	 * @param string $location The selected location for the element.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_html_content_information( $location ) {
+		if ( 'post' !== get_post_type() ) {
+			return;
+		}
+
+		if ( ! in_array( (string) $location, array( 'header', 'footer' ), true ) ) {
+			$location = 'header';
+		}
+
+		$view    = is_singular() ? 'content' : 'list';
+		$post_id = get_the_ID();
+
+		// Hide category for pages.
+		$categories_list   = '';
+		$category_location = get_post_meta( $post_id, 'pen_' . $view . '_category_location_override', true );
+		if ( ! $category_location || 'default' === $category_location ) {
+			$category_location = pen_option_get( $view . '_category_location' );
+		}
+
+		if ( $location === $category_location || ( ! $category_location && 'header' === $location ) ) {
+			/* Translators: used between list items, there is a space after the comma */
+			$categories_list = get_the_category_list( '||' );
+			if ( pen_option_get( 'pen_' . $view . '_category_only_first' ) && false !== strpos( $categories_list, '||' ) ) {
+				$categories_list = explode( '||', $categories_list );
+				$categories_list = $categories_list[0];
+			}
+			$categories_list = str_replace( '||', _x( ', ', 'Separates category links.', 'pen' ), $categories_list );
+			if ( $categories_list ) {
+				$categories_list = sprintf(
+					'<span class="cat-links%1$s"><span class="screen-reader-text">%2$s</span>%3$s</span>',
+					pen_class_lists( 'category_display_override' ),
+					__( 'Categories:', 'pen' ),
+					$categories_list
+				); /* phpcs:ignore */
+			}
+		}
+
+		$posted_on     = '';
+		$date_location = get_post_meta( $post_id, 'pen_' . $view . '_date_location_override', true );
+		if ( ! $date_location || 'default' === $date_location ) {
+			$date_location = pen_option_get( $view . '_date_location' );
+		}
+
+		if ( $location === $date_location || ( ! $date_location && 'header' === $location ) ) {
+			$time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
+			if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
+				$time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
+			}
+			$time_string = sprintf(
+				$time_string,
+				esc_attr( get_the_date( 'DATE_W3C' ) ),
+				esc_html( get_the_date() ),
+				esc_attr( get_the_modified_date( 'DATE_W3C' ) ),
+				esc_html( get_the_modified_date() )
+			);
+
+			$posted_on = sprintf(
+				/* Translators: %s: Post date. */
+				esc_html_x( 'Posted on %s', 'post date', 'pen' ),
+				'<a href="' . esc_url( get_permalink() ) . '" rel="bookmark">' . $time_string . '</a>'
+			);
+			$posted_on = sprintf(
+				'<span class="posted-on%1$s">%2$s</span>',
+				pen_class_lists( 'date_display_override' ),
+				$posted_on
+			);
+		}
+
+		$byline          = '';
+		$author_location = get_post_meta( get_the_ID(), 'pen_' . $view . '_author_location_override', true );
+		if ( ! $author_location || 'default' === $author_location ) {
+			$author_location = pen_option_get( $view . '_author_location' );
+		}
+		if ( $location === $author_location || ( ! $author_location && 'header' === $location ) ) {
+			$byline = sprintf(
+				// Translators: %s: Post author's name.
+				esc_html_x( 'by %s', 'post author', 'pen' ),
+				'<span class="author vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '">' . esc_html( get_the_author() ) . '</a></span>'
+			);
+			$byline = sprintf(
+				'<span class="byline%1$s"> %2$s</span>',
+				pen_class_lists( 'author_display_override' ),
+				$byline
+			);
+		}
+
+		$output = trim( $posted_on . $byline . $categories_list );
+
+		$classes = trim(
+			implode(
+				' ',
+				array(
+					'entry-meta',
+					is_singular() ? 'pen_animate_on_scroll pen_custom_animation_fadeIn' : '',
+				)
+			)
+		);
+
+		if ( '' !== trim( $output ) ) {
+			return '<div class="' . $classes . '">' . $output . '</div>';
+		}
+
+	}
+}
+
+if ( ! function_exists( 'pen_html_author' ) ) {
+	/**
+	 * Generates author profile.
+	 *
+	 * @param array $variables Profile parameteres.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_html_author( $variables = array() ) {
+		$view    = is_singular() ? 'content' : 'list';
+		$display = get_post_meta( get_the_ID(), 'pen_' . $view . '_profile_display_override', true );
+		if ( ! $display || 'default' === $display ) {
+			$display = pen_option_get( $view . '_profile_display' );
+		}
+		if ( ! $display ) {
+			return;
+		}
+		$avatar   = get_avatar( get_the_author_meta( 'email' ), '90' );
+		$user_url = get_the_author_meta( 'user_url' );
+		$add_link = ( $user_url && ( ! isset( $variables['add_url'] ) || $variables['add_url'] ) ) ? true : false;
+
+		$classes = trim(
+			implode(
+				' ',
+				array(
+					'pen_author_profile',
+					pen_class_animation( ( is_singular() ? 'content' : 'list' ) . '_author', false ),
+					$avatar ? 'pen_has_avatar' : '',
+				)
+			)
+		);
+		?>
+	<div class="<?php echo esc_attr( $classes ); ?>">
+		<?php
+		if ( $avatar && ( ! isset( $variables['add_avatar'] ) || $variables['add_avatar'] ) ) {
+			?>
+		<div class="pen_author_avatar">
+			<?php
+			if ( $add_link ) {
+				?>
+			<a href="<?php echo esc_url( $user_url ); ?>">
+				<?php
+			}
+
+			echo $avatar; /* phpcs:ignore */
+
+			if ( $add_link ) {
+				?>
+			</a>
+				<?php
+			}
+			?>
+		</div>
+			<?php
+		}
+
+		$description = wp_kses( get_the_author_meta( 'description' ), wp_kses_allowed_html( 'post' ) );
+		$classes     = trim(
+			implode(
+				' ',
+				array(
+					'pen_author_about',
+					( ! $description ) ? 'pen_no_description' : '',
+				)
+			)
+		);
+		?>
+		<div class="<?php echo esc_attr( $classes ); ?>">
+			<h3>
+		<?php
+		the_author_link();
+		?>
+			</h3>
+		<?php
+		ob_start( 'trim' );
+		if ( $user_url && ( ! isset( $variables['add_url'] ) || $variables['add_url'] ) ) {
+			$site_name = wp_parse_url( $user_url );
+			if ( isset( $site_name['host'] ) ) {
+				$site_name = $site_name['host'];
+			} else {
+				$site_name = $user_url;
+			}
+			?>
+			<a href="<?php echo esc_url( $user_url ); ?>" class="pen_author_url">
+			<?php
+			echo esc_html( $site_name );
+			?>
+			</a>
+			<?php
+		}
+
+		if ( $description ) {
+			?>
+			<p>
+			<?php
+			echo $description; /* phpcs:ignore */
+			?>
+			</p>
+			<?php
+		}
+
+		$about = ob_get_clean();
+		if ( $about ) {
+			?>
+			<div>
+			<?php
+			echo $about; /* phpcs:ignore */
+			?>
+			</div>
+			<?php
+		}
+		?>
+		</div>
+	</div>
+		<?php
+	}
+}
+
+if ( ! function_exists( 'pen_html_share' ) ) {
+	/**
+	 * Social sharing buttons.
+	 *
+	 * @global $post
+	 * @param string $location The selected location.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_html_share( $location ) {
+
+		ob_start( 'pen_compress_html' );
+
+		if ( ! is_singular() ) {
+			return;
+		}
+		if ( ! in_array( (string) $location, array( 'header', 'content', 'footer' ), true ) ) {
+			$location = 'header';
+		}
+		$share_location = get_post_meta( get_the_ID(), 'pen_content_share_location_override', true );
+		if ( ! $share_location || 'default' === $share_location ) {
+			$share_location = pen_option_get( 'content_share_location' );
+		}
+		if ( $share_location !== $location ) {
+			return;
+		}
+
+		$display = get_post_meta( get_the_ID(), 'pen_content_share_display_override', true );
+		if ( ! $display || 'default' === $display ) {
+			$display = pen_option_get( 'content_share_display' );
+		}
+		if ( ! $display || 'no' === $display ) {
+			return;
+		}
+
+		global $post;
+
+		$url   = rawurlencode( esc_url( get_permalink( $post->ID ) ) );
+		$title = rawurlencode( $post->post_title );
+
+		$facebook_url = sprintf( 'https://www.facebook.com/sharer/sharer.php?u=%1$s', $url );
+		$twitter_url  = sprintf( 'https://twitter.com/intent/tweet?text=%2$s&url=%1$s', $url, $title );
+		?>
+		<div class="pen_share">
+			<h4>
+		<?php
+		esc_html_e( 'Share this!', 'pen' );
+		?>
+			</h4>
+			<ul>
+				<li class="pen_facebook">
+					<a href="<?php echo esc_url( $facebook_url ); ?>" title="<?php esc_attr_e( 'Share on Facebook', 'pen' ); ?>" target="_blank" class="pen_button pen_button_share">
+						<span>
+		<?php
+		esc_html_e( 'Facebook', 'pen' );
+		?>
+						</span>
+					</a>
+				</li>
+				<li class="pen_twitter">
+					<a href="<?php echo esc_url( $twitter_url ); ?>" title="<?php esc_attr_e( 'Share on Twitter', 'pen' ); ?>" target="_blank" class="pen_button pen_button_share">
+						<span>
+		<?php
+		esc_html_e( 'Twitter', 'pen' );
+		?>
+						</span>
+					</a>
+				</li>
+			</ul>
+		</div><!-- .pen_share -->
+		<?php
+		return ob_get_clean();
+	}
+}
+
+if ( ! function_exists( 'pen_html_configuration_overview' ) ) {
+	/**
+	 * Displays an overview of the post meta settings.
+	 *
+	 * @param integer $post_id The post ID.
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_html_configuration_overview( $post_id = false ) {
+		if ( ! current_user_can( 'edit_posts' ) ) {
+			return;
+		}
+
+		if ( ! $post_id ) {
+			$post_id = get_the_ID();
+		}
+
+		ob_start( 'pen_compress_html' );
+		$overview_list     = array();
+		$overview_content  = array();
+		$overview_sidebars = array();
+		$customize_display = false;
+		$edit_post_display = false;
+
+		$options_list = pen_post_meta_options( 'list' );
+
+		foreach ( $options_list as $option => $label ) {
+			$value = get_post_meta( $post_id, $option, true );
+			if ( $value && 'default' !== $value ) {
+				$edit_post_display        = true;
+				$overview_list[ $option ] = array(
+					'status' => ( 'no' === $value ) ? 'disabled' : 'enabled',
+					'label'  => $label,
+					'value'  => $value,
+					'help'   => __( 'You can change this by editing this post.', 'pen' ),
+				);
+			}
+		}
+
+		$options_content = pen_post_meta_options( 'content' );
+
+		foreach ( $options_content as $option => $label ) {
+			$value = get_post_meta( $post_id, $option, true );
+			if ( $value && 'default' !== $value ) {
+				$edit_post_display           = true;
+				$overview_content[ $option ] = array(
+					'status' => ( 'no' === $value ) ? 'disabled' : 'enabled',
+					'label'  => $label,
+					'value'  => $value,
+					'help'   => __( 'You can change this by editing this post.', 'pen' ),
+				);
+			}
+		}
+
+		$options_sidebars = pen_post_meta_options( 'sidebar' );
+
+		foreach ( $options_sidebars as $sidebar => $name ) {
+			if ( ( is_home() || is_front_page() ) && is_singular() ) {
+				if ( pen_option_get( str_replace( 'pen_', 'pen_front_', $sidebar ) ) ) {
+					$customize_display             = true;
+					$overview_sidebars[ $sidebar ] = array(
+						'status' => 'disabled',
+						'label'  => sprintf(
+							/* Translators: %s: Sidebar name. */
+							esc_html__( '%s if on home:', 'pen' ),
+							$name
+						),
+						'value'  => __( 'Hidden', 'pen' ),
+						'help'   => __( 'You can change this through Appearance &rarr; Customize &rarr; Front page &rarr; Sidebars.', 'pen' ),
+					);
+				}
+			}
+			if ( get_post_meta( $post_id, $sidebar, true ) ) {
+				$edit_post_display             = true;
+				$overview_sidebars[ $sidebar ] = array(
+					'status' => 'disabled',
+					'label'  => sprintf(
+						/* Translators: %s: Sidebar name. */
+						__( '%s:', 'pen' ),
+						ucfirst( str_replace( array( 'pen_sidebar_', '_display', '_' ), array( '', '', ' ' ), $sidebar ) )
+					),
+					'value'  => __( 'Hidden', 'pen' ),
+					'help'   => __( 'You can change this by editing this post.', 'pen' ),
+				);
+			}
+		}
+		if ( empty( $overview_list ) && empty( $overview_content ) && empty( $overview_sidebars ) ) {
+			ob_end_clean();
+			return;
+		}
+		?>
+		<div class="pen_options_overview" id="pen_post_overview_<?php echo esc_attr( $post_id ); ?>">
+			<h3>
+			<?php
+			esc_html_e( 'Content settings', 'pen' );
+			?>
+			</h3>
+			<table>
+		<?php
+		if ( ! empty( $overview_list ) ) {
+			?>
+				<tr>
+					<th scope="col" colspan="2">
+			<?php
+			esc_html_e( 'List views', 'pen' );
+			?>
+					</th>
+				</tr>
+			<?php
+			foreach ( $overview_list as $item ) {
+				?>
+				<tr class="pen_option_<?php echo esc_attr( $item['status'] ); ?>" title="<?php echo esc_attr( $item['help'] ); ?>">
+				<?php
+				$value = $item['value'];
+				if ( '#000000' === $value ) {
+					$value = __( 'Dark', 'pen' );
+				} elseif ( '#ffffff' === $value ) {
+					$value = __( 'Light', 'pen' );
+				}
+				?>
+					<td class="pen_overview_item">
+				<?php
+				echo esc_html( $item['label'] );
+				?>
+					</td>
+					<td class="pen_overview_value">
+				<?php
+				echo esc_html( $value );
+				?>
+					</td>
+				</tr>
+				<?php
+			}
+		}
+
+		if ( $overview_content || $overview_sidebars ) {
+			?>
+				<tr>
+					<th scope="col" colspan="2">
+			<?php
+			esc_html_e( 'Full content view', 'pen' );
+			?>
+					</th>
+				</tr>
+			<?php
+			foreach ( $overview_content as $item ) {
+				?>
+				<tr class="pen_option_<?php echo esc_attr( $item['status'] ); ?>" title="<?php echo esc_attr( $item['help'] ); ?>">
+				<?php
+				$value = $item['value'];
+				if ( '#000000' === $value ) {
+					$value = __( 'Dark', 'pen' );
+				} elseif ( '#ffffff' === $value ) {
+					$value = __( 'Light', 'pen' );
+				}
+				?>
+					<td class="pen_overview_item">
+				<?php
+				echo esc_html( $item['label'] );
+				?>
+					</td>
+					<td class="pen_overview_value">
+				<?php
+				echo esc_html( $value );
+				?>
+					</td>
+				</tr>
+				<?php
+			}
+		}
+
+		foreach ( $overview_sidebars as $item ) {
+			?>
+			<tr class="pen_option_<?php echo esc_attr( $item['status'] ); ?>" title="<?php echo esc_attr( $item['help'] ); ?>">
+				<td class="pen_overview_item">
+			<?php
+			echo esc_html(
+				sprintf(
+					/* Translators: %s: sidebar name. */
+					__( '"%s" Area', 'pen' ),
+					esc_html( $item['label'] )
+				)
+			);
+			?>
+				</td>
+				<td class="pen_overview_value">
+			<?php
+			echo esc_html( $item['value'] );
+			?>
+				</td>
+			</tr>
+			<?php
+		}
+		?>
+		</table>
+		<?php
+		if ( $edit_post_display ) {
+			?>
+		<a href="<?php echo esc_url( get_edit_post_link( get_the_ID() ) ); ?>" class="pen_button">
+			<?php
+			echo esc_html(
+				sprintf(
+					/* Translators: %s: content type, such as "Page", or "Post". */
+					__( 'Edit this %s', 'pen' ),
+					get_post_type()
+				)
+			);
+			?>
+		</a>
+			<?php
+		}
+
+		if ( $customize_display ) {
+			?>
+		<a href="<?php echo add_query_arg( 'url', rawurlencode( pen_filter_input( 'SERVER', 'REQUEST_URI' ) ), wp_customize_url() ); /* phpcs:ignore */ ?>" class="pen_button">
+			<?php
+			esc_html_e( 'Edit defaults', 'pen' );
+			?>
+		</a>
+			<?php
+		}
+		?>
+	</div>
+		<?php
+		return ob_get_clean();
+	}
+}
+
+if ( ! function_exists( 'pen_html_jump_menu' ) ) {
+	/**
+	 * Jump menus for easier access to various parts of the backend.
+	 *
+	 * @param string $element Layout section or template part.
+	 *
+	 * @since Pen 1.0.8
+	 * @return void
+	 */
+	function pen_html_jump_menu( $element ) {
+		if ( ! current_user_can( 'edit_theme_options' ) ) {
+			return;
+		}
+		$menu = pen_jump_menu( $element );
+		// This menu has to be hidden when JavaScript is disabled (too many links) unless it's a screen-reader.
+		?>
+		<div id="pen_jump_menu_<?php echo esc_attr( $element ); ?>" class="pen_jump_menu clearfix screen-reader-text">
+			<div class="pen_menu_wrapper clearfix screen-reader-text">
+				<h4>
+		<?php
+		printf(
+			wp_kses(
+				/* Translators: %s: layout section name, like Footer, Header, etc. */
+				__( 'Customize <span>%s</span>', 'pen' ),
+				wp_kses_allowed_html( 'post' )
+			),
+			esc_html( $menu['name'] )
+		);
+		?>
+				</h4>
+				<ul>
+		<?php
+		foreach ( $menu['items'] as $target => $label ) {
+			?>
+					<li>
+			<?php
+			if ( filter_var( $target, FILTER_VALIDATE_URL ) ) {
+				$url = esc_url( $target );
+
+				printf(
+					'<a href="%1$s">%2$s</a>',
+					esc_attr( $url ), // No need to esc_url.
+					wp_kses( $label, wp_kses_allowed_html( 'post' ) )
+				);
+
+			} else {
+				$url = pen_url_customizer( $target );
+
+				list( $container_type, $container_name ) = explode( ',', $target );
+
+				$generic = array(
+					'background_image',
+					'header_image',
+					'nav_menus',
+					'title_tagline',
+					'widgets',
+				);
+				if ( ! in_array( $container_name, $generic, true ) && false === strpos( $container_name, 'sidebar-widgets-' ) ) {
+					$container_name = 'pen_' . $container_type . '_' . $container_name;
+				}
+
+				printf(
+					'<a href="%1$s" class="pen_customizer_shortcut"%2$s>%3$s</a>',
+					esc_attr( $url ), // No need to esc_url.
+					sprintf(
+						' data-type="%1$s" data-target="%2$s"',
+						esc_attr( $container_type ),
+						esc_attr( $container_name )
+					),
+					wp_kses( $label, wp_kses_allowed_html( 'post' ) )
+				);
+
+			}
+			?>
+					</li>
+			<?php
+		}
+			?>
+				</ul>
+			</div>
+		</div>
+		<?php
+	}
+}
+
+if ( ! function_exists( 'pen_html_pagination_content' ) ) {
+	/**
+	 * Inline content pagination.
+	 *
+	 * @since Pen 1.4.3
+	 * @return void
+	 */
+	function pen_html_pagination_content() {
+		ob_start( 'pen_compress_html' );
+		if ( function_exists( 'wp_pagenavi' ) ) {
+			wp_pagenavi(
+				array(
+					'type' => 'multipart',
+				)
+			);
+		} else {
+			wp_link_pages(
+				array(
+					'before'         => sprintf(
+						'<div class="page-links %1$s"><span class="screen-reader-text">%2$s</span>',
+						pen_class_animation( 'content_pager', false ),
+						esc_html__( 'Pages:', 'pen' )
+					),
+					'after'          => '</div>',
+					'next_or_number' => 'next',
+				)
+			);
+		}
+		$pagination = ob_get_clean();
+		if ( $pagination ) {
+			printf(
+				'<div class="pen_content_pagination">%s</div>',
+				$pagination /* phpcs:ignore */
+			);
+		}
+	}
+}

+ 0 - 0
include/index.html


+ 302 - 0
include/sanitize.php

@@ -0,0 +1,302 @@
+<?php
+/**
+ * Sanitization functions.
+ *
+ * @package Pen
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+if ( ! function_exists( 'pen_sanitize_integer' ) ) {
+	/**
+	 * Sanitizes numbers.
+	 *
+	 * @param string $input The input integer.
+	 *
+	 * @since Pen 1.0.0
+	 * @return integer
+	 */
+	function pen_sanitize_integer( $input ) {
+		return (int) $input;
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_string' ) ) {
+	/**
+	 * Sanitizes strings.
+	 *
+	 * @param string $input The input string.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_string( $input ) {
+		return wp_kses( $input, wp_kses_allowed_html( 'post' ) );
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_url' ) ) {
+	/**
+	 * Sanitizes URLs.
+	 *
+	 * @param string $input The input URL.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_url( $input ) {
+		return esc_url( $input );
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_boolean' ) ) {
+	/**
+	 * Sanitizes booleans.
+	 *
+	 * @param boolean $input The input boolean.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_boolean( $input ) {
+		if ( is_bool( $input ) || in_array( (int) $input, array( 0, 1 ), true ) ) {
+			return $input;
+		}
+		return false;
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_color' ) ) {
+	/**
+	 * Sanitizes HEX and RGBA colors.
+	 *
+	 * @param string $input The color code.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_color( $input ) {
+		$input = str_replace( array( '#', ' ' ), '', strtolower( trim( $input ) ) );
+		if ( 3 === strlen( $input ) ) {
+			$input = $input . $input;
+		} elseif ( false !== strpos( $input, 'rgb(' ) ) {
+			$input = str_ireplace( array( 'rgb(', ')' ), array( 'rgba(', ',1)' ), $input );
+		}
+		if ( false !== strpos( $input, 'rgba(' ) && preg_match( '/\A^rgba\(([0]*[0-9]{1,2}|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\s*,\s*([0]*[0-9]{1,2}|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\s*,\s*([0]*[0-9]{1,2}|[1][0-9]{2}|[2][0-4][0-9]|[2][5][0-5])\s*,\s*([0-9]*\.?[0-9]+)\)$\z/im', $input ) ) {
+			return $input;
+		} elseif ( preg_match( '/^[a-f0-9]{6}$/i', $input ) ) {
+			return '#' . $input;
+		}
+		return '#ffffff';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_logo_size' ) ) {
+	/**
+	 * Sanitizes the logo size option.
+	 *
+	 * @param string $input The logo source.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_logo_size( $input ) {
+		if ( in_array( (string) $input, array( 'none', 'height', 'width' ), true ) ) {
+			return $input;
+		}
+		return 'none';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_list_effect' ) ) {
+	/**
+	 * Sanitizes the content list effects.
+	 *
+	 * @param string $input The content list type.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_list_effect( $input ) {
+		if ( in_array( (string) $input, array( 'none', 'enlarge', 'fade', 'enlarge_fade' ), true ) ) {
+			return $input;
+		}
+		return 'none';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_masonry_thumbnail' ) ) {
+	/**
+	 * Sanitizes the masonry thumbnail image effect option.
+	 *
+	 * @param string $input The search box display.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_masonry_thumbnail( $input ) {
+		if ( in_array( (string) $input, array( 'none', 'zoom_in', 'zoom_out' ), true ) ) {
+			return $input;
+		}
+		return 'none';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_masonry_columns' ) ) {
+	/**
+	 * Sanitizes the masonry columns option.
+	 *
+	 * @param string $input The content list type.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_masonry_columns( $input ) {
+		if ( 'automatic' === $input || ( 1 < $input && 5 >= $input ) ) {
+			return $input;
+		}
+		return 'automatic';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_thumbnail_resize' ) ) {
+	/**
+	 * Sanitizes the post thumbnail size option.
+	 *
+	 * @param string $input The post thumbnail size.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_thumbnail_resize( $input ) {
+		/* phpcs:disable */
+		if ( 'none' === $input || in_array( (string) $input, get_intermediate_image_sizes(), true ) ) {
+			return $input;
+		}
+		/* phpcs:enable */
+		return 'none';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_list_type' ) ) {
+	/**
+	 * Sanitizes the content list types.
+	 *
+	 * @param string $input The content list type.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_list_type( $input ) {
+		if ( in_array( (string) $input, array( 'masonry', 'plain' ), true ) ) {
+			return $input;
+		}
+		return '';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_site_width' ) ) {
+	/**
+	 * Sanitizes the layout type.
+	 *
+	 * @param string $input The content area layout.
+	 *
+	 * @since Pen 1.0.2
+	 * @return string
+	 */
+	function pen_sanitize_site_width( $input ) {
+		// 'default' === 'standard' (Content Meta).
+		if ( in_array( (string) $input, array( 'default', 'standard', 'wide', 'boxed' ), true ) ) {
+			return $input;
+		}
+		return 'default';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_location' ) ) {
+	/**
+	 * Sanitizes the element location option.
+	 *
+	 * @param string $input The content area layout.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_location( $input ) {
+		if ( in_array( (string) $input, array( 'header', 'content', 'footer' ), true ) ) {
+			return $input;
+		}
+		return 'header';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_alignment' ) ) {
+	/**
+	 * Sanitizes the alignment option.
+	 *
+	 * @param string $input The "alignment" option.
+	 *
+	 * @since Pen 1.0.4
+	 * @return string
+	 */
+	function pen_sanitize_alignment( $input ) {
+		if ( in_array( (string) $input, array( 'left', 'center', 'right' ), true ) ) {
+			return $input;
+		}
+		return 'left';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_font_family' ) ) {
+	/**
+	 * Sanitizes font families.
+	 *
+	 * @param string $input The font size.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_font_family( $input ) {
+		$fonts = pen_fonts_all();
+		if ( 'default' === $input || array_key_exists( $input, $fonts ) ) {
+			return $input;
+		}
+		return 'default';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_font_size' ) ) {
+	/**
+	 * Sanitizes font sizes.
+	 *
+	 * @param string $input The font size.
+	 *
+	 * @since Pen 1.0.0
+	 * @return string
+	 */
+	function pen_sanitize_font_size( $input ) {
+		if ( in_array( (string) $input, array( 'default', '0.5em', '0.75em', 'normal', '2em', '3em' ), true ) ) {
+			return $input;
+		}
+		return 'default';
+	}
+}
+
+if ( ! function_exists( 'pen_sanitize_animation' ) ) {
+	/**
+	 * Sanitizes animations.
+	 *
+	 * @param string $input The animation effect ID.
+	 *
+	 * @since Pen 1.0.8
+	 * @return string
+	 */
+	function pen_sanitize_animation( $input ) {
+		if ( in_array( (string) $input, pen_animations(), true ) ) {
+			return $input;
+		}
+		return 'none';
+	}
+}

+ 182 - 0
include/sidebars.php

@@ -0,0 +1,182 @@
+<?php
+/**
+ * Theme sidebars.
+ *
+ * @package Pen
+ */
+
+if ( ! function_exists( 'pen_sidebars_register' ) ) {
+	/**
+	 * Register widget areas.
+	 *
+	 * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar
+	 */
+	function pen_sidebars_register() {
+		/* phpcs:disable */
+		$sidebars = array(
+			'left' => array(
+				'name'        => __( 'Left Sidebar', 'pen' ),
+				'description' => '',
+			),
+			'right' => array(
+				'name'        => __( 'Right Sidebar', 'pen' ),
+				'description' => '',
+			),
+			'header-primary' => array(
+				'name'        => __( 'Header - Primary', 'pen' ),
+				'description' => __( '(Stays in the middle of the header)', 'pen' ),
+			),
+			'header-secondary' => array(
+				'name'        => __( 'Header - Secondary', 'pen' ),
+				'description' => __( '(Stays at the right of the header)', 'pen' ),
+			),
+			'search-top' => array(
+				'name'        => __( 'Search - Top', 'pen' ),
+				'description' => __( 'Located above the bigger search box.', 'pen' ),
+			),
+			'search-left' => array(
+				'name'        => __( 'Search - Left', 'pen' ),
+				'description' => __( 'Located left side of the bigger search box.', 'pen' ),
+			),
+			'search-right' => array(
+				'name'        => __( 'Search - Right', 'pen' ),
+				'description' => __( 'Located right side of the bigger search box.', 'pen' ),
+			),
+			'search-bottom' => array(
+				'name'        => __( 'Search - Bottom', 'pen' ),
+				'description' => __( 'Located beneath the bigger search box.', 'pen' ),
+			),
+			'top' => array(
+				'name'        => __( 'Top', 'pen' ),
+				'description' => __( 'Located above the content area below the header and the navigation menu.', 'pen' ),
+			),
+			'bottom' => array(
+				'name'        => __( 'Bottom', 'pen' ),
+				'description' => __( 'Located beneath the content area.', 'pen' ),
+			),
+			'content-top' => array(
+				'name'        => __( 'Content - Top', 'pen' ),
+				'description' => __( 'Located above the content.', 'pen' ),
+			),
+			'content-bottom' => array(
+				'name'        => __( 'Content - Bottom', 'pen' ),
+				'description' => __( 'Located beneath the content.', 'pen' ),
+			),
+			'footer-top' => array(
+				'name'        => __( 'Footer - Top', 'pen' ),
+				'description' => '',
+			),
+			'footer-left' => array(
+				'name'        => __( 'Footer - Left', 'pen' ),
+				'description' => '',
+			),
+			'footer-right' => array(
+				'name'        => __( 'Footer - Right', 'pen' ),
+				'description' => '',
+			),
+			'footer-bottom' => array(
+				'name'        => __( 'Footer - Bottom', 'pen' ),
+				'description' => '',
+			),
+		);
+		/* phpcs:enable */
+
+		foreach ( $sidebars as $id => $sidebar ) {
+			register_sidebar(
+				array(
+					'name'          => esc_html( $sidebar['name'] ),
+					'id'            => 'sidebar-' . esc_attr( $id ),
+					'description'   => esc_html( $sidebar['description'] ),
+					'before_widget' => '<aside id="%1$s" class="widget clearfix %2$s">',
+					'after_widget'  => '</aside>',
+					'before_title'  => '<h3 class="widget-title"><span><span>',
+					'after_title'   => '</span></span></h3>',
+				)
+			);
+		}
+
+	}
+	add_action( 'widgets_init', 'pen_sidebars_register' );
+}
+
+if ( ! function_exists( 'pen_sidebar_get' ) ) {
+	/**
+	 * Sidebars.
+	 *
+	 * @param string $sidebar The sidebar ID.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_sidebar_get( $sidebar ) {
+		if ( ! is_registered_sidebar( $sidebar ) ) {
+			return;
+		}
+		if ( pen_sidebar_check( $sidebar ) && is_active_sidebar( $sidebar ) ) {
+			$classes = trim(
+				implode(
+					' ',
+					array_filter(
+						array(
+							'sidebar',
+							'clearfix',
+							'widget-area',
+						)
+					)
+				)
+			);
+			if ( 'sidebar-bottom' === $sidebar ) {
+				if ( pen_option_get( 'color_bottom_background_transparent' ) ) {
+					$classes .= ' pen_is_transparent';
+				} else {
+					$classes .= ' pen_not_transparent';
+				}
+			}
+			?>
+	<div id="<?php echo esc_attr( str_ireplace( array( 'sidebar-', '-' ), array( 'pen_', '_' ), $sidebar ) ); ?>" class="<?php echo esc_attr( $classes ); ?>" role="complementary">
+			<?php
+			if ( in_array( $sidebar, array( 'sidebar-top', 'sidebar-bottom' ), true ) ) {
+				?>
+		<div class="pen_container">
+				<?php
+			}
+
+			dynamic_sidebar( $sidebar );
+
+			if ( in_array( $sidebar, array( 'sidebar-top', 'sidebar-bottom' ), true ) ) {
+				?>
+		</div>
+				<?php
+			}
+
+			pen_html_jump_menu( $sidebar );
+			?>
+	</div>
+			<?php
+		}
+	}
+}
+
+if ( ! function_exists( 'pen_sidebar_check' ) ) {
+	/**
+	 * Checks sidebars visibility.
+	 *
+	 * @param string $sidebar The unique sidebar ID.
+	 *
+	 * @since Pen 1.0.0
+	 */
+	function pen_sidebar_check( $sidebar ) {
+		if ( ! is_registered_sidebar( $sidebar ) ) {
+			return;
+		}
+		$sidebar = str_ireplace( '-', '_', $sidebar );
+		$visible = true;
+		if ( is_home() || is_front_page() ) {
+			$visible = pen_option_get( 'front_' . $sidebar . '_display' ) ? false : true;
+		}
+		if ( is_singular() ) {
+			$visible = get_post_meta( get_the_ID(), 'pen_' . $sidebar . '_display', true ) ? false : true;
+		}
+		return $visible;
+	}
+}

File diff suppressed because it is too large
+ 15 - 0
include/typography.php


+ 165 - 0
include/widgets.php

@@ -0,0 +1,165 @@
+<?php
+/**
+ * Custom widgets options.
+ *
+ * @package Pen
+ */
+
+if ( ! defined( 'ABSPATH' ) ) {
+	exit;
+}
+
+if ( ! function_exists( 'pen_widgets_color_scheme_option' ) ) {
+	/**
+	 * Color scheme option for widgets.
+	 *
+	 * @global wp_registered_widgets  $wp_registered_widgets
+	 * @global wp_registered_sidebars $wp_registered_sidebars
+	 *
+	 * @param WP_Widget $widget   An instance of WP_Widget.
+	 * @param null      $return   Whether a field was added.
+	 * @param array     $instance Widget settings.
+	 *
+	 * @since Pen 1.0.0
+	 * @return void
+	 */
+	function pen_widgets_color_scheme_option( $widget, $return, $instance ) {
+		$color_widget     = isset( $instance['pen_theme_color_widget'] ) ? $instance['pen_theme_color_widget'] : '';
+		$animation_widget = isset( $instance['pen_theme_animation_widget'] ) ? $instance['pen_theme_animation_widget'] : '';
+		?>
+		<fieldset style="border:1px dashed #ccc;margin:0 0 1em;padding:0 1em">
+			<legend style="font-weight:bold" title="<?php esc_attr_e( 'This is a part of the "Pen" theme so if you switch to another theme these settings will be no longer used. The rest of the settings that are here are either parts of the WordPress core or added via plugins and they are available with or without this theme.', 'pen' ); ?>">
+		<?php
+		esc_html_e( 'Pen', 'pen' );
+		?>
+			</legend>
+		<?php
+		$field_id   = $widget->get_field_id( 'pen_theme_animation_widget' );
+		$field_name = $widget->get_field_name( 'pen_theme_animation_widget' );
+		?>
+			<p>
+				<label for="<?php echo esc_attr( $field_id ); ?>">
+		<?php
+		esc_html_e( 'Widget Animation', 'pen' );
+		?>
+				</label>
+				<select id="<?php echo esc_attr( $field_id ); ?>" name="<?php echo esc_attr( $field_name ); ?>">
+		<?php
+		$options = pen_animations();
+		foreach ( $options as $key => $label ) {
+			?>
+					<option value="<?php echo $key; /* phpcs:ignore */ ?>" <?php selected( $key, $animation_widget ); ?>>
+			<?php
+			echo esc_html( $label );
+			?>
+					</option>
+			<?php
+		}
+		?>
+				</select>
+			</p>
+
+		<?php
+		$field_id   = $widget->get_field_id( 'pen_theme_color_widget' );
+		$field_name = $widget->get_field_name( 'pen_theme_color_widget' );
+		?>
+			<p>
+				<label for="<?php echo esc_attr( $field_id ); ?>">
+		<?php
+		esc_html_e( 'Widget Color Scheme:', 'pen' );
+		?>
+				</label>
+				<select id="<?php echo esc_attr( $field_id ); ?>" name="<?php echo esc_attr( $field_name ); ?>">
+					<option value="transparent" <?php selected( 'transparent', $color_widget ); ?>>
+		<?php
+		esc_html_e( 'None', 'pen' );
+		?>
+					</option>
+		<?php
+		$options = array(
+			'blue'   => __( 'Blue', 'pen' ),
+			'dark'   => __( 'Dark', 'pen' ),
+			'light'  => __( 'Light', 'pen' ),
+			'orange' => __( 'Orange', 'pen' ),
+			'purple' => __( 'Purple', 'pen' ),
+			'red'    => __( 'Red', 'pen' ),
+			'yellow' => __( 'Yellow', 'pen' ),
+		);
+		foreach ( $options as $key => $label ) {
+			?>
+					<option value="<?php echo $key; /* phpcs:ignore */ ?>" <?php selected( $key, $color_widget ); ?>>
+			<?php
+			echo esc_html( $label );
+			?>
+					</option>
+			<?php
+		}
+		?>
+				</select>
+			</p>
+		</fieldset>
+		<?php
+	}
+	add_filter( 'in_widget_form', 'pen_widgets_color_scheme_option', 10, 3 );
+}
+
+if ( ! function_exists( 'pen_widgets_save_color_scheme_option' ) ) {
+	/**
+	 * Saves the widget color schemes.
+	 *
+	 * @param array $instance     Widget settings.
+	 * @param array $new_instance The new widget settings.
+	 *
+	 * @since Pen 1.0.0
+	 * @return array
+	 */
+	function pen_widgets_save_color_scheme_option( $instance, $new_instance ) {
+		return $new_instance;
+	}
+	add_filter( 'widget_update_callback', 'pen_widgets_save_color_scheme_option', 10, 2 );
+}
+
+if ( ! function_exists( 'pen_widgets_custom_classes' ) ) {
+	/**
+	 * Custom class names for widgets.
+	 *
+	 * @global wp_registered_widgets $wp_registered_widgets
+	 *
+	 * @param array $params Widget parameters.
+	 *
+	 * @since Pen 1.0.0
+	 * @return array
+	 */
+	function pen_widgets_custom_classes( $params ) {
+		global $wp_registered_widgets;
+		$widget_id   = $params[0]['widget_id'];
+		$instance_id = $params[1]['number'];
+		if ( ! is_object( $wp_registered_widgets[ $widget_id ]['callback'][0] ) ) {
+			return;
+		}
+		$settings         = $wp_registered_widgets[ $widget_id ]['callback'][0]->get_settings();
+		$color_widget     = 'transparent';
+		$animation_widget = 'fadeIn';
+		$class            = 'class="';
+		if ( isset( $settings[ $instance_id ]['title'] ) && '' !== trim( $settings[ $instance_id ]['title'] ) ) {
+			$class .= 'pen_widget_has_title ';
+		}
+		if ( ! empty( $settings[ $instance_id ]['pen_theme_color_widget'] ) ) {
+			$color_widget = $settings[ $instance_id ]['pen_theme_color_widget'];
+		}
+		$class .= 'pen_widget_' . $color_widget . ' ';
+		if ( 'transparent' !== $color_widget ) {
+			$class .= 'pen_widget_not_transparent ';
+		}
+		if ( ! empty( $settings[ $instance_id ]['pen_theme_animation_widget'] ) ) {
+			$animation_widget = $settings[ $instance_id ]['pen_theme_animation_widget'];
+		}
+		if ( $animation_widget && 'none' !== $animation_widget ) {
+			$class .= 'pen_animate_on_scroll pen_custom_animation_' . $animation_widget . ' ';
+		}
+
+		$params[0]['before_widget'] = str_ireplace( 'class="', $class, $params[0]['before_widget'] );
+		return $params;
+	}
+	add_filter( 'dynamic_sidebar_params', 'pen_widgets_custom_classes' );
+}

+ 70 - 0
index.php

@@ -0,0 +1,70 @@
+<?php
+/**
+ * The main template file.
+ *
+ * This is the most generic template file in a WordPress theme
+ * and one of the two required files for a theme (the other being style.css).
+ * It is used to display a page when nothing more specific matches a query.
+ * E.g., it puts together the home page when no home.php file exists.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+get_header(); ?>
+<div id="primary" class="content-area">
+	<main id="main" class="<?php echo esc_attr( pen_content_classes() ); ?>" role="main">
+		<div class="pen_article_wrapper">
+<?php
+if ( have_posts() ) {
+	if ( is_home() && ! is_front_page() ) {
+		?>
+			<header>
+				<h1 class="page-title screen-reader-text">
+		<?php
+		single_post_title();
+		?>
+				</h1>
+			</header>
+		<?php
+	}
+
+	$content_list_type = pen_list_type();
+	if ( 'masonry' === $content_list_type ) {
+		?>
+			<div id="pen_masonry">
+		<?php
+	}
+
+	/* Start the Loop */
+	while ( have_posts() ) {
+		the_post();
+		/**
+		 * Include the Post-Type-specific template for the content.
+		 * If you want to override this in a child theme, then include a file
+		 * called content-___.php (where ___ is the Post Type name) and that will be used instead.
+		 */
+		get_template_part( 'partials/content', get_post_type() );
+	}
+
+	if ( 'masonry' === $content_list_type ) {
+		?>
+			</div>
+		<?php
+	}
+	get_template_part( 'partials/content', 'pagination' );
+} else {
+	get_template_part( 'partials/content', 'none' );
+}
+?>
+		</div>
+	</main>
+<?php
+if ( ! is_singular() ) {
+	pen_html_jump_menu( 'list' );
+}
+?>
+</div><!-- #primary -->
+<?php
+get_footer();

+ 0 - 0
languages/index.html


+ 2336 - 0
languages/pen.pot

@@ -0,0 +1,2336 @@
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: Pen\n"
+"POT-Creation-Date: 2019-05-23 12:17+0200\n"
+"PO-Revision-Date: 2018-09-12 15:41+0200\n"
+"Last-Translator: \n"
+"Language-Team: htmlpie\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 2.2.1\n"
+"X-Poedit-Basepath: ..\n"
+"X-Poedit-KeywordsList: __;_e;_x:1,2c;_ex:1,2c;_n:1,2;_nx:1,2,4c;_n_noop:1,2;"
+"_nx_noop:1,2,3c;esc_attr__;esc_html__;esc_attr_e;esc_html_e;esc_attr_x:1,2c;"
+"esc_html_x:1,2c\n"
+"Language: en\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"X-Poedit-SearchPath-0: .\n"
+
+#: 404.php:17
+msgid "Oops! That page can&rsquo;t be found."
+msgstr ""
+
+#: 404.php:25
+msgid "It looks like nothing was found at this location, sorry!"
+msgstr ""
+
+#: comments.php:32
+#, php-format
+msgid "One thought on &ldquo;%1$s&rdquo;"
+msgstr ""
+
+#: comments.php:38
+#, php-format
+msgctxt "comments title"
+msgid "%1$s thought on &ldquo;%2$s&rdquo;"
+msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
+msgstr[0] ""
+msgstr[1] ""
+
+#: comments.php:49
+msgid "Top Comments Menu"
+msgstr ""
+
+#: comments.php:52 comments.php:88
+msgid "Comment navigation"
+msgstr ""
+
+#: comments.php:58 comments.php:94
+msgid "Older Comments"
+msgstr ""
+
+#: comments.php:63 comments.php:99
+msgid "Newer Comments"
+msgstr ""
+
+#: comments.php:85
+msgid "Bottom Comments Menu"
+msgstr ""
+
+#: comments.php:113
+msgid "Comments are closed."
+msgstr ""
+
+#: footer.php:59 include/html.php:412
+msgid "Footer Menu"
+msgstr ""
+
+#: footer.php:98 footer.php:101
+msgid "Back to top"
+msgstr ""
+
+#: header.php:34
+msgid "Skip to content"
+msgstr ""
+
+#: include/assets.php:170 include/content.php:1547 include/customize.php:3997
+#: include/widgets.php:33
+msgid "Pen"
+msgstr ""
+
+#: include/assets.php:171
+msgid "Loading..."
+msgstr ""
+
+#: include/assets.php:172
+msgid "Please enter some keywords."
+msgstr ""
+
+#: include/assets.php:173
+msgid "Close"
+msgstr ""
+
+#: include/assets.php:174
+msgid "Menu"
+msgstr ""
+
+#: include/assets.php:175
+msgid "Content settings overview"
+msgstr ""
+
+#: include/assets.php:176
+msgid "Expand\\Collapse"
+msgstr ""
+
+#: include/assets.php:177
+msgid ""
+"This is a part of the 'Pen' theme, so if you switch to another theme this "
+"nice little editing tool will be no longer available."
+msgstr ""
+
+#: include/color.php:39 include/color.php:502
+msgid "HEX color needs to be 6 or 3 digits long"
+msgstr ""
+
+#: include/color.php:124
+msgid "Parameter was not an HSL array"
+msgstr ""
+
+#: include/color.php:195
+msgid "Parameter was not an RGB array"
+msgstr ""
+
+#: include/content.php:139 partials/content.php:55
+#, php-format
+msgid "Continue reading %s"
+msgstr ""
+
+#: include/content.php:187
+msgid ""
+"If you switch to another theme these settings will be no longer used. The "
+"rest of the settings that are here are either parts of the WordPress core or "
+"added via plugins and they will be available with or without this theme."
+msgstr ""
+
+#: include/content.php:193
+msgid ""
+"The following options would only apply to this post. If you want to apply "
+"them to all your posts you should go to Appearance &rarr; Customize &rarr; "
+"Content."
+msgstr ""
+
+#: include/content.php:199
+msgid "Overview"
+msgstr ""
+
+#: include/content.php:207
+msgid "Full Content"
+msgstr ""
+
+#: include/content.php:215 include/content.php:432 include/content.php:884
+msgid "Featured image"
+msgstr ""
+
+#: include/content.php:221 include/content.php:894
+msgid "Use as title background"
+msgstr ""
+
+#: include/content.php:223 include/content.php:233 include/content.php:241
+#: include/content.php:251 include/content.php:276 include/content.php:286
+#: include/content.php:309 include/content.php:319 include/content.php:374
+#: include/content.php:384 include/content.php:392 include/content.php:402
+#: include/content.php:456 include/content.php:466 include/content.php:474
+#: include/content.php:484 include/content.php:494 include/content.php:504
+#: include/content.php:512 include/content.php:522 include/content.php:530
+#: include/content.php:540 include/content.php:548 include/content.php:558
+#: include/content.php:566 include/content.php:576 include/content.php:588
+#: include/content.php:598 include/content.php:606 include/content.php:616
+#: include/content.php:624 include/content.php:634 include/content.php:896
+#: include/content.php:906 include/content.php:914 include/content.php:924
+#: include/content.php:937 include/content.php:947 include/content.php:970
+#: include/content.php:980 include/content.php:1032 include/content.php:1042
+#: include/content.php:1050 include/content.php:1060 include/content.php:1114
+#: include/content.php:1124 include/content.php:1132 include/content.php:1142
+#: include/content.php:1152 include/content.php:1162 include/content.php:1170
+#: include/content.php:1180 include/content.php:1188 include/content.php:1198
+#: include/content.php:1206 include/content.php:1216 include/content.php:1224
+#: include/content.php:1234 include/content.php:1242 include/content.php:1252
+#: include/content.php:1262 include/content.php:1272 include/content.php:1280
+#: include/content.php:1290 include/content.php:1298 include/content.php:1308
+msgid "Yes"
+msgstr ""
+
+#: include/content.php:225 include/content.php:234 include/content.php:243
+#: include/content.php:252 include/content.php:278 include/content.php:287
+#: include/content.php:311 include/content.php:320 include/content.php:376
+#: include/content.php:385 include/content.php:394 include/content.php:403
+#: include/content.php:458 include/content.php:467 include/content.php:476
+#: include/content.php:485 include/content.php:496 include/content.php:505
+#: include/content.php:514 include/content.php:523 include/content.php:532
+#: include/content.php:541 include/content.php:550 include/content.php:559
+#: include/content.php:568 include/content.php:577 include/content.php:590
+#: include/content.php:599 include/content.php:608 include/content.php:617
+#: include/content.php:626 include/content.php:635 include/content.php:898
+#: include/content.php:907 include/content.php:916 include/content.php:925
+#: include/content.php:939 include/content.php:948 include/content.php:972
+#: include/content.php:981 include/content.php:1034 include/content.php:1043
+#: include/content.php:1052 include/content.php:1061 include/content.php:1116
+#: include/content.php:1125 include/content.php:1134 include/content.php:1143
+#: include/content.php:1154 include/content.php:1163 include/content.php:1172
+#: include/content.php:1181 include/content.php:1190 include/content.php:1199
+#: include/content.php:1208 include/content.php:1217 include/content.php:1226
+#: include/content.php:1235 include/content.php:1244 include/content.php:1253
+#: include/content.php:1264 include/content.php:1273 include/content.php:1282
+#: include/content.php:1291 include/content.php:1300 include/content.php:1309
+msgid "No"
+msgstr ""
+
+#: include/content.php:230 include/content.php:248 include/content.php:262
+#: include/content.php:283 include/content.php:297 include/content.php:316
+#: include/content.php:334 include/content.php:362 include/content.php:381
+#: include/content.php:399 include/content.php:424 include/content.php:437
+#: include/content.php:463 include/content.php:481 include/content.php:501
+#: include/content.php:519 include/content.php:537 include/content.php:555
+#: include/content.php:573 include/content.php:595 include/content.php:613
+#: include/content.php:631 include/content.php:656 include/content.php:670
+#: include/content.php:684 include/content.php:700 include/content.php:715
+#: include/content.php:903 include/content.php:921 include/content.php:944
+#: include/content.php:958 include/content.php:977 include/content.php:995
+#: include/content.php:1039 include/content.php:1057 include/content.php:1081
+#: include/content.php:1094 include/content.php:1121 include/content.php:1139
+#: include/content.php:1159 include/content.php:1177 include/content.php:1195
+#: include/content.php:1213 include/content.php:1231 include/content.php:1249
+#: include/content.php:1269 include/content.php:1287 include/content.php:1305
+#: include/content.php:1334 include/content.php:1348 include/content.php:1362
+#: include/customize.php:617 include/customize.php:625
+msgid "Default"
+msgstr ""
+
+#: include/content.php:239 include/content.php:912
+msgid "Display featured image"
+msgstr ""
+
+#: include/content.php:257 include/content.php:930
+msgid "Featured image size"
+msgstr ""
+
+#: include/content.php:274 include/content.php:935
+msgid "Rotate"
+msgstr ""
+
+#: include/content.php:292 include/content.php:953
+msgid "Alignment"
+msgstr ""
+
+#: include/content.php:300 include/content.php:799 include/content.php:961
+#: include/customize.php:882 include/customize.php:1012
+#: include/customize.php:1197 include/customize.php:1345
+#: include/customize.php:1437 include/customize.php:1545
+#: include/customize.php:1642 include/general.php:1097 include/general.php:1104
+#: include/general.php:1304
+msgid "Left"
+msgstr ""
+
+#: include/content.php:301 include/content.php:962 include/customize.php:883
+#: include/customize.php:1013 include/customize.php:1198
+#: include/customize.php:1346 include/customize.php:1438
+#: include/customize.php:1643
+msgid "Center"
+msgstr ""
+
+#: include/content.php:302 include/content.php:807 include/content.php:963
+#: include/customize.php:884 include/customize.php:1014
+#: include/customize.php:1199 include/customize.php:1347
+#: include/customize.php:1439 include/customize.php:1553
+#: include/customize.php:1644 include/general.php:1115 include/general.php:1122
+#: include/general.php:1305
+msgid "Right"
+msgstr ""
+
+#: include/content.php:307 include/content.php:968
+msgid "Add frame"
+msgstr ""
+
+#: include/content.php:325 include/content.php:986
+msgid "Frame color"
+msgstr ""
+
+#: include/content.php:327 include/content.php:337 include/content.php:988
+#: include/content.php:998 include/customize.php:407 include/customize.php:452
+#: include/html.php:872 include/html.php:908 include/widgets.php:81
+msgid "Dark"
+msgstr ""
+
+#: include/content.php:329 include/content.php:338 include/content.php:990
+#: include/content.php:999 include/customize.php:406 include/customize.php:451
+#: include/html.php:874 include/html.php:910 include/widgets.php:82
+msgid "Light"
+msgstr ""
+
+#: include/content.php:348 include/content.php:1025 include/customize.php:1054
+msgid "Layout"
+msgstr ""
+
+#: include/content.php:353 include/customize.php:1420
+#: include/customize.php:1426
+msgid "Site layout"
+msgstr ""
+
+#: include/content.php:365 include/customize.php:1428
+msgid "Standard"
+msgstr ""
+
+#: include/content.php:366 include/customize.php:1429
+msgid "Wide"
+msgstr ""
+
+#: include/content.php:367 include/customize.php:1430
+msgid "Boxed"
+msgstr ""
+
+#: include/content.php:372 include/content.php:1030 include/customize.php:1112
+#: include/customize.php:1275
+msgid "Center-align post header"
+msgstr ""
+
+#: include/content.php:390 include/content.php:1048
+msgid "Center-align post title"
+msgstr ""
+
+#: include/content.php:414 include/content.php:1071
+msgid "Animation"
+msgstr ""
+
+#: include/content.php:419 include/content.php:719 include/customize.php:908
+msgid "Content area"
+msgstr ""
+
+#: include/content.php:449 include/content.php:1107
+msgid "Visibility"
+msgstr ""
+
+#: include/content.php:454 include/content.php:1112 include/customize.php:1108
+#: include/customize.php:1271
+msgid "Display post header"
+msgstr ""
+
+#: include/content.php:472 include/content.php:1130 include/customize.php:1287
+msgid "Display post title"
+msgstr ""
+
+#: include/content.php:492 include/content.php:1150
+msgid "Display author link"
+msgstr ""
+
+#: include/content.php:510 include/content.php:1168 include/customize.php:1156
+#: include/customize.php:1315
+msgid "Display post date"
+msgstr ""
+
+#: include/content.php:528 include/content.php:1186
+msgid "Display category links"
+msgstr ""
+
+#: include/content.php:546 include/content.php:1222 include/customize.php:1219
+#: include/customize.php:1387
+msgid "Display author profile"
+msgstr ""
+
+#: include/content.php:564 include/content.php:1240 include/customize.php:1370
+msgid "Display post tags"
+msgstr ""
+
+#: include/content.php:586 include/customize.php:1383
+msgid "Display share buttons"
+msgstr ""
+
+#: include/content.php:604 include/content.php:1260 include/customize.php:1124
+#: include/customize.php:1279
+msgid "Display post footer"
+msgstr ""
+
+#: include/content.php:622
+msgid "Display search box"
+msgstr ""
+
+#: include/content.php:644 include/content.php:1322
+msgid "Location"
+msgstr ""
+
+#: include/content.php:651
+msgid "Author location"
+msgstr ""
+
+#: include/content.php:659 include/content.php:673 include/content.php:687
+#: include/content.php:703 include/content.php:1337 include/content.php:1351
+#: include/content.php:1365 include/customize.php:1134
+#: include/customize.php:1150 include/customize.php:1162
+#: include/customize.php:1293 include/customize.php:1309
+#: include/customize.php:1321 include/customize.php:1376
+msgid "Post header"
+msgstr ""
+
+#: include/content.php:660 include/content.php:674 include/content.php:688
+#: include/content.php:705 include/content.php:1338 include/content.php:1352
+#: include/content.php:1366 include/customize.php:1135
+#: include/customize.php:1151 include/customize.php:1163
+#: include/customize.php:1294 include/customize.php:1310
+#: include/customize.php:1322 include/customize.php:1378
+msgid "Post footer"
+msgstr ""
+
+#: include/content.php:665
+msgid "Date location"
+msgstr ""
+
+#: include/content.php:679
+msgid "Categories location"
+msgstr ""
+
+#: include/content.php:695 include/customize.php:1374 include/general.php:1252
+#: include/general.php:1281
+msgid "Share buttons location"
+msgstr ""
+
+#: include/content.php:704 include/customize.php:1377
+msgid "Post content"
+msgstr ""
+
+#: include/content.php:710 include/customize.php:905 include/general.php:1285
+msgid "Search box location"
+msgstr ""
+
+#: include/content.php:718
+msgid "Site header"
+msgstr ""
+
+#: include/content.php:729 include/customize.php:785
+msgid "Sidebars"
+msgstr ""
+
+#: include/content.php:735
+msgid "You can control the visibility of your sidebars for this specific post."
+msgstr ""
+
+#: include/content.php:742 include/content.php:750 include/content.php:758
+#: include/content.php:766 include/content.php:774 include/content.php:782
+#: include/content.php:790 include/content.php:798 include/content.php:806
+#: include/content.php:814 include/content.php:822 include/content.php:830
+#: include/content.php:838 include/content.php:846 include/content.php:854
+#: include/content.php:862 include/customize.php:1488
+#: include/customize.php:1496 include/customize.php:1504
+#: include/customize.php:1512 include/customize.php:1520
+#: include/customize.php:1528 include/customize.php:1536
+#: include/customize.php:1544 include/customize.php:1552
+#: include/customize.php:1560 include/customize.php:1568
+#: include/customize.php:1576 include/customize.php:1584
+#: include/customize.php:1592 include/customize.php:1600
+#: include/customize.php:1608
+#, php-format
+msgid "Hide the \"%s\" widget area"
+msgstr ""
+
+#: include/content.php:743 include/customize.php:1489 include/general.php:945
+#: include/general.php:949 include/general.php:1297 include/sidebars.php:26
+msgid "Header - Primary"
+msgstr ""
+
+#: include/content.php:751 include/customize.php:1497 include/general.php:957
+#: include/general.php:961 include/general.php:1298 include/sidebars.php:30
+msgid "Header - Secondary"
+msgstr ""
+
+#: include/content.php:759 include/customize.php:1505 include/general.php:989
+#: include/general.php:996 include/general.php:1299 include/sidebars.php:34
+msgid "Search - Top"
+msgstr ""
+
+#: include/content.php:767 include/customize.php:1513 include/general.php:1007
+#: include/general.php:1014 include/general.php:1300 include/sidebars.php:38
+msgid "Search - Left"
+msgstr ""
+
+#: include/content.php:775 include/customize.php:1521 include/general.php:1025
+#: include/general.php:1032 include/general.php:1301 include/sidebars.php:42
+msgid "Search - Right"
+msgstr ""
+
+#: include/content.php:783 include/customize.php:1529 include/general.php:1043
+#: include/general.php:1050 include/general.php:1302 include/sidebars.php:46
+msgid "Search - Bottom"
+msgstr ""
+
+#: include/content.php:791 include/customize.php:1537 include/general.php:971
+#: include/general.php:978 include/general.php:1303 include/sidebars.php:50
+msgid "Top"
+msgstr ""
+
+#: include/content.php:815 include/customize.php:1561 include/general.php:1061
+#: include/general.php:1068 include/general.php:1306 include/sidebars.php:58
+msgid "Content - Top"
+msgstr ""
+
+#: include/content.php:823 include/customize.php:1569 include/general.php:1079
+#: include/general.php:1086 include/general.php:1307 include/sidebars.php:62
+msgid "Content - Bottom"
+msgstr ""
+
+#: include/content.php:831 include/customize.php:473 include/customize.php:1577
+#: include/customize.php:2193 include/customize.php:2200
+#: include/general.php:1131 include/general.php:1139 include/general.php:1308
+#: include/sidebars.php:54
+msgid "Bottom"
+msgstr ""
+
+#: include/content.php:839 include/customize.php:1585 include/general.php:1148
+#: include/general.php:1154 include/general.php:1309 include/sidebars.php:66
+msgid "Footer - Top"
+msgstr ""
+
+#: include/content.php:847 include/customize.php:1593 include/general.php:1163
+#: include/general.php:1169 include/general.php:1310 include/sidebars.php:70
+msgid "Footer - Left"
+msgstr ""
+
+#: include/content.php:855 include/customize.php:1601 include/general.php:1178
+#: include/general.php:1184 include/general.php:1311 include/sidebars.php:74
+msgid "Footer - Right"
+msgstr ""
+
+#: include/content.php:863 include/customize.php:1609 include/general.php:1193
+#: include/general.php:1199 include/general.php:1312 include/sidebars.php:78
+msgid "Footer - Bottom"
+msgstr ""
+
+#: include/content.php:876
+msgid "Lists"
+msgstr ""
+
+#: include/content.php:889
+msgid ""
+"The image settings below except for the the \"Display featured image\" would "
+"only apply to \"Plain\" lists (Customize &rarr; Content &rarr; Layout)."
+msgstr ""
+
+#: include/content.php:1004 include/general.php:1260
+msgid "Thumbnail style"
+msgstr ""
+
+#: include/content.php:1009
+#, php-format
+msgid "Default (Style %s)"
+msgstr ""
+
+#: include/content.php:1012 include/customize.php:65 include/customize.php:939
+#: include/customize.php:950 include/customize.php:961
+#: include/customize.php:972 include/customize.php:983
+#: include/customize.php:1075 include/customize.php:1084
+#: include/customize.php:1100 include/customize.php:1207
+#: include/customize.php:1354 include/customize.php:2246
+#: include/general.php:664 include/widgets.php:75
+msgid "None"
+msgstr ""
+
+#: include/content.php:1016 include/customize.php:943 include/customize.php:954
+#: include/customize.php:965 include/customize.php:976
+#: include/customize.php:1088 include/general.php:824
+#, php-format
+msgid "Style %d"
+msgstr ""
+
+#: include/content.php:1076
+msgid "Post"
+msgstr ""
+
+#: include/content.php:1089 include/general.php:1254 include/general.php:1287
+msgid "Thumbnail"
+msgstr ""
+
+#: include/content.php:1204
+msgid "Display post summary"
+msgstr ""
+
+#: include/content.php:1278
+msgid "Display comment button"
+msgstr ""
+
+#: include/content.php:1296
+msgid "Display post edit button"
+msgstr ""
+
+#: include/content.php:1329 include/general.php:1251 include/general.php:1279
+msgid "Author link location"
+msgstr ""
+
+#: include/content.php:1343 include/customize.php:1148
+#: include/customize.php:1307
+msgid "Post date location"
+msgstr ""
+
+#: include/content.php:1357 include/general.php:1249 include/general.php:1283
+msgid "Category links location"
+msgstr ""
+
+#: include/content.php:1387
+msgid "Request new features and get them in a week!"
+msgstr ""
+
+#: include/content.php:1389
+msgid "Order new features! (free of charge)"
+msgstr ""
+
+#: include/content.php:1523
+msgid "Options"
+msgstr ""
+
+#: include/content.php:1548
+msgid "Please select an item."
+msgstr ""
+
+#: include/content.php:1549
+msgid "Toggle panel: Pen Options"
+msgstr ""
+
+#: include/customize.php:29 include/general.php:861
+msgid "Colors"
+msgstr ""
+
+#: include/customize.php:34 include/customize.php:45 include/customize.php:647
+#: include/customize.php:854
+msgid "General"
+msgstr ""
+
+#: include/customize.php:51
+msgid "Shadows"
+msgstr ""
+
+#: include/customize.php:55
+msgid "Shadow display"
+msgstr ""
+
+#: include/customize.php:59
+msgid "Site background color"
+msgstr ""
+
+#: include/customize.php:63
+msgid "Site background effect"
+msgstr ""
+
+#: include/customize.php:66
+msgid "Trianglify"
+msgstr ""
+
+#: include/customize.php:67
+msgid "Shards"
+msgstr ""
+
+#: include/customize.php:72
+msgid "Text"
+msgstr ""
+
+#: include/customize.php:76 include/customize.php:162 include/customize.php:252
+#: include/customize.php:334 include/customize.php:504
+#: include/customize.php:583
+msgid "Links color"
+msgstr ""
+
+#: include/customize.php:80 include/customize.php:166 include/customize.php:256
+#: include/customize.php:338 include/customize.php:420
+#: include/customize.php:508 include/customize.php:587
+msgid "Links (hover)"
+msgstr ""
+
+#: include/customize.php:84
+msgid "Buttons background (top)"
+msgstr ""
+
+#: include/customize.php:88
+msgid "Buttons background (bottom)"
+msgstr ""
+
+#: include/customize.php:92
+msgid "Buttons text"
+msgstr ""
+
+#: include/customize.php:96
+msgid "Buttons border"
+msgstr ""
+
+#: include/customize.php:106 include/customize.php:691
+#: include/customize.php:842 include/customize.php:907
+#: include/customize.php:2133 include/general.php:73 include/general.php:873
+msgid "Header"
+msgstr ""
+
+#: include/customize.php:113 include/customize.php:210
+#: include/customize.php:289 include/customize.php:483
+#: include/customize.php:562
+msgid "Background (primary)"
+msgstr ""
+
+#: include/customize.php:117 include/customize.php:214
+#: include/customize.php:293 include/customize.php:487
+#: include/customize.php:566
+msgid "Background (secondary)"
+msgstr ""
+
+#: include/customize.php:121 include/customize.php:218
+#: include/customize.php:235 include/customize.php:297
+#: include/customize.php:370 include/customize.php:491
+#: include/customize.php:570
+msgid "Angle"
+msgstr ""
+
+#: include/customize.php:123 include/customize.php:220
+#: include/customize.php:237 include/customize.php:299
+#: include/customize.php:372 include/customize.php:493
+#: include/customize.php:572
+msgid "Horizontal"
+msgstr ""
+
+#: include/customize.php:124 include/customize.php:221
+#: include/customize.php:238 include/customize.php:300
+#: include/customize.php:373 include/customize.php:494
+#: include/customize.php:573
+msgid "Diagonal"
+msgstr ""
+
+#: include/customize.php:125 include/customize.php:222
+#: include/customize.php:239 include/customize.php:301
+#: include/customize.php:374 include/customize.php:495
+#: include/customize.php:574
+msgid "Vertical"
+msgstr ""
+
+#: include/customize.php:130 include/customize.php:244
+#: include/customize.php:342 include/customize.php:512
+#: include/customize.php:591
+msgid "Text shadow color"
+msgstr ""
+
+#: include/customize.php:134 include/customize.php:248
+#: include/customize.php:346 include/customize.php:516
+#: include/customize.php:595
+msgid "Text shadow"
+msgstr ""
+
+#: include/customize.php:138
+msgid "Site title color"
+msgstr ""
+
+#: include/customize.php:142
+msgid "Site title (hover)"
+msgstr ""
+
+#: include/customize.php:146
+msgid "Site description color"
+msgstr ""
+
+#: include/customize.php:150
+msgid "Site description (hover)"
+msgstr ""
+
+#: include/customize.php:154
+msgid "Phone color"
+msgstr ""
+
+#: include/customize.php:158
+msgid "Phone (hover)"
+msgstr ""
+
+#: include/customize.php:170 include/customize.php:330
+#: include/customize.php:412 include/customize.php:500
+#: include/customize.php:579
+msgid "Text color"
+msgstr ""
+
+#: include/customize.php:174 include/customize.php:424
+#: include/customize.php:534
+msgid "Form fields background (top)"
+msgstr ""
+
+#: include/customize.php:178 include/customize.php:428
+#: include/customize.php:538
+msgid "Form fields background (bottom)"
+msgstr ""
+
+#: include/customize.php:182 include/customize.php:314
+#: include/customize.php:432 include/customize.php:542
+msgid "Form fields text color"
+msgstr ""
+
+#: include/customize.php:186 include/customize.php:318
+msgid "Search button (top)"
+msgstr ""
+
+#: include/customize.php:190 include/customize.php:322
+msgid "Search button (bottom)"
+msgstr ""
+
+#: include/customize.php:194 include/customize.php:326
+msgid "Search button text"
+msgstr ""
+
+#: include/customize.php:204 include/customize.php:761
+#: include/customize.php:919 include/customize.php:2142
+#: include/customize.php:2149 include/general.php:887
+msgid "Navigation"
+msgstr ""
+
+#: include/customize.php:227
+msgid "Sub-menu background (primary)"
+msgstr ""
+
+#: include/customize.php:231
+msgid "Sub-menu background (secondary)"
+msgstr ""
+
+#: include/customize.php:260
+msgid "Submenu links color"
+msgstr ""
+
+#: include/customize.php:264
+msgid "Submenu links (hover)"
+msgstr ""
+
+#: include/customize.php:268 include/customize.php:272
+msgid "Text shadow (submenus)"
+msgstr ""
+
+#: include/customize.php:282 include/customize.php:2160
+#: include/customize.php:2168 include/general.php:899
+msgid "Search Bar"
+msgstr ""
+
+#: include/customize.php:284
+msgid ""
+"Please make sure you have the search box added to the top of the content "
+"area through Customize &rarr; Header &rarr; Search, otherwise changes that "
+"you will make in this section cannot be previewed live like the rest of the "
+"settings."
+msgstr ""
+
+#: include/customize.php:306
+msgid "Search fields background (top)"
+msgstr ""
+
+#: include/customize.php:310
+msgid "Search fields background (bottom)"
+msgstr ""
+
+#: include/customize.php:356
+msgid "Posts & pages"
+msgstr ""
+
+#: include/customize.php:362
+msgid "Post title background (primary)"
+msgstr ""
+
+#: include/customize.php:366
+msgid "Post title background (secondary)"
+msgstr ""
+
+#: include/customize.php:379
+msgid "Post title text color"
+msgstr ""
+
+#: include/customize.php:383
+msgid "Post title text shadow color"
+msgstr ""
+
+#: include/customize.php:387
+msgid "Post title text shadow"
+msgstr ""
+
+#: include/customize.php:391
+msgid "Post title link color"
+msgstr ""
+
+#: include/customize.php:395
+msgid "Post title link (hover)"
+msgstr ""
+
+#: include/customize.php:399
+msgid "Background color"
+msgstr ""
+
+#: include/customize.php:403
+msgid "Featured image frame (Full content)"
+msgstr ""
+
+#: include/customize.php:404
+msgid ""
+"Make sure the thumbnail frame is enabled in Customize &rarr; Content &rarr; "
+"Full content view."
+msgstr ""
+
+#: include/customize.php:416
+msgid "Links"
+msgstr ""
+
+#: include/customize.php:442 include/html.php:861
+msgid "List views"
+msgstr ""
+
+#: include/customize.php:448
+msgid "Featured image frame (plain list)"
+msgstr ""
+
+#: include/customize.php:449
+msgid ""
+"Make sure the thumbnail frame is enabled in Customize &rarr; Content &rarr; "
+"List Views."
+msgstr ""
+
+#: include/customize.php:457
+msgid "Thumbnails background (primary)"
+msgstr ""
+
+#: include/customize.php:458 include/customize.php:463
+msgid "Only for the jQuery Masonry layouts."
+msgstr ""
+
+#: include/customize.php:462
+msgid "Thumbnails background (secondary)"
+msgstr ""
+
+#: include/customize.php:479 include/customize.php:558
+msgid "Transparent background"
+msgstr ""
+
+#: include/customize.php:520
+msgid "Headings color"
+msgstr ""
+
+#: include/customize.php:521 include/customize.php:526
+msgid "Only applies to widgets with no color scheme."
+msgstr ""
+
+#: include/customize.php:525
+msgid "Headings shadow color"
+msgstr ""
+
+#: include/customize.php:530
+msgid "Headings shadow"
+msgstr ""
+
+#: include/customize.php:552 include/customize.php:741
+#: include/customize.php:1633 include/customize.php:2207
+#: include/customize.php:2214 include/general.php:74 include/general.php:1208
+msgid "Footer"
+msgstr ""
+
+#: include/customize.php:623
+msgid "Very Small"
+msgstr ""
+
+#: include/customize.php:624
+msgid "Small"
+msgstr ""
+
+#: include/customize.php:626
+msgid "Large"
+msgstr ""
+
+#: include/customize.php:627
+msgid "Very Large"
+msgstr ""
+
+#: include/customize.php:634 include/general.php:862
+msgid "Typography"
+msgstr ""
+
+#: include/customize.php:653
+msgid "Base font"
+msgstr ""
+
+#: include/customize.php:657
+msgid "Headings font"
+msgstr ""
+
+#: include/customize.php:661
+msgid "Content title font (In lists)"
+msgstr ""
+
+#: include/customize.php:665
+msgid "Content title font size (In lists)"
+msgstr ""
+
+#: include/customize.php:669
+msgid "Content title font (Full content)"
+msgstr ""
+
+#: include/customize.php:673
+msgid "Content title font size (Full content)"
+msgstr ""
+
+#: include/customize.php:677
+msgid "Forms font"
+msgstr ""
+
+#: include/customize.php:681
+msgid "Buttons font"
+msgstr ""
+
+#: include/customize.php:697
+msgid "Site title font"
+msgstr ""
+
+#: include/customize.php:701
+msgid "Site title font size"
+msgstr ""
+
+#: include/customize.php:705
+msgid "Site title font resize"
+msgstr ""
+
+#: include/customize.php:706
+msgid "Font size enhancement on small screens"
+msgstr ""
+
+#: include/customize.php:708
+msgid "Disabled"
+msgstr ""
+
+#: include/customize.php:709
+msgid "Dynamic"
+msgstr ""
+
+#: include/customize.php:710
+msgid "Shrink to fit"
+msgstr ""
+
+#: include/customize.php:715
+msgid "Site description font"
+msgstr ""
+
+#: include/customize.php:719
+msgid "Site description font size"
+msgstr ""
+
+#: include/customize.php:723
+msgid "Social links font size"
+msgstr ""
+
+#: include/customize.php:727 include/customize.php:747
+msgid "Phone font"
+msgstr ""
+
+#: include/customize.php:731 include/customize.php:751
+msgid "Phone font size"
+msgstr ""
+
+#: include/customize.php:767
+msgid "Navigation font (parents)"
+msgstr ""
+
+#: include/customize.php:771
+msgid "Navigation font size"
+msgstr ""
+
+#: include/customize.php:775
+msgid "Navigation font (sub-menus)"
+msgstr ""
+
+#: include/customize.php:791
+msgid "Top: Widget title font"
+msgstr ""
+
+#: include/customize.php:795
+msgid "Top: Widget title font size"
+msgstr ""
+
+#: include/customize.php:799
+msgid "Left: Widget title font"
+msgstr ""
+
+#: include/customize.php:803
+msgid "Left: Widget title font size"
+msgstr ""
+
+#: include/customize.php:807
+msgid "Right: Widget title font"
+msgstr ""
+
+#: include/customize.php:811
+msgid "Right: Widget title font size"
+msgstr ""
+
+#: include/customize.php:815
+msgid "Bottom: Widget title font"
+msgstr ""
+
+#: include/customize.php:819
+msgid "Bottom: Widget title font size"
+msgstr ""
+
+#: include/customize.php:860
+msgid "Sticky header"
+msgstr ""
+
+#: include/customize.php:864
+msgid "Display the site title"
+msgstr ""
+
+#: include/customize.php:868
+msgid "Site title animation"
+msgstr ""
+
+#: include/customize.php:872
+msgid "Display the site description"
+msgstr ""
+
+#: include/customize.php:876
+msgid "Site description animation"
+msgstr ""
+
+#: include/customize.php:880
+msgid "Header alignment"
+msgstr ""
+
+#: include/customize.php:895 include/general.php:878
+msgid "Search"
+msgstr ""
+
+#: include/customize.php:901
+msgid "Display the search box"
+msgstr ""
+
+#: include/customize.php:925
+msgid "Display the main navigation menu"
+msgstr ""
+
+#: include/customize.php:929
+msgid "Display the mobile navigation menu"
+msgstr ""
+
+#: include/customize.php:933
+msgid "Animation on page load"
+msgstr ""
+
+#: include/customize.php:937
+msgid "Menu separator"
+msgstr ""
+
+#: include/customize.php:948
+msgid "Sub-menu separator"
+msgstr ""
+
+#: include/customize.php:959
+msgid "Hover style"
+msgstr ""
+
+#: include/customize.php:970
+msgid "Dropdown arrows"
+msgstr ""
+
+#: include/customize.php:981
+msgid "Dropdown animation"
+msgstr ""
+
+#: include/customize.php:999
+msgid "Dropdown animation speed"
+msgstr ""
+
+#: include/customize.php:1001
+msgid "Very Slow"
+msgstr ""
+
+#: include/customize.php:1002
+msgid "Slow"
+msgstr ""
+
+#: include/customize.php:1003
+msgid "Normal"
+msgstr ""
+
+#: include/customize.php:1004
+msgid "Fast"
+msgstr ""
+
+#: include/customize.php:1005
+msgid "Very Fast"
+msgstr ""
+
+#: include/customize.php:1010
+msgid "Navigation alignment"
+msgstr ""
+
+#: include/customize.php:1038 include/customize.php:2175
+msgid "Content"
+msgstr ""
+
+#: include/customize.php:1047 include/general.php:935
+msgid "List Views"
+msgstr ""
+
+#: include/customize.php:1049
+msgid ""
+"The following options apply to both \"Plain list\" and \"jQuery Masonry\" "
+"layouts."
+msgstr ""
+
+#: include/customize.php:1056
+msgid "jQuery Masonry"
+msgstr ""
+
+#: include/customize.php:1057
+msgid "Plain list"
+msgstr ""
+
+#: include/customize.php:1062
+msgid "jQuery Masonry: Columns"
+msgstr ""
+
+#: include/customize.php:1063
+msgid "Maximum number of columns"
+msgstr ""
+
+#: include/customize.php:1065
+msgid "Two"
+msgstr ""
+
+#: include/customize.php:1066
+msgid "Three"
+msgstr ""
+
+#: include/customize.php:1067
+msgid "Four"
+msgstr ""
+
+#: include/customize.php:1068
+msgid "Five"
+msgstr ""
+
+#: include/customize.php:1073
+msgid "jQuery Masonry: Thumbnails effect"
+msgstr ""
+
+#: include/customize.php:1076
+msgid "Zoom in"
+msgstr ""
+
+#: include/customize.php:1077
+msgid "Zoom out"
+msgstr ""
+
+#: include/customize.php:1082
+msgid "jQuery Masonry: Thumbnails style"
+msgstr ""
+
+#: include/customize.php:1093
+msgid "Content list animation"
+msgstr ""
+
+#: include/customize.php:1097
+msgid "Content list effect"
+msgstr ""
+
+#: include/customize.php:1098
+msgid ""
+"This may not work in conjunction with some of the animations in the "
+"\"Content list animation\" above."
+msgstr ""
+
+#: include/customize.php:1101
+msgid "Enlarge"
+msgstr ""
+
+#: include/customize.php:1102
+msgid "Fade"
+msgstr ""
+
+#: include/customize.php:1103
+msgid "Enlarge + Fade"
+msgstr ""
+
+#: include/customize.php:1116 include/customize.php:1283
+msgid "Center-align post titles"
+msgstr ""
+
+#: include/customize.php:1120
+msgid "Display excerpt"
+msgstr ""
+
+#: include/customize.php:1128
+msgid "Display post titles"
+msgstr ""
+
+#: include/customize.php:1132 include/customize.php:1291
+msgid "Post author location"
+msgstr ""
+
+#: include/customize.php:1140
+msgid "Display post authors"
+msgstr ""
+
+#: include/customize.php:1144 include/customize.php:1303
+msgid "Author profile animation"
+msgstr ""
+
+#: include/customize.php:1160 include/customize.php:1319
+msgid "Post categories location"
+msgstr ""
+
+#: include/customize.php:1168
+msgid "Display post categories"
+msgstr ""
+
+#: include/customize.php:1172 include/customize.php:1331
+msgid "Display the first category only"
+msgstr ""
+
+#: include/customize.php:1176
+msgid "Display post thumbnails"
+msgstr ""
+
+#: include/customize.php:1180 include/customize.php:1339
+msgid "Thumbnails animation"
+msgstr ""
+
+#: include/customize.php:1184 include/customize.php:1362
+msgid "Post thumbnail rotate"
+msgstr ""
+
+#: include/customize.php:1185 include/customize.php:1190
+#: include/customize.php:1195 include/customize.php:1205
+msgid "Does not apply to the jQuery Masonry layout."
+msgstr ""
+
+#: include/customize.php:1189
+msgid "Post thumbnail frame"
+msgstr ""
+
+#: include/customize.php:1194 include/customize.php:1343
+msgid "Post thumbnail alignment"
+msgstr ""
+
+#: include/customize.php:1204 include/customize.php:1352
+msgid "Post thumbnail size"
+msgstr ""
+
+#: include/customize.php:1215
+msgid "Display post summaries"
+msgstr ""
+
+#: include/customize.php:1223
+msgid "Footer: Display post tags"
+msgstr ""
+
+#: include/customize.php:1227
+msgid "Footer: Display post comment buttons"
+msgstr ""
+
+#: include/customize.php:1231
+msgid "Footer: Display post edit buttons"
+msgstr ""
+
+#: include/customize.php:1235
+msgid "Pagination buttons animation"
+msgstr ""
+
+#: include/customize.php:1260
+msgid "Full Content Views"
+msgstr ""
+
+#: include/customize.php:1261
+msgid ""
+"You can override these settings for individual contents through Posts (or "
+"Pages) &rarr; Edit &rarr; Pen Options."
+msgstr ""
+
+#: include/customize.php:1267 include/general.php:1271
+msgid "Content area animation"
+msgstr ""
+
+#: include/customize.php:1299
+msgid "Display post author"
+msgstr ""
+
+#: include/customize.php:1327
+msgid "Display post category"
+msgstr ""
+
+#: include/customize.php:1335
+msgid "Display post thumbnail"
+msgstr ""
+
+#: include/customize.php:1366
+msgid "Post thumbnail framed"
+msgstr ""
+
+#: include/customize.php:1391
+msgid "Comments animation"
+msgstr ""
+
+#: include/customize.php:1395
+msgid "Pagination animation"
+msgstr ""
+
+#: include/customize.php:1435
+msgid "Content area alignment"
+msgstr ""
+
+#: include/customize.php:1444
+msgid "Round corners"
+msgstr ""
+
+#: include/customize.php:1467 include/general.php:867
+msgid "Front Page"
+msgstr ""
+
+#: include/customize.php:1473
+msgid "Front Page Content"
+msgstr ""
+
+#: include/customize.php:1479
+msgid "Front page sidebars"
+msgstr ""
+
+#: include/customize.php:1480
+msgid ""
+"You may also use some plugins such as the \"Widget Visibility\" or "
+"\"Conditional Logic\"."
+msgstr ""
+
+#: include/customize.php:1634
+msgid ""
+"You can control the visibility of the phone number and social network icons "
+"through Customize &rarr; Contact and the colors of the footer links through "
+"Customize &rarr; Colors &rarr; Footer."
+msgstr ""
+
+#: include/customize.php:1640
+msgid "Footer alignment"
+msgstr ""
+
+#: include/customize.php:1649
+msgid "Display footer navigation"
+msgstr ""
+
+#: include/customize.php:1653
+msgid "Footer menu animation"
+msgstr ""
+
+#: include/customize.php:1657
+msgid "Display \"back to top\" link"
+msgstr ""
+
+#: include/customize.php:1661
+msgid "Display copyright"
+msgstr ""
+
+#: include/customize.php:1665
+msgid "Copyright notice"
+msgstr ""
+
+#: include/customize.php:1668
+#, php-format
+msgid "The following tokens are available:%s"
+msgstr ""
+
+#: include/customize.php:1671
+msgid "<strong>%YEAR%</strong> for the current year."
+msgstr ""
+
+#: include/customize.php:1672
+msgid ""
+"<strong>%SITE_NAME%</strong> for your site name as set in Settings &rarr; "
+"General."
+msgstr ""
+
+#: include/customize.php:1673
+msgid ""
+"<strong>%SITE_URL%</strong> for your site URL as set in Settings &rarr; "
+"General."
+msgstr ""
+
+#: include/customize.php:1676
+#, php-format
+msgid "<strong>Examples:</strong>%s"
+msgstr ""
+
+#: include/customize.php:1681
+msgid "(Supports limited HTML)"
+msgstr ""
+
+#: include/customize.php:1708
+msgid "Contact information"
+msgstr ""
+
+#: include/customize.php:1717 include/html.php:178 include/html.php:182
+#: include/html.php:736
+msgid "Twitter"
+msgstr ""
+
+#: include/customize.php:1723
+msgid "Twitter URL"
+msgstr ""
+
+#: include/customize.php:1728
+msgid "Twitter link in the header"
+msgstr ""
+
+#: include/customize.php:1732
+msgid "Twitter link in the footer"
+msgstr ""
+
+#: include/customize.php:1739 include/html.php:88 include/html.php:92
+#: include/html.php:727
+msgid "Facebook"
+msgstr ""
+
+#: include/customize.php:1745
+msgid "Facebook URL"
+msgstr ""
+
+#: include/customize.php:1750
+msgid "Facebook link in the header"
+msgstr ""
+
+#: include/customize.php:1754
+msgid "Facebook link in the footer"
+msgstr ""
+
+#: include/customize.php:1761 include/html.php:106 include/html.php:110
+msgid "Instagram"
+msgstr ""
+
+#: include/customize.php:1767
+msgid "Instagram URL"
+msgstr ""
+
+#: include/customize.php:1772
+msgid "Instagram link in the header"
+msgstr ""
+
+#: include/customize.php:1776
+msgid "Instagram link in the footer"
+msgstr ""
+
+#: include/customize.php:1805 include/html.php:142 include/html.php:146
+msgid "VK"
+msgstr ""
+
+#: include/customize.php:1811
+msgid "VK URL"
+msgstr ""
+
+#: include/customize.php:1816
+msgid "VK link in the header"
+msgstr ""
+
+#: include/customize.php:1820
+msgid "VK link in the footer"
+msgstr ""
+
+#: include/customize.php:1827 include/html.php:160 include/html.php:164
+msgid "Pinterest"
+msgstr ""
+
+#: include/customize.php:1833
+msgid "Pinterest URL"
+msgstr ""
+
+#: include/customize.php:1838
+msgid "Pinterest link in the header"
+msgstr ""
+
+#: include/customize.php:1842
+msgid "Pinterest link in the footer"
+msgstr ""
+
+#: include/customize.php:1849 include/html.php:196 include/html.php:200
+msgid "LinkedIn"
+msgstr ""
+
+#: include/customize.php:1855
+msgid "LinkedIn URL"
+msgstr ""
+
+#: include/customize.php:1860
+msgid "LinkedIn link in the header"
+msgstr ""
+
+#: include/customize.php:1864
+msgid "LinkedIn link in the footer"
+msgstr ""
+
+#: include/customize.php:1871 include/html.php:232 include/html.php:236
+msgid "Flickr"
+msgstr ""
+
+#: include/customize.php:1877
+msgid "Flickr URL"
+msgstr ""
+
+#: include/customize.php:1882
+msgid "Flickr link in the header"
+msgstr ""
+
+#: include/customize.php:1886
+msgid "Flickr link in the footer"
+msgstr ""
+
+#: include/customize.php:1893 include/html.php:214 include/html.php:218
+msgid "BitBucket"
+msgstr ""
+
+#: include/customize.php:1899
+msgid "BitBucket URL"
+msgstr ""
+
+#: include/customize.php:1904
+msgid "BitBucket link in the header"
+msgstr ""
+
+#: include/customize.php:1908
+msgid "BitBucket link in the footer"
+msgstr ""
+
+#: include/customize.php:1915 include/html.php:250 include/html.php:254
+msgid "Github"
+msgstr ""
+
+#: include/customize.php:1921
+msgid "Github URL"
+msgstr ""
+
+#: include/customize.php:1926
+msgid "Github link in the header"
+msgstr ""
+
+#: include/customize.php:1930
+msgid "Github link in the footer"
+msgstr ""
+
+#: include/customize.php:1937 include/html.php:322 include/html.php:326
+msgid "Slack"
+msgstr ""
+
+#: include/customize.php:1943
+msgid "Slack URL"
+msgstr ""
+
+#: include/customize.php:1948
+msgid "Slack link in the header"
+msgstr ""
+
+#: include/customize.php:1952
+msgid "Slack link in the footer"
+msgstr ""
+
+#: include/customize.php:1959 include/html.php:268 include/html.php:272
+msgid "Telegram"
+msgstr ""
+
+#: include/customize.php:1965
+msgid "Telegram URL"
+msgstr ""
+
+#: include/customize.php:1970
+msgid "Telegram link in the header"
+msgstr ""
+
+#: include/customize.php:1974
+msgid "Telegram link in the footer"
+msgstr ""
+
+#: include/customize.php:1981 include/html.php:286 include/html.php:290
+msgid "WhatsApp"
+msgstr ""
+
+#: include/customize.php:1987
+msgid "WhatsApp Link"
+msgstr ""
+
+#: include/customize.php:1992
+msgid "WhatsApp link in the header"
+msgstr ""
+
+#: include/customize.php:1996
+msgid "WhatsApp link in the footer"
+msgstr ""
+
+#: include/customize.php:2003 include/html.php:304 include/html.php:308
+msgid "Skype"
+msgstr ""
+
+#: include/customize.php:2009
+msgid "Skype Link"
+msgstr ""
+
+#: include/customize.php:2014
+msgid "Skype link in the header"
+msgstr ""
+
+#: include/customize.php:2018
+msgid "Skype link in the footer"
+msgstr ""
+
+#: include/customize.php:2025
+msgid "Phone"
+msgstr ""
+
+#: include/customize.php:2031
+msgid "Phone number"
+msgstr ""
+
+#: include/customize.php:2035
+msgid "Phone number in the header"
+msgstr ""
+
+#: include/customize.php:2039
+msgid "Header phone number animation"
+msgstr ""
+
+#: include/customize.php:2043
+msgid "Phone number in the footer"
+msgstr ""
+
+#: include/customize.php:2047
+msgid "Footer phone number animation"
+msgstr ""
+
+#: include/customize.php:2054
+msgid "Feed"
+msgstr ""
+
+#: include/customize.php:2060
+msgid "Feed URL"
+msgstr ""
+
+#: include/customize.php:2065
+msgid "RSS link in the header"
+msgstr ""
+
+#: include/customize.php:2069
+msgid "RSS link in the footer"
+msgstr ""
+
+#: include/customize.php:2076 include/html.php:70 include/html.php:74
+msgid "E-mail"
+msgstr ""
+
+#: include/customize.php:2082
+msgid "Your e-mail or URL to a \"Contact us\" page"
+msgstr ""
+
+#: include/customize.php:2083
+msgid "mail@example.com or http://example.com/contact-us"
+msgstr ""
+
+#: include/customize.php:2087
+msgid "E-mail link in the header"
+msgstr ""
+
+#: include/customize.php:2091
+msgid "E-mail link in the footer"
+msgstr ""
+
+#: include/customize.php:2114
+msgid "Background images"
+msgstr ""
+
+#: include/customize.php:2121
+msgid "Site"
+msgstr ""
+
+#: include/customize.php:2127
+msgid "Dim the lights"
+msgstr ""
+
+#: include/customize.php:2128
+msgid "(This feature is a part of the \"Pen\" theme.)"
+msgstr ""
+
+#: include/customize.php:2153
+msgid "Navigation (Sub-menus)"
+msgstr ""
+
+#: include/customize.php:2162
+msgid ""
+"Please make sure you have the search box added to the top of the content "
+"area through Customize &rarr; Search so you can see your background image."
+msgstr ""
+
+#: include/customize.php:2182
+msgid "Content Title"
+msgstr ""
+
+#: include/customize.php:2186
+msgid "Use featured image as background"
+msgstr ""
+
+#: include/customize.php:2236
+msgid "Display the site logo"
+msgstr ""
+
+#: include/customize.php:2240
+msgid "Logo animation"
+msgstr ""
+
+#: include/customize.php:2244
+msgid "Logo size"
+msgstr ""
+
+#: include/customize.php:2247
+msgid "Limit height"
+msgstr ""
+
+#: include/customize.php:2248
+msgid "Limit width"
+msgstr ""
+
+#: include/customize.php:3998
+msgid "Do you need help?"
+msgstr ""
+
+#: include/customize.php:3999
+msgid "Request Support"
+msgstr ""
+
+#: include/customize.php:4002
+msgid "Pen theme only:"
+msgstr ""
+
+#: include/customize.php:4003
+msgid ""
+"This is a part of the 'Pen' theme so if you switch to another theme these "
+"settings will be no longer used. The rest of the settings that are here are "
+"either parts of the WordPress core or added via plugins and they are "
+"available with or without this theme."
+msgstr ""
+
+#: include/general.php:826 include/general.php:846
+msgid "Current"
+msgstr ""
+
+#: include/general.php:831
+msgid "Color Schemes"
+msgstr ""
+
+#: include/general.php:844
+#, php-format
+msgid "Font Preset %d"
+msgstr ""
+
+#: include/general.php:851
+msgid "Font Presets"
+msgstr ""
+
+#: include/general.php:858
+msgid "General Settings"
+msgstr ""
+
+#: include/general.php:860
+msgid "<span>Site </span>Background Image"
+msgstr ""
+
+#: include/general.php:863 include/general.php:914 include/general.php:939
+msgid "<span>Site </span>Layout"
+msgstr ""
+
+#: include/general.php:875
+msgid "General<span> Header Settings</span>"
+msgstr ""
+
+#: include/general.php:876
+msgid "<span>Header </span>Background Image"
+msgstr ""
+
+#: include/general.php:877
+msgid "Logo"
+msgstr ""
+
+#: include/general.php:879
+msgid "<span>Header </span>Colors"
+msgstr ""
+
+#: include/general.php:880
+msgid "<span>Header </span>Typography"
+msgstr ""
+
+#: include/general.php:881 include/general.php:1214
+msgid "<span>Site </span>Contacts"
+msgstr ""
+
+#: include/general.php:889
+msgid "General<span> Navigation Settings</span>"
+msgstr ""
+
+#: include/general.php:890
+msgid "Menus"
+msgstr ""
+
+#: include/general.php:891
+msgid "<span>Navigation </span>Background Image"
+msgstr ""
+
+#: include/general.php:892
+msgid "<span>Navigation </span>Colors"
+msgstr ""
+
+#: include/general.php:893
+msgid "<span>Navigation </span>Typography"
+msgstr ""
+
+#: include/general.php:901
+msgid "General<span> Search Settings</span>"
+msgstr ""
+
+#: include/general.php:902
+msgid "<span>Search Bar </span>Background Image"
+msgstr ""
+
+#: include/general.php:903
+msgid "<span>Search Bar </span>Colors"
+msgstr ""
+
+#: include/general.php:910
+msgid "Content Area"
+msgstr ""
+
+#: include/general.php:912
+msgid "General<span> Content Area Settings</span>"
+msgstr ""
+
+#: include/general.php:913
+msgid "<span>Content Area </span>Colors"
+msgstr ""
+
+#: include/general.php:927
+#, php-format
+msgid "<span>Edit </span>This %s"
+msgstr ""
+
+#: include/general.php:937
+msgid "General<span> List Views Settings</span>"
+msgstr ""
+
+#: include/general.php:938
+msgid "<span>Content List </span>Colors"
+msgstr ""
+
+#: include/general.php:950 include/general.php:962 include/general.php:980
+#: include/general.php:998 include/general.php:1016 include/general.php:1034
+#: include/general.php:1052 include/general.php:1070 include/general.php:1088
+#: include/general.php:1106 include/general.php:1124 include/general.php:1141
+#: include/general.php:1156 include/general.php:1171 include/general.php:1186
+#: include/general.php:1201
+msgid "Configure Widgets"
+msgstr ""
+
+#: include/general.php:970 include/general.php:977 include/general.php:988
+#: include/general.php:995 include/general.php:1006 include/general.php:1013
+#: include/general.php:1024 include/general.php:1031 include/general.php:1042
+#: include/general.php:1049 include/general.php:1060 include/general.php:1067
+#: include/general.php:1078 include/general.php:1085 include/general.php:1138
+#: include/general.php:1153 include/general.php:1168 include/general.php:1183
+#: include/general.php:1198
+#, php-format
+msgid "\"%s\" Widget Area"
+msgstr ""
+
+#: include/general.php:1096 include/general.php:1103 include/general.php:1114
+#: include/general.php:1121
+#, php-format
+msgid "\"%s\" Sidebar"
+msgstr ""
+
+#: include/general.php:1133
+msgid "<span>Bottom Widget Area - </span>Background Image"
+msgstr ""
+
+#: include/general.php:1134
+msgid "<span>Bottom Widget Area - </span>Colors"
+msgstr ""
+
+#: include/general.php:1210
+msgid "General<span> - Footer Settings</span>"
+msgstr ""
+
+#: include/general.php:1211
+msgid "<span>Footer - </span>Background Image"
+msgstr ""
+
+#: include/general.php:1212
+msgid "<span>Footer - </span>Colors"
+msgstr ""
+
+#: include/general.php:1213
+msgid "<span>Footer - </span>Typography"
+msgstr ""
+
+#: include/general.php:1236 include/general.php:1268
+msgid "Center-align content header"
+msgstr ""
+
+#: include/general.php:1237 include/general.php:1269
+msgid "Center-align content title"
+msgstr ""
+
+#: include/general.php:1238 include/general.php:1270
+msgid "Content title"
+msgstr ""
+
+#: include/general.php:1239 include/general.php:1247
+msgid "Content animation"
+msgstr ""
+
+#: include/general.php:1240 include/general.php:1272
+msgid "Content author"
+msgstr ""
+
+#: include/general.php:1241 include/general.php:1273
+msgid "Content date"
+msgstr ""
+
+#: include/general.php:1242 include/general.php:1274
+msgid "Content date location"
+msgstr ""
+
+#: include/general.php:1243 include/general.php:1275
+msgid "Content footer"
+msgstr ""
+
+#: include/general.php:1244 include/general.php:1276
+msgid "Content header"
+msgstr ""
+
+#: include/general.php:1245
+msgid "Content summary"
+msgstr ""
+
+#: include/general.php:1246 include/general.php:1277
+msgid "Content tags"
+msgstr ""
+
+#: include/general.php:1248 include/general.php:1282
+msgid "Category links"
+msgstr ""
+
+#: include/general.php:1250 include/general.php:1278
+msgid "Author profile"
+msgstr ""
+
+#: include/general.php:1253 include/general.php:1286
+msgid "Featured image as title background"
+msgstr ""
+
+#: include/general.php:1255 include/general.php:1289
+msgid "Thumbnail alignment"
+msgstr ""
+
+#: include/general.php:1256 include/general.php:1288
+msgid "Thumbnail frame color"
+msgstr ""
+
+#: include/general.php:1257 include/general.php:1291
+msgid "Thumbnail frame"
+msgstr ""
+
+#: include/general.php:1258 include/general.php:1292
+msgid "Thumbnail size"
+msgstr ""
+
+#: include/general.php:1259 include/general.php:1293
+msgid "Thumbnail rotate"
+msgstr ""
+
+#: include/general.php:1261
+msgid "Comment button"
+msgstr ""
+
+#: include/general.php:1262
+msgid "Edit button"
+msgstr ""
+
+#: include/general.php:1267
+msgid "Site Width"
+msgstr ""
+
+#: include/general.php:1280
+msgid "Share buttons"
+msgstr ""
+
+#: include/general.php:1284
+msgid "Search box"
+msgstr ""
+
+#: include/general.php:1290
+msgid "Thumbnail animation"
+msgstr ""
+
+#: include/html.php:49
+msgid "Subscribe the RSS"
+msgstr ""
+
+#: include/html.php:53
+msgid "RSS"
+msgstr ""
+
+#: include/html.php:371 include/html.php:412
+msgid ""
+"This is a shortcut link for users with theme customization permission, "
+"invisible for the rest."
+msgstr ""
+
+#: include/html.php:371 partials/site-navigation.php:24
+msgid "Header Menu"
+msgstr ""
+
+#: include/html.php:387 include/html.php:427
+msgid "Create a menu?"
+msgstr ""
+
+#: include/html.php:473
+msgctxt "Separates category links."
+msgid ", "
+msgstr ""
+
+#: include/html.php:478
+msgid "Categories:"
+msgstr ""
+
+#: include/html.php:505
+#, php-format
+msgctxt "post date"
+msgid "Posted on %s"
+msgstr ""
+
+#: include/html.php:523
+#, php-format
+msgctxt "post author"
+msgid "by %s"
+msgstr ""
+
+#: include/html.php:719
+msgid "Share this!"
+msgstr ""
+
+#: include/html.php:724
+msgid "Share on Facebook"
+msgstr ""
+
+#: include/html.php:733
+msgid "Share on Twitter"
+msgstr ""
+
+#: include/html.php:791 include/html.php:806 include/html.php:839
+msgid "You can change this by editing this post."
+msgstr ""
+
+#: include/html.php:821
+#, php-format
+msgid "%s if on home:"
+msgstr ""
+
+#: include/html.php:824 include/html.php:838
+msgid "Hidden"
+msgstr ""
+
+#: include/html.php:825
+msgid ""
+"You can change this through Appearance &rarr; Customize &rarr; Front page "
+"&rarr; Sidebars."
+msgstr ""
+
+#: include/html.php:835
+#, php-format
+msgid "%s:"
+msgstr ""
+
+#: include/html.php:851
+msgid "Content settings"
+msgstr ""
+
+#: include/html.php:897
+msgid "Full content view"
+msgstr ""
+
+#: include/html.php:936
+#, php-format
+msgid "\"%s\" Area"
+msgstr ""
+
+#: include/html.php:960
+#, php-format
+msgid "Edit this %s"
+msgstr ""
+
+#: include/html.php:973
+msgid "Edit defaults"
+msgstr ""
+
+#: include/html.php:1008
+#, php-format
+msgid "Customize <span>%s</span>"
+msgstr ""
+
+#: include/html.php:1091
+msgid "Pages:"
+msgstr ""
+
+#: include/sidebars.php:18
+msgid "Left Sidebar"
+msgstr ""
+
+#: include/sidebars.php:22
+msgid "Right Sidebar"
+msgstr ""
+
+#: include/sidebars.php:27
+msgid "(Stays in the middle of the header)"
+msgstr ""
+
+#: include/sidebars.php:31
+msgid "(Stays at the right of the header)"
+msgstr ""
+
+#: include/sidebars.php:35
+msgid "Located above the bigger search box."
+msgstr ""
+
+#: include/sidebars.php:39
+msgid "Located left side of the bigger search box."
+msgstr ""
+
+#: include/sidebars.php:43
+msgid "Located right side of the bigger search box."
+msgstr ""
+
+#: include/sidebars.php:47
+msgid "Located beneath the bigger search box."
+msgstr ""
+
+#: include/sidebars.php:51
+msgid ""
+"Located above the content area below the header and the navigation menu."
+msgstr ""
+
+#: include/sidebars.php:55
+msgid "Located beneath the content area."
+msgstr ""
+
+#: include/sidebars.php:59
+msgid "Located above the content."
+msgstr ""
+
+#: include/sidebars.php:63
+msgid "Located beneath the content."
+msgstr ""
+
+#: include/typography.php:32
+#, php-format
+msgid "[G] %s"
+msgstr ""
+
+#: include/widgets.php:31
+msgid ""
+"This is a part of the \"Pen\" theme so if you switch to another theme these "
+"settings will be no longer used. The rest of the settings that are here are "
+"either parts of the WordPress core or added via plugins and they are "
+"available with or without this theme."
+msgstr ""
+
+#: include/widgets.php:43
+msgid "Widget Animation"
+msgstr ""
+
+#: include/widgets.php:69
+msgid "Widget Color Scheme:"
+msgstr ""
+
+#: include/widgets.php:80
+msgid "Blue"
+msgstr ""
+
+#: include/widgets.php:83
+msgid "Orange"
+msgstr ""
+
+#: include/widgets.php:84
+msgid "Purple"
+msgstr ""
+
+#: include/widgets.php:85
+msgid "Red"
+msgstr ""
+
+#: include/widgets.php:86
+msgid "Yellow"
+msgstr ""
+
+#: partials/content-copyright.php:18
+msgid "Y"
+msgstr ""
+
+#: partials/content-copyright.php:29
+msgid "All rights reserved."
+msgstr ""
+
+#: partials/content-footer.php:23 partials/content-search-footer.php:23
+msgid "Tagged"
+msgstr ""
+
+#: partials/content-footer.php:38 partials/content-search-footer.php:38
+#, php-format
+msgid "Leave a Comment<span class=\"screen-reader-text\"> on %s</span>"
+msgstr ""
+
+#: partials/content-footer.php:55 partials/content-page.php:93
+#: partials/content-search-footer.php:57
+#, php-format
+msgid "Edit %s"
+msgstr ""
+
+#: partials/content-none.php:15
+msgid "Nothing Found"
+msgstr ""
+
+#: partials/content-none.php:29
+#, php-format
+msgid ""
+"Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
+msgstr ""
+
+#: partials/content-none.php:45
+msgid ""
+"Sorry, but nothing matched your search terms. Please try again with some "
+"different keywords."
+msgstr ""
+
+#: partials/content-none.php:53
+msgid ""
+"It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps "
+"searching can help."
+msgstr ""
+
+#: search.php:21
+msgid "Search Results for:"
+msgstr ""

+ 33 - 0
page.php

@@ -0,0 +1,33 @@
+<?php
+/**
+ * The template for displaying all pages.
+ *
+ * This is the template that displays all pages by default.
+ * Please note that this is the WordPress construct of pages
+ * and that other 'pages' on your WordPress site may use a
+ * different template.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+get_header(); ?>
+<div id="primary" class="content-area">
+	<main id="main" class="<?php echo esc_attr( pen_content_classes() ); ?>" role="main">
+		<div class="pen_article_wrapper">
+<?php
+while ( have_posts() ) {
+	the_post();
+	get_template_part( 'partials/content', 'page' );
+	// If comments are open or we have at least one comment, load up the comment template.
+	if ( comments_open() || get_comments_number() ) {
+		comments_template();
+	}
+}
+?>
+		</div>
+	</main><!-- #main -->
+</div><!-- #primary -->
+<?php
+get_footer();

+ 36 - 0
partials/content-copyright.php

@@ -0,0 +1,36 @@
+<?php
+/**
+ * Template part for displaying the content footer.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+ob_start( 'trim' );
+if ( pen_option_get( 'footer_copyright_display' ) ) {
+	?>
+	<div class="site-info">
+	<?php
+	$copyright = pen_option_get( 'footer_copyright_text' );
+
+	/* Translators: Please refer to the PHP documentation for the date() function. */
+	$copyright = str_ireplace( '%YEAR%', date_i18n( esc_html__( 'Y', 'pen' ) ), $copyright );
+	$copyright = str_ireplace( '%SITE_NAME%', get_bloginfo( 'name' ), $copyright );
+	$site_url  = home_url();
+	$copyright = str_ireplace( '%SITE_URL%', $site_url, $copyright );
+
+	if ( $copyright ) {
+		echo wp_kses( $copyright, wp_kses_allowed_html( 'post' ) );
+	} else {
+		printf(
+			'&copy; %1$s. %2$s',
+			esc_html( get_bloginfo( 'name' ) ),
+			esc_html__( 'All rights reserved.', 'pen' )
+		);
+	}
+	?>
+	</div><!-- .site-info -->
+	<?php
+}
+echo ob_get_clean(); /* phpcs:ignore */

+ 82 - 0
partials/content-footer.php

@@ -0,0 +1,82 @@
+<?php
+/**
+ * Template part for displaying the content footer.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+ob_start( 'trim' );
+// Hide tags for pages.
+if ( 'post' === get_post_type() ) {
+	/* Translators: used between list items, there is a space after the comma */
+	$tags_list = get_the_tag_list();
+
+	if ( $tags_list ) {
+		/* Translators: %s: The tag name. */
+		printf(
+			'<span class="tags-links%1$s">%2$s</span>',
+			pen_class_lists( 'tags_display_override' ), /* phpcs:ignore */
+			sprintf(
+				'<span class="pen_heading_tags">%1$s</span>%2$s',
+				esc_html__( 'Tagged', 'pen' ),
+				$tags_list /* phpcs:ignore */
+			)
+		); /* phpcs:ignore */
+	}
+}
+
+if ( ! is_singular() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
+	?>
+	<span class="comments-link<?php pen_class_lists( 'button_comment_display_override' ); ?>">
+	<?php
+	comments_popup_link(
+		sprintf(
+			wp_kses(
+				/* Translators: %s: post title */
+				__( 'Leave a Comment<span class="screen-reader-text"> on %s</span>', 'pen' ),
+				array(
+					'span' => array(
+						'class' => array(),
+					),
+				)
+			),
+			get_the_title()
+		)
+	);
+	echo '</span>';
+}
+
+if ( ! is_singular() ) {
+	edit_post_link(
+		sprintf(
+			/* Translators: %s: Name of current post */
+			esc_html__( 'Edit %s', 'pen' ),
+			the_title( '<span class="screen-reader-text">"', '"</span>', false )
+		),
+		sprintf(
+			'<span class="edit-link%s">',
+			pen_class_lists( 'button_edit_display_override' )
+		),
+		'</span>'
+	);
+}
+$post_footer  = ob_get_clean();
+$social_share = pen_html_share( 'footer' );
+$entry_meta   = pen_html_content_information( 'footer' );
+if ( $post_footer || $social_share || $entry_meta ) {
+	?>
+	<footer class="entry-footer<?php echo pen_class_lists( 'footer_display_override' ); /* phpcs:ignore */ ?>">
+		<div class="pen_actions">
+	<?php
+	echo $post_footer; /* phpcs:ignore */
+	echo $social_share; /* phpcs:ignore */
+	?>
+		</div>
+	<?php
+	echo $entry_meta; /* phpcs:ignore */
+	?>
+	</footer><!-- .entry-footer -->
+	<?php
+}

+ 61 - 0
partials/content-none.php

@@ -0,0 +1,61 @@
+<?php
+/**
+ * Template part for displaying a message that posts cannot be found.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+?>
+<section <?php echo pen_post_classes( array( 'no-results', 'not-found' ) ); /* phpcs:ignore */ ?>>
+	<header class="page-header<?php echo pen_class_lists( 'header_display_override' ); /* phpcs:ignore */ ?>">
+		<h1 class="page-title<?php echo pen_class_lists( 'title_display_override' ); /* phpcs:ignore */ ?>">
+<?php
+esc_html_e( 'Nothing Found', 'pen' );
+?>
+		</h1>
+	</header><!-- .page-header -->
+	<div class="page-content clearfix">
+		<div class="pen_content_wrapper">
+<?php
+if ( is_home() && current_user_can( 'publish_posts' ) ) {
+	?>
+			<p>
+	<?php
+	printf(
+		wp_kses(
+			// Translators: %1$s: Just a URL.
+			__( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'pen' ),
+			array(
+				'a' => array(
+					'href' => array(),
+				),
+			)
+		),
+		esc_url( admin_url( 'post-new.php' ) )
+	);
+	?>
+			</p>
+	<?php
+} elseif ( is_search() ) {
+	?>
+			<p>
+	<?php
+	esc_html_e( 'Sorry, but nothing matched your search terms. Please try again with some different keywords.', 'pen' );
+	?>
+			</p>
+	<?php
+} else {
+	?>
+			<p>
+	<?php
+	esc_html_e( 'It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help.', 'pen' );
+	?>
+			</p>
+	<?php
+}
+?>
+		</div>
+	</div><!-- .page-content -->
+</section><!-- .no-results -->

+ 113 - 0
partials/content-page.php

@@ -0,0 +1,113 @@
+<?php
+/**
+ * Template part for displaying page content in page.php.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+$pen_is_singular = is_singular();
+?>
+<article id="post-<?php the_ID(); ?>" <?php echo pen_post_classes(); /* phpcs:ignore */ ?>>
+<?php
+$background_image_dynamic = pen_content_title_background( $pen_is_singular, get_the_ID() );
+?>
+	<header class="entry-header<?php echo pen_class_lists( 'header_display_override' ); /* phpcs:ignore */ ?>"<?php if ( $background_image_dynamic ) { echo ' style="background-image:url(' . $background_image_dynamic . ');background-size:cover"'; /* phpcs:ignore */ } ?>>
+<?php
+the_title(
+	sprintf(
+		'<h1 class="entry-title%s">',
+		pen_class_lists( 'title_display_override' )
+	),
+	'</h1>'
+);
+
+echo pen_html_share( 'header' ); /* phpcs:ignore */
+?>
+	</header><!-- .entry-header -->
+<?php
+pen_sidebar_get( 'sidebar-content-top' );
+
+ob_start( 'trim' );
+the_content();
+$content = ob_get_clean();
+
+ob_start( 'trim' );
+get_template_part( 'partials/content', 'thumbnail' );
+$thumbnail = ob_get_clean();
+
+ob_start( 'trim' );
+echo $thumbnail; /* phpcs:ignore */
+if ( $content ) {
+	?>
+	<div class="pen_content_wrapper">
+	<?php
+	echo $content; /* phpcs:ignore */
+	?>
+	</div>
+	<?php
+}
+
+pen_html_pagination_content();
+
+$classes = trim(
+	implode(
+		' ',
+		array_filter(
+			array(
+				'entry-content',
+				'clearfix',
+				trim( pen_class_lists( 'summary_display_override' ) ),
+				$thumbnail ? 'pen_has_thumbnail' : 'pen_without_thumbnail',
+			)
+		)
+	)
+);
+
+$content = ob_get_clean();
+if ( $content ) {
+	?>
+	<div class="<?php echo esc_attr( $classes ); ?>">
+	<?php
+	echo $content; /* phpcs:ignore */
+	echo pen_html_share( 'content' ); /* phpcs:ignore */
+	?>
+	</div><!-- .entry-content -->
+	<?php
+}
+
+pen_sidebar_get( 'sidebar-content-bottom' );
+
+$edit_link    = ( ! $pen_is_singular ) ? get_edit_post_link() : false;
+$social_share = pen_html_share( 'footer' );
+if ( $edit_link || $social_share ) {
+	?>
+	<footer class="entry-footer<?php echo pen_class_lists( 'footer_display_override' ); /* phpcs:ignore */ ?>">
+		<div class="pen_actions">
+	<?php
+	if ( $edit_link ) {
+		edit_post_link(
+			sprintf(
+				/* Translators: %s: Name of current post */
+				esc_html__( 'Edit %s', 'pen' ),
+				the_title( '<span class="screen-reader-text">"', '"</span>', false )
+			),
+			'<span class="edit-link">',
+			'</span>'
+		);
+	}
+	echo $social_share; /* phpcs:ignore */
+	?>
+		</div>
+	</footer><!-- .entry-footer -->
+	<?php
+}
+
+echo pen_html_configuration_overview(); /* phpcs:ignore */
+
+if ( $pen_is_singular ) {
+	pen_html_jump_menu( 'content' );
+}
+?>
+</article><!-- #post-<?php the_ID(); ?> -->

+ 25 - 0
partials/content-pagination.php

@@ -0,0 +1,25 @@
+<?php
+/**
+ * Template part for displaying the content pagination.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+ob_start( 'trim' );
+if ( function_exists( 'wp_pagenavi' ) ) {
+	wp_pagenavi();
+} else {
+	the_posts_navigation();
+}
+$pager = ob_get_clean();
+if ( $pager ) {
+	?>
+	<div id="pen_pager" class="clearfix <?php pen_class_animation( 'list_pager' ); /* phpcs:ignore */ ?>">
+	<?php
+	echo $pager; /* phpcs:ignore */
+	?>
+	</div>
+	<?php
+}

+ 86 - 0
partials/content-search-footer.php

@@ -0,0 +1,86 @@
+<?php
+/**
+ * Template part for displaying the content footer for search results.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+ob_start( 'trim' );
+// Hide tags for pages.
+if ( 'post' === get_post_type() ) {
+	/* Translators: used between list items, there is a space after the comma */
+	$tags_list = get_the_tag_list();
+
+	if ( $tags_list ) {
+		// Translators: %s: The tag name.
+		printf(
+			'<span class="tags-links%1$s">%2$s</span>',
+			pen_class_lists( 'tags_display_override' ), /* phpcs:ignore */
+			sprintf(
+				'<span class="pen_heading_tags">%1$s</span>%2$s',
+				esc_html__( 'Tagged', 'pen' ),
+				$tags_list /* phpcs:ignore */
+			)
+		);
+	}
+}
+
+if ( ! is_singular() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
+	?>
+	<span class="comments-link<?php pen_class_lists( 'button_comment_display_override' ); ?>">
+	<?php
+	comments_popup_link(
+		sprintf(
+			wp_kses(
+				/* Translators: %s: post title */
+				__( 'Leave a Comment<span class="screen-reader-text"> on %s</span>', 'pen' ),
+				array(
+					'span' => array(
+						'class' => array(),
+					),
+				)
+			),
+			get_the_title()
+		)
+	);
+	?>
+	</span>
+	<?php
+}
+
+if ( ! is_singular() ) {
+	edit_post_link(
+		sprintf(
+			/* Translators: %s: Name of current post */
+			esc_html__( 'Edit %s', 'pen' ),
+			the_title(
+				'<span class="screen-reader-text">"',
+				'"</span>',
+				false
+			)
+		),
+		sprintf(
+			'<span class="edit-link%s">',
+			pen_class_lists( 'button_edit_display_override' )
+		),
+		'</span>'
+	);
+}
+$post_footer = ob_get_clean();
+$entry_meta  = trim( pen_html_content_information( 'footer' ) );
+if ( $post_footer || $entry_meta ) {
+	?>
+	<footer class="entry-footer<?php echo pen_class_lists( 'footer_display_override' ); /* phpcs:ignore */ ?>">
+		<div class="pen_actions">
+	<?php
+	echo $post_footer; /* phpcs:ignore */
+	?>
+		</div>
+	<?php
+	echo $entry_meta; /* phpcs:ignore */
+	?>
+	</footer><!-- .entry-footer -->
+	<?php
+}

+ 56 - 0
partials/content-search.php

@@ -0,0 +1,56 @@
+<?php
+/**
+ * Template part for displaying results in search pages.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+$pen_is_singular = is_singular();
+?>
+<article id="post-<?php the_ID(); ?>" <?php echo pen_post_classes(); /* phpcs:ignore */ ?>>
+<?php
+$background_image_dynamic = pen_content_title_background( $pen_is_singular, get_the_ID() );
+?>
+	<header class="entry-header<?php echo pen_class_lists( 'header_display_override' ); /* phpcs:ignore */ ?>"<?php if ( $background_image_dynamic ) { echo ' style="background-image:url(' . $background_image_dynamic . ');background-size:cover"'; /* phpcs:ignore */ } ?>>
+<?php
+the_title(
+	sprintf(
+		'<h2 class="entry-title%1$s"><a href="%2$s" rel="bookmark">',
+		pen_class_lists( 'title_display_override' ),
+		esc_url( get_permalink() )
+	),
+	'</a></h2>'
+);
+
+echo pen_html_content_information( 'header' ); /* phpcs:ignore */
+?>
+	</header><!-- .entry-header -->
+<?php
+pen_sidebar_get( 'sidebar-content-top' );
+
+$list_type = pen_option_get( 'list_type' );
+if ( 'masonry' === $list_type ) {
+	get_template_part( 'partials/content', 'thumbnail' );
+}
+?>
+	<div class="entry-summary">
+<?php
+if ( 'plain' === $list_type ) {
+	get_template_part( 'partials/content', 'thumbnail' );
+}
+the_excerpt();
+echo pen_html_author(); /* phpcs:ignore */
+?>
+	</div><!-- .entry-summary -->
+<?php
+pen_sidebar_get( 'sidebar-content-bottom' );
+
+get_template_part( 'partials/content', 'search-footer' );
+
+if ( $pen_is_singular ) {
+	pen_html_jump_menu( 'content' );
+}
+?>
+</article><!-- #post-<?php the_ID(); ?> -->

+ 101 - 0
partials/content-thumbnail.php

@@ -0,0 +1,101 @@
+<?php
+/**
+ * Template part for displaying the content featured image.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+if ( ! post_password_required() && ! is_attachment() && has_post_thumbnail() ) {
+
+	$pen_post_id = get_the_ID();
+
+	if ( is_singular() ) {
+		$thumbnail_display = get_post_meta( $pen_post_id, 'pen_content_thumbnail_display_override', true );
+		if ( ! $thumbnail_display || 'default' === $thumbnail_display ) {
+			$thumbnail_display = pen_option_get( 'content_thumbnail_display' );
+		}
+		if ( $thumbnail_display && 'no' !== $thumbnail_display ) {
+
+			$thumbnail_size = get_post_meta( $pen_post_id, 'pen_content_thumbnail_resize_override', true );
+			if ( ! $thumbnail_size || 'default' === $thumbnail_size ) {
+				$thumbnail_size = pen_option_get( 'content_thumbnail_resize' );
+			}
+			if ( 'none' === $thumbnail_size ) {
+				if ( 'image' === get_post_type() ) {
+					$thumbnail_size = 'large';
+				} else {
+					$thumbnail_size = 'medium';
+				}
+			}
+
+			$animation_reveal = get_post_meta( $pen_post_id, 'pen_content_thumbnail_animation_reveal_override', true );
+			if ( ! $animation_reveal || 'default' === $animation_reveal ) {
+				$animation_reveal = pen_option_get( 'content_thumbnail_animation_reveal' );
+			}
+
+			$classes = trim(
+				implode(
+					' ',
+					array_filter(
+						array(
+							'post-thumbnail',
+							'pen_thumbnail_size_' . $thumbnail_size,
+							$animation_reveal ? 'pen_custom_animation_' . $animation_reveal : '',
+						)
+					)
+				)
+			);
+			?>
+		<div class="<?php echo esc_attr( $classes ); ?>">
+			<?php
+			the_post_thumbnail( $thumbnail_size );
+			?>
+		</div><!-- .post-thumbnail -->
+
+			<?php
+		}
+	} else {
+
+		$thumbnail_display = get_post_meta( $pen_post_id, 'pen_list_thumbnail_display_override', true );
+		if ( ! $thumbnail_display || 'default' === $thumbnail_display ) {
+			$thumbnail_display = pen_option_get( 'list_thumbnail_display' );
+		}
+		if ( $thumbnail_display && 'no' !== $thumbnail_display ) {
+
+			$thumbnail_size = get_post_meta( $pen_post_id, 'pen_list_thumbnail_resize_override', true );
+			if ( ! $thumbnail_size || 'default' === $thumbnail_size ) {
+				$thumbnail_size = pen_option_get( 'list_thumbnail_resize' );
+			}
+			if ( 'none' === $thumbnail_size || 'masonry' === pen_option_get( 'list_type' ) ) {
+				$thumbnail_size = 'large';
+			}
+
+			$animation_reveal = get_post_meta( $pen_post_id, 'pen_list_thumbnail_animation_reveal_override', true );
+			if ( ! $animation_reveal || 'default' === $animation_reveal ) {
+				$animation_reveal = pen_option_get( 'list_thumbnail_animation_reveal' );
+			}
+
+			$classes = trim(
+				implode(
+					' ',
+					array_filter(
+						array(
+							'post-thumbnail',
+							'pen_thumbnail_size_' . $thumbnail_size,
+							$animation_reveal ? 'pen_custom_animation_' . $animation_reveal : '',
+						)
+					)
+				)
+			);
+			?>
+		<a class="<?php echo esc_attr( $classes ); ?>" href="<?php the_permalink(); ?>" aria-hidden="true" tabindex="-1">
+			<?php
+			the_post_thumbnail( $thumbnail_size );
+			?>
+		</a>
+			<?php
+		}
+	}
+}

+ 126 - 0
partials/content.php

@@ -0,0 +1,126 @@
+<?php
+/**
+ * Template part for displaying posts.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+$pen_is_singular = is_singular();
+?>
+<article id="post-<?php the_ID(); ?>" <?php echo pen_post_classes(); /* phpcs:ignore */ ?>>
+<?php
+$background_image_dynamic = pen_content_title_background( $pen_is_singular, get_the_ID() );
+?>
+	<header class="entry-header<?php echo pen_class_lists( 'header_display_override' ); /* phpcs:ignore */ ?>"<?php if ( $background_image_dynamic ) { echo ' style="background-image:url(' . $background_image_dynamic . ');background-size:cover"'; /* phpcs:ignore */ } ?>>
+<?php
+if ( $pen_is_singular ) {
+	the_title( '<h1 class="entry-title">', '</h1>' );
+} else {
+	the_title(
+		sprintf(
+			'<h2 class="entry-title%1$s"><a href="%2$s" rel="bookmark">',
+			pen_class_lists( 'title_display_override' ),
+			esc_url( get_permalink() )
+		),
+		'</a></h2>'
+	);
+}
+
+echo pen_html_content_information( 'header' ); /* phpcs:ignore */
+echo pen_html_share( 'header' ); /* phpcs:ignore */
+
+?>
+	</header><!-- .entry-header -->
+
+<?php
+pen_sidebar_get( 'sidebar-content-top' );
+
+$thumbnail = '';
+$list_type = pen_option_get( 'list_type' );
+if ( ! $pen_is_singular && 'masonry' === $list_type ) {
+	ob_start( 'trim' );
+	get_template_part( 'partials/content', 'thumbnail' );
+	$thumbnail = ob_get_clean();
+	echo $thumbnail; /* phpcs:ignore */
+}
+
+ob_start( 'trim' );
+if ( $pen_is_singular || ! pen_option_get( 'list_excerpt' ) ) {
+	the_content(
+		sprintf(
+			wp_kses(
+				/* Translators: %s: Name of current post. */
+				__( 'Continue reading %s', 'pen' ),
+				array(
+					'span' => array(
+						'class' => array(),
+					),
+				)
+			),
+			the_title( '<span class="screen-reader-text">"', '"</span>', false )
+		)
+	);
+} else {
+	the_excerpt();
+}
+$content = ob_get_clean();
+
+ob_start( 'trim' );
+if ( $pen_is_singular || 'plain' === $list_type ) {
+	ob_start( 'trim' );
+	get_template_part( 'partials/content', 'thumbnail' );
+	$thumbnail = ob_get_clean();
+	echo $thumbnail; /* phpcs:ignore */
+}
+
+if ( $content ) {
+	?>
+	<div class="pen_content_wrapper">
+	<?php
+	echo $content; /* phpcs:ignore */
+
+	pen_html_pagination_content();
+	?>
+	</div>
+	<?php
+}
+
+pen_sidebar_get( 'sidebar-content-bottom' );
+
+$classes = trim(
+	implode(
+		' ',
+		array_filter(
+			array(
+				'entry-content',
+				trim( pen_class_lists( 'summary_display_override' ) ),
+				$thumbnail ? 'pen_with_thumbnail' : 'post_without_thumbnail',
+			)
+		)
+	)
+);
+
+$content = ob_get_clean();
+if ( $content ) {
+	?>
+	<div class="<?php echo esc_attr( $classes ); ?>">
+	<?php
+	echo $content; /* phpcs:ignore */
+	echo pen_html_share( 'content' ); /* phpcs:ignore */
+	echo pen_html_author(); /* phpcs:ignore */
+	?>
+	</div><!-- .entry-content -->
+	<?php
+}
+
+get_template_part( 'partials/content', 'footer' );
+
+echo pen_html_configuration_overview(); /* phpcs:ignore */
+
+if ( $pen_is_singular ) {
+	pen_html_jump_menu( 'content' );
+}
+?>
+</article><!-- #post-<?php the_ID(); ?> -->

+ 0 - 0
partials/index.html


+ 37 - 0
partials/site-navigation.php

@@ -0,0 +1,37 @@
+<?php
+/**
+ * Template part for displaying the site navigation.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+$navigation_display = pen_option_get( 'navigation_display' ) ? 'show' : 'hide';
+if ( 'hide' !== $navigation_display ) {
+	$variables = array(
+		'theme_location' => 'primary',
+		'menu_id'        => 'primary-menu',
+		'menu_class'     => 'menu',
+		'echo'           => false,
+		'fallback_cb'    => 'pen_html_navigation_fallback',
+	);
+
+	$menu_html = trim( wp_nav_menu( $variables ) );
+	if ( $menu_html ) {
+		ob_start( 'pen_compress_html' );
+		?>
+<nav id="pen_navigation" class="<?php echo esc_attr( pen_class_navigation() ); ?>" role="navigation" aria-label="<?php esc_attr_e( 'Header Menu', 'pen' ); ?>">
+	<div class="pen_container <?php pen_class_animation( 'navigation' ); /* phpcs:ignore */ ?>">
+		<?php
+		echo $menu_html; /* phpcs:ignore */
+		?>
+	</div>
+		<?php
+		pen_html_jump_menu( 'navigation' );
+		?>
+</nav>
+		<?php
+		echo ob_get_clean(); /* phpcs:ignore */
+	}
+}

+ 52 - 0
partials/site-title.php

@@ -0,0 +1,52 @@
+<?php
+/**
+ * Template part for displaying the site navigation.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/
+ *
+ * @package Pen
+ */
+
+ob_start( 'pen_compress_html' );
+$description              = false;
+$site_description_display = pen_option_get( 'header_sitedescription_display' );
+if ( $site_description_display ) {
+	$description = get_bloginfo( 'description', 'display' );
+}
+
+$site_title_display = pen_option_get( 'header_sitetitle_display' );
+$classes_sitetitle  = trim(
+	implode(
+		' ',
+		array_filter(
+			array(
+				$description ? 'pen_has_description' : '',
+				'pen_sitetitle_' . ( sanitize_html_class( $site_title_display ) ? 'show' : 'hide' ),
+			)
+		)
+	)
+);
+
+$site_link = home_url( false );
+?>
+	<a href="<?php echo esc_url( $site_link ); ?>" id="site-title" class="<?php echo esc_attr( $classes_sitetitle ); ?>" rel="home">
+		<span class="site-title <?php echo ( ! $site_title_display ) ? 'pen_element_hidden ' : ''; ?><?php pen_class_animation( 'header_sitetitle' ); /* phpcs:ignore */ ?>">
+<?php
+bloginfo( 'name' );
+?>
+		</span>
+<?php
+$description = wp_strip_all_tags( $description );
+if ( 200 < strlen( $description ) ) {
+	$description = substr( $description, 0, 100 ) . ' &hellip;'; /* phpcs:ignore */
+}
+if ( $description || is_customize_preview() ) {
+	// CSS "margin" relies on :not(:empty) here hence no indentation, newlines, etc.
+	?>
+		<span class="site-description <?php pen_class_animation( 'header_sitedescription' ); /* phpcs:ignore */ ?>"><?php echo $description; /* phpcs:ignore */ ?></span>
+	<?php
+}
+?>
+	</a>
+<?php
+echo ob_get_clean(); /* phpcs:ignore */

+ 135 - 0
readme.txt

@@ -0,0 +1,135 @@
+=== Pen ===
+Contributors: htmlpie
+Tags: left-sidebar, right-sidebar, fixed-width, custom-background, custom-header, custom-colors, custom-menu, custom-logo, editor-style, featured-images, footer-widgets, sticky-post, threaded-comments, translation-ready
+Requires at least: 4.8
+Requires PHP: 5.6
+Tested up to: 5.1
+Stable tag: 1.1
+License: GPLv2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
+
+Pen is a multi-purpose WordPress theme.
+
+== Description ==
+"Pen" is multi-purpose WordPress theme with tons of features, classic and masonry layouts, multiple color schemes, multiple font sets, and many more customization options.
+
+== Frequently Asked Questions ==
+
+= Does this theme support WooCommerce? =
+No, it doesn't support that plugin yet.
+
+= Is this theme compatible with WordPress 5? =
+Yes, it's totally compatible.
+
+= I don't like the rotated images, nor the animation effects, can I change or even disable them? =
+Absolutely, you can do that through Appearance -> Customize, or through Edit Post, if it's just for one post or page.
+
+== Changelog ==
+
+= 1.1.9 =
+* Several improvements.
+* Removed all the features related to Google+.
+
+= 1.1.8 =
+* Moved Color Schemes and Font Presets from back-end to the front-end as two shortcut menus.
+
+= 1.1.7 =
+* Some features removed due to WordPress.org guidelines, we will do our best to add them back as a plugin.
+* Fixed a number of issues.
+
+= 1.1.6 =
+* New widget areas.
+
+= 1.1.5 =
+* Improved compatibility for WordPress.org.
+
+= 1.1.4 =
+* i18n improvements.
+
+= 1.1.3 =
+* General improvements.
+
+= 1.1.2 =
+* New widget areas.
+* Improved compatibility for WordPress.org.
+
+= 1.1.1 =
+* New feature: Featured image as post header background.
+* General improvements.
+
+= 1.1.0 =
+* Some improvements.
+
+= 1.0.9 =
+* New content template option: Site width.
+* Web Accessibility improvements.
+
+= 1.0.8 =
+* Multiple improvements.
+
+= 1.0.7 =
+* Tons of improvements.
+* Extended animation options to more elements.
+* Added new widget areas.
+
+= 1.0.6 =
+* Even more animations.
+* Added more social network icons.
+* New feature: Thumbnail effects for list views.
+
+= 1.0.5 =
+* Some improvements.
+
+= 1.0.4 =
+* New widget area (header right)
+* Animations through Animate.css
+
+= 1.0.3 =
+* Maintenance release.
+
+= 1.0.2 =
+* Several improvements.
+
+= 1.0.1 =
+* Maintenance release.
+
+== Resources ==
+* This theme is based on Underscores https://underscores.me/, (C) Automattic Inc., [GPLv2 or later](https://www.gnu.org/licenses/gpl-2.0.html)
+
+* Normalize.CSS https://necolas.github.io/normalize.css/, (C) Nicolas Gallagher and Jonathan Neal, [MIT](https://opensource.org/licenses/MIT)
+
+* Modernizr https://modernizr.com/download/?-mq-setclasses, [MIT](https://opensource.org/licenses/MIT)
+
+* HTML5Shiv https://github.com/aFarkas/html5shiv, (C) Alexander Farkas, [MIT](https://opensource.org/licenses/MIT)
+
+* FontAwesome http://fontawesome.io/, (C) Dave Gandy, [OFL](http://scripts.sil.org/OFL)
+
+* jQuery AreYouSure https://github.com/codedance/jquery.AreYouSure, (C) Chris Dance and PaperCut Software, [MIT](https://opensource.org/licenses/MIT)
+
+* jQuery Superfish https://github.com/joeldbirch/superfish, (C) Joel Birch, [MIT](https://opensource.org/licenses/MIT)
+
+* jQuery SlickNav http://slicknav.com/, (C) Josh Cope, [MIT](https://opensource.org/licenses/MIT)
+
+* RespondJS http://j.mp/respondjs, (C) Scott Jehl, [MIT](https://opensource.org/licenses/MIT)
+
+* jQuery Masonry http://masonry.desandro.com, (C) David DeSandro, [MIT](http://desandro.mit-license.org/)
+
+* imagesLoaded http://imagesloaded.desandro.com, (C) David DeSandro, [MIT](http://desandro.mit-license.org/)
+
+* Animate.css http://daneden.me/animate, (C) Daniel Eden, [MIT](https://opensource.org/licenses/MIT)
+
+* Waypoints https://github.com/imakewebthings/waypoints/, (C) Caleb Troughton, [MIT](https://opensource.org/licenses/MIT)
+
+* Trianglify.js https://github.com/qrohlf/trianglify, (C) Quinn Rohlf, [GPLv3](https://www.gnu.org/licenses/gpl-3.0.html)
+
+* jQuery Shards http://bite-software.co.uk/shards/, (C) Jean-Christophe Nicolas, [MIT](https://opensource.org/licenses/MIT)
+
+* Base64.js https://github.com/davidchambers/Base64.js, (C) David Chambers, http://www.apache.org/licenses/
+
+* jQuery FitText http://fittextjs.com/, (C) Dave Rupert, [MIT](https://opensource.org/licenses/MIT)
+
+* Autosize http://www.jacklmoore.com/autosize, (C) Jack Moore, [MIT](https://opensource.org/licenses/MIT)
+
+* jQuery Easing http://gsgd.co.uk/sandbox/jquery/easing/, (C) George McGinley Smith, [BSD](https://opensource.org/licenses)
+
+* Image used in the screenshot.png https://stocksnap.io/photo/A3GOGU0BWF, (C) Patryk Dziejma, [CC0](https://creativecommons.org/share-your-work/public-domain/cc0/)

BIN
screenshot.png


+ 67 - 0
search.php

@@ -0,0 +1,67 @@
+<?php
+/**
+ * The template for displaying search results pages.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#search-result
+ *
+ * @package Pen
+ */
+
+get_header(); ?>
+<div id="primary" class="content-area">
+	<main id="main" class="<?php echo esc_attr( pen_content_classes() ); ?>" role="main">
+		<div class="pen_article_wrapper">
+<?php
+if ( have_posts() ) {
+	?>
+			<header class="page-header">
+				<h1 class="page-title">
+					<span class="pen_heading_main">
+	<?php
+	esc_html_e( 'Search Results for:', 'pen' );
+	?>
+					</span>
+					<span>
+	<?php
+	echo get_search_query(); /* phpcs:ignore */
+	?>
+					</span>
+				</h1>
+			</header><!-- .page-header -->
+	<?php
+	$content_list_type = pen_list_type();
+	if ( 'masonry' === $content_list_type ) {
+		?>
+			<div id="pen_masonry">
+		<?php
+	}
+	/* Start the Loop */
+	while ( have_posts() ) {
+		the_post();
+		/**
+		 * Run the loop for the search to output the results.
+		 * If you want to overload this in a child theme then include a file
+		 * called content-search.php and that will be used instead.
+		 */
+		get_template_part( 'partials/content', 'search' );
+	}
+	if ( 'masonry' === $content_list_type ) {
+		?>
+			</div>
+		<?php
+	}
+	get_template_part( 'partials/content', 'pagination' );
+} else {
+	get_template_part( 'partials/content', 'none' );
+}
+?>
+		</div>
+	</main><!-- #main -->
+<?php
+if ( ! is_singular() ) {
+	pen_html_jump_menu( 'list' );
+}
+?>
+</div><!-- #primary -->
+<?php
+get_footer();

+ 28 - 0
single.php

@@ -0,0 +1,28 @@
+<?php
+/**
+ * The template for displaying all single posts.
+ *
+ * @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
+ *
+ * @package Pen
+ */
+
+get_header(); ?>
+<div id="primary" class="content-area">
+	<main id="main" class="<?php echo esc_attr( pen_content_classes() ); ?>" role="main">
+		<div class="pen_article_wrapper">
+<?php
+while ( have_posts() ) {
+	the_post();
+	get_template_part( 'partials/content', get_post_type() );
+	// If comments are open or we have at least one comment, load up the comment template.
+	if ( comments_open() || get_comments_number() ) {
+		comments_template();
+	}
+}
+?>
+		</div>
+	</main>
+</div>
+<?php
+get_footer();

+ 12 - 0
style.css

@@ -0,0 +1,12 @@
+/*
+Theme Name: Pen
+Theme URI: https://www.htmlpie.com/pen-multipurpose-wordpress-theme
+Author: HTMLPIE
+Author URI: https://www.htmlpie.com/about
+Description: Pen is a multi-purpose WordPress theme.
+Version: 1.1.9
+License: GNU General Public License v2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
+Text Domain: pen
+Tags: one-column, two-columns, three-columns, four-columns, right-sidebar, custom-colors, custom-header, custom-menu, custom-logo, editor-style, featured-images, footer-widgets, post-formats, sticky-post, theme-options, threaded-comments, translation-ready, grid-layout, blog, portfolio
+*/

Some files were not shown because too many files changed in this diff