Commit 0955904c authored by agata's avatar agata

wordpress core update 5.4.1

parent e558cb36
......@@ -40,6 +40,39 @@ require_once ABSPATH . 'wp-admin/admin-header.php';
</nav>
</div>
<div class="about__section changelog">
<div class="column">
<h2><?php _e( 'Maintenance and Security Releases' ); ?></h2>
<p>
<?php
printf(
/* translators: 1: WordPress version number, 2: plural number of bugs. More than one security issue. */
_n(
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.',
11
),
'5.4.1',
number_format_i18n( 11 )
);
?>
<?php
printf(
/* translators: %s: HelpHub URL */
__( 'For more information, see <a href="%s">the release notes</a>.' ),
sprintf(
/* translators: %s: WordPress version */
esc_url( __( 'https://wordpress.org/support/wordpress-version/version-%s/' ) ),
sanitize_title( '5.4.1' )
)
);
?>
</p>
</div>
</div>
<hr />
<div class="about__section is-feature has-accent-background-color">
<h1><?php _e( 'Say hello to more and better.' ); ?></h1>
......
......@@ -318,7 +318,8 @@
line-height: 1.4;
}
.about__container h3 {
.about__container h3,
.about__container h2.is-smaller-heading {
margin-top: 0;
font-size: 1em;
}
......
This diff is collapsed.
......@@ -317,7 +317,8 @@
line-height: 1.4;
}
.about__container h3 {
.about__container h3,
.about__container h2.is-smaller-heading {
margin-top: 0;
font-size: 1em;
}
......
This diff is collapsed.
......@@ -449,7 +449,7 @@ form#tags-filter {
#post-body #visibility:before,
.curtime #timestamp:before,
#post-body .misc-pub-revisions:before,
#post-body .misc-pub-response-to:before,
#post-body .misc-pub-response-to:before,
#post-body .misc-pub-comment-status:before {
color: #82878c;
}
......@@ -458,7 +458,7 @@ form#tags-filter {
#post-body #visibility:before,
.curtime #timestamp:before,
#post-body .misc-pub-revisions:before,
#post-body .misc-pub-response-to:before,
#post-body .misc-pub-response-to:before,
#post-body .misc-pub-comment-status:before {
font: normal 20px/1 dashicons;
speak: none;
......@@ -470,7 +470,7 @@ form#tags-filter {
-moz-osx-font-smoothing: grayscale;
}
#post-body .misc-pub-post-status:before,
#post-body .misc-pub-post-status:before,
#post-body .misc-pub-comment-status:before {
content: "\f173";
}
......@@ -757,21 +757,32 @@ form#tags-filter {
margin-bottom: 1em;
}
.policy-text p:not(.privacy-policy-tutorial):not(.wp-policy-help) {
.policy-text > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help),
.policy-text div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) {
background-color: #fff;
margin: 0;
padding: 1em;
}
.policy-text p:not(.privacy-policy-tutorial):not(.wp-policy-help) + p:not(.privacy-policy-tutorial):not(.wp-policy-help) {
.policy-text > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) + *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help),
.policy-text div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) + *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) {
padding-top: 0;
}
.hide-privacy-policy-tutorial p:not(.privacy-policy-tutorial):not(.wp-policy-help) {
.hide-privacy-policy-tutorial > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) {
margin: 1em 0;
padding: 0;
}
.policy-text ul li,
.policy-text ol li {
margin-right: 2em;
}
.policy-text ul {
list-style: disc;
}
strong.wp-policy-help, /* For back-compat, see #49282 */
strong.privacy-policy-tutorial {
display: block;
......
This diff is collapsed.
......@@ -448,7 +448,7 @@ form#tags-filter {
#post-body #visibility:before,
.curtime #timestamp:before,
#post-body .misc-pub-revisions:before,
#post-body .misc-pub-response-to:before,
#post-body .misc-pub-response-to:before,
#post-body .misc-pub-comment-status:before {
color: #82878c;
}
......@@ -457,7 +457,7 @@ form#tags-filter {
#post-body #visibility:before,
.curtime #timestamp:before,
#post-body .misc-pub-revisions:before,
#post-body .misc-pub-response-to:before,
#post-body .misc-pub-response-to:before,
#post-body .misc-pub-comment-status:before {
font: normal 20px/1 dashicons;
speak: none;
......@@ -469,7 +469,7 @@ form#tags-filter {
-moz-osx-font-smoothing: grayscale;
}
#post-body .misc-pub-post-status:before,
#post-body .misc-pub-post-status:before,
#post-body .misc-pub-comment-status:before {
content: "\f173";
}
......@@ -756,21 +756,32 @@ form#tags-filter {
margin-bottom: 1em;
}
.policy-text p:not(.privacy-policy-tutorial):not(.wp-policy-help) {
.policy-text > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help),
.policy-text div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) {
background-color: #fff;
margin: 0;
padding: 1em;
}
.policy-text p:not(.privacy-policy-tutorial):not(.wp-policy-help) + p:not(.privacy-policy-tutorial):not(.wp-policy-help) {
.policy-text > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) + *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help),
.policy-text div > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) + *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) {
padding-top: 0;
}
.hide-privacy-policy-tutorial p:not(.privacy-policy-tutorial):not(.wp-policy-help) {
.hide-privacy-policy-tutorial > *:not(h1):not(h2):not(h3):not(h4):not(h5):not(h6):not(div):not(.privacy-policy-tutorial):not(.wp-policy-help) {
margin: 1em 0;
padding: 0;
}
.policy-text ul li,
.policy-text ol li {
margin-left: 2em;
}
.policy-text ul {
list-style: disc;
}
strong.wp-policy-help, /* For back-compat, see #49282 */
strong.privacy-policy-tutorial {
display: block;
......
This diff is collapsed.
......@@ -64,22 +64,22 @@ require_once ABSPATH . 'wp-admin/admin-header.php';
<div class="about__section has-4-columns">
<div class="column">
<div class="freedoms-image"></div>
<h3><?php _e( 'The 1st Freedom' ); ?></h3>
<h2 class="is-smaller-heading"><?php _e( 'The 1st Freedom' ); ?></h2>
<p><?php _e( 'To run the program for any purpose.' ); ?></p>
</div>
<div class="column">
<div class="freedoms-image"></div>
<h3><?php _e( 'The 2nd Freedom' ); ?></h3>
<h2 class="is-smaller-heading"><?php _e( 'The 2nd Freedom' ); ?></h2>
<p><?php _e( 'To study how the program works and change it to make it do what you wish.' ); ?></p>
</div>
<div class="column">
<div class="freedoms-image"></div>
<h3><?php _e( 'The 3rd Freedom' ); ?></h3>
<h2 class="is-smaller-heading"><?php _e( 'The 3rd Freedom' ); ?></h2>
<p><?php _e( 'To redistribute.' ); ?></p>
</div>
<div class="column">
<div class="freedoms-image"></div>
<h3><?php _e( 'The 4th Freedom' ); ?></h3>
<h2 class="is-smaller-heading"><?php _e( 'The 4th Freedom' ); ?></h2>
<p><?php _e( 'To distribute copies of your modified versions to others.' ); ?></p>
</div>
</div>
......
wp-admin/images/w-logo-blue.png

3.04 KB | W: | H:

wp-admin/images/w-logo-blue.png

4.02 KB | W: | H:

wp-admin/images/w-logo-blue.png
wp-admin/images/w-logo-blue.png
wp-admin/images/w-logo-blue.png
wp-admin/images/w-logo-blue.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -1563,19 +1563,4 @@ class WP_Privacy_Data_Removal_Requests_Table extends WP_Privacy_Data_Removal_Req
*/
function _wp_privacy_requests_screen_options() {
_deprecated_function( __FUNCTION__, '5.3.0' );
}
/**
* Return the user request object for the specified request ID.
*
* @since 4.9.6
* @deprecated 5.4.0 Use wp_get_user_request()
* @see wp_get_user_request()
*
* @param int $request_id The ID of the user request.
* @return WP_User_Request|false
*/
function wp_get_user_request_data( $request_id ) {
_deprecated_function( __FUNCTION__, '5.4.0', 'wp_get_user_request()' );
return wp_get_user_request( $request_id );
}
\ No newline at end of file
......@@ -293,15 +293,6 @@ jQuery( function ( $ ) {
img.src = akismet_mshot_url( linkUrl );
}
/**
* Sets the comment form privacy notice display to hide when one clicks Core's dismiss button on the related admin notice.
*/
$( '#akismet-privacy-notice-admin-notice' ).on( 'click', '.notice-dismiss', function () {
$.ajax( {
url: './options-general.php?page=akismet-key-config&akismet_comment_form_privacy_notice=hide',
} );
});
$( '.akismet-could-be-primary' ).each( function () {
var form = $( this ).closest( 'form' );
......
......@@ -6,7 +6,7 @@
Plugin Name: Akismet Anti-Spam
Plugin URI: https://akismet.com/
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: activate the Akismet plugin and then go to your Akismet Settings page to set up your API key.
Version: 4.1.4
Version: 4.1.5
Author: Automattic
Author URI: https://automattic.com/wordpress-plugins/
License: GPLv2 or later
......@@ -37,7 +37,7 @@ if ( !function_exists( 'add_action' ) ) {
exit;
}
define( 'AKISMET_VERSION', '4.1.4' );
define( 'AKISMET_VERSION', '4.1.5' );
define( 'AKISMET__MINIMUM_WP_VERSION', '4.0' );
define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'AKISMET_DELETE_LIMIT', 100000 );
......
This diff is collapsed.
......@@ -32,10 +32,6 @@ class Akismet_Admin {
if ( isset( $_POST['action'] ) && $_POST['action'] == 'enter-key' ) {
self::enter_api_key();
}
if ( ! empty( $_GET['akismet_comment_form_privacy_notice'] ) && empty( $_GET['settings-updated']) ) {
self::set_form_privacy_notice_option( $_GET['akismet_comment_form_privacy_notice'] );
}
}
public static function init_hooks() {
......@@ -70,11 +66,6 @@ class Akismet_Admin {
add_filter( 'all_plugins', array( 'Akismet_Admin', 'modify_plugin_description' ) );
if ( class_exists( 'Jetpack' ) ) {
add_filter( 'akismet_comment_form_privacy_notice_url_display', array( 'Akismet_Admin', 'jetpack_comment_form_privacy_notice_url' ) );
add_filter( 'akismet_comment_form_privacy_notice_url_hide', array( 'Akismet_Admin', 'jetpack_comment_form_privacy_notice_url' ) );
}
// priority=1 because we need ours to run before core's comment anonymizer runs, and that's registered at priority=10
add_filter( 'wp_privacy_personal_data_erasers', array( 'Akismet_Admin', 'register_personal_data_eraser' ), 1 );
}
......@@ -890,14 +881,6 @@ class Akismet_Admin {
) );
}
public static function display_privacy_notice_control_warning() {
if ( !current_user_can( 'manage_options' ) )
return;
Akismet::view( 'notice', array(
'type' => 'privacy',
) );
}
public static function display_spam_check_warning() {
Akismet::fix_scheduled_recheck();
......@@ -1031,10 +1014,6 @@ class Akismet_Admin {
$notices[] = array( 'type' => $akismet_user->status );
}
if ( false === get_option( 'akismet_comment_form_privacy_notice' ) ) {
$notices[] = array( 'type' => 'privacy' );
}
/*
// To see all variants when testing.
$notices[] = array( 'type' => 'active-notice', 'time_saved' => 'Cleaning up spam takes time. Akismet has saved you 1 minute!' );
......@@ -1105,14 +1084,6 @@ class Akismet_Admin {
else if ( isset( $_GET['akismet_recheck_error'] ) ) {
echo '<div class="notice notice-error"><p>' . esc_html( __( 'Akismet could not recheck your comments for spam.', 'akismet' ) ) . '</p></div>';
}
$akismet_comment_form_privacy_notice_option = get_option( 'akismet_comment_form_privacy_notice' );
if ( ! in_array( $akismet_comment_form_privacy_notice_option, array( 'hide', 'display' ) ) ) {
$api_key = Akismet::get_api_key();
if ( ! empty( $api_key ) ) {
self::display_privacy_notice_control_warning();
}
}
}
public static function display_status() {
......@@ -1227,10 +1198,6 @@ class Akismet_Admin {
update_option( 'akismet_comment_form_privacy_notice', $state );
}
}
public static function jetpack_comment_form_privacy_notice_url( $url ) {
return str_replace( 'options-general.php', 'admin.php', $url );
}
public static function register_personal_data_eraser( $erasers ) {
$erasers['akismet'] = array(
......
This diff is collapsed.
......@@ -138,10 +138,4 @@
</p>
<?php endif; ?>
</div>
<?php elseif ( $type == 'privacy' ) :?>
<div class="notice notice-warning is-dismissible" id="akismet-privacy-notice-admin-notice">
<p><strong><?php esc_html_e( 'Akismet & Privacy.', 'akismet' );?></strong></p>
<p><?php esc_html_e( 'To help your site with transparency under privacy laws like the GDPR, Akismet can display a notice to your users under your comment forms. This feature is disabled by default, however, you can turn it on below.', 'akismet' ); ?></p>
<p><?php printf( __(' Please <a href="%s">enable</a> or <a href="%s">disable</a> this feature. <a href="%s" id="akismet-privacy-notice-control-notice-info-link" target="_blank">More information</a>.', 'akismet' ), admin_url( apply_filters( 'akismet_comment_form_privacy_notice_url_display', 'options-general.php?page=akismet-key-config&akismet_comment_form_privacy_notice=display' ) ), admin_url( apply_filters( 'akismet_comment_form_privacy_notice_url_hide', 'options-general.php?page=akismet-key-config&akismet_comment_form_privacy_notice=hide' ) ), 'https://akismet.com/privacy/' ); ?></p>
</div>
<?php endif;?>
\ No newline at end of file
......@@ -92,7 +92,7 @@ function render_block_core_rss( $attributes ) {
$class .= ' ' . $attributes['className'];
}
return "<ul class='{$class}'>{$list_items}</ul>";
return sprintf( "<ul class='%s'>%s</ul>", esc_attr( $class ), $list_items );
}
/**
......
......@@ -57,7 +57,7 @@ function render_block_core_search( $attributes ) {
return sprintf(
'<form class="%s" role="search" method="get" action="%s">%s</form>',
$class,
esc_attr( $class ),
esc_url( home_url( '/' ) ),
$label_markup . $input_markup . $button_markup
);
......
......@@ -2923,22 +2923,11 @@ final class WP_Customize_Manager {
add_filter( 'wp_save_post_revision_post_has_changed', array( $this, '_filter_revision_post_has_changed' ), 5, 3 );
/*
* Update the changeset post. The publish_customize_changeset action
* will cause the settings in the changeset to be saved via
* WP_Customize_Setting::save().
* Update the changeset post. The publish_customize_changeset action will cause the settings in the
* changeset to be saved via WP_Customize_Setting::save(). Updating a post with publish status will
* trigger WP_Customize_Manager::publish_changeset_values().
*/
// Prevent content filters from corrupting JSON in post_content.
$has_kses = ( false !== has_filter( 'content_save_pre', 'wp_filter_post_kses' ) );
if ( $has_kses ) {
kses_remove_filters();
}
$has_targeted_link_rel_filters = ( false !== has_filter( 'content_save_pre', 'wp_targeted_link_rel' ) );
if ( $has_targeted_link_rel_filters ) {
wp_remove_targeted_link_rel_filters();
}
// Note that updating a post with publish status will trigger WP_Customize_Manager::publish_changeset_values().
add_filter( 'wp_insert_post_data', array( $this, 'preserve_insert_changeset_post_content' ), 5, 3 );
if ( $changeset_post_id ) {
if ( $args['autosave'] && 'auto-draft' !== get_post_status( $changeset_post_id ) ) {
// See _wp_translate_postdata() for why this is required as it will use the edit_post meta capability.
......@@ -2969,14 +2958,7 @@ final class WP_Customize_Manager {
$this->_changeset_post_id = $r; // Update cached post ID for the loaded changeset.
}
}
// Restore removed content filters.
if ( $has_kses ) {
kses_init_filters();
}
if ( $has_targeted_link_rel_filters ) {
wp_init_targeted_link_rel_filters();
}
remove_filter( 'wp_insert_post_data', array( $this, 'preserve_insert_changeset_post_content' ), 5 );
$this->_changeset_data = null; // Reset so WP_Customize_Manager::changeset_data() will re-populate with updated contents.
......@@ -2994,6 +2976,51 @@ final class WP_Customize_Manager {
return $response;
}
/**
* Preserve the initial JSON post_content passed to save into the post.
*
* This is needed to prevent KSES and other {@see 'content_save_pre'} filters
* from corrupting JSON data.
*
* Note that WP_Customize_Manager::validate_setting_values() have already
* run on the setting values being serialized as JSON into the post content
* so it is pre-sanitized.
*
* Also, the sanitization logic is re-run through the respective
* WP_Customize_Setting::sanitize() method when being read out of the
* changeset, via WP_Customize_Manager::post_value(), and this sanitized
* value will also be sent into WP_Customize_Setting::update() for
* persisting to the DB.
*
* Multiple users can collaborate on a single changeset, where one user may
* have the unfiltered_html capability but another may not. A user with
* unfiltered_html may add a script tag to some field which needs to be kept
* intact even when another user updates the changeset to modify another field
* when they do not have unfiltered_html.
*
* @since 5.4.1
*
* @param array $data An array of slashed and processed post data.
* @param array $postarr An array of sanitized (and slashed) but otherwise unmodified post data.
* @param array $unsanitized_postarr An array of slashed yet *unsanitized* and unprocessed post data as originally passed to wp_insert_post().
* @return array Filtered post data.
*/
public function preserve_insert_changeset_post_content( $data, $postarr, $unsanitized_postarr ) {
if (
isset( $data['post_type'] ) &&
isset( $unsanitized_postarr['post_content'] ) &&
'customize_changeset' === $data['post_type'] ||
(
'revision' === $data['post_type'] &&
! empty( $data['post_parent'] ) &&
'customize_changeset' === get_post_type( $data['post_parent'] )
)
) {
$data['post_content'] = $unsanitized_postarr['post_content'];
}
return $data;
}
/**
* Trash or delete a changeset post.
*
......
......@@ -441,7 +441,7 @@ class WP_Object_Cache {
echo '</p>';
echo '<ul>';
foreach ( $this->cache as $group => $cache ) {
echo "<li><strong>Group:</strong> $group - ( " . number_format( strlen( serialize( $cache ) ) / KB_IN_BYTES, 2 ) . 'k )</li>';
echo '<li><strong>Group:</strong> ' . esc_html( $group ) . ' - ( ' . number_format( strlen( serialize( $cache ) ) / KB_IN_BYTES, 2 ) . 'k )</li>';
}
echo '</ul>';
}
......
......@@ -811,10 +811,6 @@ class WP_Query {
$this->is_single = true;
} elseif ( $qv['p'] ) {
$this->is_single = true;
} elseif ( ( '' !== $qv['hour'] ) && ( '' !== $qv['minute'] ) && ( '' !== $qv['second'] ) && ( '' != $qv['year'] ) && ( '' != $qv['monthnum'] ) && ( '' != $qv['day'] ) ) {
// If year, month, day, hour, minute, and second are set,
// a single post is being queried.
$this->is_single = true;
} elseif ( '' != $qv['pagename'] || ! empty( $qv['page_id'] ) ) {
$this->is_page = true;
$this->is_single = false;
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......@@ -87,7 +91,12 @@
.wp-block-buttons .wp-block-button {
display: inline-block;
margin: 4px; }
margin-left: 8px;
margin-bottom: 8px; }
.wp-block-buttons.alignright .wp-block-button {
margin-left: none;
margin-right: 8px; }
.wp-block-buttons.aligncenter {
text-align: center; }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......@@ -88,7 +92,12 @@
.wp-block-buttons .wp-block-button {
display: inline-block;
margin: 4px; }
margin-right: 8px;
margin-bottom: 8px; }
.wp-block-buttons.alignright .wp-block-button {
margin-right: none;
margin-left: 8px; }
.wp-block-buttons.aligncenter {
text-align: center; }
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......
......@@ -10,6 +10,10 @@
/**
* Often re-used variables
*/
/**
* Grid System.
* https://make.wordpress.org/design/2019/10/31/proposal-a-consistent-spacing-system-for-wordpress/
*/
/**
* Breakpoint mixins
*/
......