<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[13109] sites/trunk/wordpress.org/public_html/wp-content: Plugin Directory: Allow plugins to upload additional versions for review.</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { white-space: pre-line; overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta" style="font-size: 105%">
<dt style="float: left; width: 6em; font-weight: bold">Revision</dt> <dd><a style="font-weight: bold" href="http://meta.trac.wordpress.org/changeset/13109">13109</a><script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","description":"Review this Commit","action":{"@type":"ViewAction","url":"http://meta.trac.wordpress.org/changeset/13109","name":"Review Commit"}}</script></dd>
<dt style="float: left; width: 6em; font-weight: bold">Author</dt> <dd>dd32</dd>
<dt style="float: left; width: 6em; font-weight: bold">Date</dt> <dd>2024-01-15 05:23:52 +0000 (Mon, 15 Jan 2024)</dd>
</dl>

<pre style='padding-left: 1em; margin: 2em 0; border-left: 2px solid #ccc; line-height: 1.25; font-size: 105%; font-family: sans-serif'>Plugin Directory: Allow plugins to upload additional versions for review.

This is currently limited to `new` plugins, which is prior to the first human review.

Iterations upon this will open it to plugins in the `pending` state as well, which is during the human review.

See <a href="http://meta.trac.wordpress.org/ticket/7384">#7384</a>.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminclasscustomizationsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-customizations.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassreviewtoolsphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspluginuploadphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-upload.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugindirectoryphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclasszipcleanupphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-zip-cleanup.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjseditformjs">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/js/edit-form.js</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryplugindirectoryphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/plugin-directory.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassuploadhandlerphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassuploadphp">sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginsclientstylesobjects_uploadscss">sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/styles/objects/_upload.scss</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginscssstylertlcss">sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/css/style-rtl.css</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginscssstylecss">sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/css/style.css</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginsfunctionsphp">sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginsjsuploadjs">sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/js/upload.js</a></li>
<li><a href="#sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginspackagelockjson">sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/package-lock.json</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminclasscustomizationsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-customizations.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-customizations.php  2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/class-customizations.php    2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -7,6 +7,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> use \WordPressdotorg\Plugin_Directory\Readme\Validator;
</span><span class="cx" style="display: block; padding: 0 10px"> use \WordPressdotorg\Plugin_Directory\Admin\List_Table\Plugin_Posts;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use const \WordPressdotorg\Plugin_Directory\PLUGIN_FILE;
+use const \WordPressdotorg\Plugin_Directory\PLUGIN_DIR;
+
</ins><span class="cx" style="display: block; padding: 0 10px"> /**
</span><span class="cx" style="display: block; padding: 0 10px">  * All functionality related to the Administration interface.
</span><span class="cx" style="display: block; padding: 0 10px">  *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -36,6 +39,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_assets' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'admin_head-edit.php', array( $this, 'plugin_posts_list_table' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'edit_form_top', array( $this, 'show_permalink' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                add_action( 'post_edit_form_tag', array( $this, 'post_edit_form_tag' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 add_action( 'admin_notices', array( $this, 'add_post_status_notice' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'all_admin_notices', array( $this, 'admin_notices' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'display_post_states', array( $this, 'post_states' ), 10, 2 );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -69,6 +73,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'save_post', array( __NAMESPACE__ . '\Metabox\Release_Confirmation', 'save_post' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'save_post', array( __NAMESPACE__ . '\Metabox\Author_Notice', 'save_post' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_action( 'save_post', array( __NAMESPACE__ . '\Metabox\Reviewer', 'save_post' ) );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                add_action( 'save_post', array( __NAMESPACE__ . '\Metabox\Review_Tools', 'save_post' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -128,8 +133,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( 'plugin' === $post_type ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        switch ( $hook_suffix ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                case 'post.php':
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        wp_enqueue_style( 'plugin-admin-post-css', plugins_url( 'css/edit-form.css', Plugin_Directory\PLUGIN_FILE ), array( 'edit' ), 7 );
-                                       wp_enqueue_script( 'plugin-admin-post-js', plugins_url( 'js/edit-form.js', Plugin_Directory\PLUGIN_FILE ), array( 'wp-util', 'wp-lists' ), 5 );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 wp_enqueue_style( 'plugin-admin-post-css', plugins_url( 'css/edit-form.css', PLUGIN_FILE ), array( 'edit' ), filemtime( PLUGIN_DIR . '/css/edit-form.css') );
+                                       wp_enqueue_script( 'plugin-admin-post-js', plugins_url( 'js/edit-form.js',PLUGIN_FILE ), array( 'wp-util', 'wp-lists', 'wp-api' ), filemtime( PLUGIN_DIR . '/js/edit-form.js') );
+
</ins><span class="cx" style="display: block; padding: 0 10px">                                         wp_localize_script( 'plugin-admin-post-js', 'pluginDirectory', array(
</span><span class="cx" style="display: block; padding: 0 10px">                                                'approvePluginAYS'    => __( 'Are you sure you want to approve this plugin?', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                                'rejectPluginAYS'     => __( 'Are you sure you want to reject this plugin?', 'wporg-plugins' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -403,6 +409,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Allow file uploads within the plugin edit screen.
+        */
+       public function post_edit_form_tag( $post ) {
+               if ( 'plugin' === $post->post_type ) {
+                       echo ' enctype="multipart/form-data"';
+               }
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Adds banners to provide a clearer status for a plugin.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * This is being displayed in the edit screen for a particular plugin,
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryadminmetaboxclassreviewtoolsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php    2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/admin/metabox/class-review-tools.php      2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -129,12 +129,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $zip_size                   = size_format( filesize( get_attached_file( $zip_file->ID ) ), 1 );
</span><span class="cx" style="display: block; padding: 0 10px">                                $zip_preview                = Template::preview_link_zip( $slug, $zip_file->ID );
</span><span class="cx" style="display: block; padding: 0 10px">                                $zip_pcp                    = Template::preview_link_zip( $slug, $zip_file->ID, 'pcp' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                $zip_filename               = $zip_file->submitted_name ?? preg_replace( '!^[0-9-_]+!', '', basename( $zip_url ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                printf(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        '<li>%1$s <a href="%2$s">%3$s</a> (%4$s) (<a href="%5$s" target="_blank">preview</a> | <a href="%6$s" target="_blank">pcp</a>)</li>',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 '<li>%1$s <a href="%2$s" title="%3$s">%4$s</a> (%5$s) (<a href="%6$s" target="_blank">preview</a> | <a href="%7$s" target="_blank">pcp</a>)</li>',
</ins><span class="cx" style="display: block; padding: 0 10px">                                         esc_html( $zip_date ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        esc_url( $zip_url ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        esc_html( basename( $zip_url ) ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 esc_attr( $zip_file->post_title ),
+                                       esc_html( $zip_filename ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         esc_html( $zip_size ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        esc_url( $zip_preview ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        esc_url( $zip_pcp )
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -143,7 +145,15 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        echo '</ul>';
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                // Ability to upload an additional ZIP.
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( in_array( $post->post_status, [ 'draft', 'pending', 'new' ], true ) ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        echo '<label>
+                               <input type="file" class="plugin-file" name="zip_file" size="25" accept=".zip"/>
+                               <button class="button button-secondary plugin-upload-zip">' . __( 'Upload', 'wporg-plugins' ) . '</button>
+                               </label>';
+               }
+
+               if ( in_array( $post->post_status, [ 'draft', 'pending', 'new' ], true ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $slug_restricted = [];
</span><span class="cx" style="display: block; padding: 0 10px">                        $slug_reserved   = [];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryapiroutesclasspluginuploadphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-upload.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-upload.php      2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/api/routes/class-plugin-upload.php        2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -22,37 +22,64 @@
</span><span class="cx" style="display: block; padding: 0 10px">                register_rest_route( 'plugins/v1', '/upload/(?P<ID>[0-9]+)', array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'methods'             => WP_REST_Server::EDITABLE,
</span><span class="cx" style="display: block; padding: 0 10px">                        'callback'            => array( $this, 'upload' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'permission_callback' => function( $request ) {
-                               if (
-                                       ! current_user_can( 'plugin_approve' ) &&
-                                       get_current_user_id() != get_post_field( 'post_author', $request['ID'] ) 
-                               ) {
-                                       return false;
-                               }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'permission_callback' => array( $this, 'permission_check' ),
+                       'args' => [
+                               'post_name' => [
+                                       'type'     => 'string',
+                                       'required' => false,
+                               ],
+                       ]
+               ) );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                $post = get_post( $request['ID'] );
-                               if ( $post->ID != $request['ID'] || 'plugin' !== $post->post_type ) {
-                                       return false;
-                               }
-
-                               return true;
-                       },
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         register_rest_route( 'plugins/v1', '/upload/(?P<ID>[0-9]+)/slug', array(
+                       'methods'             => WP_REST_Server::EDITABLE,
+                       'callback'            => array( $this, 'slug' ),
+                       'permission_callback' => array( $this, 'permission_check' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'args' => [
</span><span class="cx" style="display: block; padding: 0 10px">                                'post_name' => [
</span><span class="cx" style="display: block; padding: 0 10px">                                        'type'     => 'string',
</span><span class="cx" style="display: block; padding: 0 10px">                                        'required' => true,
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                ]
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ],
</ins><span class="cx" style="display: block; padding: 0 10px">                         ]
</span><span class="cx" style="display: block; padding: 0 10px">                ) );
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        public function permission_check( $request ) {
+               if (
+                       ! current_user_can( 'plugin_approve' ) &&
+                       get_current_user_id() != get_post_field( 'post_author', $request['ID'] )
+               ) {
+                       return false;
+               }
+
+               $post = get_post( $request['ID'] );
+               if ( $post->ID != $request['ID'] || 'plugin' !== $post->post_type ) {
+                       return false;
+               }
+
+               return true;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         public function upload( $request ) {
</span><span class="cx" style="display: block; padding: 0 10px">                $plugin = get_post( $request['ID'] );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+               if ( ! empty( $request['post_name'] ) ) {
+                       return $this->slug( $request );
+
+               } elseif ( ! empty( $_FILES['zip_file'] ) && current_user_can( 'plugin_approve' ) ) {
+                       return ( new Upload_Handler() )->process_upload( $plugin->ID );
+               }
+       }
+
+       /**
+        * Change the slug of a plugin.
+        */
+       public function slug( $request ) {
+               $plugin = get_post( $request['ID'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $slug   = trim( $request['post_name'] ?? '' );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
</del><span class="cx" style="display: block; padding: 0 10px">                 $result = $this->perform_slug_change( $plugin, $slug );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_wp_error( $result ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Warn the reviewer when a plugin author has attempted to use an unavailable slug. 
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 // Warn the reviewer when a plugin author has attempted to use an unavailable slug.
</ins><span class="cx" style="display: block; padding: 0 10px">                         Tools::audit_log(
</span><span class="cx" style="display: block; padding: 0 10px">                                sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                        "Attempt to change slug to '%s' blocked: %s",
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryclassplugindirectoryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php      2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php        2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -159,7 +159,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                'edit_item'          => is_admin() ? __( 'Editing Plugin:', 'wporg-plugins' ) : __( 'Edit Plugin', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                        ),
</span><span class="cx" style="display: block; padding: 0 10px">                        'description'  => __( 'A Repo Plugin', 'wporg-plugins' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'supports'     => array( 'comments', 'author', 'custom-fields' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'supports'     => array( 'comments', 'author', 'custom-fields', 'media' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                         'public'       => true,
</span><span class="cx" style="display: block; padding: 0 10px">                        'show_ui'      => true,
</span><span class="cx" style="display: block; padding: 0 10px">                        'show_in_rest' => true,
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1741,7 +1741,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * Create a new post entry for a given plugin slug.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * Create (or update) a new post entry for a given plugin slug.
</ins><span class="cx" style="display: block; padding: 0 10px">          *
</span><span class="cx" style="display: block; padding: 0 10px">         * @static
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1804,6 +1804,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        'post_modified_gmt' => $post_date_gmt,
</span><span class="cx" style="display: block; padding: 0 10px">                ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $update = ! empty( $args['ID'] );
</ins><span class="cx" style="display: block; padding: 0 10px">                 $result = wp_insert_post( $args, true );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! is_wp_error( $result ) ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1810,13 +1811,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        wp_cache_set( $result, $slug, 'plugin-slugs' );
</span><span class="cx" style="display: block; padding: 0 10px">                        $result = get_post( $result );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $owner = get_userdata( $result->post_author );
-
-                       Tools::audit_log( sprintf(
-                               'Submitted by <a href="%s">%s</a>.',
-                               esc_url( 'https://profiles.wordpress.org/' . $owner->user_nicename . '/' ),
-                               $owner->user_login
-                       ), $result->ID );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( ! $update ) {
+                               $owner = get_userdata( $result->post_author );
+                               Tools::audit_log( sprintf(
+                                       'Submitted by <a href="%s">%s</a>.',
+                                       esc_url( 'https://profiles.wordpress.org/' . $owner->user_nicename . '/' ),
+                                       $owner->user_login
+                               ), $result->ID );
+                       }
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return $result;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjobsclasszipcleanupphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-zip-cleanup.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-zip-cleanup.php      2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/jobs/class-zip-cleanup.php        2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -87,6 +87,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        delete_post_meta( $plugin->ID, '_submitted_zip_size' );
</span><span class="cx" style="display: block; padding: 0 10px">                        delete_post_meta( $plugin->ID, '_submitted_zip_loc' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                        // Delete the file hash from the post.
+                       $file_hash = sha1_file( get_attached_file( $attachment ) );
+                       if ( $file_hash ) {
+                               delete_post_meta( $plugin->ID, 'uploaded_zip_hash', $file_hash );
+                       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                         // Include some log output for debugging.
</span><span class="cx" style="display: block; padding: 0 10px">                        $filename = basename( wp_get_attachment_url( $attachment->ID ) );
</span><span class="cx" style="display: block; padding: 0 10px">                        echo "Removing {$filename} from {$plugin->post_name} after {$days_to_keep} days\n";
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryjseditformjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/js/edit-form.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/js/edit-form.js 2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/js/edit-form.js   2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -46,6 +46,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        } );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $( '#contact-author' ).appendTo( '#plugin-review .inside' );
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                       $( '.plugin-upload-zip' ).click( PluginEdit.uploadZip );
+                       $( '.plugin-upload-zip' ).parents('form').submit( PluginEdit.uploadZipDisable );
</ins><span class="cx" style="display: block; padding: 0 10px">                 },
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                setPluginStatus: function() {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -147,6 +150,62 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        } else {
</span><span class="cx" style="display: block; padding: 0 10px">                                $( '#support-rep-error' ).empty().hide();
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                },
+
+               uploadZip: function( e ) {
+                       e.preventDefault();
+
+                       var $this = $(this),
+                               $container = $this.parents('label'),
+                               post_ID = $( '#post_ID' ).val(),
+                               $file = $container.find('input[type="file"]' ),
+                               file_input = $file.get(0),
+                               restEndpoint = 'plugins/v1/upload/' + post_ID;
+
+                       if ( ! file_input.files.length ) {
+                               alert( "Select a file first." );
+                               return;
+                       }
+
+                       $this.prop( 'disabled', true );
+                       $this.text( 'Uploading...' );
+                       $container.find( '.notice' ).remove();
+
+                       var data = new FormData()
+                       data.append( $file.prop( 'name' ), file_input.files[0] );
+                       data.append( 'admin', true );
+
+                       wp.apiRequest( {
+                               path: restEndpoint,
+                               type: 'POST',
+                               data: data,
+                               processData: false,
+                               contentType: false,
+                       } )
+                       .done( function( response, statusText ) {
+                               var successHtml = response?.responseJSON?.message || statusText;
+
+                               $container.append( '<div class="notice notice-success"><p>' + successHtml + '</p></div>' );
+
+                               $('ul.plugin-zip-files').append(
+                                       '<li>' + new Date().toLocaleString() + ' ' + file_input.files[0].name + '</li>'
+                               );
+
+                               $file.val( '' );
+                       } )
+                       .fail( function( response, statusText ) {
+                               var errorHtml = response?.responseJSON?.message || statusText;
+
+                               $container.append( '<div class="notice notice-error"><p>' + errorHtml + '</p></div>' );
+                       } )
+                       .always( function() {
+                               $this.text( 'Upload' ).prop( 'disabled', false );
+                       } );
+               },
+       
+               // Disable any file input fields, to prevent the browser sending it.
+               uploadZipDisable: function() {
+                       $(this).find('input[type="file"]').prop( 'disabled', true );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        };
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryplugindirectoryphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/plugin-directory.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/plugin-directory.php    2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/plugin-directory.php      2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -20,6 +20,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">  */
</span><span class="cx" style="display: block; padding: 0 10px"> define( __NAMESPACE__ . '\PLUGIN_FILE', __FILE__ );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+/**
+ * Store the root plugin folder for usage with functions which need the relative path.
+ */
+define( __NAMESPACE__ . '\PLUGIN_DIR', __DIR__ );
+
</ins><span class="cx" style="display: block; padding: 0 10px"> // Register an Autoloader for all files
</span><span class="cx" style="display: block; padding: 0 10px"> require __DIR__ . '/class-autoloader.php';
</span><span class="cx" style="display: block; padding: 0 10px"> Autoloader\register_class_path( __NAMESPACE__, __DIR__ );
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassuploadhandlerphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php     2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload-handler.php       2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,6 +1,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> <?php
</span><span class="cx" style="display: block; padding: 0 10px"> namespace WordPressdotorg\Plugin_Directory\Shortcodes;
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+use WP_Error;
</ins><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\CLI\Import;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Readme\Parser;
</span><span class="cx" style="display: block; padding: 0 10px"> use WordPressdotorg\Plugin_Directory\Plugin_Directory;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -57,16 +58,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * Runs various tests and creates plugin post.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * @param int $for_plugin Optional. The plugin being uploaded to. This is used when adding additional .zip files.
+        *
</ins><span class="cx" style="display: block; padding: 0 10px">          * @return string|WP_Error Confirmation message on success, WP_Error object on failure.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function process_upload() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function process_upload( $for_plugin = 0 ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( UPLOAD_ERR_OK !== $_FILES['zip_file']['error'] ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'error_upload', __( 'Error in file upload.', 'wporg-plugins' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'error_upload', __( 'Error in file upload.', 'wporg-plugins' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Validate the maximum upload size.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $_FILES['zip_file']['size'] > wp_max_upload_size() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'error_upload', __( 'Error in file upload.', 'wporg-plugins' ) );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'error_upload', __( 'Error in file upload.', 'wporg-plugins' ) );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $zip_file         = $_FILES['zip_file']['tmp_name'];
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -73,6 +76,24 @@
</span><span class="cx" style="display: block; padding: 0 10px">                $has_upload_token = $this->has_valid_upload_token();
</span><span class="cx" style="display: block; padding: 0 10px">                $this->plugin_dir = Filesystem::unzip( $zip_file );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $plugin_post       = $for_plugin ? get_post( $for_plugin ) : false;
+               $updating_existing = (bool) $plugin_post;
+               $this->plugin_slug = $plugin_post->post_name ?? '';
+
+               if ( $for_plugin && ! $updating_existing ) {
+                       return new WP_Error( 'error_upload', __( 'Error in file upload.', 'wporg-plugins' ) );
+               }
+
+               // Allow plugin reviewers to bypass some restrictions.
+               if ( $updating_existing && current_user_can( 'approve_plugins' ) && ! $has_upload_token ) {
+                       $has_upload_token = true;
+               }
+
+               // If the plugin was uploaded using a token, we'll assume future uploads for the plugin should use one.
+               if ( $updating_existing && ! $has_upload_token && $plugin_post->{'_used_upload_token'} ) {
+                       $has_upload_token = true;
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $plugin_data = (array) Import::find_plugin_headers( $this->plugin_dir, 1 /* Max Depth to search */ );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! empty( $plugin_data['Name'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $this->plugin      = $plugin_data;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -84,7 +105,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $this->plugin['Name'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has no name.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'no_name', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'no_name', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: plugin header line, 2: Documentation URL */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Add a %1$s line to your main plugin file and upload the plugin again. For more information, please review our documentation on <a href="%2$s">Plugin Headers</a>.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>Plugin Name:</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -93,15 +114,14 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Determine the plugin slug based on the name of the plugin in the main plugin file.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $this->plugin_slug = remove_accents( $this->plugin['Name'] );
-               $this->plugin_slug = preg_replace( '/[^a-z0-9 _.-]/i', '', $this->plugin_slug );
-               $this->plugin_slug = str_replace( '_', '-', $this->plugin_slug );
-               $this->plugin_slug = sanitize_title_with_dashes( $this->plugin_slug );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $this->plugin_slug ) {
+                       $this->plugin_slug = $this->generate_plugin_slug( $this->plugin['Name'] );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $this->plugin_slug ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has an unsupported name.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'unsupported_name', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'unsupported_name', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %s: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Plugin names may only contain latin letters (A-z), numbers, spaces, and hyphens. Please change the %s line in your main plugin file and readme, then you may upload it again.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                esc_html( $this->plugin['Name'] ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -113,7 +133,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $this->has_reserved_slug() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has a reserved name.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'reserved_name', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'reserved_name', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: plugin slug, 2: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Your chosen plugin name - %1$s - has been reserved or otherwise restricted from use entirely. Please change the %2$s line in your main plugin file and readme, then you may upload it again.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>' . $this->plugin_slug . '</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -122,16 +142,24 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Make sure it doesn't use a TRADEMARK protected slug.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( false !== $this->has_trademarked_slug() && ! $has_upload_token ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $updating_existing ) {
+                       $has_trademarked_slug = $this->has_trademarked_slug( $this->plugin_slug );
+               } else {
+                       // If we're updating an existing plugin, we need to check the new name, but the slug may be different.
+                       $has_trademarked_slug = $this->has_trademarked_slug(
+                               $this->generate_plugin_slug( $this->plugin['Name'] )
+                       );
+               }
+               if ( false !== $has_trademarked_slug && ! $has_upload_token ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $error = __( 'Error: The plugin name includes a restricted term.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $this->has_trademarked_slug() === trim( $this->has_trademarked_slug(), '-' ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( $has_trademarked_slug === trim( $has_trademarked_slug, '-' ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // Trademarks that do NOT end in "-" indicate slug cannot contain term at all.
</span><span class="cx" style="display: block; padding: 0 10px">                                $message = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                        /* translators: 1: plugin slug, 2: trademarked term, 3: 'Plugin Name:', 4: plugin email address */
</span><span class="cx" style="display: block; padding: 0 10px">                                        __( 'Your chosen plugin name - %1$s - contains the restricted term "%2$s" and cannot be used at all in your plugin permalink nor the display name. To proceed with this submission you must remove "%2$s" from the %3$s line in both your main plugin file and readme entirely. Once you\'ve finished, you may upload the plugin again. Do not attempt to work around this by removing letters (i.e. WordPess) or using numbers (4 instead of A). Those are seen as intentional actions to avoid our restrictions, and are not permitted. If you feel this is in error, such as you legally own the trademark for a term, please email us at %4$s and explain your situation.', 'wporg-plugins' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        '<code>' . $this->plugin_slug . '</code>',
-                                       trim( $this->has_trademarked_slug(), '-' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 '<code>' . esc_html( $this->plugin['Name'] ) . '</code>',
+                                       trim( $has_trademarked_slug, '-' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         '<code>Plugin Name:</code>',
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<code>plugins@wordpress.org</code>'
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -140,17 +168,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                $message = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                                        /* translators: 1: plugin slug, 2: trademarked term, 3: 'Plugin Name:', 4: plugin email address */
</span><span class="cx" style="display: block; padding: 0 10px">                                        __( 'Your chosen plugin name - %1$s - contains the restricted term "%2$s" and cannot be used to begin your permalink or display name. We disallow the use of certain terms in ways that are abused, or potentially infringe on and/or are misleading with regards to trademarks. In order to proceed with this submission, you must change the %3$s line in your main plugin file and readme to end with  "-%2$s" instead. Once you\'ve finished, you may upload the plugin again. If you feel this is in error, such as you legally own the trademark for the term, please email us at %4$s and explain your situation.', 'wporg-plugins' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                        '<code>' . $this->plugin_slug . '</code>',
-                                       trim( $this->has_trademarked_slug(), '-' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                 '<code>' . esc_html( $this->plugin['Name'] ) . '</code>',
+                                       trim( $has_trademarked_slug, '-' ),
</ins><span class="cx" style="display: block; padding: 0 10px">                                         '<code>Plugin Name:</code>',
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<code>plugins@wordpress.org</code>'
</span><span class="cx" style="display: block; padding: 0 10px">                                );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'trademarked_name', $error . ' ' . $message );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'trademarked_name', $error . ' ' . $message );
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $plugin_post = Plugin_Directory::get_plugin_post( $this->plugin_slug );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $plugin_post ) {
+                       $plugin_post = Plugin_Directory::get_plugin_post( $this->plugin_slug );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // If no matching plugin by that slug, check to see if a plugin exists with that Title in the database.
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $plugin_post ) {
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -169,7 +199,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $plugin_post && $plugin_post->post_author != get_current_user_id() ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin already exists.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'already_exists', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'already_exists', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: plugin slug, 2: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'There is already a plugin with the name %1$s in the directory. You must rename your plugin by changing the %2$s line in your main plugin file and in your readme. Once you have done so, you may upload it again.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>' . esc_html( $this->plugin['Name'] ) . '</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -178,10 +208,10 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Is there already a plugin with the same slug by the same author?
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( $plugin_post ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( $plugin_post && ! $updating_existing ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $error = __( 'Error: The plugin has already been submitted.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'already_submitted', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'already_submitted', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: plugin slug, 2: Documentation URL, 3: plugins@wordpress.org */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'You have already submitted a plugin named %1$s. There is no need to resubmit existing plugins, even for new versions. Instead, please update your plugin within the directory via <a href="%2$s">SVN</a>. If you need assistance, email <a href="mailto:%3$s">%3$s</a> and let us know.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>' . esc_html( $this->plugin['Name'] ) . '</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -194,7 +224,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( strlen( $this->plugin_slug ) < 5 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin slug is too short.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'trademarked_name', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'trademarked_name', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: plugin slug, 2: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Your chosen plugin name - %1$s - is not permitted because it is too short. Please change the %2$s line in your main plugin file and readme to a different name. When you have finished, you may upload your plugin again.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>' . $this->plugin_slug . '</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -206,7 +236,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $this->plugin['Description'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has no description.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'no_description', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'no_description', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: plugin header line, 2: Documentation URL */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'We cannot find a description in your plugin headers. Please add a %1$s line to your main plugin file and upload the complete plugin again. If you need more information, please review our documentation on <a href="%2$s">Plugin Headers</a>.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>Description:</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -218,7 +248,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( ! $this->plugin['Version'] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has no version.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'no_version', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'no_version', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: plugin header line, 2: Documentation URL */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'We cannot find a version listed in your plugin headers. Please add a %1$s line to your main plugin file and upload the complete plugin again. If you need more information, please review our documentation on <a href="%2$s">Plugin Headers</a>.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>Version:</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -230,7 +260,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( preg_match( '|[^\d\.]|', $this->plugin['Version'] ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: Plugin versions are expected to be numbers.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'invalid_version', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'invalid_version', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: %s: 'Version:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Version strings may only contain numeric and period characters (i.e. 1.2). Please correct the %s line in your main plugin file and upload the plugin again.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>Version:</code>'
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -239,10 +269,14 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Prevent duplicate URLs.
</span><span class="cx" style="display: block; padding: 0 10px">                // This is part of how the API looks for updates, so having them different helps prevent conflicts.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! empty( $this->plugin['PluginURI'] ) && ! empty( $this->plugin['AuthorURI'] ) && $this->plugin['PluginURI'] == $this->plugin['AuthorURI'] ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if (
+                       ! empty( $this->plugin['PluginURI'] ) &&
+                       ! empty( $this->plugin['AuthorURI'] ) &&
+                       $this->plugin['PluginURI'] == $this->plugin['AuthorURI']
+               ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $error = __( 'Error: Your plugin and author URIs are the same.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 'plugin_author_uri', $error . ' ' .
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Your plugin headers in the main plugin file headers have the same value for both the plugin and author URI (Uniform Resource Identifier). A plugin URI is a webpage that provides details about this specific plugin. An author URI is a webpage that provides information about the author of the plugin. Those two must be different. You are not required to provide both, so pick the one that best applies to your situation.', 'wporg-plugins' )
</span><span class="cx" style="display: block; padding: 0 10px">                        );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -249,13 +283,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Prevent uploads using popular Plugin names in the wild.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( function_exists( 'wporg_stats_get_plugin_name_install_count' ) && ! $has_upload_token ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( function_exists( 'wporg_stats_get_plugin_name_install_count' ) && ! $has_upload_token && ! $updating_existing ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $installs = wporg_stats_get_plugin_name_install_count( $this->plugin['Name'] );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $installs && $installs->count >= 100 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $error = __( 'Error: That plugin name is already in use.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return new \WP_Error( 'already_exists_in_the_wild', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         return new WP_Error( 'already_exists_in_the_wild', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         /* translators: 1: plugin slug, 2: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                        __( 'There is already a plugin with the name %1$s known to exist, though it is not hosted on WordPress.org. This means the permalink %2$s is already in use, and has a significant user base. Were we to accept it as-is, our system would overwrite those other installs and potentially damage any existing users. This is especially true since WordPress 5.5 and up will automatically update plugins and themes. You must rename your plugin by changing the %3$s line in your main plugin file and in your readme. Once you have done so, you may upload it again. If you feel this is an incorrect assessment of the situation, please email <a href="mailto:%4$s">%4$s</a> and explain why so that we may help you.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<code>' . esc_html( $this->plugin['Name'] ) . '</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -271,7 +305,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $readme ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: The plugin has no readme.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'no_readme', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'no_readme', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: readme.txt, 2: readme.md */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'The zip file must include a file named %1$s or %2$s. We recommend using %1$s as it will allow you to fully utilize our directory.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>readme.txt</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -282,15 +316,16 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Double check no existing plugins clash with the readme title.
</span><span class="cx" style="display: block; padding: 0 10px">                $readme_plugin_post = get_posts( array(
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        'post_type'   => 'plugin',
-                       'title'       => $readme->name,
-                       'post_status' => array( 'publish', 'pending', 'disabled', 'closed', 'new', 'draft', 'approved' ),
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 'post_type'    => 'plugin',
+                       'title'        => $readme->name,
+                       'post_status'  => array( 'publish', 'pending', 'disabled', 'closed', 'new', 'draft', 'approved' ),
+                       'post__not_in' => $plugin_post ? array( $plugin_post->ID ) : [],
</ins><span class="cx" style="display: block; padding: 0 10px">                 ) );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $readme_plugin_post && trim( $readme->name ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'README Error: The plugin has already been submitted.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $readme_plugin_post->post_author != get_current_user_id() ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return new \WP_Error( 'already_submitted', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         return new WP_Error( 'already_submitted', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         /* translators: 1: plugin slug, 2: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                        __( 'There is already a plugin with the name %1$s in the directory. You must rename your plugin by changing the %2$s line in your main plugin file and in your readme. Once you have done so, you may upload it again.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<code>' . esc_html( $readme->name ) . '</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -298,7 +333,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                ) );
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'already_submitted', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'already_submitted', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: plugin slug, 2: Documentation URL, 3: plugins@wordpress.org */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'You have already submitted a plugin named %1$s. There is no need to resubmit existing plugins, even for new versions. Instead, please update your plugin within the directory via <a href="%2$s">SVN</a>. If you need assistance, email <a href="mailto:%3$s">%3$s</a> and let us know.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>' . esc_html( $readme->name ) . '</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -307,13 +342,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( function_exists( 'wporg_stats_get_plugin_name_install_count' ) && ! $has_upload_token ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( function_exists( 'wporg_stats_get_plugin_name_install_count' ) && ! $has_upload_token && ! $updating_existing ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $installs = wporg_stats_get_plugin_name_install_count( $readme->name );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( $installs && $installs->count >= 100 ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                $error = __( 'Error: That plugin name is already in use.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                return new \WP_Error( 'already_exists_in_the_wild', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         return new WP_Error( 'already_exists_in_the_wild', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                         /* translators: 1: plugin slug, 2: 'Plugin Name:' */
</span><span class="cx" style="display: block; padding: 0 10px">                                        __( 'There is already a plugin with the name %1$s known to exist, though it is not hosted on WordPress.org. This means the permalink %2$s is already in use, and has a significant user base. Were we to accept it as-is, our system would overwrite those other installs and potentially damage any existing users. This is especially true since WordPress 5.5 and up will automatically update plugins and themes. You must rename your plugin by changing the %3$s line in your main plugin file and in your readme. Once you have done so, you may upload it again. If you feel this is an incorrect assessment of the situation, please email <a href="mailto:%4$s">%4$s</a> and explain why so that we may help you.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                        '<code>' . esc_html( $readme->name ) . '</code>',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -328,7 +363,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( empty( $readme->license ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $error = __( 'Error: No license defined.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'no_license', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'no_license', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: readme.txt */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Your plugin has no license declared. Please update your %1$s with a GPLv2 (or later) compatible license.', 'wporg-plugins' ),
</span><span class="cx" style="display: block; padding: 0 10px">                                '<code>readme.txt</code>'
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -337,15 +372,15 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Pass it through Plugin Check and see how great this plugin really is.
</span><span class="cx" style="display: block; padding: 0 10px">                // We're not actually using this right now.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $result = $this->check_plugin();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         $plugin_check_result = $this->check_plugin();
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! $result && ! $has_upload_token ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! $plugin_check_result && ! $has_upload_token ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                         $error = __( 'Error: The plugin has failed the automated checks.', 'wporg-plugins' );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return new \WP_Error( 'failed_checks', $error . ' ' . sprintf(
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return new WP_Error( 'failed_checks', $error . ' ' . sprintf(
</ins><span class="cx" style="display: block; padding: 0 10px">                                 /* translators: 1: Plugin Check Plugin URL, 2: https://make.wordpress.org/plugins */
</span><span class="cx" style="display: block; padding: 0 10px">                                __( 'Please correct the listed problems with your plugin and upload it again. You can also use the <a href="%1$s">Plugin Check Plugin</a> to test your plugin before uploading. If you have any questions about this please post them to %2$s.', 'wporg-plugins' ),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                '//wordpress.org/plugins/plugin-check/',
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         'https://wordpress.org/plugins/plugin-check/',
</ins><span class="cx" style="display: block; padding: 0 10px">                                 '<a href="https://make.wordpress.org/plugins">https://make.wordpress.org/plugins</a>'
</span><span class="cx" style="display: block; padding: 0 10px">                        ) );
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -353,65 +388,72 @@
</span><span class="cx" style="display: block; padding: 0 10px">                // Passed all tests!
</span><span class="cx" style="display: block; padding: 0 10px">                // Let's save everything and get things wrapped up.
</span><span class="cx" style="display: block; padding: 0 10px">                // Create a new post on first-time submissions.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $content = '';
+               foreach ( $readme->sections as $section => $section_content ) {
+                       $content .= "\n\n<!--section={$section}-->\n{$section_content}";
+               }
+
+               $post_args = array(
+                       'ID'           => $plugin_post->ID ?? 0,
+                       'post_title'   => $this->plugin['Name'],
+                       'post_name'    => $this->plugin_slug,
+                       'post_status'  => $plugin_post->post_status ?? 'new',
+                       'post_content' => $content,
+                       'post_excerpt' => $this->plugin['Description'],
+                       // 'tax_input'    => wp_unslash( $_POST['tax_input'] ), // for category selection
+                       'meta_input'   => array(
+                               'tested'                   => $readme->tested,
+                               'requires'                 => $readme->requires,
+                               'requires_php'             => $readme->requires_php,
+                               'stable_tag'               => $readme->stable_tag,
+                               'upgrade_notice'           => $readme->upgrade_notice,
+                               'contributors'             => $readme->contributors,
+                               'screenshots'              => $readme->screenshots,
+                               'donate_link'              => $readme->donate_link,
+                               'license'                  => $readme->license,
+                               'license_uri'              => $readme->license_uri,
+                               'sections'                 => array_keys( $readme->sections ),
+                               'version'                  => $this->plugin['Version'],
+                               'header_name'              => $this->plugin['Name'],
+                               'header_plugin_uri'        => $this->plugin['PluginURI'],
+                               'header_author'            => $this->plugin['Author'],
+                               'header_author_uri'        => $this->plugin['AuthorURI'],
+                               'header_textdomain'        => $this->plugin['TextDomain'],
+                               'header_description'       => $this->plugin['Description'],
+                               'requires_plugins'         => array_filter( array_map( 'trim', explode( ',', $this->plugin['RequiresPlugins'] ) ) ),
+                               'assets_screenshots'       => array(),
+                               'assets_icons'             => array(),
+                               'assets_banners'           => array(),
+                               'assets_banners_color'     => false,
+                               'support_threads'          => 0,
+                               'support_threads_resolved' => 0,
+                               'downloads'                => 0,
+                               'last_updated'             => gmdate( 'Y-m-d H:i:s' ),
+                               'rating'                   => 0,
+                               'ratings'                  => array(),
+                               'active_installs'          => 0,
+                               '_active_installs'         => 0,
+                               'usage'                    => array(),
+                       ),
+               );
+
+               // First time submission, track some additional metadata.
</ins><span class="cx" style="display: block; padding: 0 10px">                 if ( ! $plugin_post ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $content = '';
-                       foreach ( $readme->sections as $section => $section_content ) {
-                               $content .= "\n\n<!--section={$section}-->\n{$section_content}";
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $post_args['meta_input']['_author_ip']        = preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] );
+                       $post_args['meta_input']['_submitted_date']   = time();
+                       $post_args['meta_input']['_used_upload_token'] = $has_upload_token;
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        // Add a Plugin Directory entry for this plugin.
-                       $plugin_post = Plugin_Directory::create_plugin_post( array(
-                               'post_title'   => $this->plugin['Name'],
-                               'post_name'    => $this->plugin_slug,
-                               'post_status'  => 'new',
-                               'post_content' => $content,
-                               'post_excerpt' => $this->plugin['Description'],
-                               // 'tax_input'    => wp_unslash( $_POST['tax_input'] ), // for category selection
-                               'meta_input'   => array(
-                                       'tested'                   => $readme->tested,
-                                       'requires'                 => $readme->requires,
-                                       'requires_php'             => $readme->requires_php,
-                                       'stable_tag'               => $readme->stable_tag,
-                                       'upgrade_notice'           => $readme->upgrade_notice,
-                                       'contributors'             => $readme->contributors,
-                                       'screenshots'              => $readme->screenshots,
-                                       'donate_link'              => $readme->donate_link,
-                                       'license'                  => $readme->license,
-                                       'license_uri'              => $readme->license_uri,
-                                       'sections'                 => array_keys( $readme->sections ),
-                                       'version'                  => $this->plugin['Version'],
-                                       'header_name'              => $this->plugin['Name'],
-                                       'header_plugin_uri'        => $this->plugin['PluginURI'],
-                                       'header_author'            => $this->plugin['Author'],
-                                       'header_author_uri'        => $this->plugin['AuthorURI'],
-                                       'header_textdomain'        => $this->plugin['TextDomain'],
-                                       'header_description'       => $this->plugin['Description'],
-                                       'requires_plugins'         => array_filter( array_map( 'trim', explode( ',', $this->plugin['RequiresPlugins'] ) ) ),
-                                       'assets_screenshots'       => array(),
-                                       'assets_icons'             => array(),
-                                       'assets_banners'           => array(),
-                                       'assets_banners_color'     => false,
-                                       'support_threads'          => 0,
-                                       'support_threads_resolved' => 0,
-                                       'downloads'                => 0,
-                                       'last_updated'             => gmdate( 'Y-m-d H:i:s' ),
-                                       'rating'                   => 0,
-                                       'ratings'                  => array(),
-                                       'active_installs'          => 0,
-                                       '_active_installs'         => 0,
-                                       'usage'                    => array(),
-                                       '_author_ip'               => preg_replace( '/[^0-9a-fA-F:., ]/', '', $_SERVER['REMOTE_ADDR'] ),
-                                       '_submitted_date'          => time(),
-                               ),
-                       ) );
-                       if ( is_wp_error( $plugin_post ) ) {
-                               return $plugin_post->get_error_message();
-                       }
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Add/Update the Plugin Directory entry for this plugin.
+               $plugin_post = Plugin_Directory::create_plugin_post( $post_args );
+
+               if ( is_wp_error( $plugin_post ) ) {
+                       return $plugin_post;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $attachment = $this->save_zip_file( $plugin_post->ID );
</span><span class="cx" style="display: block; padding: 0 10px">                if ( is_wp_error( $attachment ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        return $attachment->get_error_message();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 return $attachment;
</ins><span class="cx" style="display: block; padding: 0 10px">                 }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Store metadata about the uploaded ZIP.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -421,11 +463,18 @@
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( $plugin_post->ID, '_submitted_zip_size', filesize( get_attached_file( $attachment->ID ) ) );
</span><span class="cx" style="display: block; padding: 0 10px">                update_post_meta( $plugin_post->ID, '_submitted_zip_loc', $lines_of_code );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                do_action( 'plugin_upload', $this->plugin, $plugin_post );
+
+               if ( $updating_existing ) {
+                       return sprintf(
+                               __( 'New version of %s uploaded for review.', 'wporg-plugins' ),
+                               esc_html( $this->plugin['Name'] )
+                       );
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 // Send plugin author an email for peace of mind.
</span><span class="cx" style="display: block; padding: 0 10px">                $this->send_email_notification();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                do_action( 'plugin_upload', $this->plugin, $plugin_post );
-
</del><span class="cx" style="display: block; padding: 0 10px">                 $message = sprintf(
</span><span class="cx" style="display: block; padding: 0 10px">                        /* translators: 1: plugin name, 2: plugin slug, 3: plugins@wordpress.org */
</span><span class="cx" style="display: block; padding: 0 10px">                        __( 'Thank you for uploading %1$s to the WordPress Plugin Directory. Your plugin has been given the initial slug of %2$s, however that is subject to change based on the results of your code review. If this slug is incorrect, please change it below. Remember, a plugin slug cannot be changed once your plugin is approved.' ),
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -453,6 +502,21 @@
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        /**
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         * Generate a plugin slug from a Plugin name.
+        *
+        * @param string $plugin_name The plugin name.
+        * @return string The generated plugin slug.
+        */
+       public function generate_plugin_slug( $plugin_name ) {
+               $plugin_slug = remove_accents( $plugin_name );
+               $plugin_slug = preg_replace( '/[^a-z0-9 _.-]/i', '', $plugin_slug );
+               $plugin_slug = str_replace( '_', '-', $plugin_slug );
+               $plugin_slug = sanitize_title_with_dashes( $plugin_slug );
+
+               return $plugin_slug;
+       }
+
+       /**
</ins><span class="cx" style="display: block; padding: 0 10px">          * Whether the uploaded plugin uses a reserved slug.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return bool True if the slug is reserved, false otherwise.
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -504,7 +568,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @return string|false The trademarked slug if found, false otherwise.
</span><span class="cx" style="display: block; padding: 0 10px">         */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-        public function has_trademarked_slug() {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+ public function has_trademarked_slug( $plugin_slug = false ) {
+               $plugin_slug = $plugin_slug ?: $this->plugin_slug;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 $trademarked_slugs = array(
</span><span class="cx" style="display: block; padding: 0 10px">                        'adobe-',
</span><span class="cx" style="display: block; padding: 0 10px">                        'adsense-',
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -646,11 +712,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $trademarked_slugs as $trademark ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( '-' === $trademark[-1] ) {
</span><span class="cx" style="display: block; padding: 0 10px">                                // Trademarks ending in "-" indicate slug cannot begin with that term.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                if ( 0 === strpos( $this->plugin_slug, $trademark ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         if ( 0 === strpos( $plugin_slug, $trademark ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                         $has_trademarked_slug = $trademark;
</span><span class="cx" style="display: block; padding: 0 10px">                                        break;
</span><span class="cx" style="display: block; padding: 0 10px">                                }
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        } elseif ( false !== strpos( $this->plugin_slug, $trademark ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 } elseif ( false !== strpos( $plugin_slug, $trademark ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // Otherwise, the term cannot appear anywhere in slug.
</span><span class="cx" style="display: block; padding: 0 10px">                                $has_trademarked_slug = $trademark;
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -661,7 +727,7 @@
</span><span class="cx" style="display: block; padding: 0 10px">                if ( $has_trademarked_slug && in_array( $has_trademarked_slug, $for_use_exceptions ) ) {
</span><span class="cx" style="display: block; padding: 0 10px">                        $for_trademark = '-for-' . $has_trademarked_slug;
</span><span class="cx" style="display: block; padding: 0 10px">                        // At this point we might be okay, but there's one more check.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( $for_trademark === substr( $this->plugin_slug, -1 * strlen( $for_trademark ) ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( $for_trademark === substr( $plugin_slug, -1 * strlen( $for_trademark ) ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 // Yes the slug ENDS with 'for-TRADEMARK'.
</span><span class="cx" style="display: block; padding: 0 10px">                                $has_trademarked_slug = false;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -669,7 +735,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Check portmanteaus.
</span><span class="cx" style="display: block; padding: 0 10px">                foreach ( $portmanteaus as $portmanteau ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        if ( 0 === strpos( $this->plugin_slug, $portmanteau ) ) {
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 if ( 0 === strpos( $plugin_slug, $portmanteau ) ) {
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $has_trademarked_slug = $portmanteau;
</span><span class="cx" style="display: block; padding: 0 10px">                                break;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -719,21 +785,40 @@
</span><span class="cx" style="display: block; padding: 0 10px">         * Saves zip file and attaches it to the plugin post.
</span><span class="cx" style="display: block; padding: 0 10px">         *
</span><span class="cx" style="display: block; padding: 0 10px">         * @param int $post_id Post ID.
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-         * @return int|\WP_Error Attachment ID or upload error.
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+  * @return int|WP_Error Attachment ID or upload error.
</ins><span class="cx" style="display: block; padding: 0 10px">          */
</span><span class="cx" style="display: block; padding: 0 10px">        public function save_zip_file( $post_id ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $zip_hash = sha1_file( $_FILES['zip_file']['tmp_name'] );
+               if ( in_array( $zip_hash, get_post_meta( $post_id, 'uploaded_zip_hash' ) ?: [], true ) ) {
+                       return new WP_Error( 'already_uploaded', __( "You've already uploaded that ZIP file.", 'wporg-plugins' ) );
+               }
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                // Upload folders are already year/month based. A second-based prefix should be specific enough.
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $original_name              = $_FILES['zip_file']['name'];
</ins><span class="cx" style="display: block; padding: 0 10px">                 $_FILES['zip_file']['name'] = date( 'd_H-i-s' ) . '_' . $_FILES['zip_file']['name'];
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'site_option_upload_filetypes', array( $this, 'whitelist_zip_files' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                add_filter( 'default_site_option_upload_filetypes', array( $this, 'whitelist_zip_files' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $attachment_id = media_handle_upload( 'zip_file', $post_id );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         // Store the plugin details against the media as well.
+               $post_details  = array(
+                       'post_title'   => sprintf( '%s Version %s', $this->plugin['Name'], $this->plugin['Version'] ),
+                       'post_excerpt' => $this->plugin['Description'],
+               );
+               $attachment_id = media_handle_upload( 'zip_file', $post_id, $post_details );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                remove_filter( 'site_option_upload_filetypes', array( $this, 'whitelist_zip_files' ) );
</span><span class="cx" style="display: block; padding: 0 10px">                remove_filter( 'default_site_option_upload_filetypes', array( $this, 'whitelist_zip_files' ) );
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                if ( ! is_wp_error( $attachment_id ) ) {
+                       // Save some basic details with the ZIP.
+                       update_post_meta( $attachment_id, 'version', $this->plugin['Version'] );
+                       update_post_meta( $attachment_id, 'submitted_name', $original_name );
+
+                       // And record this ZIP as having been uploaded.
+                       add_post_meta( $post_id, 'uploaded_zip_hash', $zip_hash );
+               }
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 return $attachment_id;
</span><span class="cx" style="display: block; padding: 0 10px">        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentpluginsplugindirectoryshortcodesclassuploadphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php     2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/plugins/plugin-directory/shortcodes/class-upload.php       2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -51,26 +51,37 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                ob_start();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $uploader = new Upload_Handler();
-
</del><span class="cx" style="display: block; padding: 0 10px">                 include_once ABSPATH . 'wp-admin/includes/template.php';
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                $uploader      = new Upload_Handler();
+               $upload_result = false;
+
</ins><span class="cx" style="display: block; padding: 0 10px">                 list( $submitted_plugins, $submitted_counts ) = self::get_submitted_plugins();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                $upload_result = false;
-
</del><span class="cx" style="display: block; padding: 0 10px">                 if (
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        ! empty( $_POST['_wpnonce'] )
-                       && wp_verify_nonce( $_POST['_wpnonce'], 'wporg-plugins-upload' )
-                       && 'upload' === $_POST['action']
-                       && ! $submitted_counts->total
-                       && ! empty( $_FILES['zip_file'] )
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 ! empty( $_POST['_wpnonce'] ) &&
+                       ! empty( $_FILES['zip_file'] ) &&
+                       (
+                               // New submission.
+                               ! $submitted_counts->total &&
+                               empty( $_POST['plugin_id'] ) &&
+                               wp_verify_nonce( $_POST['_wpnonce'], 'wporg-plugins-upload' ) &&
+                               'upload' === $_POST['action']
+                       ) || (
+                               // Existing submission
+                               ! empty( $_POST['plugin_id'] ) &&
+                               'upload-additional' === $_POST['action'] &&
+                               wp_verify_nonce( $_POST['_wpnonce'], 'wporg-plugins-upload-' . $_POST['plugin_id'] )
+                       )
</ins><span class="cx" style="display: block; padding: 0 10px">                 ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        $upload_result = $uploader->process_upload();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 $for_plugin    = absint( $_POST['plugin_id'] ?? 0 );
+                       $upload_result = $uploader->process_upload( $for_plugin );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( is_wp_error( $upload_result ) ) {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                $type    = 'error';
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $message = $upload_result->get_error_message();
</span><span class="cx" style="display: block; padding: 0 10px">                        } else {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                $type    = 'success';
</ins><span class="cx" style="display: block; padding: 0 10px">                                 $message = $upload_result;
</span><span class="cx" style="display: block; padding: 0 10px">                        }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -78,11 +89,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        list( $submitted_plugins, $submitted_counts ) = self::get_submitted_plugins();
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        if ( ! empty( $message ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                echo "<div class='notice notice-warning notice-alt'><p>{$message}</p></div>\n";
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         echo "<div class='notice notice-{$type} notice-alt'><p>{$message}</p></div>\n";
</ins><span class="cx" style="display: block; padding: 0 10px">                         }
</span><span class="cx" style="display: block; padding: 0 10px">                }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                if ( ! is_wp_error( $upload_result ) ) :
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         if ( ! is_wp_error( $upload_result ) || $submitted_counts->total ) :
</ins><span class="cx" style="display: block; padding: 0 10px">                         $plugins       = wp_count_posts( 'plugin', 'readable' );
</span><span class="cx" style="display: block; padding: 0 10px">                        $oldest_plugin = get_posts( [ 'post_type' => 'plugin', 'post_status' => 'new', 'order' => 'ASC', 'orderby' => 'post_date_gmt', 'numberposts' => 1 ] );
</span><span class="cx" style="display: block; padding: 0 10px">                        $queue_length  = floor( ( time() - strtotime( $oldest_plugin[0]->post_date_gmt ?? 'now' ) ) / DAY_IN_SECONDS );
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -182,7 +193,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                        <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                        // List of all plugins in progress.
</span><span class="cx" style="display: block; padding: 0 10px">                                        foreach ( $submitted_plugins as $plugin ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                $can_change_slug = ( 'new' === $plugin->post_status && ! $plugin->{'_wporg_plugin_original_slug'} );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                                         $can_change_slug   = ( 'new' === $plugin->post_status && ! $plugin->{'_wporg_plugin_original_slug'} );
+                                               $can_upload_extras = in_array( $plugin->post_status, array( 'new', /* 'pending' */ ), true );
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                                echo '<li>';
</span><span class="cx" style="display: block; padding: 0 10px">                                                        echo '<strong>' . esc_html( $plugin->post_title ) . '</strong>';
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -257,8 +269,44 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                        <?php
</span><span class="cx" style="display: block; padding: 0 10px">                                                        endif; // $can_change_slug
</span><span class="cx" style="display: block; padding: 0 10px">                                                        echo '</li>';
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+                                                       echo '<li>';
+                                                       $attached_media = get_attached_media( 'application/zip', $plugin );
+
+                                                       echo '<strong>' . __( 'Submitted files:', 'wporg' ) . '</strong><ol>';
+                                                       foreach ( $attached_media as $upload ) {
+                                                               echo '<li><ul>';
+                                                               $filename = $upload->submitted_name ?: preg_replace( '!^[0-9-_]+!', '', basename( get_attached_file( $upload->ID ) ) );
+                                                               $version  = $upload->version ?: $plugin->version;
+
+                                                               echo '<li><code>' . esc_html( $filename ) . '</code></li>';
+                                                               echo '<li>' . sprintf( __( 'Version: %s', 'wporg-plugins' ), '<code>' . esc_html( $version ) . '</code>' ) . '</li>';
+                                                               echo '<li>' . sprintf( __( 'Upload Date: %s', 'wporg-plugins' ), date_i18n( get_option( 'date_format' ), strtotime( $upload->post_date ) ) ) . '</li>';
+                                                               echo '</ul></li>';
+                                                       }
+                                                       if ( $can_upload_extras ) {
+                                                               echo '<li class="unmarked-list"><a href="#" class="show-upload-additional hide-if-no-js">' . sprintf( __( 'Upload new version of %s for review.', 'wporg-plugins' ), esc_html( $plugin->post_title ) ) . '</a>';
+                                                       }
+                                                       echo '</ol>';
+
+                                                       if ( $can_upload_extras ) {
+                                                               ?>
+                                                               <form class="plugin-upload-form hidden" enctype="multipart/form-data" method="POST" action="">
+                                                                       <?php wp_nonce_field( 'wporg-plugins-upload-' . $plugin->ID ); ?>
+                                                                       <input type="hidden" name="action" value="upload-additional"/>
+                                                                       <input type="hidden" name="plugin_id" value="<?php echo esc_attr( $plugin->ID ); ?>" />
+
+                                                                       <label class="button button-secondary zip-file">
+                                                                               <input type="file" class="plugin-file" name="zip_file" size="25" accept=".zip" required data-maxbytes="<?php echo esc_attr( wp_max_upload_size() ); ?>" />
+                                                                               <span><?php _e( 'Select File', 'wporg-plugins' ); ?></span>
+                                                                       </label>
+
+                                                                       <input class="upload-button button button-primary" type="submit" value="<?php esc_attr_e( 'Upload', 'wporg-plugins' ) ?>"/>
+                                                               </form>
+                                                               <?php
+                                                       }
+                                                       echo '</li>';
</ins><span class="cx" style="display: block; padding: 0 10px">                                                         echo '</ul>';
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                                
</del><span class="cx" style="display: block; padding: 0 10px">                                                 echo "</li>\n";
</span><span class="cx" style="display: block; padding: 0 10px">                                        }
</span><span class="cx" style="display: block; padding: 0 10px">                                        ?>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -305,10 +353,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">                                                <?php wp_terms_checklist( 0, array( 'taxonomy' => 'plugin_category' ) ); ?>
</span><span class="cx" style="display: block; padding: 0 10px">                                        </ul>
</span><span class="cx" style="display: block; padding: 0 10px">                                </fieldset> */
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-?>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         ?>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                                <input type="file" id="zip_file" class="plugin-file" name="zip_file" size="25" accept=".zip" required data-maxbytes="<?php echo esc_attr( wp_max_upload_size() ); ?>" />
-                               <label class="button button-secondary" for="zip_file"><?php _e( 'Select File', 'wporg-plugins' ); ?></label>
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                         <label class="button button-secondary zip-file">
+                                       <input type="file" class="plugin-file" name="zip_file" size="25" accept=".zip" required data-maxbytes="<?php echo esc_attr( wp_max_upload_size() ); ?>" />
+                                       <span><?php _e( 'Select File', 'wporg-plugins' ); ?></span>
+                               </label>
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                <p>
</span><span class="cx" style="display: block; padding: 0 10px">                                        <small>
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -356,36 +406,6 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                                <input id="upload_button" class="button button-primary" type="submit" value="<?php esc_attr_e( 'Upload', 'wporg-plugins' ); ?>"/>
</span><span class="cx" style="display: block; padding: 0 10px">                        </form>
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-
-                       <?php
-                       $upload_script = '
-                               ( function ( $ ) {
-                                       var $label = $( "label.button" ),
-                                               labelText = $label.text();
-                                       $( "#zip_file" )
-                                               .on( "change", function( event ) {
-                                                       var fileName = event.target.value.split( "\\\\" ).pop(),
-                                                               fileSize = event.target.files[0].size || 0;
-
-                                                       if ( fileSize > $(this).data( "maxbytes" ) ) {
-                                                               event.target.value = "";
-                                                               fileName = false;
-                                                       }
-
-                                                       fileName ? $label.text( fileName ) : $label.text( labelText );
-                                               } )
-                                               .on( "focus", function() { $label.addClass( "focus" ); } )
-                                               .on( "blur", function() { $label.removeClass( "focus" ); } );
-                               } ( window.jQuery ) );';
-
-                       if ( ! wp_script_is( 'jquery', 'done' ) ) {
-                               wp_enqueue_script( 'jquery' );
-                               wp_add_inline_script( 'jquery-migrate', $upload_script );
-                       } else {
-                               printf( '<script>%s</script>', $upload_script );
-                       }
-                       ?>
-
</del><span class="cx" style="display: block; padding: 0 10px">                 <?php endif; // ! $submitted_counts->total
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                return ob_get_clean();
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginsclientstylesobjects_uploadscss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/styles/objects/_upload.scss</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/styles/objects/_upload.scss      2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/client/styles/objects/_upload.scss        2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1,4 +1,9 @@
</span><span class="cx" style="display: block; padding: 0 10px"> .plugin-upload-form {
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       &.hidden {
+               display: none;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         fieldset {
</span><span class="cx" style="display: block; padding: 0 10px">                border: none;
</span><span class="cx" style="display: block; padding: 0 10px">                margin: 0;
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -53,6 +58,10 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px"> .plugin-queue-message {
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        code {
+               font-size: 1em;
+       }
+
</ins><span class="cx" style="display: block; padding: 0 10px">         dialog.slug-change input[type="text"] {
</span><span class="cx" style="display: block; padding: 0 10px">                font-family: monospace;
</span><span class="cx" style="display: block; padding: 0 10px">                font-size: 1.2em;
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginscssstylertlcss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/css/style-rtl.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/css/style-rtl.css       2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/css/style-rtl.css 2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-@charset "UTF-8";[class*=col-]{margin:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters>.row{margin-right:-2%}@media (max-width:768px){.row.gutters>.row{margin-right:0}}.row.gutters>.row>[class*=col-]{margin-right:2%}@media (max-width:768px){.row.gutters>.row>[class*=col-]{margin-right:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.3333333333%}.offset-1{margin-right:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-right:16.6666666667%}.col-3{width:25%}.offset-3{margin-right:25%}.col-4{width:33.3333333333%}.offset-4{margin-right:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-right:41.6666666667%}.col-6{width:50%}.offset-6{margin-right:50%}.col-7{width:58.3333333333%}
 .offset-7{margin-right:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-right:66.6666666667%}.col-9{width:75%}.offset-9{margin-right:75%}.col-10{width:83.3333333333%}.offset-10{margin-right:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-right:91.6666666667%}.col-12{width:100%}.offset-12{margin-right:100%}.gutters>.col-1{width:6.33333%}.gutters>.col-1:nth-child(n+13){margin-top:2%}.gutters>.offset-1{margin-right:10.33333%!important}.gutters>.col-2{width:14.66667%}.gutters>.col-2:nth-child(n+7){margin-top:2%}.gutters>.offset-2{margin-right:18.66667%!important}.gutters>.col-3{width:23%}.gutters>.col-3:nth-child(n+5){margin-top:2%}.gutters>.offset-3{margin-right:27%!important}.gutters>.col-4{width:31.33333%}.gutters>.col-4:nth-child(n+4){margin-top:2%}.gutters>.offset-4{margin-right:35.33333%!important}.gutters>.col-5{width:39.66667%}.gutters>.offset-5{margin-right:43.66667%!important}.gutters>.col-6{width:48%}.gutte
 rs>.col-6:nth-child(n+3){margin-top:2%}.gutters>.offset-6{margin-right:52%!important}.gutters>.col-7{width:56.33333%}.gutters>.offset-7{margin-right:60.33333%!important}.gutters>.col-8{width:64.66667%}.gutters>.offset-8{margin-right:68.66667%!important}.gutters>.col-9{width:73%}.gutters>.offset-9{margin-right:77%!important}.gutters>.col-10{width:81.33333%}.gutters>.offset-10{margin-right:85.33333%!important}.gutters>.col-11{width:89.66667%}.gutters>.offset-11{margin-right:93.66667%!important}.gutters>.col-12{width:98%}.gutters>.offset-12{margin-right:102%!important}@media (max-width:768px){[class*=" offset-"],[class^=offset-]{margin-right:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row [class*=col-]{margin-right:0;width:100%}.row.gutters [class*=col-]{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}.gutters .column.push-left,.push-left{margin-left:auto}.gutters .column.push-right,.push-right{margin-right:auto
 }.gutters .column.push-center,.push-center{margin-right:auto;margin-left:auto}.gutters .column.push-middle,.push-middle{margin-bottom:auto;margin-top:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-right:0}.gutters .column.push-center-sm,.push-center-sm{margin-right:auto;margin-left:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:left}.float-left{float:right}@media (max-width:768px){.float-left,.float-right{float:none}}.fixed{right:0;position:fixed;top:0;width:100%;z-index:100}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:initial}audio:
 not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:initial}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sup{top:-.5em}sub{bottom:-.25em}img{border:0}figure{margin:1em 40px}hr{box-sizing:initial;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-s
 pin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}optgroup{font-weight:700}table{border-spacing:0}td,th{padding:0}p{margin:1rem 0}blockquote{margin:0 1.5rem}address{margin:0 0 1.5rem}pre{margin-bottom:1.6rem;padding:1.6rem}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}blockquote,q{quotes:"" ""}blockquote:after,blockquote:before,q:after,q:before{content:""}blockquote{border-right:2px solid #767676;color:#767676;margin:1rem 0;padding-right:.8rem}blockquote cite{font-size:.8rem}figure{margin:0}hr{background-color:#eee;border:0;height:2px;margin:5rem auto}img{height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{clear:both;font-family:Open Sans,sans-serif;line-height:1.5;margin:2rem 0 1rem}.h1,h1
 {font-size:2.44140625rem}.h1,.h2,h1,h2{font-weight:300}.h2,h2{font-size:1.953125rem}.h3,h3{font-size:1.5625rem;font-weight:400}.h4,h4{color:#32373c;font-size:1.25rem;font-weight:600;padding:0}.h5,h5{font-size:1rem;letter-spacing:.01rem}.h5,.h6,h5,h6{font-weight:600;text-transform:uppercase}.h6,h6{font-size:.8rem;letter-spacing:.8px}a{color:#0073aa;text-decoration:none}a:active,a:focus,a:hover{text-decoration:underline}a:focus{outline:thin dotted}a:active,a:hover{outline:0}li>a,p a{text-decoration:underline}li>a:hover,p a:hover{color:#d54e21}ol,ul{margin:0 1.5em 1.5em 0;padding:0}ul{list-style:square}ol{list-style:decimal}ol.unmarked-list,ul.unmarked-list{list-style:none;padding-right:0}li>ol,li>ul{margin-bottom:0}dt{font-weight:700}dd{margin:0 1.5em 1.5em}table{border:1px solid #eee;border-collapse:collapse;font-size:.8rem;margin:0 0 1rem;padding:0;width:100%}table thead{background:#32373c;color:#fff}table td,table th{border:1px solid #eee;font-weight:400;margin:0;paddin
 g:.4rem;text-align:right;vertical-align:top}table tbody tr:nth-child(2n){background:#f7f7f7}html{font-size:100%}body,button,input,select,textarea{color:#32373c;font-family:Open Sans,sans-serif;font-size:100%;line-height:1.5}@media screen and (min-width:737px){html{font-size:1.125rem}}cite,dfn,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:.9375rem;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1.6em;word-wrap:normal}code,kbd,tt,var{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9375rem;-webkit-hyphens:none;hyphens:none}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}h1.title{color:#0073aa;font-size:.8rem;font-weight:600;letter-spacing:.05rem;text-transform:uppercase}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:ab
 solute!important;width:1px}.screen-reader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px #0009;clip:auto!important;color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;right:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-content[tabindex="-1"]:focus{outline:0}.no-js .hide-if-no-js{display:none}.alignleft{display:inline;float:right;margin-left:1.5em}.alignright{display:inline;float:left;margin-right:1.5em}.aligncenter{clear:both;display:block;margin-right:auto;margin-left:auto}@media screen and (max-width:480px){.alignleft,.alignright{display:block;float:none;margin-right:auto;margin-left:auto}}.button,.button-primary,.button-secondary,.plugin-upload-form .button-primary{-webkit-appearance:none;border:1px solid;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:.8rem;height:1.5625rem;line-height:1;margin:0;padding:0 .8rem;text-dec
 oration:none;white-space:nowrap}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{border:0;padding:0}.button-group.button-xl .button,.button.button-xl{font-size:1rem;height:2.44140625rem;line-height:1;padding:0 1.5rem}.button-group.button-large .button,.button.button-large{height:1.953125rem;line-height:1;padding:0 1rem}.button-group.button-small .button,.button.button-small{font-size:.64rem;height:1.25rem;line-height:1;padding:0 .5rem}a.button,a.button-primary,a.button-secondary{line-height:1.5625rem}.button-group.button-large a.button,a.button.button-large{line-height:1.953125rem}.button-group.button-xl a.button,a.button.button-xl{line-height:2.44140625rem}.button-group.button-small a.button,a.button.button-small{line-height:1.25rem}.button:active,.button:focus{outline:none}.button.hidden{display:none}input[type=reset],input[type=reset]:active,input[type=reset]:focus,input[type=reset]:hover{backgr
 ound:none;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.button,.button-secondary,.button:visited{background:#f7f7f7;border-color:#ccc;box-shadow:0 1px 0 #ccc;color:#555;vertical-align:top}p .button{vertical-align:initial}.button-secondary:focus,.button-secondary:hover,.button.focus,.button.hover,.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#23282d}.button-link:focus,.button-secondary:focus,.button.focus,.button:focus{border-color:#5b9dd9;box-shadow:0 0 3px #0073aacc}.button-secondary:active,.button.active,.button.active:hover,.button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px #00000080;transform:translateY(1px)}.button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px #00000080,0 0 3px #0073aacc}.button-disabled,.button-secondary.disabled,.button-secondary:disabled,.button-secondary[disabled],.button.disabled,.button:disabled,.button[disabled]{background:#f7f7f7!important;border-color:#ddd!important;
 box-shadow:none!important;color:#a0a5aa!important;cursor:default;text-shadow:0 1px 0 #fff!important;transform:none!important}.button-link,input[type=submit].button-link{background:none;border:0;border-radius:0;box-shadow:none;cursor:pointer;margin:0;outline:none;padding:0}.button-link:focus{outline:1px solid #5b9dd9}.button-primary,.download-button,.plugin-upload-form .button-primary{text-decoration:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.button-primary,.button-primary:visited,.download-button,.download-button:visited,.plugin-upload-form .button-primary,.plugin-upload-form .button-primary:visited{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary.hover,.button-primary:focus,.button-primary:hover,.download-button.focus,.download-button.hover,.download-button:focus,.download-button:hover,.plugin-upload-form .button-primary.focus,.plugin-upload-form .butt
 on-primary.hover,.plugin-upload-form .button-primary:focus,.plugin-upload-form .button-primary:hover{background:#008ec2;border-color:#006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary:focus,.download-button.focus,.download-button:focus,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.button-primary.active,.button-primary.active:focus,.button-primary.active:hover,.button-primary:active,.download-button.active,.download-button.active:focus,.download-button.active:hover,.download-button:active,.plugin-upload-form .button-primary.active,.plugin-upload-form .button-primary.active:focus,.plugin-upload-form .button-primary.active:hover,.plugin-upload-form .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.button-primary.disabled,.button-primary:disabled,.button-primary[disabled],.download-button.disabled,.downlo
 ad-button:disabled,.download-button[disabled],.plugin-upload-form .button-primary.disabled,.plugin-upload-form .button-primary:disabled,.plugin-upload-form .button-primary[disabled]{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 #0000001a!important}.button-primary.button.button-hero,.download-button.button.button-hero,.plugin-upload-form .button-primary.button.button-hero{box-shadow:0 2px 0 #006799}.button-primary.button.button-hero.active,.button-primary.button.button-hero.active:focus,.button-primary.button.button-hero.active:hover,.button-primary.button.button-hero:active,.download-button.button.button-hero.active,.download-button.button.button-hero.active:focus,.download-button.button.button-hero.active:hover,.download-button.button.button-hero:active,.plugin-upload-form .button-primary.button.button-hero.active,.plugin-upload-form .button-primary.button.button-hero.active:focus,.p
 lugin-upload-form .button-primary.button.button-hero.active:hover,.plugin-upload-form .button-primary.button.button-hero:active{box-shadow:inset 0 3px 0 #006799}.button-primary-disabled{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 #0000001a!important}.button-group{display:inline-block;font-size:0;position:relative;vertical-align:middle;white-space:nowrap}.button-group>.button{border-radius:0;display:inline-block;margin-left:-1px;z-index:10}.button-group>.button-primary{z-index:100}.button-group>.button:hover{z-index:20}.button-group>.button:first-child{border-radius:0 3px 3px 0}.button-group>.button:last-child{border-radius:3px 0 0 3px}.button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:737px){.button,.button.button-large,.button.button-small,.plugin-upload-form .button-primary{font-size:14px;height:auto;line-height:normal;margin-bot
 tom:4px;padding:6px 14px;vertical-align:middle}}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.committer-list li:after,.committer-list li:before,.entry-content:after,.entry-content:before,.home-below:after,.home-below:before,.plugin-meta:after,.plugin-meta:before,.plugin-upload-form .category-checklist:after,.plugin-upload-form .category-checklist:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before,.support-rep-list li:after,.support-rep-list li:before,.type-plugin .plugin-header:after,.type-plugin .plugin-header:before,.type-plugin:after,.type-plugin:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.committer-list li:after,.entry-content:after,.home-below:after,.plugin-meta:after,.plugin-upload-form .category-checklist:after,.site-content:after,.site-footer:after,.site-header:after,.support-rep-list li:after,.type-plugin .plugin-heade
 r:after,.type-plugin:after{clear:both}p.subheading{color:#82878c;font-weight:300;margin:-.4rem auto 2rem;text-align:center}p.intro,p.subheading{font-size:1.25rem}p.aside{font-size:.8rem}p.note{font-size:.64rem;letter-spacing:.01rem;max-width:18.1898940355rem}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px #00000012;color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=sear
 ch]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px #1e8cbecc}input[type=number]{height:28px}input[type=checkbox],input[type=radio]{height:16px;outline:0;width:16px}input[type=checkbox]:checked:before{margin:-3px -4px 0 0}input[type=radio]:checked+label:before{color:#82878c}input[type=radio]:checked:before{height:6px;margin:4px;width:6px}input[type=reset]:active,input[type=reset]:hover{color:#00a0d2}input[type=search]{-webkit-appearance:textfield}input,select,textarea{font-size:14px;padding:3px 5px}textarea.code{line-height:1.4;padding:4px 6px 1px}label{vertical-align:middle}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{padding:1px 6px;width:50px}input[type=number].small-t
 ext{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}input[type=checkbox]{-webkit-appearance:none;padding:10px}input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}input[type=radio]:checked:before{height:9px;line-height:16px;margin:7px;vertical-align:middle;width:9px}input,textarea{font-size:16px}input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{display:inline;margin:0 3px;max-width:55px;padding:3px 6px;width:auto}input.regular-text{width:100%}label{font-size:14px}fieldset label{display:block}}a.button:active,a.button:f
 ocus,a.button:hover{text-decoration:none}.notice p{font-size:.8rem;margin:.5em 0;padding:2px}.avatar{border-radius:50%;vertical-align:middle}.locale-banner{background:#c7e8ca;font-size:.8rem;padding:.5rem;text-align:center}@media (min-width:67rem){.locale-banner{margin:1rem auto;max-width:960px}}.locale-banner a{text-decoration:underline}.block-validator .block-validator__plugin-form label{display:block;margin-bottom:.8rem}.block-validator .block-validator__plugin-input-container{display:flex;max-width:34rem}.block-validator .block-validator__plugin-input{flex:1}.block-validator .block-validator__plugin-submit{flex:0;margin-right:.73152rem}@media (max-width:36rem){.block-validator .block-validator__plugin-input-container{display:block}.block-validator .block-validator__plugin-input{width:100%}.block-validator .block-validator__plugin-submit{margin-right:0;margin-top:.73152rem}}.block-validator .notice details,.block-validator .notice p{font-size:1rem;margin:.73152rem 0}.block-valida
 tor .notice details p{font-size:.8rem;margin-right:1rem}.block-validator .notice code{font-size:1em}.block-validator .notice summary{display:list-item}.block-validator figure{border:1px solid #aaa;display:inline-block;padding:1em}.block-validator .test-screenshot{text-align:center}input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px #00000012;color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[
 type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px #1e8cbecc;color:#111}input[type=email],input[type=url]{direction:rtl}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],select{padding:6px 10px}input[type=number]{height:40px;line-height:inherit}input[type=checkbox],input[type=radio]{-webkit-appearance:none;background:#fff;border:1px solid #b4b9be;box-shadow:inset 0 1px 2px #0000001a;clear:none;color:#555;cursor:pointer;display:inline-block;height:25px;line-height:0;margin:-4px 0 0 4px;min-width:16px;padding:0!important;text-align:center;transition:border-color .05s ease-in-out;vertical-align:middle;width:25px}input[type=checkbox]{padding:10px}input[type=radio]{border-radius:50%;line-height:10px;margin-left:4px}input[type=checkbox]:checked:befo
 re,input[type=radio]:checked:before{display:inline-block;float:right;font:normal 21px/1 dashicons;vertical-align:middle;width:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}input[type=checkbox]:checked:before{color:#1e8cbe;content:"\f147";font:normal 30px/1 dashicons;margin:-3px -5px}input[type=radio]:checked:before{background-color:#1e8cbe;border-radius:50px;content:"•";font-size:24px;height:9px;line-height:16px;margin:7px;text-indent:-9999px;vertical-align:middle;width:9px}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{border-radius:0;font-size:16px}textarea{line-height:1.4;overflow:auto;padding:2px 6px;resize:vertical}input[type=file]{padding:3px 
 0}label{cursor:pointer}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}:-moz-placeholder{color:#a9a9a9}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:#ffffff80;border-color:#dededebf;box-shadow:inset 0 1px 2px #0000000a;color:#33333380}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:none;box-shadow:none}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}fieldset label,label{vertical-align:middle}@media screen and (min-width:737px){input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{padding:3px 5px}input[type=number]{height:28px}
 input[type=checkbox]{padding:0}input[type=checkbox]:checked:before{font:normal 21px/1 dashicons;margin:-3px -4px 0 0}input[type=checkbox],input[type=radio]{height:16px;width:16px}input[type=radio]:checked:before{height:6px;margin:4px;width:6px}input,select,textarea{font-size:14px;padding:3px 5px}}.infinite-scroll .posts-navigation,.infinite-scroll.neverending .site-footer{display:none}.infinity-end.neverending .site-footer{display:block}.notice{background:#fff;border-right:4px solid #fff;box-shadow:0 1px 1px 0 #0000001a;font-size:.8rem;margin:1em 0;padding:1px 12px}.notice p,.notice ul{margin:.5em 0;padding:2px}.notice p a,.notice ul a{border-bottom:0}.notice pre{white-space:pre-wrap}.notice ul{list-style:none;margin:.5em}.notice.notice-alt{box-shadow:none}.notice.notice-large{padding:10px 20px}.notice.notice-success{border-right-color:#46b450}.notice.notice-success.notice-alt{background-color:#ecf7ed}.notice.notice-warning{border-right-color:#ffb900}.notice.notice-warning.notice-al
 t{background-color:#fff8e5}.notice.notice-error{border-right-color:#dc3232}.notice.notice-error.notice-alt{background-color:#fbeaea}.notice.notice-info{border-right-color:#00a0d2}.notice.notice-info.notice-alt{background-color:#e5f5fa}.notice.hidden{display:none}.plugin-upload-form fieldset{border:none;margin:0;padding:0}.plugin-upload-form legend{margin:1rem 0}.plugin-upload-form .category-checklist{list-style-type:none;margin:0 0 2rem}.plugin-upload-form .category-checklist li{float:right;padding:.5rem 0;width:50%}@media screen and (min-width:48em){.plugin-upload-form .category-checklist li{padding:0}.plugin-upload-form .category-checklist label{font-size:.8rem}.plugin-upload-form label.button{line-height:1.8}}.plugin-upload-form .plugin-file{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.plugin-upload-form .plugin-file:focus+label{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.plugin-queue-message dialog.slug-change input[type=text]{font-family:mo
 nospace;font-size:1.2em;width:20em}.error-404 .page-content,.error-404 .page-title{text-align:center}.error-404 .page-content .logo-swing{height:10rem;margin:6rem auto;position:relative;text-align:center;width:10rem}.error-404 .page-content .logo-swing .wp-logo{right:0;max-width:none;position:absolute;top:0;width:10rem}@keyframes hinge{10%{height:180px;transform:rotate(0deg);width:180px}15%{height:185px;transform:rotate(0deg);width:185px}20%{height:180px;transform:rotate(-5deg);width:180px}40%{animation-timing-function:ease-in-out;transform-origin:top right}60%{animation-timing-function:ease-in-out;transform:rotate(-40deg);transform-origin:top right}40%,80%{animation-timing-function:ease-in-out;opacity:1;transform:rotate(-60deg);transform-origin:top right}to{opacity:0;transform:translate3d(0,700px,0)}}.hinge{animation-duration:2s;animation-name:hinge}.comments-area{margin-top:5em}.comments-area>:last-child{margin-bottom:0}.comments-area .comment-list+.comment-respond{border-top:1
 px solid #eaeaea}.comments-area .comment-list+.comment-respond,.comments-area .comment-navigation+.comment-respond{padding-top:1.6em}.comments-area .comments-title{margin-bottom:1.3333em}.comments-area .comment-list{list-style:none;margin:0}.comments-area .comment-list .pingback,.comments-area .comment-list .trackback,.comments-area .comment-list article{border-top:1px solid #eaeaea;padding:1.6em 0}.comments-area .comment-list article:not(:only-child){padding-bottom:0}.comments-area .comment-list article+.comment-respond{padding-bottom:1.6em}.comments-area .comment-list .children{list-style:none;margin:0}.comments-area .comment-list .children>li{padding-right:.8em}.comments-area .comment-list .alt{background:none}.comments-area .comment-author{color:#999;margin-bottom:.4em}.comments-area .comment-author .avatar{float:right;height:24px;margin-left:.8em;width:24px}.comments-area .comment-metadata,.comments-area .pingback .edit-link{color:#999;line-height:1.5}.comments-area .comment
 -metadata a,.comments-area .pingback .edit-link a{color:#777}.comments-area .comment-metadata{font-size:.8rem;margin-bottom:1.6em}.comments-area .comment-metadata .edit-link,.comments-area .pingback .edit-link{margin-right:1em}.comments-area .pingback .edit-link:before{top:5px}.comments-area .comment-content ol,.comments-area .comment-content ul{margin:0 1.3333em 1.6em 0}.comments-area .comment-content li>ol,.comments-area .comment-content li>ul,.comments-area .comment-content>:last-child{margin-bottom:0}.comments-area .comment-content .reply{font-size:12px}.comments-area .comment-content .reply a{border:1px solid #eaeaea;color:#707070;display:inline-block;font-weight:700;line-height:1;margin-top:2em;padding:.4167em .8333em;text-transform:uppercase}.comments-area .comment-content .reply a:focus,.comments-area .comment-content .reply a:hover{border-color:#333;color:#333;outline:0}.comments-area .comment-reply-title a{font-weight:inherit}.comments-area .comment-form label{dis
 play:block;font-size:.8rem;font-weight:700;letter-spacing:.04em;line-height:1.5}.comments-area .comment-form input[type=email],.comments-area .comment-form input[type=text],.comments-area .comment-form input[type=url],.comments-area .comment-form textarea{width:100%}.comments-area .comment-awaiting-moderation,.comments-area .comment-notes,.comments-area .form-allowed-tags,.comments-area .logged-in-as{font-size:1rem;line-height:1.5;margin-bottom:2em}.comments-area .no-comments{border-top:1px solid #eaeaea;color:#999;font-weight:700;padding-top:1.6em}.comments-area .comment-navigation+.no-comments{border-top:0}.comments-area .form-allowed-tags code{font-family:Inconsolata,monospace}.comments-area .form-submit{margin-bottom:0}.comments-area .required{color:#c0392b}.entry-content{-webkit-hyphens:auto;hyphens:auto;word-wrap:break-word}.entry-content>p:first-child{margin-top:0}.entry-content [class*=col-]~h1,.entry-content [class*=col-]~h2,.entry-content [class*=col-]~h3,.entry-content
  [class*=col-]~h4,.entry-content [class*=col-]~h5,.entry-content [class*=col-]~h6{clear:none}.entry-header{position:relative}.entry-header .sticky-post{color:#999;font-size:.8rem;font-style:italic;position:absolute;top:-.8rem}.entry-summary{-webkit-hyphens:auto;hyphens:auto;word-wrap:break-word}body:not(.single):not(.search) .site-main .post{margin-bottom:3.0517578125rem;max-width:40em}.gallery{margin-bottom:1.5rem}.gallery .gallery-item{display:inline-block;margin:0;text-align:center;vertical-align:top;width:100%}.gallery.gallery-columns-2 .gallery-item{max-width:50%}.gallery.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery.gallery-columns-4 .gallery-item{max-width:25%}.gallery.gallery-columns-5 .gallery-item{max-width:20%}.gallery.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery .gallery-capti
 on{display:block}.post-navigation{margin:5em auto;padding:0}.post-navigation a{border-bottom:1px solid #eaeaea;color:#444;display:block;font-weight:600;padding:11px 0 12px;text-transform:none;width:100%}.post-navigation a:hover{color:#21759b}.post-navigation .nav-links{border-top:1px solid #eaeaea;-webkit-hyphens:auto;hyphens:auto;word-wrap:break-word}.post-navigation .meta-nav{color:#777;display:block;font-size:13px;line-height:2;text-transform:uppercase}.post-navigation .nav-next{text-align:left}.pagination .nav-links{text-align:center}.pagination .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px;text-align:center}.pagination .nav-links .page-numbers.dots,.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}.pagination .nav-links .page-numbers.dots{cursor:inherit}@media screen and (max-width:737px){.pagination .nav-links .page-numbers.next,.pagination
  .nav-links .page-numbers.prev{font-size:0;min-width:auto;padding:0}.pagination .nav-links .page-numbers.next:after,.pagination .nav-links .page-numbers.prev:before{background-color:#f9f9f9;display:inline-block;font-size:1rem;line-height:1.5;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.prev:before{content:"‹"}.pagination .nav-links .page-numbers.next:after{content:"›"}}.pagination .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.search-form .search-field{line-height:normal;margin:0;padding:4px 5px;vertical-align:text-bottom}.site-content{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-content{padding:0 10px 3.0517578125rem}}@media screen and (max-width:737px){.site-content .site-main{float:none;margin:0;width:auto}}.home .site-content,.page .site-content,.site-content.page{margin:auto;max-width:none;padding:0}.site-content .page-title{font-size:1.25rem;font-weight:400}.site-co
 ntent .no-results{margin:0 auto 3.0517578125rem;max-width:40em;padding:0 2rem}.site-description{color:#fffc;font-size:1.25rem;font-weight:300;margin:-.4rem auto 2rem;text-align:center}.site-header{background:#0073aa;padding:1rem 0;position:relative}.site-header .site-branding{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-header .site-branding{padding:0 10px}}.site-header.home{padding:1.5625rem 1.143rem;text-align:center}.site-title a:active,.site-title a:focus,.site-title a:hover{text-decoration:none}.widget-area{font-size:.8rem}@media screen and (min-width:480px) and (max-width:768px){.widget-area{display:flex}.widget-area .widget{width:48%}}#wporg-footer{background-color:#f7f7f7;border-top:1px solid #dfdfdf;padding:22px 14px 65px}#wporg-footer,#wporg-footer .wrapper{clear:both;margin:0 auto;overflow:auto}#wporg-footer .wrapper{max-width:930px}#wporg-footer ul{float:right;margin-bottom:20px;margin-right:24px;overflow:auto;padding-right:
 0;width:135px}@media screen and (min-width:960px){#wporg-footer ul:first-child{margin-right:0}}#wporg-footer ul li{color:#bbb;font-size:14px;list-style-type:none;margin-bottom:1px}#wporg-footer ul li a{text-decoration:none;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}#wporg-footer ul li a:hover{color:#0073aa;text-decoration:underline}#wporg-footer .social-media-links .dashicons{margin-left:4px}#wporg-footer .cip{clear:both;color:#ccc;float:none;font-size:.8rem;letter-spacing:.3em;margin:35px auto 0;text-align:center;text-transform:uppercase}#wporg-footer .cip.cip-image{background:url(//s.w.org/style/images/codeispoetry.png?1) 50% no-repeat;background-size:190px 15px;height:15px;text-indent:-9999px;width:190px}@media only screen and (min-resolution:1.5dppx),only screen and (min-resolution:144dpi){#wporg-footer .cip.cip-image{background-image:url(//s.w.org/style/images/codeispoetry-2x.png?1)}}@media screen and (min-width:561px) and (max-width:959px){#wporg-foote
 r .wrapper{max-width:600px}#wporg-footer ul{margin-right:2%;width:32%}#wporg-footer ul:nth-child(3n+1){margin-right:0}#wporg-footer ul:nth-child(4n){clear:both}}@media screen and (max-width:560px){#wporg-footer .wrapper{max-width:360px}#wporg-footer ul{margin-right:4%;width:48%}#wporg-footer ul:nth-child(odd){clear:both;margin-right:0}}#wporg-header{background:#23282d;height:140px;position:relative;text-align:center;width:100%}#wporg-header .wrapper{margin:0 auto;max-width:960px}#wporg-header h1{display:inline-block;margin:auto;width:303px}#wporg-header h1 a{background:url(//s.w.org/style/images/wporg-logo.svg?3) 100% no-repeat;background-size:290px 46px;display:block;height:88px;text-indent:-9999px}#wporg-header h2.rosetta{clear:none;color:#dfdfdf;font-family:Georgia,Times New Roman,serif;font-size:30px;margin:0 60px 0 0}#wporg-header h2.rosetta a{border-bottom:none;color:#dfdfdf;display:block;height:52px;line-height:22px;padding:0}#wporg-header h2.rosetta a:hover{text-decoration:n
 one}#wporg-header #wporg-header-menu{background:#23282d;right:-75%;list-style:none;margin:0;max-width:75%;min-width:200px;position:absolute;text-align:right;top:100%;transition:right .3s;z-index:100000}#wporg-header #wporg-header-menu.toggled{right:0}#wporg-header ul li{list-style-type:none;position:relative}#wporg-header ul li a{color:#eee;display:block;font-family:Open Sans,Helvetica,Arial,Liberation Sans,sans-serif;font-size:13px;font-weight:600;height:34px;line-height:34px;margin:0 4px;padding:10px 30px;text-decoration:none}#wporg-header ul li a.subcurrent{font-weight:700}@media (max-width:768px){#wporg-header ul li a{height:auto}}#wporg-header ul li a.current,#wporg-header ul li a:hover,#wporg-header ul li.current-menu-item a,#wporg-header ul li.current_page_parent a{color:#00a0d2}#wporg-header ul li#download,#wporg-header ul li.download{float:left;height:34px;margin-left:14px;overflow:hidden;padding:0 0 34px}@media screen and (max-width:767px){#wporg-header ul li#download,#wpo
 rg-header ul li.download{display:block;float:none;height:auto;margin:10px 20px 20px;padding-bottom:0}#wporg-header ul li#download a,#wporg-header ul li.download a{padding:4px 10px;text-align:center}}#wporg-header ul li#download a,#wporg-header ul li.download a{margin:0;padding:0 16px}#wporg-header ul li#download a:hover,#wporg-header ul li.download a:hover{color:#eee}#wporg-header ul li#download .uparrow,#wporg-header ul li#download.current,#wporg-header ul li#download.current-menu-item,#wporg-header ul li.download .uparrow,#wporg-header ul li.download.current,#wporg-header ul li.download.current-menu-item{display:none}#wporg-header ul li .nav-submenu{clip:rect(1px,1px,1px,1px);height:1px;right:-2px;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;z-index:99999}#wporg-header ul li .nav-submenu li a{display:inline-block;height:24px;line-height:24px;margin:0;white-space:nowrap}@media screen and (min-width:768px){#wporg-header #head-search{float:left;margin-left:14px;padd
 ing-top:30px}}#wporg-header #head-search form{border-bottom:1px solid #3f3f3f;display:inline-block;margin-right:60px;width:288px}#wporg-header #head-search form input.text{background:#191e23;border:0;border-radius:0;box-sizing:initial;color:#b4b9be;float:right;font-family:Open Sans,sans-serif;font-size:12px;height:24px;margin:0;outline:none;padding:3px;vertical-align:top;width:256px}#wporg-header #head-search form input.text::-moz-placeholder{color:#eee}@media screen and (max-width:480px){#wporg-header #head-search form input.text{width:216px}}#wporg-header #head-search form .button{background:#191e23 url(//s.w.org/wp-includes/images/admin-bar-sprite.png?d=20120831) no-repeat 2px 5px;border:none;border-radius:0;box-shadow:none;float:right;height:30px;margin:0;padding:0;text-shadow:none!important;width:26px}@media screen and (max-width:480px){#wporg-header #head-search form{width:248px}}@media screen and (min-width:480px){#wporg-header #head-search form{margin-right:0}}@media screen 
 and (min-width:768px){#wporg-header{height:120px;text-align:inherit}#wporg-header h1{float:right;padding-right:10px}#wporg-header h2.rosetta{float:right;margin-right:0;padding:36px 27px 0}#wporg-header #headline h2{text-rendering:optimizeLegibility}#wporg-header #wporg-header-menu{float:right;height:46px;list-style:none;margin:-15px 0 0;max-width:inherit;min-width:0;padding:0;position:static;width:100%}#wporg-header ul li{float:right;position:relative}#wporg-header ul li a{height:46px;padding:0 6px}#wporg-header ul li a.current~.uparrow{border-bottom:9px solid #f7f7f7;border-right:9px solid #0000;border-left:9px solid #0000;height:0;margin:-8px auto 0;width:0}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom:9px solid #f7f7f7;border-right:9px solid #0000;border-left:9px solid #0000;content:"";height:0;right:50%;margin:-8px -9px 0 0;position:absolute;width:0}#wporg-header ul li .nav-submenu:hover~.uparrow,#wporg-header u
 l li:hover .nav-submenu~.uparrow{border-bottom:9px solid #32373c;border-right:9px solid #0000;border-left:9px solid #0000;height:0;margin:-10px auto 0;width:0}#wporg-header ul li .nav-submenu{background:#32373c;border:1px solid #32373c;border-top:0;margin-top:-1px;min-width:0}#wporg-header ul li .nav-submenu li{float:none}#wporg-header ul li .nav-submenu li a{height:34px;line-height:34px}#wporg-header .nav-menu .focus>ul,#wporg-header .nav-menu ul li:hover>ul,#wporg-header ul.nav-menu .focus>ul,#wporg-header ul.nav-menu li:hover>ul{clip:inherit;height:inherit;overflow:inherit;width:inherit}#wporg-header ul li a.current~.uparrow,#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom-color:#0073aa}}.page-download #wporg-header #download,.page-parent-download #wporg-header #download{display:none}#mobile-menu-button{background:none;border:none;box-shadow:none;display:block;float:right;font-family:dashicons;font-size:16px;font-
 style:normal;font-weight:400;right:10px;line-height:1;padding:1px;position:absolute;text-align:center;text-decoration:inherit;text-shadow:none;top:75px;transition:color .1s ease-in;vertical-align:top;-webkit-font-smoothing:antialiased}#mobile-menu-button:before{border:none;box-sizing:border-box;color:#888;content:"\f228";display:inline-block;float:right;font:normal 50px/1 Dashicons;margin:0;outline:none;padding:3px;text-decoration:none;vertical-align:middle;-webkit-font-smoothing:antialiased}@media screen and (min-width:768px){#mobile-menu-button{display:none}}#download-mobile{background:#f7f7f7;border-bottom:1px solid #ddd}#download-mobile .wrapper{padding:20px 0;text-align:center}#download-mobile span.download-ready{font-size:1.6em;margin:0 .25em}#download-mobile a.download-button{font-size:1.6em;height:inherit;margin:10px .25em;padding:10px 15px}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;paddin
 g:0}.wp-caption,embed,iframe,object{max-width:100%}.wp-caption{margin-bottom:1.5em}.wp-caption img[class*=wp-image-]{display:block;margin-right:auto;margin-left:auto}.wp-caption .wp-caption-text{margin:.8075em 0}.wp-caption-text{text-align:center}.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.33%}.gallery-columns-4 .gallery-item{max-width:25%}.gallery-columns-5 .gallery-item{max-width:20%}.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery-caption{display:block}.site-title{display:inline-block;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 0 0 2rem;max-width:none}.site-title a{color:#fff;font-weight:300;text-decoration:none}.site-title a:active,.site-title a:focu
 s,.site-title a:hover{color:#fff}.site-header.home .site-title{display:inherit;font-size:3.8146972656rem;margin:2rem 0 1rem}.wporg-filter-bar{--wporg--filter-bar--gap:20px;--wporg--filter-bar--color:#40464d;--wporg--filter-bar--active--background-color:#2371a6;--wporg--filter-bar--focus--border-color:#2371a6;margin:0 auto;max-width:960px;padding:40px 1.5625rem 0}.wporg-filter-bar+.site-main{margin-top:2rem;padding-top:0}.wporg-filter-bar .wporg-filter-bar__navigation{flex-grow:1;margin-bottom:var(--wporg--filter-bar--gap)}.wporg-filter-bar .wporg-filter-bar__navigation ul{display:inline-block;font-size:13px;line-height:1.538;list-style:none;margin:0}.wporg-filter-bar .wporg-filter-bar__navigation ul li{display:inline-block}.wporg-filter-bar .wporg-filter-bar__navigation ul li+li{margin-right:8px}.wporg-filter-bar .wporg-filter-bar__navigation ul a{border-radius:2px;color:var(--wporg--filter-bar--color);display:block;padding:8px 12px;text-decoration:none}.wporg-filter-bar .wporg-filt
 er-bar__navigation ul a:focus,.wporg-filter-bar .wporg-filter-bar__navigation ul a:hover{text-decoration:underline}.wporg-filter-bar .wporg-filter-bar__navigation ul a:focus-visible{box-shadow:none;outline:1.5px solid var(--wporg--filter-bar--focus--border-color);outline-offset:-.5px}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active{background-color:var(--wporg--filter-bar--active--background-color);color:#fff}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:focus,.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:hover{color:#fff}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:focus-visible{box-shadow:inset 0 0 0 1.5px #fff;outline:1.5px solid var(--wporg--filter-bar--focus--border-color);outline-offset:-.5px}@media screen and (min-width:737px){.wporg-filter-bar{align-items:center;display:flex;flex-wrap:wrap;gap:var(--wporg--filter-bar--gap);justify-content:space-between;padding:40px 10px 0}.wporg-filter-bar .wporg-filter-bar__n
 avigation{margin-bottom:0}}.archive .site-main{margin-top:2rem;padding-top:0}.archive .page-header{margin:2rem 0}dialog{border:0;box-shadow:-6px 6px 6px #0003;min-height:50%;min-width:30%}@media (min-width:1280px){dialog{max-width:55%}}dialog::backdrop{background:#000;opacity:.5}dialog .close{color:inherit;cursor:pointer;position:absolute;left:1em;text-decoration:none!important;top:1em}.main-navigation{background:#0073aa;clear:both;right:0;position:absolute;top:60px;width:100%;z-index:1}.main-navigation ul{display:none;list-style:none;margin:0;padding-right:0}.main-navigation ul ul{box-shadow:0 3px 3px #0003;float:right;right:-999em;position:absolute;top:1.5em;z-index:99999}.main-navigation ul ul ul{right:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{right:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{right:auto}.main-navigation li{border-top:1px solid #fff3}.main-navigation 
 a{color:#fffc;display:block;font-size:.8rem;padding:1rem 1.5rem 1rem 1rem;text-decoration:none}.main-navigation a.active,.main-navigation a:hover{color:#fff}@media screen and (min-width:737px){.main-navigation a.active{border-bottom:1px solid}}.main-navigation.toggled ul{display:block}.menu-toggle{-webkit-appearance:none;background:#0000;border:none;color:#fff;font-size:1.5625rem;height:3.5rem;overflow:hidden;position:absolute;left:1rem;top:-58px;width:3.5rem}.toggled .menu-toggle:before{content:"\f343"}@media screen and (min-width:737px){.menu-toggle{display:none}.main-navigation{float:left;position:relative;top:auto;width:auto}.main-navigation.toggled{padding:1px 0}.main-navigation ul{display:inline-block;font-size:0}.main-navigation ul li{border:0;display:inline-block;font-size:1rem;margin-left:1rem}.main-navigation ul li:last-of-type{margin-left:0}.main-navigation a{padding:0}}.page .entry-header{margin-top:2rem}@media screen and (min-width:737px){.page .entry-header{p
 adding:0 2rem}}.page .entry-header .entry-title{font-size:1.5625rem;font-weight:400}@media screen and (min-width:737px){.page .entry-content{padding:0 2rem}}.page .entry-content h2{font-size:1.5625rem;font-weight:400}.page .entry-content h3{font-size:1rem;font-weight:600;letter-spacing:.01rem;text-transform:uppercase}.page .entry-content section{padding:2rem 0}.page .entry-content section:first-of-type{padding-top:0}.page .entry-content section+section{border-top:2px solid #eee}.plugin-card{background-color:#f9f9f9;margin-bottom:4%;padding:15px 15px 8px;vertical-align:top}@media screen and (min-width:737px){.plugin-card{display:inline-block;margin-left:4%;width:48%}.plugin-card:nth-of-type(2n){margin-left:0}}.plugin-card .entry{display:inline-block;margin:auto;vertical-align:top}@media screen and (min-width:21em){.plugin-card .entry{width:calc(96% - 128px)}}.plugin-card .entry-title{font-size:1rem;line-height:1.3;margin:0 0 8px}.plugin-card .entry-title a{font-weight:400;word-wrap:b
 reak-word}.plugin-card .entry-excerpt{font-size:.8rem}.plugin-card .entry-excerpt p{margin:0}.plugin-card hr{background-color:#fff;margin:15px -15px 8px}.plugin-card footer span{display:inline-block;font-size:.73152rem;overflow:hidden;white-space:nowrap}.plugin-card footer span i{display:inline-block;font-size:1rem;margin-left:.4rem}.plugin-card footer span.last-updated{display:none}.plugin-card footer span.plugin-author{width:100%}.plugin-card footer span.active-installs{min-width:48%}.plugin-card footer .dashicons{color:#bbb;display:none;height:auto;margin:0 2px -1rem;width:auto}@media (min-width:414px){.plugin-card footer .dashicons{display:inline-block}}.entry-thumbnail{display:none;max-width:128px}.entry-thumbnail .plugin-icon{background-size:cover;height:128px;width:128px}@media screen and (min-width:21em){.entry-thumbnail{display:inline-block;margin:0 0 0 4%;vertical-align:top}.entry-thumbnail a{display:block}}.single .entry-thumbnail{display:none;float:right;height:96px;marg
 in-left:1rem;width:96px}@media screen and (min-width:26em){.single .entry-thumbnail{display:block}}.single .entry-thumbnail .plugin-icon{background-size:contain!important;height:96px!important;width:96px!important}.plugin-rating{line-height:1;margin:0 0 8px 10px}.plugin-rating .wporg-ratings{display:inline-block;margin-left:5px}.plugin-rating .rating-count{color:#999;font-size:.8rem}.site-main.single .plugin-rating .rating-count{display:none}.plugin-rating .rating-count a{color:inherit;cursor:hand;text-decoration:none}[class*=dashicons-star-]{color:#ffb900}.rtl .dashicons-star-half{transform:rotateY(-180deg)}.plugin-section{border-bottom:2px solid #eee;margin:0 auto 4.768371582rem;max-width:960px;padding-bottom:3.0517578125rem}.plugin-section:last-of-type{margin-bottom:0}.plugin-section .section-header{column-gap:10px;display:flex;flex-flow:row wrap;margin-bottom:2rem}.plugin-section .section-title{flex:1 1 auto;font-size:1.5625rem;font-weight:400;margin-bottom:0;margin-top:0}.plugi
 n-section .section-link{align-self:center;flex:0 0 auto;font-size:1rem}.search-form{font-size:0;margin-bottom:2rem;max-width:100%;position:relative}.search-form .search-field{-webkit-appearance:none;border:none;border-radius:0;box-shadow:none;display:block;font-size:1rem;line-height:1.5;margin:0 auto;max-width:100%;padding:.5rem .5rem .5rem 2.4rem;vertical-align:initial;width:22.7373675443rem}.search-form .button-search{border-right:none;border-radius:2px 0 0 2px;border-top:none;font-size:1rem;margin:0;position:relative;left:auto;top:auto;vertical-align:top}.search-form .button-search:active{background:#006799;border-left:1px solid #006799;box-shadow:none}.search-form .button-search svg{fill:currentColor}.site-header .search-form{display:inline-block}.site-header.home .search-form .button-search,.site-main .search-form .button-search{background:#0000;border:none;border-radius:0;box-shadow:none;color:#32373c;display:block;height:45px;padding:.5rem;position:absolute;left:0;text-shadow
 :none;top:0}.site-header.home .search-form .button-search:focus,.site-main .search-form .button-search:focus{box-shadow:0 0 2px 1px #33b3db}.site-header.home .search-form .button-search:active,.site-main .search-form .button-search:active{background:#0000;border:none;transform:none}.site-header:not(.home) .search-form{display:block;margin:0;padding:1rem 1.5rem 1rem 1rem}@media screen and (min-width:737px){.site-header:not(.home) .search-form{padding:0}}.site-header:not(.home) .search-form .search-field{border:0;border-radius:0 2px 2px 0;display:inline-block;font-size:1rem;padding:5px 10px;position:relative;width:calc(100% - 55px)}@media screen and (min-width:737px){.site-header:not(.home) .search-form .search-field{font-size:.64rem;width:7rem}.site-header:not(.home) .search-form .search-field+.button-search{display:inline-block;margin-bottom:0}}@media screen and (min-width:60em){.site-header:not(.home) .search-form .search-field{width:10rem}}@media screen and (max-width:737px){.site
 -header:not(.home) .search-form .search-field+.button-search{padding:4px 14px 1px}}.site-main .search-form .search-field{border:1px solid #ddd;box-shadow:inset 0 1px 2px #00000012;padding:.5rem;width:100%}.search .site-main{margin-top:2rem;padding-top:0}.search.search-results .page-header{margin:2rem 0}.site-content{max-width:none;padding:0}nav .nav-links{text-align:center}nav .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px}nav .nav-links .page-numbers.dots,nav .nav-links .page-numbers.next,nav .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}nav .nav-links .page-numbers.dots{cursor:inherit}nav .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.site-main{margin:0 auto;max-width:960px;padding:3.0517578125rem 1.5625rem}@media screen and (min-width:737px){.site-main{padding:3.0517578125rem 10px}}.single .site-main,.site-main.single{padding:0}@media screen and (min-width:737px){.singl
 e .site-main,.site-main.single{padding:0 10px 3.0517578125rem}}.page .site-main,.site-main.page{padding-top:0}.site-main .page-title{font-size:1.5625rem;font-weight:400}.site-main .no-results{margin:0 auto;max-width:35.527136788rem;padding:0 2rem}@keyframes favme-anime{0%{font-size:1rem;opacity:1;-webkit-text-stroke-color:#0000}25%{color:#fff;font-size:.8rem;opacity:.6;-webkit-text-stroke-width:1px;-webkit-text-stroke-color:#dc3232}75%{color:#fff;font-size:1.42875rem;opacity:.6;-webkit-text-stroke-width:1px;-webkit-text-stroke-color:#dc3232}to{font-size:1.25rem;opacity:1;-webkit-text-stroke-color:#0000}}@keyframes favme-hover{0%{font-size:1.42875rem}80%{font-size:1.25rem}}.plugin-favorite{height:36px;text-align:center;vertical-align:top;width:36px}.plugin-favorite .plugin-favorite-heart{align-items:center;background:none;border:0;border-radius:0;box-shadow:none;color:#cbcdce;cursor:pointer;display:flex;font-size:1.25rem;height:100%;justify-content:center;line-height:1;margin:0;outli
 ne:none;padding:0;transition:all .2s ease}.plugin-favorite .plugin-favorite-heart.favorited{color:#dc3232}.plugin-favorite .plugin-favorite-heart:hover{animation:favme-hover .3s infinite alternate}.plugin-favorite .plugin-favorite-heart:focus{outline:thin dotted}.plugin-favorite .plugin-favorite-heart:focus,.plugin-favorite .plugin-favorite-heart:hover{text-decoration:none}.plugin-favorite .plugin-favorite-heart:after{content:"\f487";font-family:dashicons;vertical-align:top}.plugin-favorite .plugin-favorite-heart.is-animating{animation:favme-anime .3s}.plugin-banner{background-position:50% 50%;background-repeat:no-repeat;background-size:100%;display:inline-block;font-size:0;line-height:0;margin:0 auto 1.143rem;padding-top:32.38342%;vertical-align:middle;width:100%}@media screen and (min-width:60em){.plugin-banner{margin-top:1.5625rem}}@keyframes hideAnimation{to{visibility:hidden}}.categorization .help{color:#999;display:inline-block;font-size:.8rem;margin-top:0}.categoriz
 ation label{display:block;font-weight:700}.categorization input{width:100%}.categorization .success-msg{background:#eff7ed;border:solid #64b450;border-width:0 5px 0 0;font-size:.8rem;margin-right:1rem;opacity:0;overflow:auto;padding:.1rem .6rem .2rem;position:relative;transition:visibility 0s,opacity .5s linear;-webkit-user-select:none;user-select:none;visibility:hidden}.categorization .success-msg.saved{animation:hideAnimation 0s ease-in 5s;animation-fill-mode:forwards;opacity:1;visibility:visible}.plugin-changelog,.plugin-changelog code{font-size:.8rem}.plugin-changelog h4{margin-top:0}.plugin-developers .contributors-list{font-size:0}.plugin-developers .contributors-list li{display:inline-block;font-size:1rem;margin-left:4%;vertical-align:top;width:48%}.plugin-developers .contributors-list li:nth-of-type(2n){margin-left:0}.plugin-faq h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;letter-spacing:.01rem;padding:0;text-transform:uppercase;text-transform
 :inherit}.plugin-faq dl{border-bottom:1px solid #eee}.plugin-faq dt{border-top:1px solid #eee;cursor:pointer;font-size:1rem;font-weight:600;padding:1rem 0}.plugin-faq dt:before{content:"\f347";float:left;font-family:dashicons;margin:0 1rem}.plugin-faq dt.open:before{content:"\f343"}.plugin-faq dt .button-link{display:inherit;text-align:inherit}.plugin-faq dt .button-link.no-focus{box-shadow:none;outline:none}.plugin-faq dt h3{color:#0073aa;display:inline;margin-bottom:0;margin-top:0;text-decoration:underline;text-transform:none}.plugin-faq dt h3 button{all:inherit;max-width:calc(100% - 60px)}.plugin-faq dd{display:none;margin:0 0 1rem}.no-js .plugin-faq dd{display:block}.plugin-faq dd p{margin:0}.plugin-faq dd p+p{margin-top:1rem}.image-gallery{-webkit-user-select:none;user-select:none}.image-gallery-content{position:relative}.image-gallery-content .image-gallery-left-nav,.image-gallery-content .image-gallery-right-nav{border-color:#eee;display:none;font-size:3.0
 517578125rem;height:100%;position:absolute;top:0;transition:background .1s ease,border .1s ease;z-index:4}@media (max-width:768px){.image-gallery-content .image-gallery-left-nav,.image-gallery-content .image-gallery-right-nav{font-size:3.4em}}@media (min-width:768px){.image-gallery-content .image-gallery-left-nav:hover,.image-gallery-content .image-gallery-right-nav:hover{background:#fff;border:1px solid #eee;opacity:.8}}.image-gallery-content .image-gallery-left-nav:before,.image-gallery-content .image-gallery-right-nav:before{font-family:dashicons;position:relative}.image-gallery-content .image-gallery-left-nav{right:0}.image-gallery-content .image-gallery-left-nav:before{content:"\f345"}.image-gallery-content .image-gallery-left-nav:hover{margin-right:-1px}.image-gallery-content .image-gallery-right-nav{left:0}.image-gallery-content .image-gallery-right-nav:before{content:"\f341"}.image-gallery-content .image-gallery-right-nav:hover{margin-left:-1px}.image-gal
 lery-content:hover .image-gallery-left-nav,.image-gallery-content:hover .image-gallery-right-nav{display:block}.image-gallery-slides{border:1px solid #eee;line-height:0;overflow:hidden;position:relative;white-space:nowrap}.image-gallery-slide{right:0;position:absolute;top:0;width:100%}.image-gallery-slide.center{position:relative}.image-gallery-slide .image-gallery-image{margin:0}.image-gallery-slide img{display:block;margin:0 auto}.image-gallery-slide .image-gallery-description{background:#f5f5f5;color:#32373c;font-size:.8rem;line-height:1.5;padding:10px 20px;white-space:normal}@media (max-width:768px){.image-gallery-slide .image-gallery-description{font-size:.8rem;padding:8px 15px}}.image-gallery-thumbnails{background:#fff;margin-top:5px}.image-gallery-thumbnails .image-gallery-thumbnails-container{cursor:pointer;text-align:center;white-space:nowrap}.image-gallery-thumbnail{border:1px solid #eee;display:table-cell;margin-left:5px;max-height:100px;overflow:hidden}.image-gallery-thu
 mbnail .image-gallery-image{margin:0}.image-gallery-thumbnail img{vertical-align:middle;width:100px}@media (max-width:768px){.image-gallery-thumbnail img{width:75px}}.image-gallery-thumbnail:hover{box-shadow:0 1px 8px #0000004d}.image-gallery-thumbnail.active{border:1px solid #337ab7}.image-gallery-thumbnail-label{color:#222;font-size:1em}@media (max-width:768px){.image-gallery-thumbnail-label{font-size:.8em}}.image-gallery-index{background:#0006;bottom:0;color:#fff;line-height:1;padding:10px 20px;position:absolute;left:0;z-index:4}.plugin-reviews{list-style-type:none;margin:0;padding:0}.plugin-reviews .plugin-review{border-bottom:2px solid #eee;margin:2rem 0 1rem;padding-bottom:1rem}.plugin-reviews .plugin-review:first-child{margin-top:0}.plugin-reviews .plugin-review .header-top{display:flex}.plugin-reviews .plugin-review .header-top .wporg-ratings{flex-shrink:0}.plugin-reviews .plugin-review .header-bottom{display:flex;margin-bottom:12px}.plugin-reviews .review-avatar{display:non
 e}.plugin-reviews .review,.plugin-reviews .review-author,.plugin-reviews .wporg-ratings{display:inline-block;vertical-align:top}.plugin-reviews .review-header{margin:0 0 .5rem}.plugin-reviews .review-title{font-size:1rem;font-weight:600;letter-spacing:.01rem;line-height:1.25;margin:0 12px 8px 0;text-transform:inherit}.plugin-reviews .review-author,.plugin-reviews .review-date,.plugin-reviews .review-replies{font-size:.9em;line-height:1.25}.plugin-reviews .review-date,.plugin-reviews .review-replies{color:#999;font-size:.9em;margin-right:12px}.plugin-reviews .review-replies:before{content:"•";margin-left:12px}@media screen and (min-width:737px){.plugin-reviews .review-avatar{display:inline-block;vertical-align:top}.plugin-reviews .review-avatar .avatar{margin-left:1rem}.plugin-reviews .review{width:calc(100% - 60px - 1rem)}.plugin-reviews .review-header{margin:0}.plugin-reviews .review-author,.plugin-reviews .review-date,.plugin-reviews .review-replies{line-height:1}}.rev
 iews-link{display:inline-block;font-size:.8rem;margin-top:.5rem;text-decoration:none}.reviews-link:after{content:"\f341";float:left;font-family:dashicons;padding-right:5px;position:relative;top:1px;vertical-align:text-top}.plugin-screenshots{list-style-type:none;margin:0;padding:0}.plugin-screenshots h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0;text-transform:inherit}.plugin-screenshots .image-gallery-content{display:table;width:100%}.plugin-screenshots .image-gallery-slides{display:table-cell;max-height:600px}.plugin-screenshots .image-gallery-image img{max-height:550px}.plugin-screenshots .image-gallery-thumbnail{vertical-align:top}.plugin-screenshots .image-gallery-thumbnail img{max-height:100px}.plugin-screenshots .image-gallery-thumbnails{overflow:hidden}.download-history-stats td{text-align:left}.previous-versions{max-width:60%}@media screen and (min-width:737px){.previous-versions{height:30px;vertical-align:top}}hr{margin:2.
 5rem auto}.section h1,.section h2,.section h3{font-size:1rem;font-weight:600;letter-spacing:.01rem;text-transform:uppercase}.section h1:nth-child(2),.section h2:nth-child(2),.section h3:nth-child(2){margin-top:0}.section h4,.section h5,.section h6{font-size:.8rem;font-weight:600;letter-spacing:.05rem;text-transform:uppercase}.section h4:nth-child(2),.section h5:nth-child(2),.section h6:nth-child(2){margin-top:0}.section h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0;text-transform:inherit}.type-plugin .plugin-notice{margin-top:0}.type-plugin .plugin-header{border-bottom:0;padding:1.143rem 1.5625rem}.type-plugin .plugin-header .plugin-actions{float:left;margin-inline-start:1rem}.type-plugin .plugin-header .plugin-actions div{display:inline-block;text-align:center}.type-plugin .plugin-header .plugin-title{clear:none;font-size:1.5625rem;font-weight:400;margin:0}.type-plugin .plugin-header .plugin-title a{color:inherit;text-decoration:none}.type-p
 lugin .plugin-header .byline{color:#78848f}.type-plugin .plugin-banner+.plugin-header{padding-top:0}.type-plugin .tabs{border-bottom:2px solid #eee;list-style:none;margin:0}.type-plugin .tabs li{border:2px solid #0000;color:#0073aa;display:inline-block;font-size:.8rem;margin-bottom:-2px;transition:background .2s ease}.type-plugin .tabs li a{background:#fff;border:0;display:block;padding:.64rem 1.25rem;text-decoration:none}.type-plugin .tabs li a.active,.type-plugin .tabs li a:hover{background:#eee}.type-plugin .tabs li.active,.type-plugin .tabs li:hover{border:2px solid #eee;padding-bottom:0!important}@media screen and (max-width:34em){.type-plugin .tabs{border-top:2px solid #eee}.type-plugin .tabs li{display:block;margin-bottom:1px}.type-plugin .tabs li,.type-plugin .tabs li.active,.type-plugin .tabs li:hover{border:none;border-bottom:1px solid #eee}}.type-plugin .entry-content{max-width:48rem;padding:0 1.5625rem}@media screen and (min-width:737px){.type-plugin .entry-content{float
 :right;padding:0;width:65%}}.type-plugin .entry-content>div,.type-plugin .entry-content>div~button{border:0;display:none}.type-plugin .entry-content a:not(.button,.dashicons){text-decoration:underline}.type-plugin .entry-content ol>li>p,.type-plugin .entry-content ul>li>p{margin:0}.type-plugin .entry-content #admin{display:block!important}.type-plugin .plugin-blocks-list{list-style:none;margin-right:0}.type-plugin .plugin-blocks-list .plugin-blocks-list-item{display:grid;grid-template-columns:auto 1fr;margin-bottom:1.25rem}.type-plugin .plugin-blocks-list .block-icon{border:1px solid #eee;border-radius:2px;display:inline-block;height:3.5rem;margin-left:1rem;padding:1.143rem;width:3.5rem}.type-plugin .plugin-blocks-list .block-icon.dashicons{color:inherit}.type-plugin .plugin-blocks-list .block-icon svg{height:16px;width:16px;fill:currentColor}.type-plugin .plugin-blocks-list .block-title{align-self:center;font-weight:700}.type-plugin .plugin-blocks-list .has-descri
 ption .block-icon{grid-row:1/span 2}.type-plugin .plugin-blocks-list .has-description .block-title{margin-bottom:.4096rem}.type-plugin .entry-meta{padding:0 1.5625rem}.type-plugin span#description,.type-plugin span#developers,.type-plugin span#installation,.type-plugin span#reviews{position:fixed}.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews{background:#fff;border:2px solid #eee;border-bottom:0;padding-bottom:2px}@media screen and (max-width:34em){.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced.active,.type-plugin span#ad
 vanced.displayed~#section-links .tabs li#tablink-advanced:hover,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers.active,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers:hover,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation.active,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation:hover,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description.active,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description:hover,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews.active,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews:hover{padding-bottom:2px!important}}.type-plugin span#section-links{dis
 play:flex;flex-flow:row wrap}.type-plugin span#section-links .tabs{flex:1 1 auto}@media screen and (max-width:34em){.type-plugin span#section-links{display:block}}.type-plugin #link-support{align-self:flex-end;border-bottom:2px solid #eee;flex:0 0 auto;font-size:.9rem;height:2rem}.type-plugin #link-support a:before{content:"\f125";display:inline-block;font-family:dashicons;font-size:1.2em;margin-left:.4em;max-height:1em;vertical-align:top}@media screen and (max-width:737px){.type-plugin #link-support{padding-left:20px}}@media screen and (max-width:34em){.type-plugin #link-support{border-bottom:0;display:block;margin-right:20px;margin-top:1.5rem;width:100%}}.type-plugin span#developers:target~.entry-content #tab-changelog,.type-plugin span#developers:target~.entry-content #tab-developers,.type-plugin span#developers:target~.entry-content #tab-developers .plugin-development,.type-plugin span#developers:target~.entry-content #tab-developers~button,.type-plugin span#installati
 on:target~.entry-content #tab-installation,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #blocks,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #faq,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #screenshots,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-description,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers~button,.type-plugin span#reviews:target~.entry-content #tab-reviews{display:block}.type-plugin span#developers:target~.entry-content #tab-developers .plugin-contributors,.type-plugin span#install
 ation:target~.entry-meta .plugin-contributors,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers .plugin-development,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-meta .plugin-contributors,.type-plugin span#reviews:target~.entry-meta .plugin-contributors,.type-plugin span#reviews:target~.entry-meta .plugin-donate,.type-plugin span#reviews:target~.entry-meta .plugin-meta,.type-plugin span#reviews:target~.entry-meta .plugin-support{display:none}@media screen and (min-width:737px){.type-plugin .entry-content,.type-plugin .entry-meta,.type-plugin .plugin-header{padding-right:0;padding-left:0}.type-plugin .entry-meta{float:left;width:30%}}.plugin-adopt-me{background:#e6f4fa;font-size:.8rem;margin-top:36px;padding:12px}.plugin-adopt-me .widget-title{margin-top:0}.plugin-adopt-me p{margin-bottom:0}.widget.plugin-categorization{margin-top:2rem}.widget.pl
 ugin-categorization .widget-head{column-gap:12px;display:flex;flex-flow:row wrap;justify-content:space-between}.widget.plugin-categorization .widget-head h2{flex:1 1 auto;font-size:1rem;font-weight:700;margin-bottom:.2rem;margin-top:0}.widget.plugin-categorization .widget-head a{flex:0 0 auto;font-size:.8rem;line-height:2;text-align:left}.widget.plugin-categorization .widget-head a[href=""]{display:none}.widget.plugin-categorization .widget-head a:after{content:"\f504";font-family:dashicons;margin-right:2px}.widget.plugin-categorization p{font-size:.7rem;margin-top:.5rem}.widget.plugin-categorization~.plugin-meta li:first-child{border-top:1px solid #eee}.committer-list,.support-rep-list{font-size:.8rem;list-style:none;margin:0}.committer-list li,.support-rep-list li{padding-bottom:.5rem}.committer-list li .remove,.support-rep-list li .remove{color:red;visibility:hidden}.committer-list li:hover .remove,.support-rep-list li:hover .remove{visibility:visible}.committ
 er-list .avatar,.support-rep-list .avatar{float:right;margin-left:10px}.committer-list .spinner,.support-rep-list .spinner{position:relative}.committer-list .spinner:after,.support-rep-list .spinner:after{background:url(/wp-admin/images/spinner.gif) no-repeat 50%;background-size:20px 20px;content:"";display:block;height:20px;margin:-10px 0 0 -10px;position:absolute;left:-50%;top:50%;transform:translateZ(0);width:20px}@media (min-resolution:120dpi),print{.committer-list .spinner:after,.support-rep-list .spinner:after{background-image:url(/wp-admin/images/spinner-2x.gif)}}.plugin-contributors.read-more{border-bottom:2px solid #eee;max-height:200px;overflow:hidden;padding-bottom:1px}.plugin-contributors.read-more.toggled{max-height:none}.no-js .plugin-contributors.read-more{max-height:none;overflow:auto}.contributors-list{font-size:.8rem;list-style-type:none;margin:0}.contributors-list li{margin-bottom:1rem}.contributors-list .avatar{float:right;margin-left:10px}.plugin-meta{
 margin-top:2rem}.plugin-meta ul{font-size:.8rem;list-style-type:none;margin:0;padding:0}.plugin-meta li{border-top:1px solid #eee;display:inline-block;padding:.5rem 0;position:relative;width:100%}.plugin-meta li strong{float:left}.plugin-meta li:first-child{border-top:0}.plugin-meta .languages,.plugin-meta .tags{float:left;text-align:left}.plugin-meta .tags{width:60%}.plugin-meta .languages .popover{margin-top:8px}.plugin-meta .languages .popover-trigger{color:#0073aa;font-weight:600}.plugin-meta .languages .popover-trigger:hover{text-decoration:underline}.plugin-meta [rel=tag]{background:#eee;border-radius:2px;color:#000;display:inline-block;font-size:.64rem;margin:2px;max-width:95%;overflow:hidden;padding:3px 6px;position:relative;text-overflow:ellipsis;white-space:nowrap;width:auto}.plugin-meta [rel=tag]:hover{background:#f3f3f3}.plugin-meta [rel=tag]:active{background:#dfdfdf}.popover{background-color:#fff;border:1px solid #ccc;border-radius:2px;box-shadow:0 2px 10px #0000001a;d
 isplay:none;right:0;margin-top:10px;max-width:300px;padding:1em 1em 2em;position:absolute;width:100%;z-index:100}.popover.is-top-right{right:auto;left:0}.popover.is-visible{display:block}.popover .popover-close{bottom:.5em;color:#0073aa;font-size:small;position:absolute;left:.6em}.popover .popover-close:active,.popover .popover-close:focus,.popover .popover-close:hover{text-decoration:underline}.popover .popover-arrow{border:10px solid #0000;border-bottom:10px solid #ccc;border-top:none;height:0;position:absolute;left:20px;top:-10px;width:0;z-index:-1}.popover .popover-arrow:after{border:10px solid #0000;border-bottom:10px solid #fff;border-top:none;content:"";right:-10px;position:absolute;top:2px}.popover .popover-inner{text-align:right}.popover .popover-inner p:first-child{margin-top:0}.popover .popover-inner p:last-child{margin-bottom:0}.plugin-ratings{font-size:.8rem;position:relative}.plugin-ratings .reviews-link{position:absolute;left:0;top:0}.plugin-ratings .reviews
 -link:after{content:"\f341";font-family:dashicons;padding-right:5px;vertical-align:top}.plugin-ratings [class*=dashicons-star-]{color:#ffb900;display:inline-block;font-size:1.5625rem;height:auto;margin:0;width:auto}.plugin-ratings .ratings-list{list-style-type:none;margin:1rem 0;padding:0}.plugin-ratings .ratings-list .counter-container,.plugin-ratings .ratings-list .counter-container a{text-decoration:none;width:100%}.plugin-ratings .ratings-list .counter-label{display:inline-block;min-width:65px}.plugin-ratings .ratings-list .counter-back,.plugin-ratings .ratings-list .counter-bar{display:inline-block;height:1rem;vertical-align:middle}.plugin-ratings .ratings-list .counter-back{background-color:#ececec;width:58%;width:calc(100% - 130px)}.plugin-ratings .ratings-list .counter-bar{background-color:#ffc733;display:block}.plugin-ratings .ratings-list .counter-count{margin-right:3px}.plugin-support{font-size:.8rem}.plugin-support .counter-container{margin-bottom:1rem;position
 :relative}.plugin-support .counter-back,.plugin-support .counter-bar{display:inline-block;height:30px;vertical-align:middle}.plugin-support .counter-back{background-color:#ececec;width:100%}.plugin-support .counter-bar{background-color:#c7e8ca;display:block}.plugin-support .counter-count{font-size:.64rem;right:8px;position:absolute;top:8px;width:100%;width:calc(100% - 8px)}@media screen and (min-width:737px){.plugin-support .counter-count{top:5px}}.home .widget,.widget-area.home .widget{display:inline-block;font-size:.8rem;margin:0;vertical-align:top}@media screen and (min-width:737px){.home .widget,.widget-area.home .widget{margin-left:5%;width:30%}.home .widget:last-child,.widget-area.home .widget:last-child{margin-left:0}}.home .widget select,.widget-area.home .widget select{max-width:100%}.entry-meta .widget-title{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0}.widget-area{margin:0 auto;max-width:960px;padding:0 1.5625rem 3.0517578125rem}@media screen and 
 (min-width:737px){.widget-area{padding:0 10px 3.0517578125rem}}
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+@charset "UTF-8";[class*=col-]{margin:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters>.row{margin-right:-2%}@media (max-width:768px){.row.gutters>.row{margin-right:0}}.row.gutters>.row>[class*=col-]{margin-right:2%}@media (max-width:768px){.row.gutters>.row>[class*=col-]{margin-right:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.3333333333%}.offset-1{margin-right:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-right:16.6666666667%}.col-3{width:25%}.offset-3{margin-right:25%}.col-4{width:33.3333333333%}.offset-4{margin-right:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-right:41.6666666667%}.col-6{width:50%}.offset-6{margin-right:50%}.col-7{width:58.3333333333%}
 .offset-7{margin-right:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-right:66.6666666667%}.col-9{width:75%}.offset-9{margin-right:75%}.col-10{width:83.3333333333%}.offset-10{margin-right:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-right:91.6666666667%}.col-12{width:100%}.offset-12{margin-right:100%}.gutters>.col-1{width:6.33333%}.gutters>.col-1:nth-child(n+13){margin-top:2%}.gutters>.offset-1{margin-right:10.33333%!important}.gutters>.col-2{width:14.66667%}.gutters>.col-2:nth-child(n+7){margin-top:2%}.gutters>.offset-2{margin-right:18.66667%!important}.gutters>.col-3{width:23%}.gutters>.col-3:nth-child(n+5){margin-top:2%}.gutters>.offset-3{margin-right:27%!important}.gutters>.col-4{width:31.33333%}.gutters>.col-4:nth-child(n+4){margin-top:2%}.gutters>.offset-4{margin-right:35.33333%!important}.gutters>.col-5{width:39.66667%}.gutters>.offset-5{margin-right:43.66667%!important}.gutters>.col-6{width:48%}.gutte
 rs>.col-6:nth-child(n+3){margin-top:2%}.gutters>.offset-6{margin-right:52%!important}.gutters>.col-7{width:56.33333%}.gutters>.offset-7{margin-right:60.33333%!important}.gutters>.col-8{width:64.66667%}.gutters>.offset-8{margin-right:68.66667%!important}.gutters>.col-9{width:73%}.gutters>.offset-9{margin-right:77%!important}.gutters>.col-10{width:81.33333%}.gutters>.offset-10{margin-right:85.33333%!important}.gutters>.col-11{width:89.66667%}.gutters>.offset-11{margin-right:93.66667%!important}.gutters>.col-12{width:98%}.gutters>.offset-12{margin-right:102%!important}@media (max-width:768px){[class*=" offset-"],[class^=offset-]{margin-right:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row [class*=col-]{margin-right:0;width:100%}.row.gutters [class*=col-]{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}.gutters .column.push-left,.push-left{margin-left:auto}.gutters .column.push-right,.push-right{margin-right:auto
 }.gutters .column.push-center,.push-center{margin-right:auto;margin-left:auto}.gutters .column.push-middle,.push-middle{margin-bottom:auto;margin-top:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-right:0}.gutters .column.push-center-sm,.push-center-sm{margin-right:auto;margin-left:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:left}.float-left{float:right}@media (max-width:768px){.float-left,.float-right{float:none}}.fixed{right:0;position:fixed;top:0;width:100%;z-index:100}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-family:sans-serif}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio
 :not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webk
 it-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}optgroup{font-weight:700}table{border-spacing:0}td,th{padding:0}p{margin:1rem 0}blockquote{margin:0 1.5rem}address{margin:0 0 1.5rem}pre{margin-bottom:1.6rem;padding:1.6rem}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}blockquote,q{quotes:"" ""}blockquote:after,blockquote:before,q:after,q:before{content:""}blockquote{border-right:2px solid #767676;color:#767676;margin:1rem 0;padding-right:.8rem}blockquote cite{font-size:.8rem}figure{margin:0}hr{background-color:#eee;border:0;height:2px;margin:5rem auto}img{height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{clear:both;font-family:Open Sans,sans-serif;line-height:1.5;margin:2rem 0 1
 rem}.h1,h1{font-size:2.44140625rem}.h1,.h2,h1,h2{font-weight:300}.h2,h2{font-size:1.953125rem}.h3,h3{font-size:1.5625rem;font-weight:400}.h4,h4{color:#32373c;font-size:1.25rem;font-weight:600;padding:0}.h5,h5{font-size:1rem;letter-spacing:.01rem}.h5,.h6,h5,h6{font-weight:600;text-transform:uppercase}.h6,h6{font-size:.8rem;letter-spacing:.8px}a{color:#0073aa;text-decoration:none}a:active,a:focus,a:hover{text-decoration:underline}a:focus{outline:thin dotted}a:active,a:hover{outline:0}li>a,p a{text-decoration:underline}li>a:hover,p a:hover{color:#d54e21}ol,ul{margin:0 1.5em 1.5em 0;padding:0}ul{list-style:square}ol{list-style:decimal}li.unmarked-list,ol.unmarked-list,ul.unmarked-list{list-style:none;padding-right:0}li>ol,li>ul{margin-bottom:0}dt{font-weight:700}dd{margin:0 1.5em 1.5em}table{border:1px solid #eee;border-collapse:collapse;font-size:.8rem;margin:0 0 1rem;padding:0;width:100%}table thead{background:#32373c;color:#fff}table td,table th{border:1px solid #eee;font
 -weight:400;margin:0;padding:.4rem;text-align:right;vertical-align:top}table tbody tr:nth-child(2n){background:#f7f7f7}html{font-size:100%}body,button,input,select,textarea{color:#32373c;font-family:Open Sans,sans-serif;font-size:100%;line-height:1.5}@media screen and (min-width:737px){html{font-size:1.125rem}}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5em}address{margin:0 0 1.5em}pre{word-wrap:normal;background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;font-size:.9375rem;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:.9375rem;-webkit-hyphens:none;hyphens:none}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}h1.title{color:#0073aa;font-size:.8rem;font-weight:600;letter-spacing:.05rem;text-transform:uppercase}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;
 overflow:hidden;position:absolute!important;width:1px}.screen-reader-text:focus{clip:auto!important;background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;right:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-content[tabindex="-1"]:focus{outline:0}.no-js .hide-if-no-js{display:none}.alignleft{display:inline;float:right;margin-left:1.5em}.alignright{display:inline;float:left;margin-right:1.5em}.aligncenter{clear:both;display:block;margin-right:auto;margin-left:auto}@media screen and (max-width:480px){.alignleft,.alignright{display:block;float:none;margin-right:auto;margin-left:auto}}.button,.button-primary,.button-secondary,.plugin-upload-form .button-primary{-webkit-appearance:none;border:1px solid;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:.8rem;height:1.5625rem;line-height
 :1;margin:0;padding:0 .8rem;text-decoration:none;white-space:nowrap}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{border:0;padding:0}.button-group.button-xl .button,.button.button-xl{font-size:1rem;height:2.44140625rem;line-height:1;padding:0 1.5rem}.button-group.button-large .button,.button.button-large{height:1.953125rem;line-height:1;padding:0 1rem}.button-group.button-small .button,.button.button-small{font-size:.64rem;height:1.25rem;line-height:1;padding:0 .5rem}a.button,a.button-primary,a.button-secondary{line-height:1.5625rem}.button-group.button-large a.button,a.button.button-large{line-height:1.953125rem}.button-group.button-xl a.button,a.button.button-xl{line-height:2.44140625rem}.button-group.button-small a.button,a.button.button-small{line-height:1.25rem}.button:active,.button:focus{outline:none}.button.hidden{display:none}input[type=reset],input[type=reset]:active,input[type=reset]:
 focus,input[type=reset]:hover{background:none;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.button,.button-secondary,.button:visited{background:#f7f7f7;border-color:#ccc;box-shadow:0 1px 0 #ccc;color:#555;vertical-align:top}p .button{vertical-align:baseline}.button-secondary:focus,.button-secondary:hover,.button.focus,.button.hover,.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#23282d}.button-link:focus,.button-secondary:focus,.button.focus,.button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.button-secondary:active,.button.active,.button.active:hover,.button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.button-disabled,.button-secondary.disabled,.button-secondary:disabled,.button-secondary[disabled],.button.disabled,.button:disabled,.button[di
 sabled]{background:#f7f7f7!important;border-color:#ddd!important;box-shadow:none!important;color:#a0a5aa!important;cursor:default;text-shadow:0 1px 0 #fff!important;transform:none!important}.button-link,input[type=submit].button-link{background:none;border:0;border-radius:0;box-shadow:none;cursor:pointer;margin:0;outline:none;padding:0}.button-link:focus{outline:1px solid #5b9dd9}.button-primary,.download-button,.plugin-upload-form .button-primary{text-decoration:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.button-primary,.button-primary:visited,.download-button,.download-button:visited,.plugin-upload-form .button-primary,.plugin-upload-form .button-primary:visited{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary.hover,.button-primary:focus,.button-primary:hover,.download-button.focus,.download-button.hover,.download-button:focus,.download-button:hover,.p
 lugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary.hover,.plugin-upload-form .button-primary:focus,.plugin-upload-form .button-primary:hover{background:#008ec2;border-color:#006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary:focus,.download-button.focus,.download-button:focus,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.button-primary.active,.button-primary.active:focus,.button-primary.active:hover,.button-primary:active,.download-button.active,.download-button.active:focus,.download-button.active:hover,.download-button:active,.plugin-upload-form .button-primary.active,.plugin-upload-form .button-primary.active:focus,.plugin-upload-form .button-primary.active:hover,.plugin-upload-form .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.button-primary.disabled,.button-primary:dis
 abled,.button-primary[disabled],.download-button.disabled,.download-button:disabled,.download-button[disabled],.plugin-upload-form .button-primary.disabled,.plugin-upload-form .button-primary:disabled,.plugin-upload-form .button-primary[disabled]{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-primary.button.button-hero,.download-button.button.button-hero,.plugin-upload-form .button-primary.button.button-hero{box-shadow:0 2px 0 #006799}.button-primary.button.button-hero.active,.button-primary.button.button-hero.active:focus,.button-primary.button.button-hero.active:hover,.button-primary.button.button-hero:active,.download-button.button.button-hero.active,.download-button.button.button-hero.active:focus,.download-button.button.button-hero.active:hover,.download-button.button.button-hero:active,.plugin-upload-form .button-primary.button.button-hero.active,
 .plugin-upload-form .button-primary.button.button-hero.active:focus,.plugin-upload-form .button-primary.button.button-hero.active:hover,.plugin-upload-form .button-primary.button.button-hero:active{box-shadow:inset 0 3px 0 #006799}.button-primary-disabled{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-group{display:inline-block;font-size:0;position:relative;vertical-align:middle;white-space:nowrap}.button-group>.button{border-radius:0;display:inline-block;margin-left:-1px;z-index:10}.button-group>.button-primary{z-index:100}.button-group>.button:hover{z-index:20}.button-group>.button:first-child{border-radius:0 3px 3px 0}.button-group>.button:last-child{border-radius:3px 0 0 3px}.button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:737px){.button,.button.button-large,.button.button-small,.plugin-upload-fo
 rm .button-primary{font-size:14px;height:auto;line-height:normal;margin-bottom:4px;padding:6px 14px;vertical-align:middle}}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.committer-list li:after,.committer-list li:before,.entry-content:after,.entry-content:before,.home-below:after,.home-below:before,.plugin-meta:after,.plugin-meta:before,.plugin-upload-form .category-checklist:after,.plugin-upload-form .category-checklist:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before,.support-rep-list li:after,.support-rep-list li:before,.type-plugin .plugin-header:after,.type-plugin .plugin-header:before,.type-plugin:after,.type-plugin:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.committer-list li:after,.entry-content:after,.home-below:after,.plugin-meta:after,.plugin-upload-form .category-checklist:after,.site-content:after,.site-footer:aft
 er,.site-header:after,.support-rep-list li:after,.type-plugin .plugin-header:after,.type-plugin:after{clear:both}p.subheading{color:#82878c;font-weight:300;margin:-.4rem auto 2rem;text-align:center}p.intro,p.subheading{font-size:1.25rem}p.aside{font-size:.8rem}p.note{font-size:.64rem;letter-spacing:.01rem;max-width:18.1898940355rem}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type
 =number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=number]{height:28px}input[type=checkbox],input[type=radio]{height:16px;outline:0;width:16px}input[type=checkbox]:checked:before{margin:-3px -4px 0 0}input[type=radio]:checked+label:before{color:#82878c}input[type=radio]:checked:before{height:6px;margin:4px;width:6px}input[type=reset]:active,input[type=reset]:hover{color:#00a0d2}input[type=search]{-webkit-appearance:textfield}input,select,textarea{font-size:14px;padding:3px 5px}textarea.code{line-height:1.4;padding:4px 6px 1px}label{vertical-align:middle}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}input.large-text,textarea.large-text{width:99%}input.reg
 ular-text{width:25em}input.small-text{padding:1px 6px;width:50px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}input[type=checkbox]{-webkit-appearance:none;padding:10px}input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}input[type=radio]:checked:before{height:9px;line-height:16px;margin:7px;vertical-align:middle;width:9px}input,textarea{font-size:16px}input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{display:inline;margin:0 3px;max-width:55px;padding:3px 6px;width:auto}input.regular-te
 xt{width:100%}label{font-size:14px}fieldset label{display:block}}a.button:active,a.button:focus,a.button:hover{text-decoration:none}.notice p{font-size:.8rem;margin:.5em 0;padding:2px}.avatar{border-radius:50%;vertical-align:middle}.locale-banner{background:#c7e8ca;font-size:.8rem;padding:.5rem;text-align:center}@media (min-width:67rem){.locale-banner{margin:1rem auto;max-width:960px}}.locale-banner a{text-decoration:underline}.block-validator .block-validator__plugin-form label{display:block;margin-bottom:.8rem}.block-validator .block-validator__plugin-input-container{display:flex;max-width:34rem}.block-validator .block-validator__plugin-input{flex:1}.block-validator .block-validator__plugin-submit{flex:0;margin-right:.73152rem}@media (max-width:36rem){.block-validator .block-validator__plugin-input-container{display:block}.block-validator .block-validator__plugin-input{width:100%}.block-validator .block-validator__plugin-submit{margin-right:0;margin-top:.73152rem}}.block-validator
  .notice details,.block-validator .notice p{font-size:1rem;margin:.73152rem 0}.block-validator .notice details p{font-size:.8rem;margin-right:1rem}.block-validator .notice code{font-size:1em}.block-validator .notice summary{display:list-item}.block-validator figure{border:1px solid #aaa;display:inline-block;padding:1em}.block-validator .test-screenshot{text-align:center}input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[typ
 e=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8);color:#111}input[type=email],input[type=url]{direction:rtl}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],select{padding:6px 10px}input[type=number]{height:40px;line-height:inherit}input[type=checkbox],input[type=radio]{-webkit-appearance:none;background:#fff;border:1px solid #b4b9be;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);clear:none;color:#555;cursor:pointer;display:inline-block;height:25px;line-height:0;margin:-4px 0 0 4px;min-width:16px;padding:0!important;text-align:center;transition:border-color .05s ease-in-out;vertical-align:middle;width:25px}input[type=checkbox]{pad
 ding:10px}input[type=radio]{border-radius:50%;line-height:10px;margin-left:4px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none;display:inline-block;float:right;font:normal 21px/1 dashicons;vertical-align:middle;width:16px}input[type=checkbox]:checked:before{color:#1e8cbe;content:"\f147";font:normal 30px/1 dashicons;margin:-3px -5px}input[type=radio]:checked:before{background-color:#1e8cbe;border-radius:50px;content:"•";font-size:24px;height:9px;line-height:16px;margin:7px;text-indent:-9999px;vertical-align:middle;width:9px}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{border-radius:0;fon
 t-size:16px}textarea{line-height:1.4;overflow:auto;padding:2px 6px;resize:vertical}input[type=file]{padding:3px 0}label{cursor:pointer}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}:-moz-placeholder{color:#a9a9a9}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:hsla(0,0%,100%,.5);border-color:hsla(0,0%,87%,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:none;box-shadow:none}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}fieldset label,label{vertical-align:middle}@media screen and (min-width:737p
 x){input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{padding:3px 5px}input[type=number]{height:28px}input[type=checkbox]{padding:0}input[type=checkbox]:checked:before{font:normal 21px/1 dashicons;margin:-3px -4px 0 0}input[type=checkbox],input[type=radio]{height:16px;width:16px}input[type=radio]:checked:before{height:6px;margin:4px;width:6px}input,select,textarea{font-size:14px;padding:3px 5px}}.infinite-scroll .posts-navigation,.infinite-scroll.neverending .site-footer{display:none}.infinity-end.neverending .site-footer{display:block}.notice{background:#fff;border-right:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);font-size:.8rem;margin:1em 0;padding:1px 12px}.notice p,.notice ul{margin:.5em 0;padding:2px}.notice p a,.notice ul a{border-bottom:0}.notice pre{white-space:pre-wrap}.notice ul{list-style:none;margin:.5em}.notice.notice-alt{box-shadow:none}.notice.notice-large{padding:10px 20px}.notice.notice-success{border-right-color:
 #46b450}.notice.notice-success.notice-alt{background-color:#ecf7ed}.notice.notice-warning{border-right-color:#ffb900}.notice.notice-warning.notice-alt{background-color:#fff8e5}.notice.notice-error{border-right-color:#dc3232}.notice.notice-error.notice-alt{background-color:#fbeaea}.notice.notice-info{border-right-color:#00a0d2}.notice.notice-info.notice-alt{background-color:#e5f5fa}.notice.hidden,.plugin-upload-form.hidden{display:none}.plugin-upload-form fieldset{border:none;margin:0;padding:0}.plugin-upload-form legend{margin:1rem 0}.plugin-upload-form .category-checklist{list-style-type:none;margin:0 0 2rem}.plugin-upload-form .category-checklist li{float:right;padding:.5rem 0;width:50%}@media screen and (min-width:48em){.plugin-upload-form .category-checklist li{padding:0}.plugin-upload-form .category-checklist label{font-size:.8rem}.plugin-upload-form label.button{line-height:1.8}}.plugin-upload-form .plugin-file{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px
 ;z-index:-1}.plugin-upload-form .plugin-file:focus+label{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.plugin-queue-message code{font-size:1em}.plugin-queue-message dialog.slug-change input[type=text]{font-family:monospace;font-size:1.2em;width:20em}.error-404 .page-content,.error-404 .page-title{text-align:center}.error-404 .page-content .logo-swing{height:10rem;margin:6rem auto;position:relative;text-align:center;width:10rem}.error-404 .page-content .logo-swing .wp-logo{right:0;max-width:none;position:absolute;top:0;width:10rem}@keyframes hinge{10%{height:180px;transform:rotate(0deg);width:180px}15%{height:185px;transform:rotate(0deg);width:185px}20%{height:180px;transform:rotate(-5deg);width:180px}40%{animation-timing-function:ease-in-out;transform-origin:top right}60%{animation-timing-function:ease-in-out;transform:rotate(-40deg);transform-origin:top right}40%,80%{animation-timing-function:ease-in-out;opacity:1;transform:rotate(-60deg);transform-origin:top right}to{opacity:0;t
 ransform:translate3d(0,700px,0)}}.hinge{animation-duration:2s;animation-name:hinge}.comments-area{margin-top:5em}.comments-area>:last-child{margin-bottom:0}.comments-area .comment-list+.comment-respond{border-top:1px solid #eaeaea}.comments-area .comment-list+.comment-respond,.comments-area .comment-navigation+.comment-respond{padding-top:1.6em}.comments-area .comments-title{margin-bottom:1.3333em}.comments-area .comment-list{list-style:none;margin:0}.comments-area .comment-list .pingback,.comments-area .comment-list .trackback,.comments-area .comment-list article{border-top:1px solid #eaeaea;padding:1.6em 0}.comments-area .comment-list article:not(:only-child){padding-bottom:0}.comments-area .comment-list article+.comment-respond{padding-bottom:1.6em}.comments-area .comment-list .children{list-style:none;margin:0}.comments-area .comment-list .children>li{padding-right:.8em}.comments-area .comment-list .alt{background:none}.comments-area .comment-author{color:#999;margin-botto
 m:.4em}.comments-area .comment-author .avatar{float:right;height:24px;margin-left:.8em;width:24px}.comments-area .comment-metadata,.comments-area .pingback .edit-link{color:#999;line-height:1.5}.comments-area .comment-metadata a,.comments-area .pingback .edit-link a{color:#777}.comments-area .comment-metadata{font-size:.8rem;margin-bottom:1.6em}.comments-area .comment-metadata .edit-link,.comments-area .pingback .edit-link{margin-right:1em}.comments-area .pingback .edit-link:before{top:5px}.comments-area .comment-content ol,.comments-area .comment-content ul{margin:0 1.3333em 1.6em 0}.comments-area .comment-content li>ol,.comments-area .comment-content li>ul,.comments-area .comment-content>:last-child{margin-bottom:0}.comments-area .comment-content .reply{font-size:12px}.comments-area .comment-content .reply a{border:1px solid #eaeaea;color:#707070;display:inline-block;font-weight:700;line-height:1;margin-top:2em;padding:.4167em .8333em;text-transform:uppercase}.comments-ar
 ea .comment-content .reply a:focus,.comments-area .comment-content .reply a:hover{border-color:#333;color:#333;outline:0}.comments-area .comment-reply-title a{font-weight:inherit}.comments-area .comment-form label{display:block;font-size:.8rem;font-weight:700;letter-spacing:.04em;line-height:1.5}.comments-area .comment-form input[type=email],.comments-area .comment-form input[type=text],.comments-area .comment-form input[type=url],.comments-area .comment-form textarea{width:100%}.comments-area .comment-awaiting-moderation,.comments-area .comment-notes,.comments-area .form-allowed-tags,.comments-area .logged-in-as{font-size:1rem;line-height:1.5;margin-bottom:2em}.comments-area .no-comments{border-top:1px solid #eaeaea;color:#999;font-weight:700;padding-top:1.6em}.comments-area .comment-navigation+.no-comments{border-top:0}.comments-area .form-allowed-tags code{font-family:Inconsolata,monospace}.comments-area .form-submit{margin-bottom:0}.comments-area .required{color:#c0392b}.entry-c
 ontent{word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.entry-content>p:first-child{margin-top:0}.entry-content [class*=col-]~h1,.entry-content [class*=col-]~h2,.entry-content [class*=col-]~h3,.entry-content [class*=col-]~h4,.entry-content [class*=col-]~h5,.entry-content [class*=col-]~h6{clear:none}.entry-header{position:relative}.entry-header .sticky-post{color:#999;font-size:.8rem;font-style:italic;position:absolute;top:-.8rem}.entry-summary{word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}body:not(.single):not(.search) .site-main .post{margin-bottom:3.0517578125rem;max-width:40em}.gallery{margin-bottom:1.5rem}.gallery .gallery-item{display:inline-block;margin:0;text-align:center;vertical-align:top;width:100%}.gallery.gallery-columns-2 .gallery-item{max-width:50%}.gallery.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery.gallery-columns-4 .gallery-item{max-width:25%}.gallery.gallery-columns-5 .gallery-item{max-width:20%}.gallery.gallery-columns-6 .gallery-i
 tem{max-width:16.66%}.gallery.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery .gallery-caption{display:block}.post-navigation{margin:5em auto;padding:0}.post-navigation a{border-bottom:1px solid #eaeaea;color:#444;display:block;font-weight:600;padding:11px 0 12px;text-transform:none;width:100%}.post-navigation a:hover{color:#21759b}.post-navigation .nav-links{word-wrap:break-word;border-top:1px solid #eaeaea;-webkit-hyphens:auto;hyphens:auto}.post-navigation .meta-nav{color:#777;display:block;font-size:13px;line-height:2;text-transform:uppercase}.post-navigation .nav-next{text-align:left}.pagination .nav-links{text-align:center}.pagination .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px;text-align:center}.pagination .nav-links .page-numbers.dots,.pagination .nav-links .page-numbers.next,.pagination .
 nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}.pagination .nav-links .page-numbers.dots{cursor:inherit}@media screen and (max-width:737px){.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{font-size:0;min-width:auto;padding:0}.pagination .nav-links .page-numbers.next:after,.pagination .nav-links .page-numbers.prev:before{background-color:#f9f9f9;display:inline-block;font-size:1rem;line-height:1.5;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.prev:before{content:"‹"}.pagination .nav-links .page-numbers.next:after{content:"›"}}.pagination .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.search-form .search-field{line-height:normal;margin:0;padding:4px 5px;vertical-align:text-bottom}.site-content{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-content{padding:0 10px 3.0517578125rem}}@media screen and (max-width:737px){.sit
 e-content .site-main{float:none;margin:0;width:auto}}.home .site-content,.page .site-content,.site-content.page{margin:auto;max-width:none;padding:0}.site-content .page-title{font-size:1.25rem;font-weight:400}.site-content .no-results{margin:0 auto 3.0517578125rem;max-width:40em;padding:0 2rem}.site-description{color:hsla(0,0%,100%,.8);font-size:1.25rem;font-weight:300;margin:-.4rem auto 2rem;text-align:center}.site-header{background:#0073aa;padding:1rem 0;position:relative}.site-header .site-branding{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-header .site-branding{padding:0 10px}}.site-header.home{padding:1.5625rem 1.143rem;text-align:center}.site-title a:active,.site-title a:focus,.site-title a:hover{text-decoration:none}.widget-area{font-size:.8rem}@media screen and (min-width:480px) and (max-width:768px){.widget-area{display:flex}.widget-area .widget{width:48%}}#wporg-footer{background-color:#f7f7f7;border-top:1px solid #dfdfdf;pa
 dding:22px 14px 65px}#wporg-footer,#wporg-footer .wrapper{clear:both;margin:0 auto;overflow:auto}#wporg-footer .wrapper{max-width:930px}#wporg-footer ul{float:right;margin-bottom:20px;margin-right:24px;overflow:auto;padding-right:0;width:135px}@media screen and (min-width:960px){#wporg-footer ul:first-child{margin-right:0}}#wporg-footer ul li{color:#bbb;font-size:14px;list-style-type:none;margin-bottom:1px}#wporg-footer ul li a{text-decoration:none;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}#wporg-footer ul li a:hover{color:#0073aa;text-decoration:underline}#wporg-footer .social-media-links .dashicons{margin-left:4px}#wporg-footer .cip{clear:both;color:#ccc;float:none;font-size:.8rem;letter-spacing:.3em;margin:35px auto 0;text-align:center;text-transform:uppercase}#wporg-footer .cip.cip-image{background:url(//s.w.org/style/images/codeispoetry.png?1) 50% no-repeat;background-size:190px 15px;height:15px;text-indent:-9999px;width:190px}@media only screen and (-
 webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:1.5dppx),only screen and (min-resolution:144dpi){#wporg-footer .cip.cip-image{background-image:url(//s.w.org/style/images/codeispoetry-2x.png?1)}}@media screen and (min-width:561px) and (max-width:959px){#wporg-footer .wrapper{max-width:600px}#wporg-footer ul{margin-right:2%;width:32%}#wporg-footer ul:nth-child(3n+1){margin-right:0}#wporg-footer ul:nth-child(4n){clear:both}}@media screen and (max-width:560px){#wporg-footer .wrapper{max-width:360px}#wporg-footer ul{margin-right:4%;width:48%}#wporg-footer ul:nth-child(odd){clear:both;margin-right:0}}#wporg-header{background:#23282d;height:140px;position:relative;text-align:center;width:100%}#wporg-header .wrapper{margin:0 auto;max-width:960px}#wporg-header h1{display:inline-block;margin:auto;width:303px}#wporg-header h1 a{background:url(//s.w.org/style/images/wporg-logo.svg?3) 100% no-repeat;background-size:290px 46px;display:block;height:88px;text-indent:-9999px}#wpor
 g-header h2.rosetta{clear:none;color:#dfdfdf;font-family:Georgia,Times New Roman,serif;font-size:30px;margin:0 60px 0 0}#wporg-header h2.rosetta a{border-bottom:none;color:#dfdfdf;display:block;height:52px;line-height:22px;padding:0}#wporg-header h2.rosetta a:hover{text-decoration:none}#wporg-header #wporg-header-menu{background:#23282d;right:-75%;list-style:none;margin:0;max-width:75%;min-width:200px;position:absolute;text-align:right;top:100%;transition:right .3s;z-index:100000}#wporg-header #wporg-header-menu.toggled{right:0}#wporg-header ul li{list-style-type:none;position:relative}#wporg-header ul li a{color:#eee;display:block;font-family:Open Sans,Helvetica,Arial,Liberation Sans,sans-serif;font-size:13px;font-weight:600;height:34px;line-height:34px;margin:0 4px;padding:10px 30px;text-decoration:none}#wporg-header ul li a.subcurrent{font-weight:700}@media (max-width:768px){#wporg-header ul li a{height:auto}}#wporg-header ul li a.current,#wporg-header ul li a:hover,#wporg-header
  ul li.current-menu-item a,#wporg-header ul li.current_page_parent a{color:#00a0d2}#wporg-header ul li#download,#wporg-header ul li.download{float:left;height:34px;margin-left:14px;overflow:hidden;padding:0 0 34px}@media screen and (max-width:767px){#wporg-header ul li#download,#wporg-header ul li.download{display:block;float:none;height:auto;margin:10px 20px 20px;padding-bottom:0}#wporg-header ul li#download a,#wporg-header ul li.download a{padding:4px 10px;text-align:center}}#wporg-header ul li#download a,#wporg-header ul li.download a{margin:0;padding:0 16px}#wporg-header ul li#download a:hover,#wporg-header ul li.download a:hover{color:#eee}#wporg-header ul li#download .uparrow,#wporg-header ul li#download.current,#wporg-header ul li#download.current-menu-item,#wporg-header ul li.download .uparrow,#wporg-header ul li.download.current,#wporg-header ul li.download.current-menu-item{display:none}#wporg-header ul li .nav-submenu{clip:rect(1px,1px,1px,1px);height:1px;right:-2px;margi
 n:0;overflow:hidden;padding:0;position:absolute;width:1px;z-index:99999}#wporg-header ul li .nav-submenu li a{display:inline-block;height:24px;line-height:24px;margin:0;white-space:nowrap}@media screen and (min-width:768px){#wporg-header #head-search{float:left;margin-left:14px;padding-top:30px}}#wporg-header #head-search form{border-bottom:1px solid #3f3f3f;display:inline-block;margin-right:60px;width:288px}#wporg-header #head-search form input.text{background:#191e23;border:0;border-radius:0;box-sizing:content-box;color:#b4b9be;float:right;font-family:Open Sans,sans-serif;font-size:12px;height:24px;margin:0;outline:none;padding:3px;vertical-align:top;width:256px}#wporg-header #head-search form input.text::-moz-placeholder{color:#eee}@media screen and (max-width:480px){#wporg-header #head-search form input.text{width:216px}}#wporg-header #head-search form .button{background:#191e23 url(//s.w.org/wp-includes/images/admin-bar-sprite.png?d=20120831) no-repeat 2px 5px;border:none;borde
 r-radius:0;box-shadow:none;float:right;height:30px;margin:0;padding:0;text-shadow:none!important;width:26px}@media screen and (max-width:480px){#wporg-header #head-search form{width:248px}}@media screen and (min-width:480px){#wporg-header #head-search form{margin-right:0}}@media screen and (min-width:768px){#wporg-header{height:120px;text-align:inherit}#wporg-header h1{float:right;padding-right:10px}#wporg-header h2.rosetta{float:right;margin-right:0;padding:36px 27px 0}#wporg-header #headline h2{text-rendering:optimizeLegibility}#wporg-header #wporg-header-menu{float:right;height:46px;list-style:none;margin:-15px 0 0;max-width:inherit;min-width:0;padding:0;position:static;width:100%}#wporg-header ul li{float:right;position:relative}#wporg-header ul li a{height:46px;padding:0 6px}#wporg-header ul li a.current~.uparrow{border-bottom:9px solid #f7f7f7;border-right:9px solid transparent;border-left:9px solid transparent;height:0;margin:-8px auto 0;width:0}#wporg-header ul li.current-me
 nu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom:9px solid #f7f7f7;border-right:9px solid transparent;border-left:9px solid transparent;content:"";height:0;right:50%;margin:-8px -9px 0 0;position:absolute;width:0}#wporg-header ul li .nav-submenu:hover~.uparrow,#wporg-header ul li:hover .nav-submenu~.uparrow{border-bottom:9px solid #32373c;border-right:9px solid transparent;border-left:9px solid transparent;height:0;margin:-10px auto 0;width:0}#wporg-header ul li .nav-submenu{background:#32373c;border:1px solid #32373c;border-top:0;margin-top:-1px;min-width:0}#wporg-header ul li .nav-submenu li{float:none}#wporg-header ul li .nav-submenu li a{height:34px;line-height:34px}#wporg-header .nav-menu .focus>ul,#wporg-header .nav-menu ul li:hover>ul,#wporg-header ul.nav-menu .focus>ul,#wporg-header ul.nav-menu li:hover>ul{clip:inherit;height:inherit;overflow:inherit;width:inherit}#wporg-header ul li a.current~.uparrow,#wporg-header ul li.curren
 t-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom-color:#0073aa}}.page-download #wporg-header #download,.page-parent-download #wporg-header #download{display:none}#mobile-menu-button{-webkit-font-smoothing:antialiased;background:none;border:none;box-shadow:none;display:block;float:right;font-family:dashicons;font-size:16px;font-style:normal;font-weight:400;right:10px;line-height:1;padding:1px;position:absolute;text-align:center;text-decoration:inherit;text-shadow:none;top:75px;transition:color .1s ease-in;vertical-align:top}#mobile-menu-button:before{-webkit-font-smoothing:antialiased;border:none;box-sizing:border-box;color:#888;content:"\f228";display:inline-block;float:right;font:normal 50px/1 Dashicons;margin:0;outline:none;padding:3px;text-decoration:none;vertical-align:middle}@media screen and (min-width:768px){#mobile-menu-button{display:none}}#download-mobile{background:#f7f7f7;border-bottom:1px solid #ddd}#download-mobile .wrapper{paddin
 g:20px 0;text-align:center}#download-mobile span.download-ready{font-size:1.6em;margin:0 .25em}#download-mobile a.download-button{font-size:1.6em;height:inherit;margin:10px .25em;padding:10px 15px}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}.wp-caption,embed,iframe,object{max-width:100%}.wp-caption{margin-bottom:1.5em}.wp-caption img[class*=wp-image-]{display:block;margin-right:auto;margin-left:auto}.wp-caption .wp-caption-text{margin:.8075em 0}.wp-caption-text{text-align:center}.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.33%}.gallery-columns-4 .gallery-item{max-width:25%}.gallery-columns-5 .gallery-item{max-width:20%}.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery-columns-8 .gall
 ery-item{max-width:12.5%}.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery-caption{display:block}.site-title{display:inline-block;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 0 0 2rem;max-width:none}.site-title a{color:#fff;font-weight:300;text-decoration:none}.site-title a:active,.site-title a:focus,.site-title a:hover{color:#fff}.site-header.home .site-title{display:inherit;font-size:3.8146972656rem;margin:2rem 0 1rem}.wporg-filter-bar{--wporg--filter-bar--gap:20px;--wporg--filter-bar--color:#40464d;--wporg--filter-bar--active--background-color:#2371a6;--wporg--filter-bar--focus--border-color:#2371a6;margin:0 auto;max-width:960px;padding:40px 1.5625rem 0}.wporg-filter-bar+.site-main{margin-top:2rem;padding-top:0}.wporg-filter-bar .wporg-filter-bar__navigation{flex-grow:1;margin-bottom:var(--wporg--filter-bar--gap)}.wporg-filter-bar .wporg-filter-bar__navigation ul{display:inline-block;font-size:13px;line-height:1.538;list-style:none;margin:0}.wporg-filter-ba
 r .wporg-filter-bar__navigation ul li{display:inline-block}.wporg-filter-bar .wporg-filter-bar__navigation ul li+li{margin-right:8px}.wporg-filter-bar .wporg-filter-bar__navigation ul a{border-radius:2px;color:var(--wporg--filter-bar--color);display:block;padding:8px 12px;text-decoration:none}.wporg-filter-bar .wporg-filter-bar__navigation ul a:focus,.wporg-filter-bar .wporg-filter-bar__navigation ul a:hover{text-decoration:underline}.wporg-filter-bar .wporg-filter-bar__navigation ul a:focus-visible{box-shadow:none;outline:1.5px solid var(--wporg--filter-bar--focus--border-color);outline-offset:-.5px}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active{background-color:var(--wporg--filter-bar--active--background-color);color:#fff}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:focus,.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:hover{color:#fff}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:focus-visible{box-shadow:inset 0 0 
 0 1.5px #fff;outline:1.5px solid var(--wporg--filter-bar--focus--border-color);outline-offset:-.5px}@media screen and (min-width:737px){.wporg-filter-bar{align-items:center;display:flex;flex-wrap:wrap;gap:var(--wporg--filter-bar--gap);justify-content:space-between;padding:40px 10px 0}.wporg-filter-bar .wporg-filter-bar__navigation{margin-bottom:0}}.archive .site-main{margin-top:2rem;padding-top:0}.archive .page-header{margin:2rem 0}dialog{border:0;box-shadow:-6px 6px 6px rgba(0,0,0,.2);min-height:50%;min-width:30%}@media (min-width:1280px){dialog{max-width:55%}}dialog::-webkit-backdrop{background:#000;opacity:.5}dialog::backdrop{background:#000;opacity:.5}dialog .close{color:inherit;cursor:pointer;position:absolute;left:1em;text-decoration:none!important;top:1em}.main-navigation{background:#0073aa;clear:both;right:0;position:absolute;top:60px;width:100%;z-index:1}.main-navigation ul{display:none;list-style:none;margin:0;padding-right:0}.main-navigation ul ul{box-shadow:0 3px 3px rgb
 a(0,0,0,.2);float:right;right:-999em;position:absolute;top:1.5em;z-index:99999}.main-navigation ul ul ul{right:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{right:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{right:auto}.main-navigation li{border-top:1px solid hsla(0,0%,100%,.2)}.main-navigation a{color:hsla(0,0%,100%,.8);display:block;font-size:.8rem;padding:1rem 1.5rem 1rem 1rem;text-decoration:none}.main-navigation a.active,.main-navigation a:hover{color:#fff}@media screen and (min-width:737px){.main-navigation a.active{border-bottom:1px solid}}.main-navigation.toggled ul{display:block}.menu-toggle{-webkit-appearance:none;background:transparent;border:none;color:#fff;font-size:1.5625rem;height:3.5rem;overflow:hidden;position:absolute;left:1rem;top:-58px;width:3.5rem}.toggled .menu-toggle:before{content:"\f343"}@media screen and (min-width:737px){.menu-toggle{disp
 lay:none}.main-navigation{float:left;position:relative;top:auto;width:auto}.main-navigation.toggled{padding:1px 0}.main-navigation ul{display:inline-block;font-size:0}.main-navigation ul li{border:0;display:inline-block;font-size:1rem;margin-left:1rem}.main-navigation ul li:last-of-type{margin-left:0}.main-navigation a{padding:0}}.page .entry-header{margin-top:2rem}@media screen and (min-width:737px){.page .entry-header{padding:0 2rem}}.page .entry-header .entry-title{font-size:1.5625rem;font-weight:400}@media screen and (min-width:737px){.page .entry-content{padding:0 2rem}}.page .entry-content h2{font-size:1.5625rem;font-weight:400}.page .entry-content h3{font-size:1rem;font-weight:600;letter-spacing:.01rem;text-transform:uppercase}.page .entry-content section{padding:2rem 0}.page .entry-content section:first-of-type{padding-top:0}.page .entry-content section+section{border-top:2px solid #eee}.plugin-card{background-color:#f9f9f9;margin-bottom:4%;padding:15px 15px 8px;vertical-ali
 gn:top}@media screen and (min-width:737px){.plugin-card{display:inline-block;margin-left:4%;width:48%}.plugin-card:nth-of-type(2n){margin-left:0}}.plugin-card .entry{display:inline-block;margin:auto;vertical-align:top}@media screen and (min-width:21em){.plugin-card .entry{width:calc(96% - 128px)}}.plugin-card .entry-title{font-size:1rem;line-height:1.3;margin:0 0 8px}.plugin-card .entry-title a{word-wrap:break-word;font-weight:400}.plugin-card .entry-excerpt{font-size:.8rem}.plugin-card .entry-excerpt p{margin:0}.plugin-card hr{background-color:#fff;margin:15px -15px 8px}.plugin-card footer span{display:inline-block;font-size:.73152rem;overflow:hidden;white-space:nowrap}.plugin-card footer span i{display:inline-block;font-size:1rem;margin-left:.4rem}.plugin-card footer span.last-updated{display:none}.plugin-card footer span.plugin-author{width:100%}.plugin-card footer span.active-installs{min-width:48%}.plugin-card footer .dashicons{color:#bbb;display:none;height:auto;margin:0 2px -
 1rem;width:auto}@media (min-width:414px){.plugin-card footer .dashicons{display:inline-block}}.entry-thumbnail{display:none;max-width:128px}.entry-thumbnail .plugin-icon{background-size:cover;height:128px;width:128px}@media screen and (min-width:21em){.entry-thumbnail{display:inline-block;margin:0 0 0 4%;vertical-align:top}.entry-thumbnail a{display:block}}.single .entry-thumbnail{display:none;float:right;height:96px;margin-left:1rem;width:96px}@media screen and (min-width:26em){.single .entry-thumbnail{display:block}}.single .entry-thumbnail .plugin-icon{background-size:contain!important;height:96px!important;width:96px!important}.plugin-rating{line-height:1;margin:0 0 8px 10px}.plugin-rating .wporg-ratings{display:inline-block;margin-left:5px}.plugin-rating .rating-count{color:#999;font-size:.8rem}.site-main.single .plugin-rating .rating-count{display:none}.plugin-rating .rating-count a{color:inherit;cursor:hand;text-decoration:none}[class*=dashicons-star-]{color:#ffb900}.rtl .das
 hicons-star-half{transform:rotateY(-180deg)}.plugin-section{border-bottom:2px solid #eee;margin:0 auto 4.768371582rem;max-width:960px;padding-bottom:3.0517578125rem}.plugin-section:last-of-type{margin-bottom:0}.plugin-section .section-header{column-gap:10px;display:flex;flex-flow:row wrap;margin-bottom:2rem}.plugin-section .section-title{flex:1 1 auto;font-size:1.5625rem;font-weight:400;margin-bottom:0;margin-top:0}.plugin-section .section-link{align-self:center;flex:0 0 auto;font-size:1rem}.search-form{font-size:0;margin-bottom:2rem;max-width:100%;position:relative}.search-form .search-field{-webkit-appearance:none;border:none;border-radius:0;box-shadow:none;display:block;font-size:1rem;line-height:1.5;margin:0 auto;max-width:100%;padding:.5rem .5rem .5rem 2.4rem;vertical-align:initial;width:22.7373675443rem}.search-form .button-search{border-right:none;border-radius:2px 0 0 2px;border-top:none;font-size:1rem;margin:0;position:relative;left:auto;top:auto;vertical-align:top}.search-
 form .button-search:active{background:#006799;border-left:1px solid #006799;box-shadow:none}.search-form .button-search svg{fill:currentColor}.site-header .search-form{display:inline-block}.site-header.home .search-form .button-search,.site-main .search-form .button-search{background:transparent;border:none;border-radius:0;box-shadow:none;color:#32373c;display:block;height:45px;padding:.5rem;position:absolute;left:0;text-shadow:none;top:0}.site-header.home .search-form .button-search:focus,.site-main .search-form .button-search:focus{box-shadow:0 0 2px 1px #33b3db}.site-header.home .search-form .button-search:active,.site-main .search-form .button-search:active{background:transparent;border:none;transform:none}.site-header:not(.home) .search-form{display:block;margin:0;padding:1rem 1.5rem 1rem 1rem}@media screen and (min-width:737px){.site-header:not(.home) .search-form{padding:0}}.site-header:not(.home) .search-form .search-field{border:0;border-radius:0 2px 2px 0;display:inline-bl
 ock;font-size:1rem;padding:5px 10px;position:relative;width:calc(100% - 55px)}@media screen and (min-width:737px){.site-header:not(.home) .search-form .search-field{font-size:.64rem;width:7rem}.site-header:not(.home) .search-form .search-field+.button-search{display:inline-block;margin-bottom:0}}@media screen and (min-width:60em){.site-header:not(.home) .search-form .search-field{width:10rem}}@media screen and (max-width:737px){.site-header:not(.home) .search-form .search-field+.button-search{padding:4px 14px 1px}}.site-main .search-form .search-field{border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);padding:.5rem;width:100%}.search .site-main{margin-top:2rem;padding-top:0}.search.search-results .page-header{margin:2rem 0}.site-content{max-width:none;padding:0}nav .nav-links{text-align:center}nav .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px}nav .nav-links .page-numbers.dots,nav .nav-links .page-numbers.ne
 xt,nav .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}nav .nav-links .page-numbers.dots{cursor:inherit}nav .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.site-main{margin:0 auto;max-width:960px;padding:3.0517578125rem 1.5625rem}@media screen and (min-width:737px){.site-main{padding:3.0517578125rem 10px}}.single .site-main,.site-main.single{padding:0}@media screen and (min-width:737px){.single .site-main,.site-main.single{padding:0 10px 3.0517578125rem}}.page .site-main,.site-main.page{padding-top:0}.site-main .page-title{font-size:1.5625rem;font-weight:400}.site-main .no-results{margin:0 auto;max-width:35.527136788rem;padding:0 2rem}@keyframes favme-anime{0%{-webkit-text-stroke-color:transparent;font-size:1rem;opacity:1}25%{-webkit-text-stroke-width:1px;-webkit-text-stroke-color:#dc3232;color:#fff;font-size:.8rem;opacity:.6}75%{-webkit-text-stroke-width:1px;-webkit-text-stroke-color:#dc3232;color:#fff;font-size:1.42875rem;opacity:.6}t
 o{-webkit-text-stroke-color:transparent;font-size:1.25rem;opacity:1}}@keyframes favme-hover{0%{font-size:1.42875rem}80%{font-size:1.25rem}}.plugin-favorite{height:36px;text-align:center;vertical-align:top;width:36px}.plugin-favorite .plugin-favorite-heart{align-items:center;background:none;border:0;border-radius:0;box-shadow:none;color:#cbcdce;cursor:pointer;display:flex;font-size:1.25rem;height:100%;justify-content:center;line-height:1;margin:0;outline:none;padding:0;transition:all .2s ease}.plugin-favorite .plugin-favorite-heart.favorited{color:#dc3232}.plugin-favorite .plugin-favorite-heart:hover{animation:favme-hover .3s infinite alternate}.plugin-favorite .plugin-favorite-heart:focus{outline:thin dotted}.plugin-favorite .plugin-favorite-heart:focus,.plugin-favorite .plugin-favorite-heart:hover{text-decoration:none}.plugin-favorite .plugin-favorite-heart:after{content:"\f487";font-family:dashicons;vertical-align:top}.plugin-favorite .plugin-favorite-heart.is-animating{
 animation:favme-anime .3s}.plugin-banner{background-position:50% 50%;background-repeat:no-repeat;background-size:100%;display:inline-block;font-size:0;line-height:0;margin:0 auto 1.143rem;padding-top:32.38342%;vertical-align:middle;width:100%}@media screen and (min-width:60em){.plugin-banner{margin-top:1.5625rem}}@keyframes hideAnimation{to{visibility:hidden}}.categorization .help{color:#999;display:inline-block;font-size:.8rem;margin-top:0}.categorization label{display:block;font-weight:700}.categorization input{width:100%}.categorization .success-msg{background:#eff7ed;border:solid #64b450;border-width:0 5px 0 0;font-size:.8rem;margin-right:1rem;opacity:0;overflow:auto;padding:.1rem .6rem .2rem;position:relative;transition:visibility 0s,opacity .5s linear;-webkit-user-select:none;user-select:none;visibility:hidden}.categorization .success-msg.saved{animation:hideAnimation 0s ease-in 5s;animation-fill-mode:forwards;opacity:1;visibility:visible}.plugin-changelog,.plugin-changelog co
 de{font-size:.8rem}.plugin-changelog h4{margin-top:0}.plugin-developers .contributors-list{font-size:0}.plugin-developers .contributors-list li{display:inline-block;font-size:1rem;margin-left:4%;vertical-align:top;width:48%}.plugin-developers .contributors-list li:nth-of-type(2n){margin-left:0}.plugin-faq h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;letter-spacing:.01rem;padding:0;text-transform:uppercase;text-transform:inherit}.plugin-faq dl{border-bottom:1px solid #eee}.plugin-faq dt{border-top:1px solid #eee;cursor:pointer;font-size:1rem;font-weight:600;padding:1rem 0}.plugin-faq dt:before{content:"\f347";float:left;font-family:dashicons;margin:0 1rem}.plugin-faq dt.open:before{content:"\f343"}.plugin-faq dt .button-link{display:inherit;text-align:inherit}.plugin-faq dt .button-link.no-focus{box-shadow:none;outline:none}.plugin-faq dt h3{color:#0073aa;display:inline;margin-bottom:0;margin-top:0;text-decoration:underline;text-tra
 nsform:none}.plugin-faq dt h3 button{all:inherit;max-width:calc(100% - 60px)}.plugin-faq dd{display:none;margin:0 0 1rem}.no-js .plugin-faq dd{display:block}.plugin-faq dd p{margin:0}.plugin-faq dd p+p{margin-top:1rem}.image-gallery{-webkit-user-select:none;user-select:none}.image-gallery-content{position:relative}.image-gallery-content .image-gallery-left-nav,.image-gallery-content .image-gallery-right-nav{border-color:#eee;display:none;font-size:3.0517578125rem;height:100%;position:absolute;top:0;transition:background .1s ease,border .1s ease;z-index:4}@media (max-width:768px){.image-gallery-content .image-gallery-left-nav,.image-gallery-content .image-gallery-right-nav{font-size:3.4em}}@media (min-width:768px){.image-gallery-content .image-gallery-left-nav:hover,.image-gallery-content .image-gallery-right-nav:hover{background:#fff;border:1px solid #eee;opacity:.8}}.image-gallery-content .image-gallery-left-nav:before,.image-gallery-content .image-gallery-right-nav:before{font-fam
 ily:dashicons;position:relative}.image-gallery-content .image-gallery-left-nav{right:0}.image-gallery-content .image-gallery-left-nav:before{content:"\f345"}.image-gallery-content .image-gallery-left-nav:hover{margin-right:-1px}.image-gallery-content .image-gallery-right-nav{left:0}.image-gallery-content .image-gallery-right-nav:before{content:"\f341"}.image-gallery-content .image-gallery-right-nav:hover{margin-left:-1px}.image-gallery-content:hover .image-gallery-left-nav,.image-gallery-content:hover .image-gallery-right-nav{display:block}.image-gallery-slides{border:1px solid #eee;line-height:0;overflow:hidden;position:relative;white-space:nowrap}.image-gallery-slide{right:0;position:absolute;top:0;width:100%}.image-gallery-slide.center{position:relative}.image-gallery-slide .image-gallery-image{margin:0}.image-gallery-slide img{display:block;margin:0 auto}.image-gallery-slide .image-gallery-description{background:#f5f5f5;color:#32373c;font-size:.8rem;line-heig
 ht:1.5;padding:10px 20px;white-space:normal}@media (max-width:768px){.image-gallery-slide .image-gallery-description{font-size:.8rem;padding:8px 15px}}.image-gallery-thumbnails{background:#fff;margin-top:5px}.image-gallery-thumbnails .image-gallery-thumbnails-container{cursor:pointer;text-align:center;white-space:nowrap}.image-gallery-thumbnail{border:1px solid #eee;display:table-cell;margin-left:5px;max-height:100px;overflow:hidden}.image-gallery-thumbnail .image-gallery-image{margin:0}.image-gallery-thumbnail img{vertical-align:middle;width:100px}@media (max-width:768px){.image-gallery-thumbnail img{width:75px}}.image-gallery-thumbnail:hover{box-shadow:0 1px 8px rgba(0,0,0,.3)}.image-gallery-thumbnail.active{border:1px solid #337ab7}.image-gallery-thumbnail-label{color:#222;font-size:1em}@media (max-width:768px){.image-gallery-thumbnail-label{font-size:.8em}}.image-gallery-index{background:rgba(0,0,0,.4);bottom:0;color:#fff;line-height:1;padding:10px 20px;position:absolute;left:0;
 z-index:4}.plugin-reviews{list-style-type:none;margin:0;padding:0}.plugin-reviews .plugin-review{border-bottom:2px solid #eee;margin:2rem 0 1rem;padding-bottom:1rem}.plugin-reviews .plugin-review:first-child{margin-top:0}.plugin-reviews .plugin-review .header-top{display:flex}.plugin-reviews .plugin-review .header-top .wporg-ratings{flex-shrink:0}.plugin-reviews .plugin-review .header-bottom{display:flex;margin-bottom:12px}.plugin-reviews .review-avatar{display:none}.plugin-reviews .review,.plugin-reviews .review-author,.plugin-reviews .wporg-ratings{display:inline-block;vertical-align:top}.plugin-reviews .review-header{margin:0 0 .5rem}.plugin-reviews .review-title{font-size:1rem;font-weight:600;letter-spacing:.01rem;line-height:1.25;margin:0 12px 8px 0;text-transform:inherit}.plugin-reviews .review-author,.plugin-reviews .review-date,.plugin-reviews .review-replies{font-size:.9em;line-height:1.25}.plugin-reviews .review-date,.plugin-reviews .review-replies{color:#999;font-size:.9e
 m;margin-right:12px}.plugin-reviews .review-replies:before{content:"•";margin-left:12px}@media screen and (min-width:737px){.plugin-reviews .review-avatar{display:inline-block;vertical-align:top}.plugin-reviews .review-avatar .avatar{margin-left:1rem}.plugin-reviews .review{width:calc(100% - 60px - 1rem)}.plugin-reviews .review-header{margin:0}.plugin-reviews .review-author,.plugin-reviews .review-date,.plugin-reviews .review-replies{line-height:1}}.reviews-link{display:inline-block;font-size:.8rem;margin-top:.5rem;text-decoration:none}.reviews-link:after{content:"\f341";float:left;font-family:dashicons;padding-right:5px;position:relative;top:1px;vertical-align:text-top}.plugin-screenshots{list-style-type:none;margin:0;padding:0}.plugin-screenshots h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0;text-transform:inherit}.plugin-screenshots .image-gallery-content{display:table;width:100%}.plugin-screenshots .image-gallery-sli
 des{display:table-cell;max-height:600px}.plugin-screenshots .image-gallery-image img{max-height:550px}.plugin-screenshots .image-gallery-thumbnail{vertical-align:top}.plugin-screenshots .image-gallery-thumbnail img{max-height:100px}.plugin-screenshots .image-gallery-thumbnails{overflow:hidden}.download-history-stats td{text-align:left}.previous-versions{max-width:60%}@media screen and (min-width:737px){.previous-versions{height:30px;vertical-align:top}}hr{margin:2.5rem auto}.section h1,.section h2,.section h3{font-size:1rem;font-weight:600;letter-spacing:.01rem;text-transform:uppercase}.section h1:nth-child(2),.section h2:nth-child(2),.section h3:nth-child(2){margin-top:0}.section h4,.section h5,.section h6{font-size:.8rem;font-weight:600;letter-spacing:.05rem;text-transform:uppercase}.section h4:nth-child(2),.section h5:nth-child(2),.section h6:nth-child(2){margin-top:0}.section h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0;text-transform:in
 herit}.type-plugin .plugin-notice{margin-top:0}.type-plugin .plugin-header{border-bottom:0;padding:1.143rem 1.5625rem}.type-plugin .plugin-header .plugin-actions{float:left;margin-inline-start:1rem}.type-plugin .plugin-header .plugin-actions div{display:inline-block;text-align:center}.type-plugin .plugin-header .plugin-title{clear:none;font-size:1.5625rem;font-weight:400;margin:0}.type-plugin .plugin-header .plugin-title a{color:inherit;text-decoration:none}.type-plugin .plugin-header .byline{color:#78848f}.type-plugin .plugin-banner+.plugin-header{padding-top:0}.type-plugin .tabs{border-bottom:2px solid #eee;list-style:none;margin:0}.type-plugin .tabs li{border:2px solid transparent;color:#0073aa;display:inline-block;font-size:.8rem;margin-bottom:-2px;transition:background .2s ease}.type-plugin .tabs li a{background:#fff;border:0;display:block;padding:.64rem 1.25rem;text-decoration:none}.type-plugin .tabs li a.active,.type-plugin .tabs li a:hover{background:#eee}.type-plugin .tabs 
 li.active,.type-plugin .tabs li:hover{border:2px solid #eee;padding-bottom:0!important}@media screen and (max-width:34em){.type-plugin .tabs{border-top:2px solid #eee}.type-plugin .tabs li{display:block;margin-bottom:1px}.type-plugin .tabs li,.type-plugin .tabs li.active,.type-plugin .tabs li:hover{border:none;border-bottom:1px solid #eee}}.type-plugin .entry-content{max-width:48rem;padding:0 1.5625rem}@media screen and (min-width:737px){.type-plugin .entry-content{float:right;padding:0;width:65%}}.type-plugin .entry-content>div,.type-plugin .entry-content>div~button{border:0;display:none}.type-plugin .entry-content a:not(.button,.dashicons){text-decoration:underline}.type-plugin .entry-content ol>li>p,.type-plugin .entry-content ul>li>p{margin:0}.type-plugin .entry-content #admin{display:block!important}.type-plugin .plugin-blocks-list{list-style:none;margin-right:0}.type-plugin .plugin-blocks-list .plugin-blocks-list-item{display:grid;grid-template-columns:auto 1
 fr;margin-bottom:1.25rem}.type-plugin .plugin-blocks-list .block-icon{border:1px solid #eee;border-radius:2px;display:inline-block;height:3.5rem;margin-left:1rem;padding:1.143rem;width:3.5rem}.type-plugin .plugin-blocks-list .block-icon.dashicons{color:inherit}.type-plugin .plugin-blocks-list .block-icon svg{fill:currentColor;height:16px;width:16px}.type-plugin .plugin-blocks-list .block-title{align-self:center;font-weight:700}.type-plugin .plugin-blocks-list .has-description .block-icon{grid-row:1/span 2}.type-plugin .plugin-blocks-list .has-description .block-title{margin-bottom:.4096rem}.type-plugin .entry-meta{padding:0 1.5625rem}.type-plugin span#description,.type-plugin span#developers,.type-plugin span#installation,.type-plugin span#reviews{position:fixed}.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers,.type-plugin span#installation:target~#section-links .tabs li#tabli
 nk-installation,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews{background:#fff;border:2px solid #eee;border-bottom:0;padding-bottom:2px}@media screen and (max-width:34em){.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced.active,.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced:hover,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers.active,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers:hover,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation.active,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation:hover,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#adva
 nced:not(.displayed)~#section-links .tabs li#tablink-description.active,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description:hover,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews.active,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews:hover{padding-bottom:2px!important}}.type-plugin span#section-links{display:flex;flex-flow:row wrap}.type-plugin span#section-links .tabs{flex:1 1 auto}@media screen and (max-width:34em){.type-plugin span#section-links{display:block}}.type-plugin #link-support{align-self:flex-end;border-bottom:2px solid #eee;flex:0 0 auto;font-size:.9rem;height:2rem}.type-plugin #link-support a:before{content:"\f125";display:inline-block;font-family:dashicons;font-size:1.2em;margin-left:.4em;max-height:1em;vertical-align:top}@media screen and (max-width:737px){.type-plugin #link-support{paddin
 g-left:20px}}@media screen and (max-width:34em){.type-plugin #link-support{border-bottom:0;display:block;margin-right:20px;margin-top:1.5rem;width:100%}}.type-plugin span#developers:target~.entry-content #tab-changelog,.type-plugin span#developers:target~.entry-content #tab-developers,.type-plugin span#developers:target~.entry-content #tab-developers .plugin-development,.type-plugin span#developers:target~.entry-content #tab-developers~button,.type-plugin span#installation:target~.entry-content #tab-installation,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #blocks,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #faq,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #screenshots,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-conte
 nt #tab-description,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers~button,.type-plugin span#reviews:target~.entry-content #tab-reviews{display:block}.type-plugin span#developers:target~.entry-content #tab-developers .plugin-contributors,.type-plugin span#installation:target~.entry-meta .plugin-contributors,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers .plugin-development,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-meta .plugin-contributors,.type-plugin span#reviews:target~.entry-meta .plugin-contributors,.type-plugin span#reviews:target~.entry-meta .plugin-donate,.type-plugin span#reviews:target~.entry-meta .plugin-meta,.type-plug
 in span#reviews:target~.entry-meta .plugin-support{display:none}@media screen and (min-width:737px){.type-plugin .entry-content,.type-plugin .entry-meta,.type-plugin .plugin-header{padding-right:0;padding-left:0}.type-plugin .entry-meta{float:left;width:30%}}.plugin-adopt-me{background:#e6f4fa;font-size:.8rem;margin-top:36px;padding:12px}.plugin-adopt-me .widget-title{margin-top:0}.plugin-adopt-me p{margin-bottom:0}.widget.plugin-categorization{margin-top:2rem}.widget.plugin-categorization .widget-head{column-gap:12px;display:flex;flex-flow:row wrap;justify-content:space-between}.widget.plugin-categorization .widget-head h2{flex:1 1 auto;font-size:1rem;font-weight:700;margin-bottom:.2rem;margin-top:0}.widget.plugin-categorization .widget-head a{flex:0 0 auto;font-size:.8rem;line-height:2;text-align:left}.widget.plugin-categorization .widget-head a[href=""]{display:none}.widget.plugin-categorization .widget-head a:after{content:"\f504";font-family:dashicons;margin
 -right:2px}.widget.plugin-categorization p{font-size:.7rem;margin-top:.5rem}.widget.plugin-categorization~.plugin-meta li:first-child{border-top:1px solid #eee}.committer-list,.support-rep-list{font-size:.8rem;list-style:none;margin:0}.committer-list li,.support-rep-list li{padding-bottom:.5rem}.committer-list li .remove,.support-rep-list li .remove{color:red;visibility:hidden}.committer-list li:hover .remove,.support-rep-list li:hover .remove{visibility:visible}.committer-list .avatar,.support-rep-list .avatar{float:right;margin-left:10px}.committer-list .spinner,.support-rep-list .spinner{position:relative}.committer-list .spinner:after,.support-rep-list .spinner:after{background:url(/wp-admin/images/spinner.gif) no-repeat 50%;background-size:20px 20px;content:"";display:block;height:20px;margin:-10px 0 0 -10px;position:absolute;left:-50%;top:50%;transform:translateZ(0);width:20px}@media (-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi),print{.committer-list 
 .spinner:after,.support-rep-list .spinner:after{background-image:url(/wp-admin/images/spinner-2x.gif)}}.plugin-contributors.read-more{border-bottom:2px solid #eee;max-height:200px;overflow:hidden;padding-bottom:1px}.plugin-contributors.read-more.toggled{max-height:none}.no-js .plugin-contributors.read-more{max-height:none;overflow:auto}.contributors-list{font-size:.8rem;list-style-type:none;margin:0}.contributors-list li{margin-bottom:1rem}.contributors-list .avatar{float:right;margin-left:10px}.plugin-meta{margin-top:2rem}.plugin-meta ul{font-size:.8rem;list-style-type:none;margin:0;padding:0}.plugin-meta li{border-top:1px solid #eee;display:inline-block;padding:.5rem 0;position:relative;width:100%}.plugin-meta li strong{float:left}.plugin-meta li:first-child{border-top:0}.plugin-meta .languages,.plugin-meta .tags{float:left;text-align:left}.plugin-meta .tags{width:60%}.plugin-meta .languages .popover{margin-top:8px}.plugin-meta .languages .popover-trigger{color:#0073aa;font-weight
 :600}.plugin-meta .languages .popover-trigger:hover{text-decoration:underline}.plugin-meta [rel=tag]{background:#eee;border-radius:2px;color:#000;display:inline-block;font-size:.64rem;margin:2px;max-width:95%;overflow:hidden;padding:3px 6px;position:relative;text-overflow:ellipsis;white-space:nowrap;width:auto}.plugin-meta [rel=tag]:hover{background:#f3f3f3}.plugin-meta [rel=tag]:active{background:#dfdfdf}.popover{background-color:#fff;border:1px solid #ccc;border-radius:2px;box-shadow:0 2px 10px rgba(0,0,0,.1);display:none;right:0;margin-top:10px;max-width:300px;padding:1em 1em 2em;position:absolute;width:100%;z-index:100}.popover.is-top-right{right:auto;left:0}.popover.is-visible{display:block}.popover .popover-close{bottom:.5em;color:#0073aa;font-size:small;position:absolute;left:.6em}.popover .popover-close:active,.popover .popover-close:focus,.popover .popover-close:hover{text-decoration:underline}.popover .popover-arrow{border:10px solid transparent;border-bottom:10px solid #c
 cc;border-top:none;height:0;position:absolute;left:20px;top:-10px;width:0;z-index:-1}.popover .popover-arrow:after{border:10px solid transparent;border-bottom:10px solid #fff;border-top:none;content:"";right:-10px;position:absolute;top:2px}.popover .popover-inner{text-align:right}.popover .popover-inner p:first-child{margin-top:0}.popover .popover-inner p:last-child{margin-bottom:0}.plugin-ratings{font-size:.8rem;position:relative}.plugin-ratings .reviews-link{position:absolute;left:0;top:0}.plugin-ratings .reviews-link:after{content:"\f341";font-family:dashicons;padding-right:5px;vertical-align:top}.plugin-ratings [class*=dashicons-star-]{color:#ffb900;display:inline-block;font-size:1.5625rem;height:auto;margin:0;width:auto}.plugin-ratings .ratings-list{list-style-type:none;margin:1rem 0;padding:0}.plugin-ratings .ratings-list .counter-container,.plugin-ratings .ratings-list .counter-container a{text-decoration:none;width:100%}.plugin-ratings .ratings-list .coun
 ter-label{display:inline-block;min-width:65px}.plugin-ratings .ratings-list .counter-back,.plugin-ratings .ratings-list .counter-bar{display:inline-block;height:1rem;vertical-align:middle}.plugin-ratings .ratings-list .counter-back{background-color:#ececec;width:58%;width:calc(100% - 130px)}.plugin-ratings .ratings-list .counter-bar{background-color:#ffc733;display:block}.plugin-ratings .ratings-list .counter-count{margin-right:3px}.plugin-support{font-size:.8rem}.plugin-support .counter-container{margin-bottom:1rem;position:relative}.plugin-support .counter-back,.plugin-support .counter-bar{display:inline-block;height:30px;vertical-align:middle}.plugin-support .counter-back{background-color:#ececec;width:100%}.plugin-support .counter-bar{background-color:#c7e8ca;display:block}.plugin-support .counter-count{font-size:.64rem;right:8px;position:absolute;top:8px;width:100%;width:calc(100% - 8px)}@media screen and (min-width:737px){.plugin-support .counter-count{top:5px}}.home .widget,.
 widget-area.home .widget{display:inline-block;font-size:.8rem;margin:0;vertical-align:top}@media screen and (min-width:737px){.home .widget,.widget-area.home .widget{margin-left:5%;width:30%}.home .widget:last-child,.widget-area.home .widget:last-child{margin-left:0}}.home .widget select,.widget-area.home .widget select{max-width:100%}.entry-meta .widget-title{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0}.widget-area{margin:0 auto;max-width:960px;padding:0 1.5625rem 3.0517578125rem}@media screen and (min-width:737px){.widget-area{padding:0 10px 3.0517578125rem}}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginscssstylecss"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/css/style.css</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/css/style.css   2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/css/style.css     2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -1 +1 @@
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-@charset "UTF-8";[class*=col-]{margin:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters>.row{margin-left:-2%}@media (max-width:768px){.row.gutters>.row{margin-left:0}}.row.gutters>.row>[class*=col-]{margin-left:2%}@media (max-width:768px){.row.gutters>.row>[class*=col-]{margin-left:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.3333333333%}.offset-1{margin-left:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-left:16.6666666667%}.col-3{width:25%}.offset-3{margin-left:25%}.col-4{width:33.3333333333%}.offset-4{margin-left:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-left:41.6666666667%}.col-6{width:50%}.offset-6{margin-left:50%}.col-7{width:58.3333333333%}.offset-7{
 margin-left:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-left:66.6666666667%}.col-9{width:75%}.offset-9{margin-left:75%}.col-10{width:83.3333333333%}.offset-10{margin-left:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-left:91.6666666667%}.col-12{width:100%}.offset-12{margin-left:100%}.gutters>.col-1{width:6.33333%}.gutters>.col-1:nth-child(n+13){margin-top:2%}.gutters>.offset-1{margin-left:10.33333%!important}.gutters>.col-2{width:14.66667%}.gutters>.col-2:nth-child(n+7){margin-top:2%}.gutters>.offset-2{margin-left:18.66667%!important}.gutters>.col-3{width:23%}.gutters>.col-3:nth-child(n+5){margin-top:2%}.gutters>.offset-3{margin-left:27%!important}.gutters>.col-4{width:31.33333%}.gutters>.col-4:nth-child(n+4){margin-top:2%}.gutters>.offset-4{margin-left:35.33333%!important}.gutters>.col-5{width:39.66667%}.gutters>.offset-5{margin-left:43.66667%!important}.gutters>.col-6{width:48%}.gutters>.col-6:nth-chil
 d(n+3){margin-top:2%}.gutters>.offset-6{margin-left:52%!important}.gutters>.col-7{width:56.33333%}.gutters>.offset-7{margin-left:60.33333%!important}.gutters>.col-8{width:64.66667%}.gutters>.offset-8{margin-left:68.66667%!important}.gutters>.col-9{width:73%}.gutters>.offset-9{margin-left:77%!important}.gutters>.col-10{width:81.33333%}.gutters>.offset-10{margin-left:85.33333%!important}.gutters>.col-11{width:89.66667%}.gutters>.offset-11{margin-left:93.66667%!important}.gutters>.col-12{width:98%}.gutters>.offset-12{margin-left:102%!important}@media (max-width:768px){[class*=" offset-"],[class^=offset-]{margin-left:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row [class*=col-]{margin-left:0;width:100%}.row.gutters [class*=col-]{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}.gutters .column.push-left,.push-left{margin-right:auto}.gutters .column.push-right,.push-right{margin-left:auto}.gutters .column.push-center,
 .push-center{margin-left:auto;margin-right:auto}.gutters .column.push-middle,.push-middle{margin-bottom:auto;margin-top:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-left:0}.gutters .column.push-center-sm,.push-center-sm{margin-left:auto;margin-right:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:right}.float-left{float:left}@media (max-width:768px){.float-left,.float-right{float:none}}.fixed{left:0;position:fixed;top:0;width:100%;z-index:100}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:initial}audio:not([controls]){display:none;hei
 ght:0}[hidden],template{display:none}a{background-color:initial}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sup{top:-.5em}sub{bottom:-.25em}img{border:0}figure{margin:1em 40px}hr{box-sizing:initial;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-
 webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}optgroup{font-weight:700}table{border-spacing:0}td,th{padding:0}p{margin:1rem 0}blockquote{margin:0 1.5rem}address{margin:0 0 1.5rem}pre{margin-bottom:1.6rem;padding:1.6rem}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}blockquote,q{quotes:"" ""}blockquote:after,blockquote:before,q:after,q:before{content:""}blockquote{border-left:2px solid #767676;color:#767676;margin:1rem 0;padding-left:.8rem}blockquote cite{font-size:.8rem}figure{margin:0}hr{background-color:#eee;border:0;height:2px;margin:5rem auto}img{height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{clear:both;font-family:Open Sans,sans-serif;line-height:1.5;margin:2rem 0 1rem}.h1,h1{font-size:2.44140625rem}.h1,.h2,h
 1,h2{font-weight:300}.h2,h2{font-size:1.953125rem}.h3,h3{font-size:1.5625rem;font-weight:400}.h4,h4{color:#32373c;font-size:1.25rem;font-weight:600;padding:0}.h5,h5{font-size:1rem;letter-spacing:.01rem}.h5,.h6,h5,h6{font-weight:600;text-transform:uppercase}.h6,h6{font-size:.8rem;letter-spacing:.8px}a{color:#0073aa;text-decoration:none}a:active,a:focus,a:hover{text-decoration:underline}a:focus{outline:thin dotted}a:active,a:hover{outline:0}li>a,p a{text-decoration:underline}li>a:hover,p a:hover{color:#d54e21}ol,ul{margin:0 0 1.5em 1.5em;padding:0}ul{list-style:square}ol{list-style:decimal}ol.unmarked-list,ul.unmarked-list{list-style:none;padding-left:0}li>ol,li>ul{margin-bottom:0}dt{font-weight:700}dd{margin:0 1.5em 1.5em}table{border:1px solid #eee;border-collapse:collapse;font-size:.8rem;margin:0 0 1rem;padding:0;width:100%}table thead{background:#32373c;color:#fff}table td,table th{border:1px solid #eee;font-weight:400;margin:0;padding:.4rem;text-align:left;vertical-al
 ign:top}table tbody tr:nth-child(2n){background:#f7f7f7}html{font-size:100%}body,button,input,select,textarea{color:#32373c;font-family:Open Sans,sans-serif;font-size:100%;line-height:1.5}@media screen and (min-width:737px){html{font-size:1.125rem}}cite,dfn,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:.9375rem;line-height:1.6;margin-bottom:1.6em;max-width:100%;overflow:auto;padding:1.6em;word-wrap:normal}code,kbd,tt,var{font-family:Monaco,Consolas,Andale Mono,DejaVu Sans Mono,monospace;font-size:.9375rem;-webkit-hyphens:none;hyphens:none}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}h1.title{color:#0073aa;font-size:.8rem;font-weight:600;letter-spacing:.05rem;text-transform:uppercase}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.screen-r
 eader-text:focus{background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px #0009;clip:auto!important;color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-content[tabindex="-1"]:focus{outline:0}.no-js .hide-if-no-js{display:none}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}@media screen and (max-width:480px){.alignleft,.alignright{display:block;float:none;margin-left:auto;margin-right:auto}}.button,.button-primary,.button-secondary,.plugin-upload-form .button-primary{-webkit-appearance:none;border:1px solid;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:.8rem;height:1.5625rem;line-height:1;margin:0;padding:0 .8rem;text-decoration:none;white-space:nowrap}butto
 n::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{border:0;padding:0}.button-group.button-xl .button,.button.button-xl{font-size:1rem;height:2.44140625rem;line-height:1;padding:0 1.5rem}.button-group.button-large .button,.button.button-large{height:1.953125rem;line-height:1;padding:0 1rem}.button-group.button-small .button,.button.button-small{font-size:.64rem;height:1.25rem;line-height:1;padding:0 .5rem}a.button,a.button-primary,a.button-secondary{line-height:1.5625rem}.button-group.button-large a.button,a.button.button-large{line-height:1.953125rem}.button-group.button-xl a.button,a.button.button-xl{line-height:2.44140625rem}.button-group.button-small a.button,a.button.button-small{line-height:1.25rem}.button:active,.button:focus{outline:none}.button.hidden{display:none}input[type=reset],input[type=reset]:active,input[type=reset]:focus,input[type=reset]:hover{background:none;border:none;box-shadow:none
 ;padding:0 2px 1px;width:auto}.button,.button-secondary,.button:visited{background:#f7f7f7;border-color:#ccc;box-shadow:0 1px 0 #ccc;color:#555;vertical-align:top}p .button{vertical-align:initial}.button-secondary:focus,.button-secondary:hover,.button.focus,.button.hover,.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#23282d}.button-link:focus,.button-secondary:focus,.button.focus,.button:focus{border-color:#5b9dd9;box-shadow:0 0 3px #0073aacc}.button-secondary:active,.button.active,.button.active:hover,.button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px #00000080;transform:translateY(1px)}.button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px #00000080,0 0 3px #0073aacc}.button-disabled,.button-secondary.disabled,.button-secondary:disabled,.button-secondary[disabled],.button.disabled,.button:disabled,.button[disabled]{background:#f7f7f7!important;border-color:#ddd!important;box-shadow:none!important;color:#a0a5
 aa!important;cursor:default;text-shadow:0 1px 0 #fff!important;transform:none!important}.button-link,input[type=submit].button-link{background:none;border:0;border-radius:0;box-shadow:none;cursor:pointer;margin:0;outline:none;padding:0}.button-link:focus{outline:1px solid #5b9dd9}.button-primary,.download-button,.plugin-upload-form .button-primary{text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.button-primary,.button-primary:visited,.download-button,.download-button:visited,.plugin-upload-form .button-primary,.plugin-upload-form .button-primary:visited{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary.hover,.button-primary:focus,.button-primary:hover,.download-button.focus,.download-button.hover,.download-button:focus,.download-button:hover,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary.hover,.plugin-upload-form 
 .button-primary:focus,.plugin-upload-form .button-primary:hover{background:#008ec2;border-color:#006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary:focus,.download-button.focus,.download-button:focus,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.button-primary.active,.button-primary.active:focus,.button-primary.active:hover,.button-primary:active,.download-button.active,.download-button.active:focus,.download-button.active:hover,.download-button:active,.plugin-upload-form .button-primary.active,.plugin-upload-form .button-primary.active:focus,.plugin-upload-form .button-primary.active:hover,.plugin-upload-form .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.button-primary.disabled,.button-primary:disabled,.button-primary[disabled],.download-button.disabled,.download-button:disabled,.download-button[d
 isabled],.plugin-upload-form .button-primary.disabled,.plugin-upload-form .button-primary:disabled,.plugin-upload-form .button-primary[disabled]{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 #0000001a!important}.button-primary.button.button-hero,.download-button.button.button-hero,.plugin-upload-form .button-primary.button.button-hero{box-shadow:0 2px 0 #006799}.button-primary.button.button-hero.active,.button-primary.button.button-hero.active:focus,.button-primary.button.button-hero.active:hover,.button-primary.button.button-hero:active,.download-button.button.button-hero.active,.download-button.button.button-hero.active:focus,.download-button.button.button-hero.active:hover,.download-button.button.button-hero:active,.plugin-upload-form .button-primary.button.button-hero.active,.plugin-upload-form .button-primary.button.button-hero.active:focus,.plugin-upload-form .button-primary.but
 ton.button-hero.active:hover,.plugin-upload-form .button-primary.button.button-hero:active{box-shadow:inset 0 3px 0 #006799}.button-primary-disabled{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 #0000001a!important}.button-group{display:inline-block;font-size:0;position:relative;vertical-align:middle;white-space:nowrap}.button-group>.button{border-radius:0;display:inline-block;margin-right:-1px;z-index:10}.button-group>.button-primary{z-index:100}.button-group>.button:hover{z-index:20}.button-group>.button:first-child{border-radius:3px 0 0 3px}.button-group>.button:last-child{border-radius:0 3px 3px 0}.button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:737px){.button,.button.button-large,.button.button-small,.plugin-upload-form .button-primary{font-size:14px;height:auto;line-height:normal;margin-bottom:4px;padding:6px 14px;vertical-al
 ign:middle}}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.committer-list li:after,.committer-list li:before,.entry-content:after,.entry-content:before,.home-below:after,.home-below:before,.plugin-meta:after,.plugin-meta:before,.plugin-upload-form .category-checklist:after,.plugin-upload-form .category-checklist:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before,.support-rep-list li:after,.support-rep-list li:before,.type-plugin .plugin-header:after,.type-plugin .plugin-header:before,.type-plugin:after,.type-plugin:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.committer-list li:after,.entry-content:after,.home-below:after,.plugin-meta:after,.plugin-upload-form .category-checklist:after,.site-content:after,.site-footer:after,.site-header:after,.support-rep-list li:after,.type-plugin .plugin-header:after,.type-plugin:after{clear:bot
 h}p.subheading{color:#82878c;font-weight:300;margin:-.4rem auto 2rem;text-align:center}p.intro,p.subheading{font-size:1.25rem}p.aside{font-size:.8rem}p.note{font-size:.64rem;letter-spacing:.01rem;max-width:18.1898940355rem}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px #00000012;color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,inpu
 t[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px #1e8cbecc}input[type=number]{height:28px}input[type=checkbox],input[type=radio]{height:16px;outline:0;width:16px}input[type=checkbox]:checked:before{margin:-3px 0 0 -4px}input[type=radio]:checked+label:before{color:#82878c}input[type=radio]:checked:before{height:6px;margin:4px;width:6px}input[type=reset]:active,input[type=reset]:hover{color:#00a0d2}input[type=search]{-webkit-appearance:textfield}input,select,textarea{font-size:14px;padding:3px 5px}textarea.code{line-height:1.4;padding:4px 6px 1px}label{vertical-align:middle}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{padding:1px 6px;width:50px}input[type=number].small-text{width:65px}input.tiny-text{width
 :35px}input[type=number].tiny-text{width:45px}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}input[type=checkbox]{-webkit-appearance:none;padding:10px}input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}input[type=radio]:checked:before{height:9px;line-height:16px;margin:7px;vertical-align:middle;width:9px}input,textarea{font-size:16px}input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{display:inline;margin:0 3px;max-width:55px;padding:3px 6px;width:auto}input.regular-text{width:100%}label{font-size:14px}fieldset label{display:block}}a.button:active,a.button:focus,a.button:hover{text-decoration:
 none}.notice p{font-size:.8rem;margin:.5em 0;padding:2px}.avatar{border-radius:50%;vertical-align:middle}.locale-banner{background:#c7e8ca;font-size:.8rem;padding:.5rem;text-align:center}@media (min-width:67rem){.locale-banner{margin:1rem auto;max-width:960px}}.locale-banner a{text-decoration:underline}.block-validator .block-validator__plugin-form label{display:block;margin-bottom:.8rem}.block-validator .block-validator__plugin-input-container{display:flex;max-width:34rem}.block-validator .block-validator__plugin-input{flex:1}.block-validator .block-validator__plugin-submit{flex:0;margin-left:.73152rem}@media (max-width:36rem){.block-validator .block-validator__plugin-input-container{display:block}.block-validator .block-validator__plugin-input{width:100%}.block-validator .block-validator__plugin-submit{margin-left:0;margin-top:.73152rem}}.block-validator .notice details,.block-validator .notice p{font-size:1rem;margin:.73152rem 0}.block-validator .notice details p{font-size:.8rem;
 margin-left:1rem}.block-validator .notice code{font-size:1em}.block-validator .notice summary{display:list-item}.block-validator figure{border:1px solid #aaa;display:inline-block;padding:1em}.block-validator .test-screenshot{text-align:center}input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px #00000012;color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:
 focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px #1e8cbecc;color:#111}input[type=email],input[type=url]{direction:ltr}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],select{padding:6px 10px}input[type=number]{height:40px;line-height:inherit}input[type=checkbox],input[type=radio]{-webkit-appearance:none;background:#fff;border:1px solid #b4b9be;box-shadow:inset 0 1px 2px #0000001a;clear:none;color:#555;cursor:pointer;display:inline-block;height:25px;line-height:0;margin:-4px 4px 0 0;min-width:16px;padding:0!important;text-align:center;transition:border-color .05s ease-in-out;vertical-align:middle;width:25px}input[type=checkbox]{padding:10px}input[type=radio]{border-radius:50%;line-height:10px;margin-right:4px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{di
 splay:inline-block;float:left;font:normal 21px/1 dashicons;vertical-align:middle;width:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none}input[type=checkbox]:checked:before{color:#1e8cbe;content:"\f147";font:normal 30px/1 dashicons;margin:-3px -5px}input[type=radio]:checked:before{background-color:#1e8cbe;border-radius:50px;content:"•";font-size:24px;height:9px;line-height:16px;margin:7px;text-indent:-9999px;vertical-align:middle;width:9px}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{border-radius:0;font-size:16px}textarea{line-height:1.4;overflow:auto;padding:2px 6px;resize:vertical}input[type=file]{padding:3px 0}label{cursor:pointer}input.readonly,i
 nput[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}:-moz-placeholder{color:#a9a9a9}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:#ffffff80;border-color:#dededebf;box-shadow:inset 0 1px 2px #0000000a;color:#33333380}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:none;box-shadow:none}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}fieldset label,label{vertical-align:middle}@media screen and (min-width:737px){input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{padding:3px 5px}input[type=number]{height:28px}input[type=checkbox]{padding:0}input[ty
 pe=checkbox]:checked:before{font:normal 21px/1 dashicons;margin:-3px 0 0 -4px}input[type=checkbox],input[type=radio]{height:16px;width:16px}input[type=radio]:checked:before{height:6px;margin:4px;width:6px}input,select,textarea{font-size:14px;padding:3px 5px}}.infinite-scroll .posts-navigation,.infinite-scroll.neverending .site-footer{display:none}.infinity-end.neverending .site-footer{display:block}.notice{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 #0000001a;font-size:.8rem;margin:1em 0;padding:1px 12px}.notice p,.notice ul{margin:.5em 0;padding:2px}.notice p a,.notice ul a{border-bottom:0}.notice pre{white-space:pre-wrap}.notice ul{list-style:none;margin:.5em}.notice.notice-alt{box-shadow:none}.notice.notice-large{padding:10px 20px}.notice.notice-success{border-left-color:#46b450}.notice.notice-success.notice-alt{background-color:#ecf7ed}.notice.notice-warning{border-left-color:#ffb900}.notice.notice-warning.notice-alt{background-color:#fff8e5}.notice.notice-
 error{border-left-color:#dc3232}.notice.notice-error.notice-alt{background-color:#fbeaea}.notice.notice-info{border-left-color:#00a0d2}.notice.notice-info.notice-alt{background-color:#e5f5fa}.notice.hidden{display:none}.plugin-upload-form fieldset{border:none;margin:0;padding:0}.plugin-upload-form legend{margin:1rem 0}.plugin-upload-form .category-checklist{list-style-type:none;margin:0 0 2rem}.plugin-upload-form .category-checklist li{float:left;padding:.5rem 0;width:50%}@media screen and (min-width:48em){.plugin-upload-form .category-checklist li{padding:0}.plugin-upload-form .category-checklist label{font-size:.8rem}.plugin-upload-form label.button{line-height:1.8}}.plugin-upload-form .plugin-file{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.plugin-upload-form .plugin-file:focus+label{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.plugin-queue-message dialog.slug-change input[type=text]{font-family:monospace;font-size:1.2em;width:20em}.error-404
  .page-content,.error-404 .page-title{text-align:center}.error-404 .page-content .logo-swing{height:10rem;margin:6rem auto;position:relative;text-align:center;width:10rem}.error-404 .page-content .logo-swing .wp-logo{left:0;max-width:none;position:absolute;top:0;width:10rem}@keyframes hinge{10%{height:180px;transform:rotate(0deg);width:180px}15%{height:185px;transform:rotate(0deg);width:185px}20%{height:180px;transform:rotate(5deg);width:180px}40%{animation-timing-function:ease-in-out;transform-origin:top left}60%{animation-timing-function:ease-in-out;transform:rotate(40deg);transform-origin:top left}40%,80%{animation-timing-function:ease-in-out;opacity:1;transform:rotate(60deg);transform-origin:top left}to{opacity:0;transform:translate3d(0,700px,0)}}.hinge{animation-duration:2s;animation-name:hinge}.comments-area{margin-top:5em}.comments-area>:last-child{margin-bottom:0}.comments-area .comment-list+.comment-respond{border-top:1px solid #eaeaea}.comments-area .comment-list+.comme
 nt-respond,.comments-area .comment-navigation+.comment-respond{padding-top:1.6em}.comments-area .comments-title{margin-bottom:1.3333em}.comments-area .comment-list{list-style:none;margin:0}.comments-area .comment-list .pingback,.comments-area .comment-list .trackback,.comments-area .comment-list article{border-top:1px solid #eaeaea;padding:1.6em 0}.comments-area .comment-list article:not(:only-child){padding-bottom:0}.comments-area .comment-list article+.comment-respond{padding-bottom:1.6em}.comments-area .comment-list .children{list-style:none;margin:0}.comments-area .comment-list .children>li{padding-left:.8em}.comments-area .comment-list .alt{background:none}.comments-area .comment-author{color:#999;margin-bottom:.4em}.comments-area .comment-author .avatar{float:left;height:24px;margin-right:.8em;width:24px}.comments-area .comment-metadata,.comments-area .pingback .edit-link{color:#999;line-height:1.5}.comments-area .comment-metadata a,.comments-area .pingback .edit-link a{col
 or:#777}.comments-area .comment-metadata{font-size:.8rem;margin-bottom:1.6em}.comments-area .comment-metadata .edit-link,.comments-area .pingback .edit-link{margin-left:1em}.comments-area .pingback .edit-link:before{top:5px}.comments-area .comment-content ol,.comments-area .comment-content ul{margin:0 0 1.6em 1.3333em}.comments-area .comment-content li>ol,.comments-area .comment-content li>ul,.comments-area .comment-content>:last-child{margin-bottom:0}.comments-area .comment-content .reply{font-size:12px}.comments-area .comment-content .reply a{border:1px solid #eaeaea;color:#707070;display:inline-block;font-weight:700;line-height:1;margin-top:2em;padding:.4167em .8333em;text-transform:uppercase}.comments-area .comment-content .reply a:focus,.comments-area .comment-content .reply a:hover{border-color:#333;color:#333;outline:0}.comments-area .comment-reply-title a{font-weight:inherit}.comments-area .comment-form label{display:block;font-size:.8rem;font-weight:700;letter-spac
 ing:.04em;line-height:1.5}.comments-area .comment-form input[type=email],.comments-area .comment-form input[type=text],.comments-area .comment-form input[type=url],.comments-area .comment-form textarea{width:100%}.comments-area .comment-awaiting-moderation,.comments-area .comment-notes,.comments-area .form-allowed-tags,.comments-area .logged-in-as{font-size:1rem;line-height:1.5;margin-bottom:2em}.comments-area .no-comments{border-top:1px solid #eaeaea;color:#999;font-weight:700;padding-top:1.6em}.comments-area .comment-navigation+.no-comments{border-top:0}.comments-area .form-allowed-tags code{font-family:Inconsolata,monospace}.comments-area .form-submit{margin-bottom:0}.comments-area .required{color:#c0392b}.entry-content{-webkit-hyphens:auto;hyphens:auto;word-wrap:break-word}.entry-content>p:first-child{margin-top:0}.entry-content [class*=col-]~h1,.entry-content [class*=col-]~h2,.entry-content [class*=col-]~h3,.entry-content [class*=col-]~h4,.entry-content [class*=col-]~h5,.ent
 ry-content [class*=col-]~h6{clear:none}.entry-header{position:relative}.entry-header .sticky-post{color:#999;font-size:.8rem;font-style:italic;position:absolute;top:-.8rem}.entry-summary{-webkit-hyphens:auto;hyphens:auto;word-wrap:break-word}body:not(.single):not(.search) .site-main .post{margin-bottom:3.0517578125rem;max-width:40em}.gallery{margin-bottom:1.5rem}.gallery .gallery-item{display:inline-block;margin:0;text-align:center;vertical-align:top;width:100%}.gallery.gallery-columns-2 .gallery-item{max-width:50%}.gallery.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery.gallery-columns-4 .gallery-item{max-width:25%}.gallery.gallery-columns-5 .gallery-item{max-width:20%}.gallery.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery .gallery-caption{display:block}.post-navigation{margin:5em auto;padd
 ing:0}.post-navigation a{border-bottom:1px solid #eaeaea;color:#444;display:block;font-weight:600;padding:11px 0 12px;text-transform:none;width:100%}.post-navigation a:hover{color:#21759b}.post-navigation .nav-links{border-top:1px solid #eaeaea;-webkit-hyphens:auto;hyphens:auto;word-wrap:break-word}.post-navigation .meta-nav{color:#777;display:block;font-size:13px;line-height:2;text-transform:uppercase}.post-navigation .nav-next{text-align:right}.pagination .nav-links{text-align:center}.pagination .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px;text-align:center}.pagination .nav-links .page-numbers.dots,.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}.pagination .nav-links .page-numbers.dots{cursor:inherit}@media screen and (max-width:737px){.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{font-size:0;min-width:
 auto;padding:0}.pagination .nav-links .page-numbers.next:after,.pagination .nav-links .page-numbers.prev:before{background-color:#f9f9f9;display:inline-block;font-size:1rem;line-height:1.5;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.prev:before{content:"‹"}.pagination .nav-links .page-numbers.next:after{content:"›"}}.pagination .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.search-form .search-field{line-height:normal;margin:0;padding:4px 5px;vertical-align:text-bottom}.site-content{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-content{padding:0 10px 3.0517578125rem}}@media screen and (max-width:737px){.site-content .site-main{float:none;margin:0;width:auto}}.home .site-content,.page .site-content,.site-content.page{margin:auto;max-width:none;padding:0}.site-content .page-title{font-size:1.25rem;font-weight:400}.site-content .no-results{margin:0 auto 3.0517578125rem;max-w
 idth:40em;padding:0 2rem}.site-description{color:#fffc;font-size:1.25rem;font-weight:300;margin:-.4rem auto 2rem;text-align:center}.site-header{background:#0073aa;padding:1rem 0;position:relative}.site-header .site-branding{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-header .site-branding{padding:0 10px}}.site-header.home{padding:1.5625rem 1.143rem;text-align:center}.site-title a:active,.site-title a:focus,.site-title a:hover{text-decoration:none}.widget-area{font-size:.8rem}@media screen and (min-width:480px) and (max-width:768px){.widget-area{display:flex}.widget-area .widget{width:48%}}#wporg-footer{background-color:#f7f7f7;border-top:1px solid #dfdfdf;padding:22px 14px 65px}#wporg-footer,#wporg-footer .wrapper{clear:both;margin:0 auto;overflow:auto}#wporg-footer .wrapper{max-width:930px}#wporg-footer ul{float:left;margin-bottom:20px;margin-left:24px;overflow:auto;padding-left:0;width:135px}@media screen and (min-width:960px){#wporg
 -footer ul:first-child{margin-left:0}}#wporg-footer ul li{color:#bbb;font-size:14px;list-style-type:none;margin-bottom:1px}#wporg-footer ul li a{text-decoration:none;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}#wporg-footer ul li a:hover{color:#0073aa;text-decoration:underline}#wporg-footer .social-media-links .dashicons{margin-right:4px}#wporg-footer .cip{clear:both;color:#ccc;float:none;font-size:.8rem;letter-spacing:.3em;margin:35px auto 0;text-align:center;text-transform:uppercase}#wporg-footer .cip.cip-image{background:url(//s.w.org/style/images/codeispoetry.png?1) 50% no-repeat;background-size:190px 15px;height:15px;text-indent:-9999px;width:190px}@media only screen and (min-resolution:1.5dppx),only screen and (min-resolution:144dpi){#wporg-footer .cip.cip-image{background-image:url(//s.w.org/style/images/codeispoetry-2x.png?1)}}@media screen and (min-width:561px) and (max-width:959px){#wporg-footer .wrapper{max-width:600px}#wporg-footer ul{margin-left:
 2%;width:32%}#wporg-footer ul:nth-child(3n+1){margin-left:0}#wporg-footer ul:nth-child(4n){clear:both}}@media screen and (max-width:560px){#wporg-footer .wrapper{max-width:360px}#wporg-footer ul{margin-left:4%;width:48%}#wporg-footer ul:nth-child(odd){clear:both;margin-left:0}}#wporg-header{background:#23282d;height:140px;position:relative;text-align:center;width:100%}#wporg-header .wrapper{margin:0 auto;max-width:960px}#wporg-header h1{display:inline-block;margin:auto;width:303px}#wporg-header h1 a{background:url(//s.w.org/style/images/wporg-logo.svg?3) 0 no-repeat;background-size:290px 46px;display:block;height:88px;text-indent:-9999px}#wporg-header h2.rosetta{clear:none;color:#dfdfdf;font-family:Georgia,Times New Roman,serif;font-size:30px;margin:0 0 0 60px}#wporg-header h2.rosetta a{border-bottom:none;color:#dfdfdf;display:block;height:52px;line-height:22px;padding:0}#wporg-header h2.rosetta a:hover{text-decoration:none}#wporg-header #wporg-header-menu{background:#23282d;left:-7
 5%;list-style:none;margin:0;max-width:75%;min-width:200px;position:absolute;text-align:left;top:100%;transition:left .3s;z-index:100000}#wporg-header #wporg-header-menu.toggled{left:0}#wporg-header ul li{list-style-type:none;position:relative}#wporg-header ul li a{color:#eee;display:block;font-family:Open Sans,Helvetica,Arial,Liberation Sans,sans-serif;font-size:13px;font-weight:600;height:34px;line-height:34px;margin:0 4px;padding:10px 30px;text-decoration:none}#wporg-header ul li a.subcurrent{font-weight:700}@media (max-width:768px){#wporg-header ul li a{height:auto}}#wporg-header ul li a.current,#wporg-header ul li a:hover,#wporg-header ul li.current-menu-item a,#wporg-header ul li.current_page_parent a{color:#00a0d2}#wporg-header ul li#download,#wporg-header ul li.download{float:right;height:34px;margin-right:14px;overflow:hidden;padding:0 0 34px}@media screen and (max-width:767px){#wporg-header ul li#download,#wporg-header ul li.download{display:block;float:none;height:auto;mar
 gin:10px 20px 20px;padding-bottom:0}#wporg-header ul li#download a,#wporg-header ul li.download a{padding:4px 10px;text-align:center}}#wporg-header ul li#download a,#wporg-header ul li.download a{margin:0;padding:0 16px}#wporg-header ul li#download a:hover,#wporg-header ul li.download a:hover{color:#eee}#wporg-header ul li#download .uparrow,#wporg-header ul li#download.current,#wporg-header ul li#download.current-menu-item,#wporg-header ul li.download .uparrow,#wporg-header ul li.download.current,#wporg-header ul li.download.current-menu-item{display:none}#wporg-header ul li .nav-submenu{clip:rect(1px,1px,1px,1px);height:1px;left:-2px;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;z-index:99999}#wporg-header ul li .nav-submenu li a{display:inline-block;height:24px;line-height:24px;margin:0;white-space:nowrap}@media screen and (min-width:768px){#wporg-header #head-search{float:right;margin-right:14px;padding-top:30px}}#wporg-header #head-search form{border-bottom:1px 
 solid #3f3f3f;display:inline-block;margin-left:60px;width:288px}#wporg-header #head-search form input.text{background:#191e23;border:0;border-radius:0;box-sizing:initial;color:#b4b9be;float:left;font-family:Open Sans,sans-serif;font-size:12px;height:24px;margin:0;outline:none;padding:3px;vertical-align:top;width:256px}#wporg-header #head-search form input.text::-moz-placeholder{color:#eee}@media screen and (max-width:480px){#wporg-header #head-search form input.text{width:216px}}#wporg-header #head-search form .button{background:#191e23 url(//s.w.org/wp-includes/images/admin-bar-sprite.png?d=20120831) no-repeat 2px 5px;border:none;border-radius:0;box-shadow:none;float:left;height:30px;margin:0;padding:0;text-shadow:none!important;width:26px}@media screen and (max-width:480px){#wporg-header #head-search form{width:248px}}@media screen and (min-width:480px){#wporg-header #head-search form{margin-left:0}}@media screen and (min-width:768px){#wporg-header{height:120px;text-align:inherit}
 #wporg-header h1{float:left;padding-left:10px}#wporg-header h2.rosetta{float:left;margin-left:0;padding:36px 27px 0}#wporg-header #headline h2{text-rendering:optimizeLegibility}#wporg-header #wporg-header-menu{float:left;height:46px;list-style:none;margin:-15px 0 0;max-width:inherit;min-width:0;padding:0;position:static;width:100%}#wporg-header ul li{float:left;position:relative}#wporg-header ul li a{height:46px;padding:0 6px}#wporg-header ul li a.current~.uparrow{border-bottom:9px solid #f7f7f7;border-left:9px solid #0000;border-right:9px solid #0000;height:0;margin:-8px auto 0;width:0}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom:9px solid #f7f7f7;border-left:9px solid #0000;border-right:9px solid #0000;content:"";height:0;left:50%;margin:-8px 0 0 -9px;position:absolute;width:0}#wporg-header ul li .nav-submenu:hover~.uparrow,#wporg-header ul li:hover .nav-submenu~.uparrow{border-bottom:9px solid #32373c;border-lef
 t:9px solid #0000;border-right:9px solid #0000;height:0;margin:-10px auto 0;width:0}#wporg-header ul li .nav-submenu{background:#32373c;border:1px solid #32373c;border-top:0;margin-top:-1px;min-width:0}#wporg-header ul li .nav-submenu li{float:none}#wporg-header ul li .nav-submenu li a{height:34px;line-height:34px}#wporg-header .nav-menu .focus>ul,#wporg-header .nav-menu ul li:hover>ul,#wporg-header ul.nav-menu .focus>ul,#wporg-header ul.nav-menu li:hover>ul{clip:inherit;height:inherit;overflow:inherit;width:inherit}#wporg-header ul li a.current~.uparrow,#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom-color:#0073aa}}.page-download #wporg-header #download,.page-parent-download #wporg-header #download{display:none}#mobile-menu-button{background:none;border:none;box-shadow:none;display:block;float:left;font-family:dashicons;font-size:16px;font-style:normal;font-weight:400;left:10px;line-height:1;padding:1px;position:ab
 solute;text-align:center;text-decoration:inherit;text-shadow:none;top:75px;transition:color .1s ease-in;vertical-align:top;-webkit-font-smoothing:antialiased}#mobile-menu-button:before{border:none;box-sizing:border-box;color:#888;content:"\f228";display:inline-block;float:left;font:normal 50px/1 Dashicons;margin:0;outline:none;padding:3px;text-decoration:none;vertical-align:middle;-webkit-font-smoothing:antialiased}@media screen and (min-width:768px){#mobile-menu-button{display:none}}#download-mobile{background:#f7f7f7;border-bottom:1px solid #ddd}#download-mobile .wrapper{padding:20px 0;text-align:center}#download-mobile span.download-ready{font-size:1.6em;margin:0 .25em}#download-mobile a.download-button{font-size:1.6em;height:inherit;margin:10px .25em;padding:10px 15px}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}.wp-caption,embed,iframe,object{max-width:100%}.wp-caption{margin-bottom:1
 .5em}.wp-caption img[class*=wp-image-]{display:block;margin-left:auto;margin-right:auto}.wp-caption .wp-caption-text{margin:.8075em 0}.wp-caption-text{text-align:center}.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.33%}.gallery-columns-4 .gallery-item{max-width:25%}.gallery-columns-5 .gallery-item{max-width:20%}.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery-caption{display:block}.site-title{display:inline-block;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 2rem 0 0;max-width:none}.site-title a{color:#fff;font-weight:300;text-decoration:none}.site-title a:active,.site-title a:focus,.site-title a:hover{color:#fff}.site-header.home .site-title{display:inherit
 ;font-size:3.8146972656rem;margin:2rem 0 1rem}.wporg-filter-bar{--wporg--filter-bar--gap:20px;--wporg--filter-bar--color:#40464d;--wporg--filter-bar--active--background-color:#2371a6;--wporg--filter-bar--focus--border-color:#2371a6;margin:0 auto;max-width:960px;padding:40px 1.5625rem 0}.wporg-filter-bar+.site-main{margin-top:2rem;padding-top:0}.wporg-filter-bar .wporg-filter-bar__navigation{flex-grow:1;margin-bottom:var(--wporg--filter-bar--gap)}.wporg-filter-bar .wporg-filter-bar__navigation ul{display:inline-block;font-size:13px;line-height:1.538;list-style:none;margin:0}.wporg-filter-bar .wporg-filter-bar__navigation ul li{display:inline-block}.wporg-filter-bar .wporg-filter-bar__navigation ul li+li{margin-left:8px}.wporg-filter-bar .wporg-filter-bar__navigation ul a{border-radius:2px;color:var(--wporg--filter-bar--color);display:block;padding:8px 12px;text-decoration:none}.wporg-filter-bar .wporg-filter-bar__navigation ul a:focus,.wporg-filter-bar .wporg-filter-bar__navigation u
 l a:hover{text-decoration:underline}.wporg-filter-bar .wporg-filter-bar__navigation ul a:focus-visible{box-shadow:none;outline:1.5px solid var(--wporg--filter-bar--focus--border-color);outline-offset:-.5px}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active{background-color:var(--wporg--filter-bar--active--background-color);color:#fff}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:focus,.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:hover{color:#fff}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:focus-visible{box-shadow:inset 0 0 0 1.5px #fff;outline:1.5px solid var(--wporg--filter-bar--focus--border-color);outline-offset:-.5px}@media screen and (min-width:737px){.wporg-filter-bar{align-items:center;display:flex;flex-wrap:wrap;gap:var(--wporg--filter-bar--gap);justify-content:space-between;padding:40px 10px 0}.wporg-filter-bar .wporg-filter-bar__navigation{margin-bottom:0}}.archive .site-main{margin-top:2rem;padding-top:0}.a
 rchive .page-header{margin:2rem 0}dialog{border:0;box-shadow:6px 6px 6px #0003;min-height:50%;min-width:30%}@media (min-width:1280px){dialog{max-width:55%}}dialog::backdrop{background:#000;opacity:.5}dialog .close{color:inherit;cursor:pointer;position:absolute;right:1em;text-decoration:none!important;top:1em}.main-navigation{background:#0073aa;clear:both;left:0;position:absolute;top:60px;width:100%;z-index:1}.main-navigation ul{display:none;list-style:none;margin:0;padding-left:0}.main-navigation ul ul{box-shadow:0 3px 3px #0003;float:left;left:-999em;position:absolute;top:1.5em;z-index:99999}.main-navigation ul ul ul{left:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{left:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{left:auto}.main-navigation li{border-top:1px solid #fff3}.main-navigation a{color:#fffc;display:block;font-size:.8rem;padding:1rem 1rem 1rem 1.5rem;text-decorat
 ion:none}.main-navigation a.active,.main-navigation a:hover{color:#fff}@media screen and (min-width:737px){.main-navigation a.active{border-bottom:1px solid}}.main-navigation.toggled ul{display:block}.menu-toggle{-webkit-appearance:none;background:#0000;border:none;color:#fff;font-size:1.5625rem;height:3.5rem;overflow:hidden;position:absolute;right:1rem;top:-58px;width:3.5rem}.toggled .menu-toggle:before{content:"\f343"}@media screen and (min-width:737px){.menu-toggle{display:none}.main-navigation{float:right;position:relative;top:auto;width:auto}.main-navigation.toggled{padding:1px 0}.main-navigation ul{display:inline-block;font-size:0}.main-navigation ul li{border:0;display:inline-block;font-size:1rem;margin-right:1rem}.main-navigation ul li:last-of-type{margin-right:0}.main-navigation a{padding:0}}.page .entry-header{margin-top:2rem}@media screen and (min-width:737px){.page .entry-header{padding:0 2rem}}.page .entry-header .entry-title{font-size:1.5625rem;font-weight:40
 0}@media screen and (min-width:737px){.page .entry-content{padding:0 2rem}}.page .entry-content h2{font-size:1.5625rem;font-weight:400}.page .entry-content h3{font-size:1rem;font-weight:600;letter-spacing:.01rem;text-transform:uppercase}.page .entry-content section{padding:2rem 0}.page .entry-content section:first-of-type{padding-top:0}.page .entry-content section+section{border-top:2px solid #eee}.plugin-card{background-color:#f9f9f9;margin-bottom:4%;padding:15px 15px 8px;vertical-align:top}@media screen and (min-width:737px){.plugin-card{display:inline-block;margin-right:4%;width:48%}.plugin-card:nth-of-type(2n){margin-right:0}}.plugin-card .entry{display:inline-block;margin:auto;vertical-align:top}@media screen and (min-width:21em){.plugin-card .entry{width:calc(96% - 128px)}}.plugin-card .entry-title{font-size:1rem;line-height:1.3;margin:0 0 8px}.plugin-card .entry-title a{font-weight:400;word-wrap:break-word}.plugin-card .entry-excerpt{font-size:.8rem}.plugin-card .entry-excerp
 t p{margin:0}.plugin-card hr{background-color:#fff;margin:15px -15px 8px}.plugin-card footer span{display:inline-block;font-size:.73152rem;overflow:hidden;white-space:nowrap}.plugin-card footer span i{display:inline-block;font-size:1rem;margin-right:.4rem}.plugin-card footer span.last-updated{display:none}.plugin-card footer span.plugin-author{width:100%}.plugin-card footer span.active-installs{min-width:48%}.plugin-card footer .dashicons{color:#bbb;display:none;height:auto;margin:0 2px -1rem;width:auto}@media (min-width:414px){.plugin-card footer .dashicons{display:inline-block}}.entry-thumbnail{display:none;max-width:128px}.entry-thumbnail .plugin-icon{background-size:cover;height:128px;width:128px}@media screen and (min-width:21em){.entry-thumbnail{display:inline-block;margin:0 4% 0 0;vertical-align:top}.entry-thumbnail a{display:block}}.single .entry-thumbnail{display:none;float:left;height:96px;margin-right:1rem;width:96px}@media screen and (min-width:26em){.single .entry-thumb
 nail{display:block}}.single .entry-thumbnail .plugin-icon{background-size:contain!important;height:96px!important;width:96px!important}.plugin-rating{line-height:1;margin:0 10px 8px 0}.plugin-rating .wporg-ratings{display:inline-block;margin-right:5px}.plugin-rating .rating-count{color:#999;font-size:.8rem}.site-main.single .plugin-rating .rating-count{display:none}.plugin-rating .rating-count a{color:inherit;cursor:hand;text-decoration:none}[class*=dashicons-star-]{color:#ffb900}.rtl .dashicons-star-half{transform:rotateY(180deg)}.plugin-section{border-bottom:2px solid #eee;margin:0 auto 4.768371582rem;max-width:960px;padding-bottom:3.0517578125rem}.plugin-section:last-of-type{margin-bottom:0}.plugin-section .section-header{column-gap:10px;display:flex;flex-flow:row wrap;margin-bottom:2rem}.plugin-section .section-title{flex:1 1 auto;font-size:1.5625rem;font-weight:400;margin-bottom:0;margin-top:0}.plugin-section .section-link{align-self:center;flex:0 0 auto;font-size:1rem}.search-
 form{font-size:0;margin-bottom:2rem;max-width:100%;position:relative}.search-form .search-field{-webkit-appearance:none;border:none;border-radius:0;box-shadow:none;display:block;font-size:1rem;line-height:1.5;margin:0 auto;max-width:100%;padding:.5rem 2.4rem .5rem .5rem;vertical-align:initial;width:22.7373675443rem}.search-form .button-search{border-left:none;border-radius:0 2px 2px 0;border-top:none;font-size:1rem;margin:0;position:relative;right:auto;top:auto;vertical-align:top}.search-form .button-search:active{background:#006799;border-right:1px solid #006799;box-shadow:none}.search-form .button-search svg{fill:currentColor}.site-header .search-form{display:inline-block}.site-header.home .search-form .button-search,.site-main .search-form .button-search{background:#0000;border:none;border-radius:0;box-shadow:none;color:#32373c;display:block;height:45px;padding:.5rem;position:absolute;right:0;text-shadow:none;top:0}.site-header.home .search-form .button-search:focus,.site-main .s
 earch-form .button-search:focus{box-shadow:0 0 2px 1px #33b3db}.site-header.home .search-form .button-search:active,.site-main .search-form .button-search:active{background:#0000;border:none;transform:none}.site-header:not(.home) .search-form{display:block;margin:0;padding:1rem 1rem 1rem 1.5rem}@media screen and (min-width:737px){.site-header:not(.home) .search-form{padding:0}}.site-header:not(.home) .search-form .search-field{border:0;border-radius:2px 0 0 2px;display:inline-block;font-size:1rem;padding:5px 10px;position:relative;width:calc(100% - 55px)}@media screen and (min-width:737px){.site-header:not(.home) .search-form .search-field{font-size:.64rem;width:7rem}.site-header:not(.home) .search-form .search-field+.button-search{display:inline-block;margin-bottom:0}}@media screen and (min-width:60em){.site-header:not(.home) .search-form .search-field{width:10rem}}@media screen and (max-width:737px){.site-header:not(.home) .search-form .search-field+.button-search{padding:4px 14px
  1px}}.site-main .search-form .search-field{border:1px solid #ddd;box-shadow:inset 0 1px 2px #00000012;padding:.5rem;width:100%}.search .site-main{margin-top:2rem;padding-top:0}.search.search-results .page-header{margin:2rem 0}.site-content{max-width:none;padding:0}nav .nav-links{text-align:center}nav .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px}nav .nav-links .page-numbers.dots,nav .nav-links .page-numbers.next,nav .nav-links .page-numbers.prev{background:none;font-size:.9em;width:auto}nav .nav-links .page-numbers.dots{cursor:inherit}nav .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.site-main{margin:0 auto;max-width:960px;padding:3.0517578125rem 1.5625rem}@media screen and (min-width:737px){.site-main{padding:3.0517578125rem 10px}}.single .site-main,.site-main.single{padding:0}@media screen and (min-width:737px){.single .site-main,.site-main.single{padding:0 10px 3.0517578125rem}}.page .site-ma
 in,.site-main.page{padding-top:0}.site-main .page-title{font-size:1.5625rem;font-weight:400}.site-main .no-results{margin:0 auto;max-width:35.527136788rem;padding:0 2rem}@keyframes favme-anime{0%{font-size:1rem;opacity:1;-webkit-text-stroke-color:#0000}25%{color:#fff;font-size:.8rem;opacity:.6;-webkit-text-stroke-width:1px;-webkit-text-stroke-color:#dc3232}75%{color:#fff;font-size:1.42875rem;opacity:.6;-webkit-text-stroke-width:1px;-webkit-text-stroke-color:#dc3232}to{font-size:1.25rem;opacity:1;-webkit-text-stroke-color:#0000}}@keyframes favme-hover{0%{font-size:1.42875rem}80%{font-size:1.25rem}}.plugin-favorite{height:36px;text-align:center;vertical-align:top;width:36px}.plugin-favorite .plugin-favorite-heart{align-items:center;background:none;border:0;border-radius:0;box-shadow:none;color:#cbcdce;cursor:pointer;display:flex;font-size:1.25rem;height:100%;justify-content:center;line-height:1;margin:0;outline:none;padding:0;transition:all .2s ease}.plugin-favorite .plugin-favorite-h
 eart.favorited{color:#dc3232}.plugin-favorite .plugin-favorite-heart:hover{animation:favme-hover .3s infinite alternate}.plugin-favorite .plugin-favorite-heart:focus{outline:thin dotted}.plugin-favorite .plugin-favorite-heart:focus,.plugin-favorite .plugin-favorite-heart:hover{text-decoration:none}.plugin-favorite .plugin-favorite-heart:after{content:"\f487";font-family:dashicons;vertical-align:top}.plugin-favorite .plugin-favorite-heart.is-animating{animation:favme-anime .3s}.plugin-banner{background-position:50% 50%;background-repeat:no-repeat;background-size:100%;display:inline-block;font-size:0;line-height:0;margin:0 auto 1.143rem;padding-top:32.38342%;vertical-align:middle;width:100%}@media screen and (min-width:60em){.plugin-banner{margin-top:1.5625rem}}@keyframes hideAnimation{to{visibility:hidden}}.categorization .help{color:#999;display:inline-block;font-size:.8rem;margin-top:0}.categorization label{display:block;font-weight:700}.categorization input{width:100%}.c
 ategorization .success-msg{background:#eff7ed;border:solid #64b450;border-width:0 0 0 5px;font-size:.8rem;margin-left:1rem;opacity:0;overflow:auto;padding:.1rem .6rem .2rem;position:relative;transition:visibility 0s,opacity .5s linear;-webkit-user-select:none;user-select:none;visibility:hidden}.categorization .success-msg.saved{animation:hideAnimation 0s ease-in 5s;animation-fill-mode:forwards;opacity:1;visibility:visible}.plugin-changelog,.plugin-changelog code{font-size:.8rem}.plugin-changelog h4{margin-top:0}.plugin-developers .contributors-list{font-size:0}.plugin-developers .contributors-list li{display:inline-block;font-size:1rem;margin-right:4%;vertical-align:top;width:48%}.plugin-developers .contributors-list li:nth-of-type(2n){margin-right:0}.plugin-faq h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;letter-spacing:.01rem;padding:0;text-transform:uppercase;text-transform:inherit}.plugin-faq dl{border-bottom:1px solid #eee}.plugin-faq dt{border-t
 op:1px solid #eee;cursor:pointer;font-size:1rem;font-weight:600;padding:1rem 0}.plugin-faq dt:before{content:"\f347";float:right;font-family:dashicons;margin:0 1rem}.plugin-faq dt.open:before{content:"\f343"}.plugin-faq dt .button-link{display:inherit;text-align:inherit}.plugin-faq dt .button-link.no-focus{box-shadow:none;outline:none}.plugin-faq dt h3{color:#0073aa;display:inline;margin-bottom:0;margin-top:0;text-decoration:underline;text-transform:none}.plugin-faq dt h3 button{all:inherit;max-width:calc(100% - 60px)}.plugin-faq dd{display:none;margin:0 0 1rem}.no-js .plugin-faq dd{display:block}.plugin-faq dd p{margin:0}.plugin-faq dd p+p{margin-top:1rem}.image-gallery{-webkit-user-select:none;user-select:none}.image-gallery-content{position:relative}.image-gallery-content .image-gallery-left-nav,.image-gallery-content .image-gallery-right-nav{border-color:#eee;display:none;font-size:3.0517578125rem;height:100%;position:absolute;top:0;transition:background .1s 
 ease,border .1s ease;z-index:4}@media (max-width:768px){.image-gallery-content .image-gallery-left-nav,.image-gallery-content .image-gallery-right-nav{font-size:3.4em}}@media (min-width:768px){.image-gallery-content .image-gallery-left-nav:hover,.image-gallery-content .image-gallery-right-nav:hover{background:#fff;border:1px solid #eee;opacity:.8}}.image-gallery-content .image-gallery-left-nav:before,.image-gallery-content .image-gallery-right-nav:before{font-family:dashicons;position:relative}.image-gallery-content .image-gallery-left-nav{left:0}.image-gallery-content .image-gallery-left-nav:before{content:"\f341"}.image-gallery-content .image-gallery-left-nav:hover{margin-left:-1px}.image-gallery-content .image-gallery-right-nav{right:0}.image-gallery-content .image-gallery-right-nav:before{content:"\f345"}.image-gallery-content .image-gallery-right-nav:hover{margin-right:-1px}.image-gallery-content:hover .image-gallery-left-nav,.image-gallery-content:hover .im
 age-gallery-right-nav{display:block}.image-gallery-slides{border:1px solid #eee;line-height:0;overflow:hidden;position:relative;white-space:nowrap}.image-gallery-slide{left:0;position:absolute;top:0;width:100%}.image-gallery-slide.center{position:relative}.image-gallery-slide .image-gallery-image{margin:0}.image-gallery-slide img{display:block;margin:0 auto}.image-gallery-slide .image-gallery-description{background:#f5f5f5;color:#32373c;font-size:.8rem;line-height:1.5;padding:10px 20px;white-space:normal}@media (max-width:768px){.image-gallery-slide .image-gallery-description{font-size:.8rem;padding:8px 15px}}.image-gallery-thumbnails{background:#fff;margin-top:5px}.image-gallery-thumbnails .image-gallery-thumbnails-container{cursor:pointer;text-align:center;white-space:nowrap}.image-gallery-thumbnail{border:1px solid #eee;display:table-cell;margin-right:5px;max-height:100px;overflow:hidden}.image-gallery-thumbnail .image-gallery-image{margin:0}.image-gallery-thumbnail img{vertical-
 align:middle;width:100px}@media (max-width:768px){.image-gallery-thumbnail img{width:75px}}.image-gallery-thumbnail:hover{box-shadow:0 1px 8px #0000004d}.image-gallery-thumbnail.active{border:1px solid #337ab7}.image-gallery-thumbnail-label{color:#222;font-size:1em}@media (max-width:768px){.image-gallery-thumbnail-label{font-size:.8em}}.image-gallery-index{background:#0006;bottom:0;color:#fff;line-height:1;padding:10px 20px;position:absolute;right:0;z-index:4}.plugin-reviews{list-style-type:none;margin:0;padding:0}.plugin-reviews .plugin-review{border-bottom:2px solid #eee;margin:2rem 0 1rem;padding-bottom:1rem}.plugin-reviews .plugin-review:first-child{margin-top:0}.plugin-reviews .plugin-review .header-top{display:flex}.plugin-reviews .plugin-review .header-top .wporg-ratings{flex-shrink:0}.plugin-reviews .plugin-review .header-bottom{display:flex;margin-bottom:12px}.plugin-reviews .review-avatar{display:none}.plugin-reviews .review,.plugin-reviews .review-author,.plugin-reviews .
 wporg-ratings{display:inline-block;vertical-align:top}.plugin-reviews .review-header{margin:0 0 .5rem}.plugin-reviews .review-title{font-size:1rem;font-weight:600;letter-spacing:.01rem;line-height:1.25;margin:0 0 8px 12px;text-transform:inherit}.plugin-reviews .review-author,.plugin-reviews .review-date,.plugin-reviews .review-replies{font-size:.9em;line-height:1.25}.plugin-reviews .review-date,.plugin-reviews .review-replies{color:#999;font-size:.9em;margin-left:12px}.plugin-reviews .review-replies:before{content:"•";margin-right:12px}@media screen and (min-width:737px){.plugin-reviews .review-avatar{display:inline-block;vertical-align:top}.plugin-reviews .review-avatar .avatar{margin-right:1rem}.plugin-reviews .review{width:calc(100% - 60px - 1rem)}.plugin-reviews .review-header{margin:0}.plugin-reviews .review-author,.plugin-reviews .review-date,.plugin-reviews .review-replies{line-height:1}}.reviews-link{display:inline-block;font-size:.8rem;margin-top:.5rem;text-deco
 ration:none}.reviews-link:after{content:"\f345";float:right;font-family:dashicons;padding-left:5px;position:relative;top:1px;vertical-align:text-top}.plugin-screenshots{list-style-type:none;margin:0;padding:0}.plugin-screenshots h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0;text-transform:inherit}.plugin-screenshots .image-gallery-content{display:table;width:100%}.plugin-screenshots .image-gallery-slides{display:table-cell;max-height:600px}.plugin-screenshots .image-gallery-image img{max-height:550px}.plugin-screenshots .image-gallery-thumbnail{vertical-align:top}.plugin-screenshots .image-gallery-thumbnail img{max-height:100px}.plugin-screenshots .image-gallery-thumbnails{overflow:hidden}.download-history-stats td{text-align:right}.previous-versions{max-width:60%}@media screen and (min-width:737px){.previous-versions{height:30px;vertical-align:top}}hr{margin:2.5rem auto}.section h1,.section h2,.section h3{font-size:1rem;font-weight
 :600;letter-spacing:.01rem;text-transform:uppercase}.section h1:nth-child(2),.section h2:nth-child(2),.section h3:nth-child(2){margin-top:0}.section h4,.section h5,.section h6{font-size:.8rem;font-weight:600;letter-spacing:.05rem;text-transform:uppercase}.section h4:nth-child(2),.section h5:nth-child(2),.section h6:nth-child(2){margin-top:0}.section h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0;text-transform:inherit}.type-plugin .plugin-notice{margin-top:0}.type-plugin .plugin-header{border-bottom:0;padding:1.143rem 1.5625rem}.type-plugin .plugin-header .plugin-actions{float:right;margin-inline-start:1rem}.type-plugin .plugin-header .plugin-actions div{display:inline-block;text-align:center}.type-plugin .plugin-header .plugin-title{clear:none;font-size:1.5625rem;font-weight:400;margin:0}.type-plugin .plugin-header .plugin-title a{color:inherit;text-decoration:none}.type-plugin .plugin-header .byline{color:#78848f}.type-plugin .plugin-banner+
 .plugin-header{padding-top:0}.type-plugin .tabs{border-bottom:2px solid #eee;list-style:none;margin:0}.type-plugin .tabs li{border:2px solid #0000;color:#0073aa;display:inline-block;font-size:.8rem;margin-bottom:-2px;transition:background .2s ease}.type-plugin .tabs li a{background:#fff;border:0;display:block;padding:.64rem 1.25rem;text-decoration:none}.type-plugin .tabs li a.active,.type-plugin .tabs li a:hover{background:#eee}.type-plugin .tabs li.active,.type-plugin .tabs li:hover{border:2px solid #eee;padding-bottom:0!important}@media screen and (max-width:34em){.type-plugin .tabs{border-top:2px solid #eee}.type-plugin .tabs li{display:block;margin-bottom:1px}.type-plugin .tabs li,.type-plugin .tabs li.active,.type-plugin .tabs li:hover{border:none;border-bottom:1px solid #eee}}.type-plugin .entry-content{max-width:48rem;padding:0 1.5625rem}@media screen and (min-width:737px){.type-plugin .entry-content{float:left;padding:0;width:65%}}.type-plugin .entry-content>div,.type-plu
 gin .entry-content>div~button{border:0;display:none}.type-plugin .entry-content a:not(.button,.dashicons){text-decoration:underline}.type-plugin .entry-content ol>li>p,.type-plugin .entry-content ul>li>p{margin:0}.type-plugin .entry-content #admin{display:block!important}.type-plugin .plugin-blocks-list{list-style:none;margin-left:0}.type-plugin .plugin-blocks-list .plugin-blocks-list-item{display:grid;grid-template-columns:auto 1fr;margin-bottom:1.25rem}.type-plugin .plugin-blocks-list .block-icon{border:1px solid #eee;border-radius:2px;display:inline-block;height:3.5rem;margin-right:1rem;padding:1.143rem;width:3.5rem}.type-plugin .plugin-blocks-list .block-icon.dashicons{color:inherit}.type-plugin .plugin-blocks-list .block-icon svg{height:16px;width:16px;fill:currentColor}.type-plugin .plugin-blocks-list .block-title{align-self:center;font-weight:700}.type-plugin .plugin-blocks-list .has-description .block-icon{grid-row:1/span 2}.type-plugin .plugin-blocks-list .ha
 s-description .block-title{margin-bottom:.4096rem}.type-plugin .entry-meta{padding:0 1.5625rem}.type-plugin span#description,.type-plugin span#developers,.type-plugin span#installation,.type-plugin span#reviews{position:fixed}.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews{background:#fff;border:2px solid #eee;border-bottom:0;padding-bottom:2px}@media screen and (max-width:34em){.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced.active,.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced:hover,.type-pl
 ugin span#developers:target~#section-links .tabs li#tablink-developers.active,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers:hover,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation.active,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation:hover,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description.active,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description:hover,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews.active,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews:hover{padding-bottom:2px!important}}.type-plugin span#section-links{display:flex;flex-flow:row wrap}.type-plugin span#section-links .tabs{flex:
 1 1 auto}@media screen and (max-width:34em){.type-plugin span#section-links{display:block}}.type-plugin #link-support{align-self:flex-end;border-bottom:2px solid #eee;flex:0 0 auto;font-size:.9rem;height:2rem}.type-plugin #link-support a:before{content:"\f125";display:inline-block;font-family:dashicons;font-size:1.2em;margin-right:.4em;max-height:1em;vertical-align:top}@media screen and (max-width:737px){.type-plugin #link-support{padding-right:20px}}@media screen and (max-width:34em){.type-plugin #link-support{border-bottom:0;display:block;margin-left:20px;margin-top:1.5rem;width:100%}}.type-plugin span#developers:target~.entry-content #tab-changelog,.type-plugin span#developers:target~.entry-content #tab-developers,.type-plugin span#developers:target~.entry-content #tab-developers .plugin-development,.type-plugin span#developers:target~.entry-content #tab-developers~button,.type-plugin span#installation:target~.entry-content #tab-installation,.type-plugin span#reviews:no
 t(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #blocks,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #faq,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #screenshots,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-description,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers~button,.type-plugin span#reviews:target~.entry-content #tab-reviews{display:block}.type-plugin span#developers:target~.entry-content #tab-developers .plugin-contributors,.type-plugin span#installation:target~.entry-meta .plugin-contributors,.type-plugin span#reviews
 :not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers .plugin-development,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-meta .plugin-contributors,.type-plugin span#reviews:target~.entry-meta .plugin-contributors,.type-plugin span#reviews:target~.entry-meta .plugin-donate,.type-plugin span#reviews:target~.entry-meta .plugin-meta,.type-plugin span#reviews:target~.entry-meta .plugin-support{display:none}@media screen and (min-width:737px){.type-plugin .entry-content,.type-plugin .entry-meta,.type-plugin .plugin-header{padding-left:0;padding-right:0}.type-plugin .entry-meta{float:right;width:30%}}.plugin-adopt-me{background:#e6f4fa;font-size:.8rem;margin-top:36px;padding:12px}.plugin-adopt-me .widget-title{margin-top:0}.plugin-adopt-me p{margin-bottom:0}.widget.plugin-categorization{margin-top:2rem}.widget.plugin-categorization .widget-head{column-gap:12px;display:flex;flex-flo
 w:row wrap;justify-content:space-between}.widget.plugin-categorization .widget-head h2{flex:1 1 auto;font-size:1rem;font-weight:700;margin-bottom:.2rem;margin-top:0}.widget.plugin-categorization .widget-head a{flex:0 0 auto;font-size:.8rem;line-height:2;text-align:right}.widget.plugin-categorization .widget-head a[href=""]{display:none}.widget.plugin-categorization .widget-head a:after{content:"\f504";font-family:dashicons;margin-left:2px}.widget.plugin-categorization p{font-size:.7rem;margin-top:.5rem}.widget.plugin-categorization~.plugin-meta li:first-child{border-top:1px solid #eee}.committer-list,.support-rep-list{font-size:.8rem;list-style:none;margin:0}.committer-list li,.support-rep-list li{padding-bottom:.5rem}.committer-list li .remove,.support-rep-list li .remove{color:red;visibility:hidden}.committer-list li:hover .remove,.support-rep-list li:hover .remove{visibility:visible}.committer-list .avatar,.support-rep-list .avatar{float:left;margin-right:10px
 }.committer-list .spinner,.support-rep-list .spinner{position:relative}.committer-list .spinner:after,.support-rep-list .spinner:after{background:url(/wp-admin/images/spinner.gif) no-repeat 50%;background-size:20px 20px;content:"";display:block;height:20px;margin:-10px -10px 0 0;position:absolute;right:-50%;top:50%;transform:translateZ(0);width:20px}@media (min-resolution:120dpi),print{.committer-list .spinner:after,.support-rep-list .spinner:after{background-image:url(/wp-admin/images/spinner-2x.gif)}}.plugin-contributors.read-more{border-bottom:2px solid #eee;max-height:200px;overflow:hidden;padding-bottom:1px}.plugin-contributors.read-more.toggled{max-height:none}.no-js .plugin-contributors.read-more{max-height:none;overflow:auto}.contributors-list{font-size:.8rem;list-style-type:none;margin:0}.contributors-list li{margin-bottom:1rem}.contributors-list .avatar{float:left;margin-right:10px}.plugin-meta{margin-top:2rem}.plugin-meta ul{font-size:.8rem;list-style-type:none;
 margin:0;padding:0}.plugin-meta li{border-top:1px solid #eee;display:inline-block;padding:.5rem 0;position:relative;width:100%}.plugin-meta li strong{float:right}.plugin-meta li:first-child{border-top:0}.plugin-meta .languages,.plugin-meta .tags{float:right;text-align:right}.plugin-meta .tags{width:60%}.plugin-meta .languages .popover{margin-top:8px}.plugin-meta .languages .popover-trigger{color:#0073aa;font-weight:600}.plugin-meta .languages .popover-trigger:hover{text-decoration:underline}.plugin-meta [rel=tag]{background:#eee;border-radius:2px;color:#000;display:inline-block;font-size:.64rem;margin:2px;max-width:95%;overflow:hidden;padding:3px 6px;position:relative;text-overflow:ellipsis;white-space:nowrap;width:auto}.plugin-meta [rel=tag]:hover{background:#f3f3f3}.plugin-meta [rel=tag]:active{background:#dfdfdf}.popover{background-color:#fff;border:1px solid #ccc;border-radius:2px;box-shadow:0 2px 10px #0000001a;display:none;left:0;margin-top:10px;max-width:300px;padding:1em 1em
  2em;position:absolute;width:100%;z-index:100}.popover.is-top-right{left:auto;right:0}.popover.is-visible{display:block}.popover .popover-close{bottom:.5em;color:#0073aa;font-size:small;position:absolute;right:.6em}.popover .popover-close:active,.popover .popover-close:focus,.popover .popover-close:hover{text-decoration:underline}.popover .popover-arrow{border:10px solid #0000;border-bottom:10px solid #ccc;border-top:none;height:0;position:absolute;right:20px;top:-10px;width:0;z-index:-1}.popover .popover-arrow:after{border:10px solid #0000;border-bottom:10px solid #fff;border-top:none;content:"";left:-10px;position:absolute;top:2px}.popover .popover-inner{text-align:left}.popover .popover-inner p:first-child{margin-top:0}.popover .popover-inner p:last-child{margin-bottom:0}.plugin-ratings{font-size:.8rem;position:relative}.plugin-ratings .reviews-link{position:absolute;right:0;top:0}.plugin-ratings .reviews-link:after{content:"\f345";font-family:dashicons;paddin
 g-left:5px;vertical-align:top}.plugin-ratings [class*=dashicons-star-]{color:#ffb900;display:inline-block;font-size:1.5625rem;height:auto;margin:0;width:auto}.plugin-ratings .ratings-list{list-style-type:none;margin:1rem 0;padding:0}.plugin-ratings .ratings-list .counter-container,.plugin-ratings .ratings-list .counter-container a{text-decoration:none;width:100%}.plugin-ratings .ratings-list .counter-label{display:inline-block;min-width:65px}.plugin-ratings .ratings-list .counter-back,.plugin-ratings .ratings-list .counter-bar{display:inline-block;height:1rem;vertical-align:middle}.plugin-ratings .ratings-list .counter-back{background-color:#ececec;width:58%;width:calc(100% - 130px)}.plugin-ratings .ratings-list .counter-bar{background-color:#ffc733;display:block}.plugin-ratings .ratings-list .counter-count{margin-left:3px}.plugin-support{font-size:.8rem}.plugin-support .counter-container{margin-bottom:1rem;position:relative}.plugin-support .counter-back,.plugin-support .counter-bar
 {display:inline-block;height:30px;vertical-align:middle}.plugin-support .counter-back{background-color:#ececec;width:100%}.plugin-support .counter-bar{background-color:#c7e8ca;display:block}.plugin-support .counter-count{font-size:.64rem;left:8px;position:absolute;top:8px;width:100%;width:calc(100% - 8px)}@media screen and (min-width:737px){.plugin-support .counter-count{top:5px}}.home .widget,.widget-area.home .widget{display:inline-block;font-size:.8rem;margin:0;vertical-align:top}@media screen and (min-width:737px){.home .widget,.widget-area.home .widget{margin-right:5%;width:30%}.home .widget:last-child,.widget-area.home .widget:last-child{margin-right:0}}.home .widget select,.widget-area.home .widget select{max-width:100%}.entry-meta .widget-title{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0}.widget-area{margin:0 auto;max-width:960px;padding:0 1.5625rem 3.0517578125rem}@media screen and (min-width:737px){.widget-area{padding:0 10px 3.0517578125rem}}
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+@charset "UTF-8";[class*=col-]{margin:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters>.row{margin-left:-2%}@media (max-width:768px){.row.gutters>.row{margin-left:0}}.row.gutters>.row>[class*=col-]{margin-left:2%}@media (max-width:768px){.row.gutters>.row>[class*=col-]{margin-left:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.3333333333%}.offset-1{margin-left:8.3333333333%}.col-2{width:16.6666666667%}.offset-2{margin-left:16.6666666667%}.col-3{width:25%}.offset-3{margin-left:25%}.col-4{width:33.3333333333%}.offset-4{margin-left:33.3333333333%}.col-5{width:41.6666666667%}.offset-5{margin-left:41.6666666667%}.col-6{width:50%}.offset-6{margin-left:50%}.col-7{width:58.3333333333%}.offset-7{
 margin-left:58.3333333333%}.col-8{width:66.6666666667%}.offset-8{margin-left:66.6666666667%}.col-9{width:75%}.offset-9{margin-left:75%}.col-10{width:83.3333333333%}.offset-10{margin-left:83.3333333333%}.col-11{width:91.6666666667%}.offset-11{margin-left:91.6666666667%}.col-12{width:100%}.offset-12{margin-left:100%}.gutters>.col-1{width:6.33333%}.gutters>.col-1:nth-child(n+13){margin-top:2%}.gutters>.offset-1{margin-left:10.33333%!important}.gutters>.col-2{width:14.66667%}.gutters>.col-2:nth-child(n+7){margin-top:2%}.gutters>.offset-2{margin-left:18.66667%!important}.gutters>.col-3{width:23%}.gutters>.col-3:nth-child(n+5){margin-top:2%}.gutters>.offset-3{margin-left:27%!important}.gutters>.col-4{width:31.33333%}.gutters>.col-4:nth-child(n+4){margin-top:2%}.gutters>.offset-4{margin-left:35.33333%!important}.gutters>.col-5{width:39.66667%}.gutters>.offset-5{margin-left:43.66667%!important}.gutters>.col-6{width:48%}.gutters>.col-6:nth-chil
 d(n+3){margin-top:2%}.gutters>.offset-6{margin-left:52%!important}.gutters>.col-7{width:56.33333%}.gutters>.offset-7{margin-left:60.33333%!important}.gutters>.col-8{width:64.66667%}.gutters>.offset-8{margin-left:68.66667%!important}.gutters>.col-9{width:73%}.gutters>.offset-9{margin-left:77%!important}.gutters>.col-10{width:81.33333%}.gutters>.offset-10{margin-left:85.33333%!important}.gutters>.col-11{width:89.66667%}.gutters>.offset-11{margin-left:93.66667%!important}.gutters>.col-12{width:98%}.gutters>.offset-12{margin-left:102%!important}@media (max-width:768px){[class*=" offset-"],[class^=offset-]{margin-left:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row [class*=col-]{margin-left:0;width:100%}.row.gutters [class*=col-]{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}.gutters .column.push-left,.push-left{margin-right:auto}.gutters .column.push-right,.push-right{margin-left:auto}.gutters .column.push-center,
 .push-center{margin-left:auto;margin-right:auto}.gutters .column.push-middle,.push-middle{margin-bottom:auto;margin-top:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-left:0}.gutters .column.push-center-sm,.push-center-sm{margin-left:auto;margin-right:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:right}.float-left{float:left}@media (max-width:768px){.float-left,.float-right{float:none}}.fixed{left:0;position:fixed;top:0;width:100%;z-index:100}html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-family:sans-serif}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;he
 ight:0}[hidden],template{display:none}a{background-color:transparent}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=
 number]::-webkit-outer-spin-button{height:auto}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}optgroup{font-weight:700}table{border-spacing:0}td,th{padding:0}p{margin:1rem 0}blockquote{margin:0 1.5rem}address{margin:0 0 1.5rem}pre{margin-bottom:1.6rem;padding:1.6rem}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{background:#fff}blockquote,q{quotes:"" ""}blockquote:after,blockquote:before,q:after,q:before{content:""}blockquote{border-left:2px solid #767676;color:#767676;margin:1rem 0;padding-left:.8rem}blockquote cite{font-size:.8rem}figure{margin:0}hr{background-color:#eee;border:0;height:2px;margin:5rem auto}img{height:auto;max-width:100%}h1,h2,h3,h4,h5,h6{clear:both;font-family:Open Sans,sans-serif;line-height:1.5;margin:2rem 0 1rem}.h1,h1{font-size:2.44140625rem
 }.h1,.h2,h1,h2{font-weight:300}.h2,h2{font-size:1.953125rem}.h3,h3{font-size:1.5625rem;font-weight:400}.h4,h4{color:#32373c;font-size:1.25rem;font-weight:600;padding:0}.h5,h5{font-size:1rem;letter-spacing:.01rem}.h5,.h6,h5,h6{font-weight:600;text-transform:uppercase}.h6,h6{font-size:.8rem;letter-spacing:.8px}a{color:#0073aa;text-decoration:none}a:active,a:focus,a:hover{text-decoration:underline}a:focus{outline:thin dotted}a:active,a:hover{outline:0}li>a,p a{text-decoration:underline}li>a:hover,p a:hover{color:#d54e21}ol,ul{margin:0 0 1.5em 1.5em;padding:0}ul{list-style:square}ol{list-style:decimal}li.unmarked-list,ol.unmarked-list,ul.unmarked-list{list-style:none;padding-left:0}li>ol,li>ul{margin-bottom:0}dt{font-weight:700}dd{margin:0 1.5em 1.5em}table{border:1px solid #eee;border-collapse:collapse;font-size:.8rem;margin:0 0 1rem;padding:0;width:100%}table thead{background:#32373c;color:#fff}table td,table th{border:1px solid #eee;font-weight:400;margin:0;padding:.4rem;
 text-align:left;vertical-align:top}table tbody tr:nth-child(2n){background:#f7f7f7}html{font-size:100%}body,button,input,select,textarea{color:#32373c;font-family:Open Sans,sans-serif;font-size:100%;line-height:1.5}@media screen and (min-width:737px){html{font-size:1.125rem}}cite,dfn,em,i{font-style:italic}blockquote{margin:0 1.5em}address{margin:0 0 1.5em}pre{word-wrap:normal;background:#eee;font-family:Courier\ 10 Pitch,Courier,monospace;font-size:.9375rem;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:.9375rem;-webkit-hyphens:none;hyphens:none}abbr,acronym{border-bottom:1px dotted #666;cursor:help}ins,mark{background:#fff9c0;text-decoration:none}big{font-size:125%}h1.title{color:#0073aa;font-size:.8rem;font-weight:600;letter-spacing:.05rem;text-transform:uppercase}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!im
 portant;width:1px}.screen-reader-text:focus{clip:auto!important;background-color:#f1f1f1;border-radius:3px;box-shadow:0 0 2px 2px rgba(0,0,0,.6);color:#21759b;display:block;font-size:.875rem;font-weight:700;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}.site-content[tabindex="-1"]:focus{outline:0}.no-js .hide-if-no-js{display:none}.alignleft{display:inline;float:left;margin-right:1.5em}.alignright{display:inline;float:right;margin-left:1.5em}.aligncenter{clear:both;display:block;margin-left:auto;margin-right:auto}@media screen and (max-width:480px){.alignleft,.alignright{display:block;float:none;margin-left:auto;margin-right:auto}}.button,.button-primary,.button-secondary,.plugin-upload-form .button-primary{-webkit-appearance:none;border:1px solid;border-radius:3px;box-sizing:border-box;cursor:pointer;display:inline-block;font-size:.8rem;height:1.5625rem;line-height:1;margin:0;padding:0 .8rem;text-deco
 ration:none;white-space:nowrap}button::-moz-focus-inner,input[type=button]::-moz-focus-inner,input[type=reset]::-moz-focus-inner,input[type=submit]::-moz-focus-inner{border:0;padding:0}.button-group.button-xl .button,.button.button-xl{font-size:1rem;height:2.44140625rem;line-height:1;padding:0 1.5rem}.button-group.button-large .button,.button.button-large{height:1.953125rem;line-height:1;padding:0 1rem}.button-group.button-small .button,.button.button-small{font-size:.64rem;height:1.25rem;line-height:1;padding:0 .5rem}a.button,a.button-primary,a.button-secondary{line-height:1.5625rem}.button-group.button-large a.button,a.button.button-large{line-height:1.953125rem}.button-group.button-xl a.button,a.button.button-xl{line-height:2.44140625rem}.button-group.button-small a.button,a.button.button-small{line-height:1.25rem}.button:active,.button:focus{outline:none}.button.hidden{display:none}input[type=reset],input[type=reset]:active,input[type=reset]:focus,input[type=reset]:hover{backgro
 und:none;border:none;box-shadow:none;padding:0 2px 1px;width:auto}.button,.button-secondary,.button:visited{background:#f7f7f7;border-color:#ccc;box-shadow:0 1px 0 #ccc;color:#555;vertical-align:top}p .button{vertical-align:baseline}.button-secondary:focus,.button-secondary:hover,.button.focus,.button.hover,.button:focus,.button:hover{background:#fafafa;border-color:#999;color:#23282d}.button-link:focus,.button-secondary:focus,.button.focus,.button:focus{border-color:#5b9dd9;box-shadow:0 0 3px rgba(0,115,170,.8)}.button-secondary:active,.button.active,.button.active:hover,.button:active{background:#eee;border-color:#999;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);transform:translateY(1px)}.button.active:focus{border-color:#5b9dd9;box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.button-disabled,.button-secondary.disabled,.button-secondary:disabled,.button-secondary[disabled],.button.disabled,.button:disabled,.button[disabled]{background:#f7f7f7!important;
 border-color:#ddd!important;box-shadow:none!important;color:#a0a5aa!important;cursor:default;text-shadow:0 1px 0 #fff!important;transform:none!important}.button-link,input[type=submit].button-link{background:none;border:0;border-radius:0;box-shadow:none;cursor:pointer;margin:0;outline:none;padding:0}.button-link:focus{outline:1px solid #5b9dd9}.button-primary,.download-button,.plugin-upload-form .button-primary{text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.button-primary,.button-primary:visited,.download-button,.download-button:visited,.plugin-upload-form .button-primary,.plugin-upload-form .button-primary:visited{background:#0085ba;border-color:#0073aa #006799 #006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary.hover,.button-primary:focus,.button-primary:hover,.download-button.focus,.download-button.hover,.download-button:focus,.download-button:hover,.plugin-upload-form .button-primary.foc
 us,.plugin-upload-form .button-primary.hover,.plugin-upload-form .button-primary:focus,.plugin-upload-form .button-primary:hover{background:#008ec2;border-color:#006799;box-shadow:0 1px 0 #006799;color:#fff}.button-primary.focus,.button-primary:focus,.download-button.focus,.download-button:focus,.plugin-upload-form .button-primary.focus,.plugin-upload-form .button-primary:focus{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.button-primary.active,.button-primary.active:focus,.button-primary.active:hover,.button-primary:active,.download-button.active,.download-button.active:focus,.download-button.active:hover,.download-button:active,.plugin-upload-form .button-primary.active,.plugin-upload-form .button-primary.active:focus,.plugin-upload-form .button-primary.active:hover,.plugin-upload-form .button-primary:active{background:#0073aa;border-color:#006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.button-primary.disabled,.button-primary:disabled,.button-primary[disabled],.down
 load-button.disabled,.download-button:disabled,.download-button[disabled],.plugin-upload-form .button-primary.disabled,.plugin-upload-form .button-primary:disabled,.plugin-upload-form .button-primary[disabled]{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-primary.button.button-hero,.download-button.button.button-hero,.plugin-upload-form .button-primary.button.button-hero{box-shadow:0 2px 0 #006799}.button-primary.button.button-hero.active,.button-primary.button.button-hero.active:focus,.button-primary.button.button-hero.active:hover,.button-primary.button.button-hero:active,.download-button.button.button-hero.active,.download-button.button.button-hero.active:focus,.download-button.button.button-hero.active:hover,.download-button.button.button-hero:active,.plugin-upload-form .button-primary.button.button-hero.active,.plugin-upload-form .button-primary.b
 utton.button-hero.active:focus,.plugin-upload-form .button-primary.button.button-hero.active:hover,.plugin-upload-form .button-primary.button.button-hero:active{box-shadow:inset 0 3px 0 #006799}.button-primary-disabled{background:#008ec2!important;border-color:#007cb2!important;box-shadow:none!important;color:#66c6e4!important;cursor:default;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.button-group{display:inline-block;font-size:0;position:relative;vertical-align:middle;white-space:nowrap}.button-group>.button{border-radius:0;display:inline-block;margin-right:-1px;z-index:10}.button-group>.button-primary{z-index:100}.button-group>.button:hover{z-index:20}.button-group>.button:first-child{border-radius:3px 0 0 3px}.button-group>.button:last-child{border-radius:0 3px 3px 0}.button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:737px){.button,.button.button-large,.button.button-small,.plugin-upload-form .button-primary{font-size:14px;he
 ight:auto;line-height:normal;margin-bottom:4px;padding:6px 14px;vertical-align:middle}}.clear:after,.clear:before,.comment-content:after,.comment-content:before,.committer-list li:after,.committer-list li:before,.entry-content:after,.entry-content:before,.home-below:after,.home-below:before,.plugin-meta:after,.plugin-meta:before,.plugin-upload-form .category-checklist:after,.plugin-upload-form .category-checklist:before,.site-content:after,.site-content:before,.site-footer:after,.site-footer:before,.site-header:after,.site-header:before,.support-rep-list li:after,.support-rep-list li:before,.type-plugin .plugin-header:after,.type-plugin .plugin-header:before,.type-plugin:after,.type-plugin:before{content:"";display:table;table-layout:fixed}.clear:after,.comment-content:after,.committer-list li:after,.entry-content:after,.home-below:after,.plugin-meta:after,.plugin-upload-form .category-checklist:after,.site-content:after,.site-footer:after,.site-header:after,.support-rep-l
 ist li:after,.type-plugin .plugin-header:after,.type-plugin:after{clear:both}p.subheading{color:#82878c;font-weight:300;margin:-.4rem auto 2rem;text-align:center}p.intro,p.subheading{font-size:1.25rem}p.aside{font-size:.8rem}p.note{font-size:.64rem;letter-spacing:.01rem;max-width:18.1898940355rem}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:
 focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=number]{height:28px}input[type=checkbox],input[type=radio]{height:16px;outline:0;width:16px}input[type=checkbox]:checked:before{margin:-3px 0 0 -4px}input[type=radio]:checked+label:before{color:#82878c}input[type=radio]:checked:before{height:6px;margin:4px;width:6px}input[type=reset]:active,input[type=reset]:hover{color:#00a0d2}input[type=search]{-webkit-appearance:textfield}input,select,textarea{font-size:14px;padding:3px 5px}textarea.code{line-height:1.4;padding:4px 6px 1px}label{vertical-align:middle}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-tex
 t{padding:1px 6px;width:50px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text]{-webkit-appearance:none;padding:6px 10px}input[type=number]{height:40px}input.code{padding-bottom:5px;padding-top:10px}input[type=checkbox]{-webkit-appearance:none;padding:10px}input[type=checkbox]:checked:before{font:normal 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}input[type=radio]:checked:before{height:9px;line-height:16px;margin:7px;vertical-align:middle;width:9px}input,textarea{font-size:16px}input[type=number].small-text,input[type=password].small-text,input[type=search].small-text,input[type=text].small-text{display:inline;margin:0 3px;max-width:55px;padding:3px 6px;width:auto}input.regular-text{width:100%}label{font-size:14px}f
 ieldset label{display:block}}a.button:active,a.button:focus,a.button:hover{text-decoration:none}.notice p{font-size:.8rem;margin:.5em 0;padding:2px}.avatar{border-radius:50%;vertical-align:middle}.locale-banner{background:#c7e8ca;font-size:.8rem;padding:.5rem;text-align:center}@media (min-width:67rem){.locale-banner{margin:1rem auto;max-width:960px}}.locale-banner a{text-decoration:underline}.block-validator .block-validator__plugin-form label{display:block;margin-bottom:.8rem}.block-validator .block-validator__plugin-input-container{display:flex;max-width:34rem}.block-validator .block-validator__plugin-input{flex:1}.block-validator .block-validator__plugin-submit{flex:0;margin-left:.73152rem}@media (max-width:36rem){.block-validator .block-validator__plugin-input-container{display:block}.block-validator .block-validator__plugin-input{width:100%}.block-validator .block-validator__plugin-submit{margin-left:0;margin-top:.73152rem}}.block-validator .notice details,.block-validator .not
 ice p{font-size:1rem;margin:.73152rem 0}.block-validator .notice details p{font-size:.8rem;margin-left:1rem}.block-validator .notice code{font-size:1em}.block-validator .notice summary{display:list-item}.block-validator figure{border:1px solid #aaa;display:inline-block;padding:1em}.block-validator .test-screenshot{text-align:center}input,textarea{box-sizing:border-box}input[type=checkbox],input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=radio],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{background-color:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);color:#32373c;outline:none;transition:border-color .05s ease-in-out}input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:foc
 us,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=radio]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,select:focus,textarea:focus{border-color:#5b9dd9;box-shadow:0 0 2px rgba(30,140,190,.8);color:#111}input[type=email],input[type=url]{direction:ltr}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],select{padding:6px 10px}input[type=number]{height:40px;line-height:inherit}input[type=checkbox],input[type=radio]{-webkit-appearance:none;background:#fff;border:1px solid #b4b9be;box-shadow:inset 0 1px 2px rgba(0,0,0,.1);clear:none;color:#555;cursor:pointer;display:inline-block;height:25px;line-height:0;margin:-4px 4px 0 0;min-width:16px;padding:0!important;text-align:center;transition:border-color .05s ease-in-out;vertical-align:middle;width:25px}input[type=checkbox]{padding:10px}input[type=radio]{border-radi
 us:50%;line-height:10px;margin-right:4px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;speak:none;display:inline-block;float:left;font:normal 21px/1 dashicons;vertical-align:middle;width:16px}input[type=checkbox]:checked:before{color:#1e8cbe;content:"\f147";font:normal 30px/1 dashicons;margin:-3px -5px}input[type=radio]:checked:before{background-color:#1e8cbe;border-radius:50px;content:"•";font-size:24px;height:9px;line-height:16px;margin:7px;text-indent:-9999px;vertical-align:middle;width:9px}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{border-radius:0;font-size:16px}textarea{line-height:1.4;ov
 erflow:auto;padding:2px 6px;resize:vertical}input[type=file]{padding:3px 0}label{cursor:pointer}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}:-moz-placeholder{color:#a9a9a9}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:hsla(0,0%,100%,.5);border-color:hsla(0,0%,87%,.75);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:none;box-shadow:none}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}fieldset label,label{vertical-align:middle}@media screen and (min-width:737px){input[type=email],input[type=number]
 ,input[type=password],input[type=search],input[type=text]{padding:3px 5px}input[type=number]{height:28px}input[type=checkbox]{padding:0}input[type=checkbox]:checked:before{font:normal 21px/1 dashicons;margin:-3px 0 0 -4px}input[type=checkbox],input[type=radio]{height:16px;width:16px}input[type=radio]:checked:before{height:6px;margin:4px;width:6px}input,select,textarea{font-size:14px;padding:3px 5px}}.infinite-scroll .posts-navigation,.infinite-scroll.neverending .site-footer{display:none}.infinity-end.neverending .site-footer{display:block}.notice{background:#fff;border-left:4px solid #fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1);font-size:.8rem;margin:1em 0;padding:1px 12px}.notice p,.notice ul{margin:.5em 0;padding:2px}.notice p a,.notice ul a{border-bottom:0}.notice pre{white-space:pre-wrap}.notice ul{list-style:none;margin:.5em}.notice.notice-alt{box-shadow:none}.notice.notice-large{padding:10px 20px}.notice.notice-success{border-left-color:#46b450}.notice.notice-success.notice-alt
 {background-color:#ecf7ed}.notice.notice-warning{border-left-color:#ffb900}.notice.notice-warning.notice-alt{background-color:#fff8e5}.notice.notice-error{border-left-color:#dc3232}.notice.notice-error.notice-alt{background-color:#fbeaea}.notice.notice-info{border-left-color:#00a0d2}.notice.notice-info.notice-alt{background-color:#e5f5fa}.notice.hidden,.plugin-upload-form.hidden{display:none}.plugin-upload-form fieldset{border:none;margin:0;padding:0}.plugin-upload-form legend{margin:1rem 0}.plugin-upload-form .category-checklist{list-style-type:none;margin:0 0 2rem}.plugin-upload-form .category-checklist li{float:left;padding:.5rem 0;width:50%}@media screen and (min-width:48em){.plugin-upload-form .category-checklist li{padding:0}.plugin-upload-form .category-checklist label{font-size:.8rem}.plugin-upload-form label.button{line-height:1.8}}.plugin-upload-form .plugin-file{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.plugin-upload-form .plugin-file:
 focus+label{box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.plugin-queue-message code{font-size:1em}.plugin-queue-message dialog.slug-change input[type=text]{font-family:monospace;font-size:1.2em;width:20em}.error-404 .page-content,.error-404 .page-title{text-align:center}.error-404 .page-content .logo-swing{height:10rem;margin:6rem auto;position:relative;text-align:center;width:10rem}.error-404 .page-content .logo-swing .wp-logo{left:0;max-width:none;position:absolute;top:0;width:10rem}@keyframes hinge{10%{height:180px;transform:rotate(0deg);width:180px}15%{height:185px;transform:rotate(0deg);width:185px}20%{height:180px;transform:rotate(5deg);width:180px}40%{animation-timing-function:ease-in-out;transform-origin:top left}60%{animation-timing-function:ease-in-out;transform:rotate(40deg);transform-origin:top left}40%,80%{animation-timing-function:ease-in-out;opacity:1;transform:rotate(60deg);transform-origin:top left}to{opacity:0;transform:translate3d(0,700px,0)}}.hinge{animation-du
 ration:2s;animation-name:hinge}.comments-area{margin-top:5em}.comments-area>:last-child{margin-bottom:0}.comments-area .comment-list+.comment-respond{border-top:1px solid #eaeaea}.comments-area .comment-list+.comment-respond,.comments-area .comment-navigation+.comment-respond{padding-top:1.6em}.comments-area .comments-title{margin-bottom:1.3333em}.comments-area .comment-list{list-style:none;margin:0}.comments-area .comment-list .pingback,.comments-area .comment-list .trackback,.comments-area .comment-list article{border-top:1px solid #eaeaea;padding:1.6em 0}.comments-area .comment-list article:not(:only-child){padding-bottom:0}.comments-area .comment-list article+.comment-respond{padding-bottom:1.6em}.comments-area .comment-list .children{list-style:none;margin:0}.comments-area .comment-list .children>li{padding-left:.8em}.comments-area .comment-list .alt{background:none}.comments-area .comment-author{color:#999;margin-bottom:.4em}.comments-area .comment-author .avatar{float:l
 eft;height:24px;margin-right:.8em;width:24px}.comments-area .comment-metadata,.comments-area .pingback .edit-link{color:#999;line-height:1.5}.comments-area .comment-metadata a,.comments-area .pingback .edit-link a{color:#777}.comments-area .comment-metadata{font-size:.8rem;margin-bottom:1.6em}.comments-area .comment-metadata .edit-link,.comments-area .pingback .edit-link{margin-left:1em}.comments-area .pingback .edit-link:before{top:5px}.comments-area .comment-content ol,.comments-area .comment-content ul{margin:0 0 1.6em 1.3333em}.comments-area .comment-content li>ol,.comments-area .comment-content li>ul,.comments-area .comment-content>:last-child{margin-bottom:0}.comments-area .comment-content .reply{font-size:12px}.comments-area .comment-content .reply a{border:1px solid #eaeaea;color:#707070;display:inline-block;font-weight:700;line-height:1;margin-top:2em;padding:.4167em .8333em;text-transform:uppercase}.comments-area .comment-content .reply a:focus,.comments-area .com
 ment-content .reply a:hover{border-color:#333;color:#333;outline:0}.comments-area .comment-reply-title a{font-weight:inherit}.comments-area .comment-form label{display:block;font-size:.8rem;font-weight:700;letter-spacing:.04em;line-height:1.5}.comments-area .comment-form input[type=email],.comments-area .comment-form input[type=text],.comments-area .comment-form input[type=url],.comments-area .comment-form textarea{width:100%}.comments-area .comment-awaiting-moderation,.comments-area .comment-notes,.comments-area .form-allowed-tags,.comments-area .logged-in-as{font-size:1rem;line-height:1.5;margin-bottom:2em}.comments-area .no-comments{border-top:1px solid #eaeaea;color:#999;font-weight:700;padding-top:1.6em}.comments-area .comment-navigation+.no-comments{border-top:0}.comments-area .form-allowed-tags code{font-family:Inconsolata,monospace}.comments-area .form-submit{margin-bottom:0}.comments-area .required{color:#c0392b}.entry-content{word-wrap:break-word;-webkit-hyphens:auto;hyphe
 ns:auto}.entry-content>p:first-child{margin-top:0}.entry-content [class*=col-]~h1,.entry-content [class*=col-]~h2,.entry-content [class*=col-]~h3,.entry-content [class*=col-]~h4,.entry-content [class*=col-]~h5,.entry-content [class*=col-]~h6{clear:none}.entry-header{position:relative}.entry-header .sticky-post{color:#999;font-size:.8rem;font-style:italic;position:absolute;top:-.8rem}.entry-summary{word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}body:not(.single):not(.search) .site-main .post{margin-bottom:3.0517578125rem;max-width:40em}.gallery{margin-bottom:1.5rem}.gallery .gallery-item{display:inline-block;margin:0;text-align:center;vertical-align:top;width:100%}.gallery.gallery-columns-2 .gallery-item{max-width:50%}.gallery.gallery-columns-3 .gallery-item{max-width:33.33%}.gallery.gallery-columns-4 .gallery-item{max-width:25%}.gallery.gallery-columns-5 .gallery-item{max-width:20%}.gallery.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery.gallery-columns-7 .galle
 ry-item{max-width:14.28%}.gallery.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery.gallery-columns-9 .gallery-item{max-width:11.11%}.gallery .gallery-caption{display:block}.post-navigation{margin:5em auto;padding:0}.post-navigation a{border-bottom:1px solid #eaeaea;color:#444;display:block;font-weight:600;padding:11px 0 12px;text-transform:none;width:100%}.post-navigation a:hover{color:#21759b}.post-navigation .nav-links{word-wrap:break-word;border-top:1px solid #eaeaea;-webkit-hyphens:auto;hyphens:auto}.post-navigation .meta-nav{color:#777;display:block;font-size:13px;line-height:2;text-transform:uppercase}.post-navigation .nav-next{text-align:right}.pagination .nav-links{text-align:center}.pagination .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px;text-align:center}.pagination .nav-links .page-numbers.dots,.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{background:none;font-siz
 e:.9em;width:auto}.pagination .nav-links .page-numbers.dots{cursor:inherit}@media screen and (max-width:737px){.pagination .nav-links .page-numbers.next,.pagination .nav-links .page-numbers.prev{font-size:0;min-width:auto;padding:0}.pagination .nav-links .page-numbers.next:after,.pagination .nav-links .page-numbers.prev:before{background-color:#f9f9f9;display:inline-block;font-size:1rem;line-height:1.5;min-width:2em;padding:8px}.pagination .nav-links .page-numbers.prev:before{content:"‹"}.pagination .nav-links .page-numbers.next:after{content:"›"}}.pagination .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.search-form .search-field{line-height:normal;margin:0;padding:4px 5px;vertical-align:text-bottom}.site-content{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-content{padding:0 10px 3.0517578125rem}}@media screen and (max-width:737px){.site-content .site-main{float:none;margin:0;width:auto}}
 .home .site-content,.page .site-content,.site-content.page{margin:auto;max-width:none;padding:0}.site-content .page-title{font-size:1.25rem;font-weight:400}.site-content .no-results{margin:0 auto 3.0517578125rem;max-width:40em;padding:0 2rem}.site-description{color:hsla(0,0%,100%,.8);font-size:1.25rem;font-weight:300;margin:-.4rem auto 2rem;text-align:center}.site-header{background:#0073aa;padding:1rem 0;position:relative}.site-header .site-branding{margin:0 auto;max-width:960px;padding:0 1.5625rem}@media screen and (min-width:737px){.site-header .site-branding{padding:0 10px}}.site-header.home{padding:1.5625rem 1.143rem;text-align:center}.site-title a:active,.site-title a:focus,.site-title a:hover{text-decoration:none}.widget-area{font-size:.8rem}@media screen and (min-width:480px) and (max-width:768px){.widget-area{display:flex}.widget-area .widget{width:48%}}#wporg-footer{background-color:#f7f7f7;border-top:1px solid #dfdfdf;padding:22px 14px 65px}#wporg-footer,#wporg-footer .wra
 pper{clear:both;margin:0 auto;overflow:auto}#wporg-footer .wrapper{max-width:930px}#wporg-footer ul{float:left;margin-bottom:20px;margin-left:24px;overflow:auto;padding-left:0;width:135px}@media screen and (min-width:960px){#wporg-footer ul:first-child{margin-left:0}}#wporg-footer ul li{color:#bbb;font-size:14px;list-style-type:none;margin-bottom:1px}#wporg-footer ul li a{text-decoration:none;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}#wporg-footer ul li a:hover{color:#0073aa;text-decoration:underline}#wporg-footer .social-media-links .dashicons{margin-right:4px}#wporg-footer .cip{clear:both;color:#ccc;float:none;font-size:.8rem;letter-spacing:.3em;margin:35px auto 0;text-align:center;text-transform:uppercase}#wporg-footer .cip.cip-image{background:url(//s.w.org/style/images/codeispoetry.png?1) 50% no-repeat;background-size:190px 15px;height:15px;text-indent:-9999px;width:190px}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-
 resolution:1.5dppx),only screen and (min-resolution:144dpi){#wporg-footer .cip.cip-image{background-image:url(//s.w.org/style/images/codeispoetry-2x.png?1)}}@media screen and (min-width:561px) and (max-width:959px){#wporg-footer .wrapper{max-width:600px}#wporg-footer ul{margin-left:2%;width:32%}#wporg-footer ul:nth-child(3n+1){margin-left:0}#wporg-footer ul:nth-child(4n){clear:both}}@media screen and (max-width:560px){#wporg-footer .wrapper{max-width:360px}#wporg-footer ul{margin-left:4%;width:48%}#wporg-footer ul:nth-child(odd){clear:both;margin-left:0}}#wporg-header{background:#23282d;height:140px;position:relative;text-align:center;width:100%}#wporg-header .wrapper{margin:0 auto;max-width:960px}#wporg-header h1{display:inline-block;margin:auto;width:303px}#wporg-header h1 a{background:url(//s.w.org/style/images/wporg-logo.svg?3) 0 no-repeat;background-size:290px 46px;display:block;height:88px;text-indent:-9999px}#wporg-header h2.rosetta{clear:none;color:#dfdfdf;font-family:Georgi
 a,Times New Roman,serif;font-size:30px;margin:0 0 0 60px}#wporg-header h2.rosetta a{border-bottom:none;color:#dfdfdf;display:block;height:52px;line-height:22px;padding:0}#wporg-header h2.rosetta a:hover{text-decoration:none}#wporg-header #wporg-header-menu{background:#23282d;left:-75%;list-style:none;margin:0;max-width:75%;min-width:200px;position:absolute;text-align:left;top:100%;transition:left .3s;z-index:100000}#wporg-header #wporg-header-menu.toggled{left:0}#wporg-header ul li{list-style-type:none;position:relative}#wporg-header ul li a{color:#eee;display:block;font-family:Open Sans,Helvetica,Arial,Liberation Sans,sans-serif;font-size:13px;font-weight:600;height:34px;line-height:34px;margin:0 4px;padding:10px 30px;text-decoration:none}#wporg-header ul li a.subcurrent{font-weight:700}@media (max-width:768px){#wporg-header ul li a{height:auto}}#wporg-header ul li a.current,#wporg-header ul li a:hover,#wporg-header ul li.current-menu-item a,#wporg-header ul li.current_page_parent 
 a{color:#00a0d2}#wporg-header ul li#download,#wporg-header ul li.download{float:right;height:34px;margin-right:14px;overflow:hidden;padding:0 0 34px}@media screen and (max-width:767px){#wporg-header ul li#download,#wporg-header ul li.download{display:block;float:none;height:auto;margin:10px 20px 20px;padding-bottom:0}#wporg-header ul li#download a,#wporg-header ul li.download a{padding:4px 10px;text-align:center}}#wporg-header ul li#download a,#wporg-header ul li.download a{margin:0;padding:0 16px}#wporg-header ul li#download a:hover,#wporg-header ul li.download a:hover{color:#eee}#wporg-header ul li#download .uparrow,#wporg-header ul li#download.current,#wporg-header ul li#download.current-menu-item,#wporg-header ul li.download .uparrow,#wporg-header ul li.download.current,#wporg-header ul li.download.current-menu-item{display:none}#wporg-header ul li .nav-submenu{clip:rect(1px,1px,1px,1px);height:1px;left:-2px;margin:0;overflow:hidden;padding:0;position:absolute;width:1px;z-index:
 99999}#wporg-header ul li .nav-submenu li a{display:inline-block;height:24px;line-height:24px;margin:0;white-space:nowrap}@media screen and (min-width:768px){#wporg-header #head-search{float:right;margin-right:14px;padding-top:30px}}#wporg-header #head-search form{border-bottom:1px solid #3f3f3f;display:inline-block;margin-left:60px;width:288px}#wporg-header #head-search form input.text{background:#191e23;border:0;border-radius:0;box-sizing:content-box;color:#b4b9be;float:left;font-family:Open Sans,sans-serif;font-size:12px;height:24px;margin:0;outline:none;padding:3px;vertical-align:top;width:256px}#wporg-header #head-search form input.text::-moz-placeholder{color:#eee}@media screen and (max-width:480px){#wporg-header #head-search form input.text{width:216px}}#wporg-header #head-search form .button{background:#191e23 url(//s.w.org/wp-includes/images/admin-bar-sprite.png?d=20120831) no-repeat 2px 5px;border:none;border-radius:0;box-shadow:none;float:left;height:30px;margin:0;padding
 :0;text-shadow:none!important;width:26px}@media screen and (max-width:480px){#wporg-header #head-search form{width:248px}}@media screen and (min-width:480px){#wporg-header #head-search form{margin-left:0}}@media screen and (min-width:768px){#wporg-header{height:120px;text-align:inherit}#wporg-header h1{float:left;padding-left:10px}#wporg-header h2.rosetta{float:left;margin-left:0;padding:36px 27px 0}#wporg-header #headline h2{text-rendering:optimizeLegibility}#wporg-header #wporg-header-menu{float:left;height:46px;list-style:none;margin:-15px 0 0;max-width:inherit;min-width:0;padding:0;position:static;width:100%}#wporg-header ul li{float:left;position:relative}#wporg-header ul li a{height:46px;padding:0 6px}#wporg-header ul li a.current~.uparrow{border-bottom:9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-8px auto 0;width:0}#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bottom:
 9px solid #f7f7f7;border-left:9px solid transparent;border-right:9px solid transparent;content:"";height:0;left:50%;margin:-8px 0 0 -9px;position:absolute;width:0}#wporg-header ul li .nav-submenu:hover~.uparrow,#wporg-header ul li:hover .nav-submenu~.uparrow{border-bottom:9px solid #32373c;border-left:9px solid transparent;border-right:9px solid transparent;height:0;margin:-10px auto 0;width:0}#wporg-header ul li .nav-submenu{background:#32373c;border:1px solid #32373c;border-top:0;margin-top:-1px;min-width:0}#wporg-header ul li .nav-submenu li{float:none}#wporg-header ul li .nav-submenu li a{height:34px;line-height:34px}#wporg-header .nav-menu .focus>ul,#wporg-header .nav-menu ul li:hover>ul,#wporg-header ul.nav-menu .focus>ul,#wporg-header ul.nav-menu li:hover>ul{clip:inherit;height:inherit;overflow:inherit;width:inherit}#wporg-header ul li a.current~.uparrow,#wporg-header ul li.current-menu-item:after,#wporg-header ul li.current_page_parent:after{border-bott
 om-color:#0073aa}}.page-download #wporg-header #download,.page-parent-download #wporg-header #download{display:none}#mobile-menu-button{-webkit-font-smoothing:antialiased;background:none;border:none;box-shadow:none;display:block;float:left;font-family:dashicons;font-size:16px;font-style:normal;font-weight:400;left:10px;line-height:1;padding:1px;position:absolute;text-align:center;text-decoration:inherit;text-shadow:none;top:75px;transition:color .1s ease-in;vertical-align:top}#mobile-menu-button:before{-webkit-font-smoothing:antialiased;border:none;box-sizing:border-box;color:#888;content:"\f228";display:inline-block;float:left;font:normal 50px/1 Dashicons;margin:0;outline:none;padding:3px;text-decoration:none;vertical-align:middle}@media screen and (min-width:768px){#mobile-menu-button{display:none}}#download-mobile{background:#f7f7f7;border-bottom:1px solid #ddd}#download-mobile .wrapper{padding:20px 0;text-align:center}#download-mobile span.download-ready{font-size:1.6e
 m;margin:0 .25em}#download-mobile a.download-button{font-size:1.6em;height:inherit;margin:10px .25em;padding:10px 15px}.comment-content .wp-smiley,.entry-content .wp-smiley,.page-content .wp-smiley{border:none;margin-bottom:0;margin-top:0;padding:0}.wp-caption,embed,iframe,object{max-width:100%}.wp-caption{margin-bottom:1.5em}.wp-caption img[class*=wp-image-]{display:block;margin-left:auto;margin-right:auto}.wp-caption .wp-caption-text{margin:.8075em 0}.wp-caption-text{text-align:center}.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.33%}.gallery-columns-4 .gallery-item{max-width:25%}.gallery-columns-5 .gallery-item{max-width:20%}.gallery-columns-6 .gallery-item{max-width:16.66%}.gallery-columns-7 .gallery-item{max-width:14.28%}.gallery-columns-8 .gallery-item{max-width:12.5%}.gallery-columns-9 .gallery-item{max-width:11.11%}.ga
 llery-caption{display:block}.site-title{display:inline-block;font-size:1.5625rem;font-weight:300;line-height:1;margin:0 2rem 0 0;max-width:none}.site-title a{color:#fff;font-weight:300;text-decoration:none}.site-title a:active,.site-title a:focus,.site-title a:hover{color:#fff}.site-header.home .site-title{display:inherit;font-size:3.8146972656rem;margin:2rem 0 1rem}.wporg-filter-bar{--wporg--filter-bar--gap:20px;--wporg--filter-bar--color:#40464d;--wporg--filter-bar--active--background-color:#2371a6;--wporg--filter-bar--focus--border-color:#2371a6;margin:0 auto;max-width:960px;padding:40px 1.5625rem 0}.wporg-filter-bar+.site-main{margin-top:2rem;padding-top:0}.wporg-filter-bar .wporg-filter-bar__navigation{flex-grow:1;margin-bottom:var(--wporg--filter-bar--gap)}.wporg-filter-bar .wporg-filter-bar__navigation ul{display:inline-block;font-size:13px;line-height:1.538;list-style:none;margin:0}.wporg-filter-bar .wporg-filter-bar__navigation ul li{display:inline-block}.wporg-filter-bar .
 wporg-filter-bar__navigation ul li+li{margin-left:8px}.wporg-filter-bar .wporg-filter-bar__navigation ul a{border-radius:2px;color:var(--wporg--filter-bar--color);display:block;padding:8px 12px;text-decoration:none}.wporg-filter-bar .wporg-filter-bar__navigation ul a:focus,.wporg-filter-bar .wporg-filter-bar__navigation ul a:hover{text-decoration:underline}.wporg-filter-bar .wporg-filter-bar__navigation ul a:focus-visible{box-shadow:none;outline:1.5px solid var(--wporg--filter-bar--focus--border-color);outline-offset:-.5px}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active{background-color:var(--wporg--filter-bar--active--background-color);color:#fff}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:focus,.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:hover{color:#fff}.wporg-filter-bar .wporg-filter-bar__navigation ul a.is-active:focus-visible{box-shadow:inset 0 0 0 1.5px #fff;outline:1.5px solid var(--wporg--filter-bar--focus--border-color);
 outline-offset:-.5px}@media screen and (min-width:737px){.wporg-filter-bar{align-items:center;display:flex;flex-wrap:wrap;gap:var(--wporg--filter-bar--gap);justify-content:space-between;padding:40px 10px 0}.wporg-filter-bar .wporg-filter-bar__navigation{margin-bottom:0}}.archive .site-main{margin-top:2rem;padding-top:0}.archive .page-header{margin:2rem 0}dialog{border:0;box-shadow:6px 6px 6px rgba(0,0,0,.2);min-height:50%;min-width:30%}@media (min-width:1280px){dialog{max-width:55%}}dialog::-webkit-backdrop{background:#000;opacity:.5}dialog::backdrop{background:#000;opacity:.5}dialog .close{color:inherit;cursor:pointer;position:absolute;right:1em;text-decoration:none!important;top:1em}.main-navigation{background:#0073aa;clear:both;left:0;position:absolute;top:60px;width:100%;z-index:1}.main-navigation ul{display:none;list-style:none;margin:0;padding-left:0}.main-navigation ul ul{box-shadow:0 3px 3px rgba(0,0,0,.2);float:left;left:-999em;position:absolute;top:1.5em;z-index:99999}.mai
 n-navigation ul ul ul{left:-999em;top:0}.main-navigation ul ul li.focus>ul,.main-navigation ul ul li:hover>ul{left:100%}.main-navigation ul ul a{width:200px}.main-navigation ul li.focus>ul,.main-navigation ul li:hover>ul{left:auto}.main-navigation li{border-top:1px solid hsla(0,0%,100%,.2)}.main-navigation a{color:hsla(0,0%,100%,.8);display:block;font-size:.8rem;padding:1rem 1rem 1rem 1.5rem;text-decoration:none}.main-navigation a.active,.main-navigation a:hover{color:#fff}@media screen and (min-width:737px){.main-navigation a.active{border-bottom:1px solid}}.main-navigation.toggled ul{display:block}.menu-toggle{-webkit-appearance:none;background:transparent;border:none;color:#fff;font-size:1.5625rem;height:3.5rem;overflow:hidden;position:absolute;right:1rem;top:-58px;width:3.5rem}.toggled .menu-toggle:before{content:"\f343"}@media screen and (min-width:737px){.menu-toggle{display:none}.main-navigation{float:right;position:relative;top:auto;width:auto}.main-nav
 igation.toggled{padding:1px 0}.main-navigation ul{display:inline-block;font-size:0}.main-navigation ul li{border:0;display:inline-block;font-size:1rem;margin-right:1rem}.main-navigation ul li:last-of-type{margin-right:0}.main-navigation a{padding:0}}.page .entry-header{margin-top:2rem}@media screen and (min-width:737px){.page .entry-header{padding:0 2rem}}.page .entry-header .entry-title{font-size:1.5625rem;font-weight:400}@media screen and (min-width:737px){.page .entry-content{padding:0 2rem}}.page .entry-content h2{font-size:1.5625rem;font-weight:400}.page .entry-content h3{font-size:1rem;font-weight:600;letter-spacing:.01rem;text-transform:uppercase}.page .entry-content section{padding:2rem 0}.page .entry-content section:first-of-type{padding-top:0}.page .entry-content section+section{border-top:2px solid #eee}.plugin-card{background-color:#f9f9f9;margin-bottom:4%;padding:15px 15px 8px;vertical-align:top}@media screen and (min-width:737px){.plugin-card{display:inline-block;margi
 n-right:4%;width:48%}.plugin-card:nth-of-type(2n){margin-right:0}}.plugin-card .entry{display:inline-block;margin:auto;vertical-align:top}@media screen and (min-width:21em){.plugin-card .entry{width:calc(96% - 128px)}}.plugin-card .entry-title{font-size:1rem;line-height:1.3;margin:0 0 8px}.plugin-card .entry-title a{word-wrap:break-word;font-weight:400}.plugin-card .entry-excerpt{font-size:.8rem}.plugin-card .entry-excerpt p{margin:0}.plugin-card hr{background-color:#fff;margin:15px -15px 8px}.plugin-card footer span{display:inline-block;font-size:.73152rem;overflow:hidden;white-space:nowrap}.plugin-card footer span i{display:inline-block;font-size:1rem;margin-right:.4rem}.plugin-card footer span.last-updated{display:none}.plugin-card footer span.plugin-author{width:100%}.plugin-card footer span.active-installs{min-width:48%}.plugin-card footer .dashicons{color:#bbb;display:none;height:auto;margin:0 2px -1rem;width:auto}@media (min-width:414px){.plugin-card footer .dashicons{display
 :inline-block}}.entry-thumbnail{display:none;max-width:128px}.entry-thumbnail .plugin-icon{background-size:cover;height:128px;width:128px}@media screen and (min-width:21em){.entry-thumbnail{display:inline-block;margin:0 4% 0 0;vertical-align:top}.entry-thumbnail a{display:block}}.single .entry-thumbnail{display:none;float:left;height:96px;margin-right:1rem;width:96px}@media screen and (min-width:26em){.single .entry-thumbnail{display:block}}.single .entry-thumbnail .plugin-icon{background-size:contain!important;height:96px!important;width:96px!important}.plugin-rating{line-height:1;margin:0 10px 8px 0}.plugin-rating .wporg-ratings{display:inline-block;margin-right:5px}.plugin-rating .rating-count{color:#999;font-size:.8rem}.site-main.single .plugin-rating .rating-count{display:none}.plugin-rating .rating-count a{color:inherit;cursor:hand;text-decoration:none}[class*=dashicons-star-]{color:#ffb900}.rtl .dashicons-star-half{transform:rotateY(180deg)}.plugin-section{border-bottom:2px s
 olid #eee;margin:0 auto 4.768371582rem;max-width:960px;padding-bottom:3.0517578125rem}.plugin-section:last-of-type{margin-bottom:0}.plugin-section .section-header{column-gap:10px;display:flex;flex-flow:row wrap;margin-bottom:2rem}.plugin-section .section-title{flex:1 1 auto;font-size:1.5625rem;font-weight:400;margin-bottom:0;margin-top:0}.plugin-section .section-link{align-self:center;flex:0 0 auto;font-size:1rem}.search-form{font-size:0;margin-bottom:2rem;max-width:100%;position:relative}.search-form .search-field{-webkit-appearance:none;border:none;border-radius:0;box-shadow:none;display:block;font-size:1rem;line-height:1.5;margin:0 auto;max-width:100%;padding:.5rem 2.4rem .5rem .5rem;vertical-align:initial;width:22.7373675443rem}.search-form .button-search{border-left:none;border-radius:0 2px 2px 0;border-top:none;font-size:1rem;margin:0;position:relative;right:auto;top:auto;vertical-align:top}.search-form .button-search:active{background:#006799;border-right:1px solid #006799;bo
 x-shadow:none}.search-form .button-search svg{fill:currentColor}.site-header .search-form{display:inline-block}.site-header.home .search-form .button-search,.site-main .search-form .button-search{background:transparent;border:none;border-radius:0;box-shadow:none;color:#32373c;display:block;height:45px;padding:.5rem;position:absolute;right:0;text-shadow:none;top:0}.site-header.home .search-form .button-search:focus,.site-main .search-form .button-search:focus{box-shadow:0 0 2px 1px #33b3db}.site-header.home .search-form .button-search:active,.site-main .search-form .button-search:active{background:transparent;border:none;transform:none}.site-header:not(.home) .search-form{display:block;margin:0;padding:1rem 1rem 1rem 1.5rem}@media screen and (min-width:737px){.site-header:not(.home) .search-form{padding:0}}.site-header:not(.home) .search-form .search-field{border:0;border-radius:2px 0 0 2px;display:inline-block;font-size:1rem;padding:5px 10px;position:relative;width:calc(100% - 55px)
 }@media screen and (min-width:737px){.site-header:not(.home) .search-form .search-field{font-size:.64rem;width:7rem}.site-header:not(.home) .search-form .search-field+.button-search{display:inline-block;margin-bottom:0}}@media screen and (min-width:60em){.site-header:not(.home) .search-form .search-field{width:10rem}}@media screen and (max-width:737px){.site-header:not(.home) .search-form .search-field+.button-search{padding:4px 14px 1px}}.site-main .search-form .search-field{border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);padding:.5rem;width:100%}.search .site-main{margin-top:2rem;padding-top:0}.search.search-results .page-header{margin:2rem 0}.site-content{max-width:none;padding:0}nav .nav-links{text-align:center}nav .nav-links .page-numbers{background-color:#f9f9f9;cursor:hand;display:inline-block;min-width:2em;padding:8px}nav .nav-links .page-numbers.dots,nav .nav-links .page-numbers.next,nav .nav-links .page-numbers.prev{background:none;font-size:.9em;width:aut
 o}nav .nav-links .page-numbers.dots{cursor:inherit}nav .nav-links span.page-numbers{background-color:#f7f7f7;font-weight:700}.site-main{margin:0 auto;max-width:960px;padding:3.0517578125rem 1.5625rem}@media screen and (min-width:737px){.site-main{padding:3.0517578125rem 10px}}.single .site-main,.site-main.single{padding:0}@media screen and (min-width:737px){.single .site-main,.site-main.single{padding:0 10px 3.0517578125rem}}.page .site-main,.site-main.page{padding-top:0}.site-main .page-title{font-size:1.5625rem;font-weight:400}.site-main .no-results{margin:0 auto;max-width:35.527136788rem;padding:0 2rem}@keyframes favme-anime{0%{-webkit-text-stroke-color:transparent;font-size:1rem;opacity:1}25%{-webkit-text-stroke-width:1px;-webkit-text-stroke-color:#dc3232;color:#fff;font-size:.8rem;opacity:.6}75%{-webkit-text-stroke-width:1px;-webkit-text-stroke-color:#dc3232;color:#fff;font-size:1.42875rem;opacity:.6}to{-webkit-text-stroke-color:transparent;font-size:1.25rem;opacity:1}}@keyfram
 es favme-hover{0%{font-size:1.42875rem}80%{font-size:1.25rem}}.plugin-favorite{height:36px;text-align:center;vertical-align:top;width:36px}.plugin-favorite .plugin-favorite-heart{align-items:center;background:none;border:0;border-radius:0;box-shadow:none;color:#cbcdce;cursor:pointer;display:flex;font-size:1.25rem;height:100%;justify-content:center;line-height:1;margin:0;outline:none;padding:0;transition:all .2s ease}.plugin-favorite .plugin-favorite-heart.favorited{color:#dc3232}.plugin-favorite .plugin-favorite-heart:hover{animation:favme-hover .3s infinite alternate}.plugin-favorite .plugin-favorite-heart:focus{outline:thin dotted}.plugin-favorite .plugin-favorite-heart:focus,.plugin-favorite .plugin-favorite-heart:hover{text-decoration:none}.plugin-favorite .plugin-favorite-heart:after{content:"\f487";font-family:dashicons;vertical-align:top}.plugin-favorite .plugin-favorite-heart.is-animating{animation:favme-anime .3s}.plugin-banner{background-position:50% 50%;backgrou
 nd-repeat:no-repeat;background-size:100%;display:inline-block;font-size:0;line-height:0;margin:0 auto 1.143rem;padding-top:32.38342%;vertical-align:middle;width:100%}@media screen and (min-width:60em){.plugin-banner{margin-top:1.5625rem}}@keyframes hideAnimation{to{visibility:hidden}}.categorization .help{color:#999;display:inline-block;font-size:.8rem;margin-top:0}.categorization label{display:block;font-weight:700}.categorization input{width:100%}.categorization .success-msg{background:#eff7ed;border:solid #64b450;border-width:0 0 0 5px;font-size:.8rem;margin-left:1rem;opacity:0;overflow:auto;padding:.1rem .6rem .2rem;position:relative;transition:visibility 0s,opacity .5s linear;-webkit-user-select:none;user-select:none;visibility:hidden}.categorization .success-msg.saved{animation:hideAnimation 0s ease-in 5s;animation-fill-mode:forwards;opacity:1;visibility:visible}.plugin-changelog,.plugin-changelog code{font-size:.8rem}.plugin-changelog h4{margin-top:0}.plugin-developers .contr
 ibutors-list{font-size:0}.plugin-developers .contributors-list li{display:inline-block;font-size:1rem;margin-right:4%;vertical-align:top;width:48%}.plugin-developers .contributors-list li:nth-of-type(2n){margin-right:0}.plugin-faq h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;letter-spacing:.01rem;padding:0;text-transform:uppercase;text-transform:inherit}.plugin-faq dl{border-bottom:1px solid #eee}.plugin-faq dt{border-top:1px solid #eee;cursor:pointer;font-size:1rem;font-weight:600;padding:1rem 0}.plugin-faq dt:before{content:"\f347";float:right;font-family:dashicons;margin:0 1rem}.plugin-faq dt.open:before{content:"\f343"}.plugin-faq dt .button-link{display:inherit;text-align:inherit}.plugin-faq dt .button-link.no-focus{box-shadow:none;outline:none}.plugin-faq dt h3{color:#0073aa;display:inline;margin-bottom:0;margin-top:0;text-decoration:underline;text-transform:none}.plugin-faq dt h3 button{all:inherit;max-width:calc(100% - 60px
 )}.plugin-faq dd{display:none;margin:0 0 1rem}.no-js .plugin-faq dd{display:block}.plugin-faq dd p{margin:0}.plugin-faq dd p+p{margin-top:1rem}.image-gallery{-webkit-user-select:none;user-select:none}.image-gallery-content{position:relative}.image-gallery-content .image-gallery-left-nav,.image-gallery-content .image-gallery-right-nav{border-color:#eee;display:none;font-size:3.0517578125rem;height:100%;position:absolute;top:0;transition:background .1s ease,border .1s ease;z-index:4}@media (max-width:768px){.image-gallery-content .image-gallery-left-nav,.image-gallery-content .image-gallery-right-nav{font-size:3.4em}}@media (min-width:768px){.image-gallery-content .image-gallery-left-nav:hover,.image-gallery-content .image-gallery-right-nav:hover{background:#fff;border:1px solid #eee;opacity:.8}}.image-gallery-content .image-gallery-left-nav:before,.image-gallery-content .image-gallery-right-nav:before{font-family:dashicons;position:relative}.image-gallery-content .image-gallery-left-
 nav{left:0}.image-gallery-content .image-gallery-left-nav:before{content:"\f341"}.image-gallery-content .image-gallery-left-nav:hover{margin-left:-1px}.image-gallery-content .image-gallery-right-nav{right:0}.image-gallery-content .image-gallery-right-nav:before{content:"\f345"}.image-gallery-content .image-gallery-right-nav:hover{margin-right:-1px}.image-gallery-content:hover .image-gallery-left-nav,.image-gallery-content:hover .image-gallery-right-nav{display:block}.image-gallery-slides{border:1px solid #eee;line-height:0;overflow:hidden;position:relative;white-space:nowrap}.image-gallery-slide{left:0;position:absolute;top:0;width:100%}.image-gallery-slide.center{position:relative}.image-gallery-slide .image-gallery-image{margin:0}.image-gallery-slide img{display:block;margin:0 auto}.image-gallery-slide .image-gallery-description{background:#f5f5f5;color:#32373c;font-size:.8rem;line-height:1.5;padding:10px 20px;white-space:normal}@media (max-width:768px){.image-
 gallery-slide .image-gallery-description{font-size:.8rem;padding:8px 15px}}.image-gallery-thumbnails{background:#fff;margin-top:5px}.image-gallery-thumbnails .image-gallery-thumbnails-container{cursor:pointer;text-align:center;white-space:nowrap}.image-gallery-thumbnail{border:1px solid #eee;display:table-cell;margin-right:5px;max-height:100px;overflow:hidden}.image-gallery-thumbnail .image-gallery-image{margin:0}.image-gallery-thumbnail img{vertical-align:middle;width:100px}@media (max-width:768px){.image-gallery-thumbnail img{width:75px}}.image-gallery-thumbnail:hover{box-shadow:0 1px 8px rgba(0,0,0,.3)}.image-gallery-thumbnail.active{border:1px solid #337ab7}.image-gallery-thumbnail-label{color:#222;font-size:1em}@media (max-width:768px){.image-gallery-thumbnail-label{font-size:.8em}}.image-gallery-index{background:rgba(0,0,0,.4);bottom:0;color:#fff;line-height:1;padding:10px 20px;position:absolute;right:0;z-index:4}.plugin-reviews{list-style-type:none;margin:0;padding:0}.plugin-
 reviews .plugin-review{border-bottom:2px solid #eee;margin:2rem 0 1rem;padding-bottom:1rem}.plugin-reviews .plugin-review:first-child{margin-top:0}.plugin-reviews .plugin-review .header-top{display:flex}.plugin-reviews .plugin-review .header-top .wporg-ratings{flex-shrink:0}.plugin-reviews .plugin-review .header-bottom{display:flex;margin-bottom:12px}.plugin-reviews .review-avatar{display:none}.plugin-reviews .review,.plugin-reviews .review-author,.plugin-reviews .wporg-ratings{display:inline-block;vertical-align:top}.plugin-reviews .review-header{margin:0 0 .5rem}.plugin-reviews .review-title{font-size:1rem;font-weight:600;letter-spacing:.01rem;line-height:1.25;margin:0 0 8px 12px;text-transform:inherit}.plugin-reviews .review-author,.plugin-reviews .review-date,.plugin-reviews .review-replies{font-size:.9em;line-height:1.25}.plugin-reviews .review-date,.plugin-reviews .review-replies{color:#999;font-size:.9em;margin-left:12px}.plugin-reviews .review-replies:before{content:"â€
 ¢";margin-right:12px}@media screen and (min-width:737px){.plugin-reviews .review-avatar{display:inline-block;vertical-align:top}.plugin-reviews .review-avatar .avatar{margin-right:1rem}.plugin-reviews .review{width:calc(100% - 60px - 1rem)}.plugin-reviews .review-header{margin:0}.plugin-reviews .review-author,.plugin-reviews .review-date,.plugin-reviews .review-replies{line-height:1}}.reviews-link{display:inline-block;font-size:.8rem;margin-top:.5rem;text-decoration:none}.reviews-link:after{content:"\f345";float:right;font-family:dashicons;padding-left:5px;position:relative;top:1px;vertical-align:text-top}.plugin-screenshots{list-style-type:none;margin:0;padding:0}.plugin-screenshots h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0;text-transform:inherit}.plugin-screenshots .image-gallery-content{display:table;width:100%}.plugin-screenshots .image-gallery-slides{display:table-cell;max-height:600px}.plugin-screenshots .image-galler
 y-image img{max-height:550px}.plugin-screenshots .image-gallery-thumbnail{vertical-align:top}.plugin-screenshots .image-gallery-thumbnail img{max-height:100px}.plugin-screenshots .image-gallery-thumbnails{overflow:hidden}.download-history-stats td{text-align:right}.previous-versions{max-width:60%}@media screen and (min-width:737px){.previous-versions{height:30px;vertical-align:top}}hr{margin:2.5rem auto}.section h1,.section h2,.section h3{font-size:1rem;font-weight:600;letter-spacing:.01rem;text-transform:uppercase}.section h1:nth-child(2),.section h2:nth-child(2),.section h3:nth-child(2){margin-top:0}.section h4,.section h5,.section h6{font-size:.8rem;font-weight:600;letter-spacing:.05rem;text-transform:uppercase}.section h4:nth-child(2),.section h5:nth-child(2),.section h6:nth-child(2){margin-top:0}.section h2:first-of-type{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0;text-transform:inherit}.type-plugin .plugin-notice{margin-top:0}.type-plugin .plugin-head
 er{border-bottom:0;padding:1.143rem 1.5625rem}.type-plugin .plugin-header .plugin-actions{float:right;margin-inline-start:1rem}.type-plugin .plugin-header .plugin-actions div{display:inline-block;text-align:center}.type-plugin .plugin-header .plugin-title{clear:none;font-size:1.5625rem;font-weight:400;margin:0}.type-plugin .plugin-header .plugin-title a{color:inherit;text-decoration:none}.type-plugin .plugin-header .byline{color:#78848f}.type-plugin .plugin-banner+.plugin-header{padding-top:0}.type-plugin .tabs{border-bottom:2px solid #eee;list-style:none;margin:0}.type-plugin .tabs li{border:2px solid transparent;color:#0073aa;display:inline-block;font-size:.8rem;margin-bottom:-2px;transition:background .2s ease}.type-plugin .tabs li a{background:#fff;border:0;display:block;padding:.64rem 1.25rem;text-decoration:none}.type-plugin .tabs li a.active,.type-plugin .tabs li a:hover{background:#eee}.type-plugin .tabs li.active,.type-plugin .tabs li:hover{border:2px solid #eee;padding-bot
 tom:0!important}@media screen and (max-width:34em){.type-plugin .tabs{border-top:2px solid #eee}.type-plugin .tabs li{display:block;margin-bottom:1px}.type-plugin .tabs li,.type-plugin .tabs li.active,.type-plugin .tabs li:hover{border:none;border-bottom:1px solid #eee}}.type-plugin .entry-content{max-width:48rem;padding:0 1.5625rem}@media screen and (min-width:737px){.type-plugin .entry-content{float:left;padding:0;width:65%}}.type-plugin .entry-content>div,.type-plugin .entry-content>div~button{border:0;display:none}.type-plugin .entry-content a:not(.button,.dashicons){text-decoration:underline}.type-plugin .entry-content ol>li>p,.type-plugin .entry-content ul>li>p{margin:0}.type-plugin .entry-content #admin{display:block!important}.type-plugin .plugin-blocks-list{list-style:none;margin-left:0}.type-plugin .plugin-blocks-list .plugin-blocks-list-item{display:grid;grid-template-columns:auto 1fr;margin-bottom:1.25rem}.type-plugin .plugin-blocks-list .block-icon{bor
 der:1px solid #eee;border-radius:2px;display:inline-block;height:3.5rem;margin-right:1rem;padding:1.143rem;width:3.5rem}.type-plugin .plugin-blocks-list .block-icon.dashicons{color:inherit}.type-plugin .plugin-blocks-list .block-icon svg{fill:currentColor;height:16px;width:16px}.type-plugin .plugin-blocks-list .block-title{align-self:center;font-weight:700}.type-plugin .plugin-blocks-list .has-description .block-icon{grid-row:1/span 2}.type-plugin .plugin-blocks-list .has-description .block-title{margin-bottom:.4096rem}.type-plugin .entry-meta{padding:0 1.5625rem}.type-plugin span#description,.type-plugin span#developers,.type-plugin span#installation,.type-plugin span#reviews{position:fixed}.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation,.type-plugin span#reviews:not(:target)~span#installation
 :not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews{background:#fff;border:2px solid #eee;border-bottom:0;padding-bottom:2px}@media screen and (max-width:34em){.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced.active,.type-plugin span#advanced.displayed~#section-links .tabs li#tablink-advanced:hover,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers.active,.type-plugin span#developers:target~#section-links .tabs li#tablink-developers:hover,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation.active,.type-plugin span#installation:target~#section-links .tabs li#tablink-installation:hover,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description.active,
 .type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~span#advanced:not(.displayed)~#section-links .tabs li#tablink-description:hover,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews.active,.type-plugin span#reviews:target~#section-links .tabs li#tablink-reviews:hover{padding-bottom:2px!important}}.type-plugin span#section-links{display:flex;flex-flow:row wrap}.type-plugin span#section-links .tabs{flex:1 1 auto}@media screen and (max-width:34em){.type-plugin span#section-links{display:block}}.type-plugin #link-support{align-self:flex-end;border-bottom:2px solid #eee;flex:0 0 auto;font-size:.9rem;height:2rem}.type-plugin #link-support a:before{content:"\f125";display:inline-block;font-family:dashicons;font-size:1.2em;margin-right:.4em;max-height:1em;vertical-align:top}@media screen and (max-width:737px){.type-plugin #link-support{padding-right:20px}}@media screen and (max-width:34em){.type-plugin #link-sup
 port{border-bottom:0;display:block;margin-left:20px;margin-top:1.5rem;width:100%}}.type-plugin span#developers:target~.entry-content #tab-changelog,.type-plugin span#developers:target~.entry-content #tab-developers,.type-plugin span#developers:target~.entry-content #tab-developers .plugin-development,.type-plugin span#developers:target~.entry-content #tab-developers~button,.type-plugin span#installation:target~.entry-content #tab-installation,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #blocks,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #faq,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #screenshots,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-description,.type-plugin span#reviews:not(:target)~span#install
 ation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers~button,.type-plugin span#reviews:target~.entry-content #tab-reviews{display:block}.type-plugin span#developers:target~.entry-content #tab-developers .plugin-contributors,.type-plugin span#installation:target~.entry-meta .plugin-contributors,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-content #tab-developers .plugin-development,.type-plugin span#reviews:not(:target)~span#installation:not(:target)~span#developers:not(:target)~.entry-meta .plugin-contributors,.type-plugin span#reviews:target~.entry-meta .plugin-contributors,.type-plugin span#reviews:target~.entry-meta .plugin-donate,.type-plugin span#reviews:target~.entry-meta .plugin-meta,.type-plugin span#reviews:target~.entry-meta .plugin-support{display:none}@media 
 screen and (min-width:737px){.type-plugin .entry-content,.type-plugin .entry-meta,.type-plugin .plugin-header{padding-left:0;padding-right:0}.type-plugin .entry-meta{float:right;width:30%}}.plugin-adopt-me{background:#e6f4fa;font-size:.8rem;margin-top:36px;padding:12px}.plugin-adopt-me .widget-title{margin-top:0}.plugin-adopt-me p{margin-bottom:0}.widget.plugin-categorization{margin-top:2rem}.widget.plugin-categorization .widget-head{column-gap:12px;display:flex;flex-flow:row wrap;justify-content:space-between}.widget.plugin-categorization .widget-head h2{flex:1 1 auto;font-size:1rem;font-weight:700;margin-bottom:.2rem;margin-top:0}.widget.plugin-categorization .widget-head a{flex:0 0 auto;font-size:.8rem;line-height:2;text-align:right}.widget.plugin-categorization .widget-head a[href=""]{display:none}.widget.plugin-categorization .widget-head a:after{content:"\f504";font-family:dashicons;margin-left:2px}.widget.plugin-categorization p{font-size:.7rem;margin-top:
 .5rem}.widget.plugin-categorization~.plugin-meta li:first-child{border-top:1px solid #eee}.committer-list,.support-rep-list{font-size:.8rem;list-style:none;margin:0}.committer-list li,.support-rep-list li{padding-bottom:.5rem}.committer-list li .remove,.support-rep-list li .remove{color:red;visibility:hidden}.committer-list li:hover .remove,.support-rep-list li:hover .remove{visibility:visible}.committer-list .avatar,.support-rep-list .avatar{float:left;margin-right:10px}.committer-list .spinner,.support-rep-list .spinner{position:relative}.committer-list .spinner:after,.support-rep-list .spinner:after{background:url(/wp-admin/images/spinner.gif) no-repeat 50%;background-size:20px 20px;content:"";display:block;height:20px;margin:-10px -10px 0 0;position:absolute;right:-50%;top:50%;transform:translateZ(0);width:20px}@media (-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi),print{.committer-list .spinner:after,.support-rep-list .spinner:after{background-image:url(
 /wp-admin/images/spinner-2x.gif)}}.plugin-contributors.read-more{border-bottom:2px solid #eee;max-height:200px;overflow:hidden;padding-bottom:1px}.plugin-contributors.read-more.toggled{max-height:none}.no-js .plugin-contributors.read-more{max-height:none;overflow:auto}.contributors-list{font-size:.8rem;list-style-type:none;margin:0}.contributors-list li{margin-bottom:1rem}.contributors-list .avatar{float:left;margin-right:10px}.plugin-meta{margin-top:2rem}.plugin-meta ul{font-size:.8rem;list-style-type:none;margin:0;padding:0}.plugin-meta li{border-top:1px solid #eee;display:inline-block;padding:.5rem 0;position:relative;width:100%}.plugin-meta li strong{float:right}.plugin-meta li:first-child{border-top:0}.plugin-meta .languages,.plugin-meta .tags{float:right;text-align:right}.plugin-meta .tags{width:60%}.plugin-meta .languages .popover{margin-top:8px}.plugin-meta .languages .popover-trigger{color:#0073aa;font-weight:600}.plugin-meta .languages .popover-trigger:hover{text-decoratio
 n:underline}.plugin-meta [rel=tag]{background:#eee;border-radius:2px;color:#000;display:inline-block;font-size:.64rem;margin:2px;max-width:95%;overflow:hidden;padding:3px 6px;position:relative;text-overflow:ellipsis;white-space:nowrap;width:auto}.plugin-meta [rel=tag]:hover{background:#f3f3f3}.plugin-meta [rel=tag]:active{background:#dfdfdf}.popover{background-color:#fff;border:1px solid #ccc;border-radius:2px;box-shadow:0 2px 10px rgba(0,0,0,.1);display:none;left:0;margin-top:10px;max-width:300px;padding:1em 1em 2em;position:absolute;width:100%;z-index:100}.popover.is-top-right{left:auto;right:0}.popover.is-visible{display:block}.popover .popover-close{bottom:.5em;color:#0073aa;font-size:small;position:absolute;right:.6em}.popover .popover-close:active,.popover .popover-close:focus,.popover .popover-close:hover{text-decoration:underline}.popover .popover-arrow{border:10px solid transparent;border-bottom:10px solid #ccc;border-top:none;height:0;position:absolute;right:20px;top:-10px
 ;width:0;z-index:-1}.popover .popover-arrow:after{border:10px solid transparent;border-bottom:10px solid #fff;border-top:none;content:"";left:-10px;position:absolute;top:2px}.popover .popover-inner{text-align:left}.popover .popover-inner p:first-child{margin-top:0}.popover .popover-inner p:last-child{margin-bottom:0}.plugin-ratings{font-size:.8rem;position:relative}.plugin-ratings .reviews-link{position:absolute;right:0;top:0}.plugin-ratings .reviews-link:after{content:"\f345";font-family:dashicons;padding-left:5px;vertical-align:top}.plugin-ratings [class*=dashicons-star-]{color:#ffb900;display:inline-block;font-size:1.5625rem;height:auto;margin:0;width:auto}.plugin-ratings .ratings-list{list-style-type:none;margin:1rem 0;padding:0}.plugin-ratings .ratings-list .counter-container,.plugin-ratings .ratings-list .counter-container a{text-decoration:none;width:100%}.plugin-ratings .ratings-list .counter-label{display:inline-block;min-width:65px}.plugin-ratings .rati
 ngs-list .counter-back,.plugin-ratings .ratings-list .counter-bar{display:inline-block;height:1rem;vertical-align:middle}.plugin-ratings .ratings-list .counter-back{background-color:#ececec;width:58%;width:calc(100% - 130px)}.plugin-ratings .ratings-list .counter-bar{background-color:#ffc733;display:block}.plugin-ratings .ratings-list .counter-count{margin-left:3px}.plugin-support{font-size:.8rem}.plugin-support .counter-container{margin-bottom:1rem;position:relative}.plugin-support .counter-back,.plugin-support .counter-bar{display:inline-block;height:30px;vertical-align:middle}.plugin-support .counter-back{background-color:#ececec;width:100%}.plugin-support .counter-bar{background-color:#c7e8ca;display:block}.plugin-support .counter-count{font-size:.64rem;left:8px;position:absolute;top:8px;width:100%;width:calc(100% - 8px)}@media screen and (min-width:737px){.plugin-support .counter-count{top:5px}}.home .widget,.widget-area.home .widget{display:inline-block;font-size:.8rem;margin:
 0;vertical-align:top}@media screen and (min-width:737px){.home .widget,.widget-area.home .widget{margin-right:5%;width:30%}.home .widget:last-child,.widget-area.home .widget:last-child{margin-right:0}}.home .widget select,.widget-area.home .widget select{max-width:100%}.entry-meta .widget-title{border:none;color:#32373c;font-size:1.25rem;font-weight:600;padding:0}.widget-area{margin:0 auto;max-width:960px;padding:0 1.5625rem 3.0517578125rem}@media screen and (min-width:737px){.widget-area{padding:0 10px 3.0517578125rem}}
</ins><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginsfunctionsphp"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php   2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/functions.php     2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -127,7 +127,7 @@
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // The plugin submission page: /developers/add/
</span><span class="cx" style="display: block; padding: 0 10px">        if ( is_page( 'add' ) ) {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                wp_enqueue_script( 'wporg-plugins-upload', get_stylesheet_directory_uri() . '/js/upload.js', array( 'wp-api' ), filemtime( __DIR__ . '/js/upload.js' ), true );
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         wp_enqueue_script( 'wporg-plugins-upload', get_stylesheet_directory_uri() . '/js/upload.js', array( 'wp-api', 'jquery' ), filemtime( __DIR__ . '/js/upload.js' ), true );
</ins><span class="cx" style="display: block; padding: 0 10px">         }
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">        // React is currently only used on detail pages.
</span></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginsjsuploadjs"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/js/upload.js</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/js/upload.js    2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/js/upload.js      2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -3,8 +3,9 @@
</span><span class="cx" style="display: block; padding: 0 10px">                e.preventDefault();
</span><span class="cx" style="display: block; padding: 0 10px">                var $form = $(e.target),
</span><span class="cx" style="display: block; padding: 0 10px">                        $errorNotice = $form.find('.notice-error p'),
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                        restEndpoint = 'plugins/v1/upload/' + $form.find('input[name="id"]').val(),
-                       slug = $form.find('input[name="post_name"]').val();
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+                 pluginId = $form.find('input[name="id"]').val(),
+                       slug = $form.find('input[name="post_name"]').val(),
+                       restEndpoint = 'plugins/v1/upload/' + pluginId + '/slug';
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                $form.find('input').prop('disabled', true);
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18,8 +19,8 @@
</span><span class="cx" style="display: block; padding: 0 10px">                .done( function() {
</span><span class="cx" style="display: block; padding: 0 10px">                        window.location.reload();
</span><span class="cx" style="display: block; padding: 0 10px">                } )
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-                .fail( function( request, statusText ) {
-                       var errorHtml = request?.responseJSON?.message || statusText;
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+         .fail( function( response, statusText ) {
+                       var errorHtml = response?.responseJSON?.message || statusText;
</ins><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="cx" style="display: block; padding: 0 10px">                        $errorNotice.html( errorHtml ).parent().removeClass('hidden');
</span><span class="cx" style="display: block; padding: 0 10px"> 
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -26,4 +27,26 @@
</span><span class="cx" style="display: block; padding: 0 10px">                        $form.find('input').prop('disabled', false);
</span><span class="cx" style="display: block; padding: 0 10px">                } );
</span><span class="cx" style="display: block; padding: 0 10px">        } );
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-})( jQuery );
</del><span class="cx" style="display: block; padding: 0 10px">\ No newline at end of file
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+
+       // Show the filename on the button when a file is selected.
+       $( 'input.plugin-file' )
+               .on( 'change', function( e ) {
+                       var $span = $(this).parent().find('span'),
+                               fileName = e.target.value.split( '\\' ).pop();
+
+                       if ( ! $span.data( 'defaultText' ) ) {
+                               $span.data( 'defaultText', $span.text() );
+                       }
+
+                       $span.text( fileName || $span.data( 'defaultText' ) );
+               } )
+               .on( 'focus', function() { $(this).parent().addClass( 'focus' ); } )
+               .on( 'blur', function() { $(this).parent().removeClass( 'focus' ); } );
+
+       $( 'a.show-upload-additional').on( 'click', function( e ) {
+               e.preventDefault();
+
+               $(this).hide().parents('ul').find('.plugin-upload-form.hidden').removeClass( 'hidden' );
+       } );
+
+})( jQuery );
</ins></span></pre></div>
<a id="sitestrunkwordpressorgpublic_htmlwpcontentthemespubwporgpluginspackagelockjson"></a>
<div class="modfile"><h4 style="background-color: #eee; color: inherit; margin: 1em 0; padding: 1.3em; font-size: 115%">Modified: sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/package-lock.json</h4>
<pre class="diff"><span>
<span class="info" style="display: block; padding: 0 10px; color: #888">--- sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/package-lock.json       2024-01-15 02:56:08 UTC (rev 13108)
+++ sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/package-lock.json 2024-01-15 05:23:52 UTC (rev 13109)
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -4496,6 +4496,19 @@
</span><span class="cx" style="display: block; padding: 0 10px">         "node": ">=8"
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     },
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    "node_modules/@wordpress/scripts/node_modules/prettier": {
+      "name": "wp-prettier",
+      "version": "2.2.1-beta-1",
+      "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz",
+      "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==",
+      "dev": true,
+      "bin": {
+        "prettier": "bin-prettier.js"
+      },
+      "engines": {
+        "node": ">=10.13.0"
+      }
+    },
</ins><span class="cx" style="display: block; padding: 0 10px">     "node_modules/@wordpress/scripts/node_modules/supports-color": {
</span><span class="cx" style="display: block; padding: 0 10px">       "version": "7.2.0",
</span><span class="cx" style="display: block; padding: 0 10px">       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -15909,11 +15922,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     },
</span><span class="cx" style="display: block; padding: 0 10px">     "node_modules/prettier": {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      "name": "wp-prettier",
-      "version": "2.2.1-beta-1",
-      "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz",
-      "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==",
-      "dev": true
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.2.tgz",
+      "integrity": "sha512-HTByuKZzw7utPiDO523Tt2pLtEyK7OibUD9suEJQrPUCYQqrHr74GGX6VidMrovbf/I50mPqr8j/II6oBAuc5A==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "prettier": "bin/prettier.cjs"
+      },
+      "engines": {
+        "node": ">=14"
+      },
+      "funding": {
+        "url": "https://github.com/prettier/prettier?sponsor=1"
+      }
</ins><span class="cx" style="display: block; padding: 0 10px">     },
</span><span class="cx" style="display: block; padding: 0 10px">     "node_modules/prettier-linter-helpers": {
</span><span class="cx" style="display: block; padding: 0 10px">       "version": "1.0.0",
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -18588,6 +18610,20 @@
</span><span class="cx" style="display: block; padding: 0 10px">         "is-typedarray": "^1.0.0"
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     },
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    "node_modules/typescript": {
+      "version": "5.3.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+      "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+      "dev": true,
+      "peer": true,
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=14.17"
+      }
+    },
</ins><span class="cx" style="display: block; padding: 0 10px">     "node_modules/uc.micro": {
</span><span class="cx" style="display: block; padding: 0 10px">       "version": "1.0.6",
</span><span class="cx" style="display: block; padding: 0 10px">       "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -23071,6 +23107,12 @@
</span><span class="cx" style="display: block; padding: 0 10px">           "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
</span><span class="cx" style="display: block; padding: 0 10px">           "dev": true
</span><span class="cx" style="display: block; padding: 0 10px">         },
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+        "prettier": {
+          "version": "npm:wp-prettier@2.2.1-beta-1",
+          "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz",
+          "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==",
+          "dev": true
+        },
</ins><span class="cx" style="display: block; padding: 0 10px">         "supports-color": {
</span><span class="cx" style="display: block; padding: 0 10px">           "version": "7.2.0",
</span><span class="cx" style="display: block; padding: 0 10px">           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -31582,10 +31624,11 @@
</span><span class="cx" style="display: block; padding: 0 10px">       "dev": true
</span><span class="cx" style="display: block; padding: 0 10px">     },
</span><span class="cx" style="display: block; padding: 0 10px">     "prettier": {
</span><del style="background-color: #fdd; text-decoration:none; display:block; padding: 0 10px">-      "version": "npm:wp-prettier@2.2.1-beta-1",
-      "resolved": "https://registry.npmjs.org/wp-prettier/-/wp-prettier-2.2.1-beta-1.tgz",
-      "integrity": "sha512-+JHkqs9LC/JPp51yy1hzs3lQ7qeuWCwOcSzpQNeeY/G7oSpnF61vxt7hRh87zNRTr6ob2ndy0W8rVzhgrcA+Gw==",
-      "dev": true
</del><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+      "version": "3.2.2",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.2.tgz",
+      "integrity": "sha512-HTByuKZzw7utPiDO523Tt2pLtEyK7OibUD9suEJQrPUCYQqrHr74GGX6VidMrovbf/I50mPqr8j/II6oBAuc5A==",
+      "dev": true,
+      "peer": true
</ins><span class="cx" style="display: block; padding: 0 10px">     },
</span><span class="cx" style="display: block; padding: 0 10px">     "prettier-linter-helpers": {
</span><span class="cx" style="display: block; padding: 0 10px">       "version": "1.0.0",
</span><span class="lines" style="display: block; padding: 0 10px; color: #888">@@ -33656,6 +33699,13 @@
</span><span class="cx" style="display: block; padding: 0 10px">         "is-typedarray": "^1.0.0"
</span><span class="cx" style="display: block; padding: 0 10px">       }
</span><span class="cx" style="display: block; padding: 0 10px">     },
</span><ins style="background-color: #dfd; text-decoration:none; display:block; padding: 0 10px">+    "typescript": {
+      "version": "5.3.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+      "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+      "dev": true,
+      "peer": true
+    },
</ins><span class="cx" style="display: block; padding: 0 10px">     "uc.micro": {
</span><span class="cx" style="display: block; padding: 0 10px">       "version": "1.0.6",
</span><span class="cx" style="display: block; padding: 0 10px">       "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
</span></span></pre>
</div>
</div>

</body>
</html>