From b899a8991db84e706926311edc4606602426ab69 Mon Sep 17 00:00:00 2001 From: opportus Date: Fri, 29 Jul 2016 20:41:19 +0200 Subject: [PATCH 01/81] seo tweaks --- includes/wc-template-functions.php | 10 ++++++---- templates/single-product-reviews.php | 4 +++- templates/single-product/related.php | 6 +++--- .../single-product/tabs/additional-information.php | 2 +- templates/single-product/tabs/description.php | 2 +- templates/single-product/tabs/tabs.php | 4 ++-- templates/single-product/up-sells.php | 4 ++-- 7 files changed, 18 insertions(+), 14 deletions(-) diff --git a/includes/wc-template-functions.php b/includes/wc-template-functions.php index eb00bfeaa02..248261aadd2 100644 --- a/includes/wc-template-functions.php +++ b/includes/wc-template-functions.php @@ -532,8 +532,10 @@ if ( ! function_exists( 'woocommerce_template_loop_product_title' ) ) { /** * Show the product title in the product loop. By default this is an H3. */ - function woocommerce_template_loop_product_title() { - echo '

' . get_the_title() . '

'; + function woocommerce_template_loop_product_title() { + $tag = is_product_taxonomy() || is_shop() ? 'h2' : 'h3'; + + echo '<' . $tag . '>' . get_the_title() . ''; } } if ( ! function_exists( 'woocommerce_template_loop_category_title' ) ) { @@ -543,14 +545,14 @@ if ( ! function_exists( 'woocommerce_template_loop_category_title' ) ) { */ function woocommerce_template_loop_category_title( $category ) { ?> -

+

name; if ( $category->count > 0 ) echo apply_filters( 'woocommerce_subcategory_count_html', ' (' . $category->count . ')', $category ); ?> -

+ have_comments() ? __( 'Add a review', 'woocommerce' ) : sprintf( __( 'Be the first to review “%s”', 'woocommerce' ), get_the_title() ), - 'title_reply_to' => __( 'Leave a Reply to %s', 'woocommerce' ), + 'title_reply_to' => __( 'Leave a Reply to %s', 'woocommerce' ), + 'title_reply_before' => '', + 'title_reply_after' => '', 'comment_notes_after' => '', 'fields' => array( 'author' => '

' . ' ' . diff --git a/templates/single-product/related.php b/templates/single-product/related.php index 010c37c912d..32fee9eda52 100644 --- a/templates/single-product/related.php +++ b/templates/single-product/related.php @@ -46,9 +46,9 @@ $woocommerce_loop['columns'] = apply_filters( 'woocommerce_related_products_colu if ( $products->have_posts() ) : ?> -

+ diff --git a/templates/single-product/tabs/description.php b/templates/single-product/tabs/description.php index a2d41b22983..810afe2810f 100644 --- a/templates/single-product/tabs/description.php +++ b/templates/single-product/tabs/description.php @@ -22,7 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) { global $post; -$heading = esc_html( apply_filters( 'woocommerce_product_description_heading', __( 'Product Description', 'woocommerce' ) ) ); +$heading = esc_html( apply_filters( 'woocommerce_product_description_heading', sprintf( __( 'Description for %s', 'woocommerce' ), get_the_title() ) ) ); ?> diff --git a/templates/single-product/tabs/tabs.php b/templates/single-product/tabs/tabs.php index 7d40623e680..5a286779cac 100644 --- a/templates/single-product/tabs/tabs.php +++ b/templates/single-product/tabs/tabs.php @@ -39,9 +39,9 @@ if ( ! empty( $tabs ) ) : ?> $tab ) : ?> -
+
-
+ diff --git a/templates/single-product/up-sells.php b/templates/single-product/up-sells.php index 6b9a59dac5c..e40565d2e5f 100644 --- a/templates/single-product/up-sells.php +++ b/templates/single-product/up-sells.php @@ -43,7 +43,7 @@ $woocommerce_loop['columns'] = apply_filters( 'woocommerce_up_sells_columns', $c if ( $products->have_posts() ) : ?> -
+

@@ -57,7 +57,7 @@ if ( $products->have_posts() ) : ?> -
+ Date: Mon, 1 Aug 2016 19:55:00 +0200 Subject: [PATCH 02/81] seo tweaks - revision1 --- templates/single-product/tabs/additional-information.php | 2 +- templates/single-product/tabs/description.php | 2 +- templates/single-product/tabs/tabs.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/single-product/tabs/additional-information.php b/templates/single-product/tabs/additional-information.php index e58d6170b7f..f4d0217cdd3 100644 --- a/templates/single-product/tabs/additional-information.php +++ b/templates/single-product/tabs/additional-information.php @@ -22,7 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) { global $product; -$heading = apply_filters( 'woocommerce_product_additional_information_heading', sprintf( __( 'Additional information for %s', 'woocommerce' ), get_the_title() ) ); +$heading = esc_html( apply_filters( 'woocommerce_product_additional_information_heading', __( 'Additional information', 'woocommerce' ) ) ); ?> diff --git a/templates/single-product/tabs/description.php b/templates/single-product/tabs/description.php index 810afe2810f..036f380757d 100644 --- a/templates/single-product/tabs/description.php +++ b/templates/single-product/tabs/description.php @@ -22,7 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) { global $post; -$heading = esc_html( apply_filters( 'woocommerce_product_description_heading', sprintf( __( 'Description for %s', 'woocommerce' ), get_the_title() ) ) ); +$heading = esc_html( apply_filters( 'woocommerce_product_description_heading', __( 'Description', 'woocommerce' ) ) ); ?> diff --git a/templates/single-product/tabs/tabs.php b/templates/single-product/tabs/tabs.php index 5a286779cac..7d40623e680 100644 --- a/templates/single-product/tabs/tabs.php +++ b/templates/single-product/tabs/tabs.php @@ -39,9 +39,9 @@ if ( ! empty( $tabs ) ) : ?> $tab ) : ?> -
+
-
+ From fc5fe55bd595eaed30016fe2cb306aa58ad035f1 Mon Sep 17 00:00:00 2001 From: opportus Date: Tue, 2 Aug 2016 23:17:15 +0200 Subject: [PATCH 03/81] seo tweaks - revision2 --- templates/single-product-reviews.php | 2 +- templates/single-product/related.php | 2 +- templates/single-product/tabs/additional-information.php | 2 +- templates/single-product/up-sells.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/templates/single-product-reviews.php b/templates/single-product-reviews.php index 710769211a3..e573a00595a 100644 --- a/templates/single-product-reviews.php +++ b/templates/single-product-reviews.php @@ -30,7 +30,7 @@ if ( ! comments_open() ) {

get_review_count() ) ) - printf( _n( '%s review for %s%s%s', '%s reviews for %s%s%s', $count, 'woocommerce' ), $count, '', get_the_title(), '' ); + printf( esc_html( _n( '%s review for %s%s%s', '%s reviews for %s%s%s', $count, 'woocommerce' ) ), $count, '', get_the_title(), '' ); else _e( 'Reviews', 'woocommerce' ); ?>

diff --git a/templates/single-product/related.php b/templates/single-product/related.php index 32fee9eda52..63c902925f6 100644 --- a/templates/single-product/related.php +++ b/templates/single-product/related.php @@ -48,7 +48,7 @@ if ( $products->have_posts() ) : ?>
From ddd34a4460f39927e759c715957415a9afd8f79e Mon Sep 17 00:00:00 2001 From: Gabor Javorszky Date: Thu, 11 Aug 2016 01:17:43 +0100 Subject: [PATCH 07/81] Fix add to cart variation AJAX mode when cart fragments are dequeued No issue. * high traffic site, so wc-cart-fragments are dequeued (#7777) * variable product with a lot of variations, so stock lookup happens through ajax * previously the add-to-cart-variation.js used the wc_cart_fragments_params for the ajax URL, which in this case wasn't available, the result was a hung page * decoupled from cart fragments: added the wc_ajax_url to the params that wc_add_to_cart_variation_params gets, so no more hung pages. --- assets/js/frontend/add-to-cart-variation.js | 2 +- includes/class-wc-frontend-scripts.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/assets/js/frontend/add-to-cart-variation.js b/assets/js/frontend/add-to-cart-variation.js index 2b469e46027..606523e47f4 100644 --- a/assets/js/frontend/add-to-cart-variation.js +++ b/assets/js/frontend/add-to-cart-variation.js @@ -129,7 +129,7 @@ } ); $xhr = $.ajax( { - url: wc_cart_fragments_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'get_variation' ), + url: wc_add_to_cart_variation_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'get_variation' ), type: 'POST', data: data, success: function( variation ) { diff --git a/includes/class-wc-frontend-scripts.php b/includes/class-wc-frontend-scripts.php index 4ae70accac7..dca14b11f5a 100644 --- a/includes/class-wc-frontend-scripts.php +++ b/includes/class-wc-frontend-scripts.php @@ -320,6 +320,7 @@ class WC_Frontend_Scripts { wc_get_template( 'single-product/add-to-cart/variation.php' ); return array( + 'wc_ajax_url' => WC_AJAX::get_endpoint( "%%endpoint%%" ), 'i18n_no_matching_variations_text' => esc_attr__( 'Sorry, no products matched your selection. Please choose a different combination.', 'woocommerce' ), 'i18n_make_a_selection_text' => esc_attr__( 'Please select some product options before adding this product to your cart.', 'woocommerce' ), 'i18n_unavailable_text' => esc_attr__( 'Sorry, this product is unavailable. Please choose a different combination.', 'woocommerce' ) From 72982ab1e82c96ecd986d373d6500f26de770eac Mon Sep 17 00:00:00 2001 From: Gabor Javorszky Date: Thu, 11 Aug 2016 01:22:06 +0100 Subject: [PATCH 08/81] Fix jshint errors and minifies the script --- assets/js/frontend/add-to-cart-variation.js | 2 +- assets/js/frontend/add-to-cart-variation.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/frontend/add-to-cart-variation.js b/assets/js/frontend/add-to-cart-variation.js index 606523e47f4..53936f7e3bb 100644 --- a/assets/js/frontend/add-to-cart-variation.js +++ b/assets/js/frontend/add-to-cart-variation.js @@ -1,4 +1,4 @@ -/*global wc_add_to_cart_variation_params, wc_cart_fragments_params */ +/*global wc_add_to_cart_variation_params, wc_add_to_cart_variation_params */ /*! * Variations Plugin */ diff --git a/assets/js/frontend/add-to-cart-variation.min.js b/assets/js/frontend/add-to-cart-variation.min.js index c1f905fbe98..e5ed06e5d5d 100644 --- a/assets/js/frontend/add-to-cart-variation.min.js +++ b/assets/js/frontend/add-to-cart-variation.min.js @@ -1,4 +1,4 @@ /*! * Variations Plugin */ -!function(a,b,c,d){a.fn.wc_variation_form=function(){var c=this,d=c.find(".single_variation"),f=c.closest(".product"),g=parseInt(c.data("product_id"),10),h=c.data("product_variations"),i=h===!1,j=!1,k=c.find(".reset_variations"),l=wp.template("variation-template"),m=wp.template("unavailable-variation-template"),n=c.find(".single_variation_wrap");return n.show(),c.unbind("check_variations update_variation_values found_variation"),c.find(".reset_variations").unbind("click"),c.find(".variations select").unbind("change focusin"),c.on("click",".reset_variations",function(a){a.preventDefault(),c.find(".variations select").val("").change(),c.trigger("reset_data")}).on("hide_variation",function(a){a.preventDefault(),c.find(".single_add_to_cart_button").removeClass("wc-variation-is-unavailable").addClass("disabled wc-variation-selection-needed"),c.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled")}).on("show_variation",function(a,b,d){a.preventDefault(),d?(c.find(".single_add_to_cart_button").removeClass("disabled wc-variation-selection-needed wc-variation-is-unavailable"),c.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-disabled").addClass("woocommerce-variation-add-to-cart-enabled")):(c.find(".single_add_to_cart_button").removeClass("wc-variation-selection-needed").addClass("disabled wc-variation-is-unavailable"),c.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled"))}).on("click",".single_add_to_cart_button",function(c){var d=a(this);d.is(".disabled")&&(c.preventDefault(),d.is(".wc-variation-is-unavailable")?b.alert(wc_add_to_cart_variation_params.i18n_unavailable_text):d.is(".wc-variation-selection-needed")&&b.alert(wc_add_to_cart_variation_params.i18n_make_a_selection_text))}).on("reload_product_variations",function(){h=c.data("product_variations"),i=h===!1}).on("reset_data",function(){f.find(".product_meta").find(".sku").wc_reset_content(),a(".product_weight").wc_reset_content(),a(".product_dimensions").wc_reset_content(),c.trigger("reset_image"),d.slideUp(200).trigger("hide_variation")}).on("reset_image",function(){c.wc_variations_image_update(!1)}).on("change",".variations select",function(){if(c.find('input[name="variation_id"], input.variation_id').val("").change(),c.find(".wc-no-matching-variations").remove(),i){j&&j.abort();var b=!0,d=!1,e={};c.find(".variations select").each(function(){var c=a(this).data("attribute_name")||a(this).attr("name"),f=a(this).val()||"";0===f.length?b=!1:d=!0,e[c]=f}),b?(e.product_id=g,e.custom_data=c.data("custom_data"),c.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),j=a.ajax({url:wc_cart_fragments_params.wc_ajax_url.toString().replace("%%endpoint%%","get_variation"),type:"POST",data:e,success:function(a){a?c.trigger("found_variation",[a]):(c.trigger("reset_data"),c.find(".single_variation").after('

'+wc_add_to_cart_variation_params.i18n_no_matching_variations_text+"

"),c.find(".wc-no-matching-variations").slideDown(200))},complete:function(){c.unblock()}})):c.trigger("reset_data"),d?"hidden"===k.css("visibility")&&k.css("visibility","visible").hide().fadeIn():k.css("visibility","hidden")}else c.trigger("woocommerce_variation_select_change"),c.trigger("check_variations",["",!1]),a(this).blur();a(".product.has-default-attributes > .images").fadeTo(200,1),c.trigger("woocommerce_variation_has_changed")}).on("focusin touchstart",".variations select",function(){a(this).find("option:selected").attr("selected","selected"),i||(c.trigger("woocommerce_variation_select_focusin"),c.trigger("check_variations",[a(this).data("attribute_name")||a(this).attr("name"),!0]))}).on("found_variation",function(b,e){var g=f.find(".product_meta").find(".sku"),h=f.find(".product_weight"),i=f.find(".product_dimensions"),j=n.find(".quantity"),k=!0;e.sku?g.wc_set_content(e.sku):g.wc_reset_content(),e.weight?h.wc_set_content(e.weight):h.wc_reset_content(),e.dimensions?i.wc_set_content(e.dimensions):i.wc_reset_content(),c.wc_variations_image_update(e);var o="";e.variation_is_visible?(o=l({variation:e}),o=o.replace("/**/",""),d.html(o),c.find('input[name="variation_id"], input.variation_id').val(e.variation_id).change()):(o=m(),o=o.replace("/**/",""),d.html(o),c.find('input[name="variation_id"], input.variation_id').val("").change()),"yes"===e.is_sold_individually?(j.find("input.qty").val("1").attr("min","1").attr("max",""),j.hide()):(j.find("input.qty").attr("min",e.min_qty).attr("max",e.max_qty),j.show()),e.is_purchasable&&e.is_in_stock&&e.variation_is_visible||(k=!1),a.trim(d.text())?d.slideDown(200).trigger("show_variation",[e,k]):d.show().trigger("show_variation",[e,k])}).on("check_variations",function(c,f,g){if(!i){var j=!0,k=!1,l={},m=a(this),n=m.find(".reset_variations");m.find(".variations select").each(function(){var b=a(this).data("attribute_name")||a(this).attr("name"),c=a(this).val()||"";0===c.length?j=!1:k=!0,f&&b===f?(j=!1,l[b]=""):l[b]=c});var o=e.find_matching_variations(h,l);if(j){var p=o.shift();p?m.trigger("found_variation",[p]):(m.find(".variations select").val(""),g||m.trigger("reset_data"),b.alert(wc_add_to_cart_variation_params.i18n_no_matching_variations_text))}else m.trigger("update_variation_values",[o]),g||m.trigger("reset_data"),f||d.slideUp(200).trigger("hide_variation");k?"hidden"===n.css("visibility")&&n.css("visibility","visible").hide().fadeIn():n.css("visibility","hidden")}}).on("update_variation_values",function(b,d){i||(c.find(".variations select").each(function(b,c){var e,f=a(c);f.data("attribute_options")||f.data("attribute_options",f.find("option:gt(0)").get()),f.find("option:gt(0)").remove(),f.append(f.data("attribute_options")),f.find("option:gt(0)").removeClass("attached"),f.find("option:gt(0)").removeClass("enabled"),f.find("option:gt(0)").removeAttr("disabled"),e="undefined"!=typeof f.data("attribute_name")?f.data("attribute_name"):f.attr("name");for(var g in d)if("undefined"!=typeof d[g]){var h=d[g].attributes;for(var i in h)if(h.hasOwnProperty(i)){var j=h[i];if(i===e){var k="";d[g].variation_is_active&&(k="enabled"),j?(j=a("
").html(j).text(),j=j.replace(/'/g,"\\'"),j=j.replace(/"/g,'\\"'),f.find('option[value="'+j+'"]').addClass("attached "+k)):f.find("option:gt(0)").addClass("attached "+k)}}}f.find("option:gt(0):not(.attached)").remove(),f.find("option:gt(0):not(.enabled)").attr("disabled","disabled")}),c.trigger("woocommerce_update_variation_values"))}),c.trigger("wc_variation_form"),c};var e={find_matching_variations:function(a,b){for(var c=[],d=0;d1?(d.wc_set_variation_attr("src",a.image_src),d.wc_set_variation_attr("title",a.image_title),d.wc_set_variation_attr("alt",a.image_alt),d.wc_set_variation_attr("srcset",a.image_srcset),d.wc_set_variation_attr("sizes",a.image_sizes),e.wc_set_variation_attr("href",a.image_link),e.wc_set_variation_attr("title",a.image_caption)):(d.wc_reset_variation_attr("src"),d.wc_reset_variation_attr("title"),d.wc_reset_variation_attr("alt"),d.wc_reset_variation_attr("srcset"),d.wc_reset_variation_attr("sizes"),e.wc_reset_variation_attr("href"),e.wc_reset_variation_attr("title"))},a(function(){"undefined"!=typeof wc_add_to_cart_variation_params&&a(".variations_form").each(function(){a(this).wc_variation_form().find(".variations select:eq(0)").change()})})}(jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){a.fn.wc_variation_form=function(){var c=this,d=c.find(".single_variation"),f=c.closest(".product"),g=parseInt(c.data("product_id"),10),h=c.data("product_variations"),i=h===!1,j=!1,k=c.find(".reset_variations"),l=wp.template("variation-template"),m=wp.template("unavailable-variation-template"),n=c.find(".single_variation_wrap");return n.show(),c.unbind("check_variations update_variation_values found_variation"),c.find(".reset_variations").unbind("click"),c.find(".variations select").unbind("change focusin"),c.on("click",".reset_variations",function(a){a.preventDefault(),c.find(".variations select").val("").change(),c.trigger("reset_data")}).on("hide_variation",function(a){a.preventDefault(),c.find(".single_add_to_cart_button").removeClass("wc-variation-is-unavailable").addClass("disabled wc-variation-selection-needed"),c.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled")}).on("show_variation",function(a,b,d){a.preventDefault(),d?(c.find(".single_add_to_cart_button").removeClass("disabled wc-variation-selection-needed wc-variation-is-unavailable"),c.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-disabled").addClass("woocommerce-variation-add-to-cart-enabled")):(c.find(".single_add_to_cart_button").removeClass("wc-variation-selection-needed").addClass("disabled wc-variation-is-unavailable"),c.find(".woocommerce-variation-add-to-cart").removeClass("woocommerce-variation-add-to-cart-enabled").addClass("woocommerce-variation-add-to-cart-disabled"))}).on("click",".single_add_to_cart_button",function(c){var d=a(this);d.is(".disabled")&&(c.preventDefault(),d.is(".wc-variation-is-unavailable")?b.alert(wc_add_to_cart_variation_params.i18n_unavailable_text):d.is(".wc-variation-selection-needed")&&b.alert(wc_add_to_cart_variation_params.i18n_make_a_selection_text))}).on("reload_product_variations",function(){h=c.data("product_variations"),i=h===!1}).on("reset_data",function(){f.find(".product_meta").find(".sku").wc_reset_content(),a(".product_weight").wc_reset_content(),a(".product_dimensions").wc_reset_content(),c.trigger("reset_image"),d.slideUp(200).trigger("hide_variation")}).on("reset_image",function(){c.wc_variations_image_update(!1)}).on("change",".variations select",function(){if(c.find('input[name="variation_id"], input.variation_id').val("").change(),c.find(".wc-no-matching-variations").remove(),i){j&&j.abort();var b=!0,d=!1,e={};c.find(".variations select").each(function(){var c=a(this).data("attribute_name")||a(this).attr("name"),f=a(this).val()||"";0===f.length?b=!1:d=!0,e[c]=f}),b?(e.product_id=g,e.custom_data=c.data("custom_data"),c.block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),j=a.ajax({url:wc_add_to_cart_variation_params.wc_ajax_url.toString().replace("%%endpoint%%","get_variation"),type:"POST",data:e,success:function(a){a?c.trigger("found_variation",[a]):(c.trigger("reset_data"),c.find(".single_variation").after('

'+wc_add_to_cart_variation_params.i18n_no_matching_variations_text+"

"),c.find(".wc-no-matching-variations").slideDown(200))},complete:function(){c.unblock()}})):c.trigger("reset_data"),d?"hidden"===k.css("visibility")&&k.css("visibility","visible").hide().fadeIn():k.css("visibility","hidden")}else c.trigger("woocommerce_variation_select_change"),c.trigger("check_variations",["",!1]),a(this).blur();a(".product.has-default-attributes > .images").fadeTo(200,1),c.trigger("woocommerce_variation_has_changed")}).on("focusin touchstart",".variations select",function(){a(this).find("option:selected").attr("selected","selected"),i||(c.trigger("woocommerce_variation_select_focusin"),c.trigger("check_variations",[a(this).data("attribute_name")||a(this).attr("name"),!0]))}).on("found_variation",function(b,e){var g=f.find(".product_meta").find(".sku"),h=f.find(".product_weight"),i=f.find(".product_dimensions"),j=n.find(".quantity"),k=!0;e.sku?g.wc_set_content(e.sku):g.wc_reset_content(),e.weight?h.wc_set_content(e.weight):h.wc_reset_content(),e.dimensions?i.wc_set_content(e.dimensions):i.wc_reset_content(),c.wc_variations_image_update(e);var o="";e.variation_is_visible?(o=l({variation:e}),o=o.replace("/**/",""),d.html(o),c.find('input[name="variation_id"], input.variation_id').val(e.variation_id).change()):(o=m(),o=o.replace("/**/",""),d.html(o),c.find('input[name="variation_id"], input.variation_id').val("").change()),"yes"===e.is_sold_individually?(j.find("input.qty").val("1").attr("min","1").attr("max",""),j.hide()):(j.find("input.qty").attr("min",e.min_qty).attr("max",e.max_qty),j.show()),e.is_purchasable&&e.is_in_stock&&e.variation_is_visible||(k=!1),a.trim(d.text())?d.slideDown(200).trigger("show_variation",[e,k]):d.show().trigger("show_variation",[e,k])}).on("check_variations",function(c,f,g){if(!i){var j=!0,k=!1,l={},m=a(this),n=m.find(".reset_variations");m.find(".variations select").each(function(){var b=a(this).data("attribute_name")||a(this).attr("name"),c=a(this).val()||"";0===c.length?j=!1:k=!0,f&&b===f?(j=!1,l[b]=""):l[b]=c});var o=e.find_matching_variations(h,l);if(j){var p=o.shift();p?m.trigger("found_variation",[p]):(m.find(".variations select").val(""),g||m.trigger("reset_data"),b.alert(wc_add_to_cart_variation_params.i18n_no_matching_variations_text))}else m.trigger("update_variation_values",[o]),g||m.trigger("reset_data"),f||d.slideUp(200).trigger("hide_variation");k?"hidden"===n.css("visibility")&&n.css("visibility","visible").hide().fadeIn():n.css("visibility","hidden")}}).on("update_variation_values",function(b,d){i||(c.find(".variations select").each(function(b,c){var e,f=a(c);f.data("attribute_options")||f.data("attribute_options",f.find("option:gt(0)").get()),f.find("option:gt(0)").remove(),f.append(f.data("attribute_options")),f.find("option:gt(0)").removeClass("attached"),f.find("option:gt(0)").removeClass("enabled"),f.find("option:gt(0)").removeAttr("disabled"),e="undefined"!=typeof f.data("attribute_name")?f.data("attribute_name"):f.attr("name");for(var g in d)if("undefined"!=typeof d[g]){var h=d[g].attributes;for(var i in h)if(h.hasOwnProperty(i)){var j=h[i];if(i===e){var k="";d[g].variation_is_active&&(k="enabled"),j?(j=a("
").html(j).text(),j=j.replace(/'/g,"\\'"),j=j.replace(/"/g,'\\"'),f.find('option[value="'+j+'"]').addClass("attached "+k)):f.find("option:gt(0)").addClass("attached "+k)}}}f.find("option:gt(0):not(.attached)").remove(),f.find("option:gt(0):not(.enabled)").attr("disabled","disabled")}),c.trigger("woocommerce_update_variation_values"))}),c.trigger("wc_variation_form"),c};var e={find_matching_variations:function(a,b){for(var c=[],d=0;d1?(d.wc_set_variation_attr("src",a.image_src),d.wc_set_variation_attr("title",a.image_title),d.wc_set_variation_attr("alt",a.image_alt),d.wc_set_variation_attr("srcset",a.image_srcset),d.wc_set_variation_attr("sizes",a.image_sizes),e.wc_set_variation_attr("href",a.image_link),e.wc_set_variation_attr("title",a.image_caption)):(d.wc_reset_variation_attr("src"),d.wc_reset_variation_attr("title"),d.wc_reset_variation_attr("alt"),d.wc_reset_variation_attr("srcset"),d.wc_reset_variation_attr("sizes"),e.wc_reset_variation_attr("href"),e.wc_reset_variation_attr("title"))},a(function(){"undefined"!=typeof wc_add_to_cart_variation_params&&a(".variations_form").each(function(){a(this).wc_variation_form().find(".variations select:eq(0)").change()})})}(jQuery,window,document); \ No newline at end of file From f41321fb278f0ee43fabc712e5c5211de286e699 Mon Sep 17 00:00:00 2001 From: kellychoffman Date: Thu, 11 Aug 2016 15:59:25 -0600 Subject: [PATCH 09/81] input length: increased to 11 --- includes/admin/views/html-report-by-date.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/includes/admin/views/html-report-by-date.php b/includes/admin/views/html-report-by-date.php index 4f311df0cb5..7f2dfb43a59 100644 --- a/includes/admin/views/html-report-by-date.php +++ b/includes/admin/views/html-report-by-date.php @@ -43,9 +43,9 @@ if ( ! defined( 'ABSPATH' ) ) { } ?> - + - +
From a191ab7aaad658b2d8c88de387dbfb110ce2bab8 Mon Sep 17 00:00:00 2001 From: Ninos Ego Date: Fri, 12 Aug 2016 05:57:08 +0200 Subject: [PATCH 10/81] Use wp_json_encode() instead of json_encode() --- templates/single-product/add-to-cart/variable.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/single-product/add-to-cart/variable.php b/templates/single-product/add-to-cart/variable.php index eddaa17fab3..ea6f2de4de0 100644 --- a/templates/single-product/add-to-cart/variable.php +++ b/templates/single-product/add-to-cart/variable.php @@ -25,7 +25,7 @@ $attribute_keys = array_keys( $attributes ); do_action( 'woocommerce_before_add_to_cart_form' ); ?> -
+ From bbd003aa9744e353d8c9bbb5ab9b15a46e225f5b Mon Sep 17 00:00:00 2001 From: Matty Date: Fri, 12 Aug 2016 10:34:14 +0200 Subject: [PATCH 11/81] Updates the server requirements in the readme.txt file, and links to the server requirements document on the WooCommerce documentation website. --- readme.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/readme.txt b/readme.txt index c914239596b..d6c69a6106e 100644 --- a/readme.txt +++ b/readme.txt @@ -89,9 +89,13 @@ And, finally, consider joining or spearheading a WooCommerce Meetup locally, mor = Minimum Requirements = * WordPress 3.8 or greater -* PHP version 5.2.4 or greater -* MySQL version 5.0 or greater +* PHP version 5.2.4 or greater (PHP 5.6 or greater is recommended) +* MySQL version 5.0 or greater (MySQL 5.6 or greater is recommended) * Some payment gateways require fsockopen support (for IPN access) +* WooCommerce 2.5 requires WordPress 4.1+ +* WooCommerce 2.6 requires WordPress 4.4+ + +Visit the [WooCommerce server requirements documentation](https://docs.woocommerce.com/document/server-requirements/) for a detailed list of server requirements. = Automatic installation = From f0bae3e5d7f0c0ec43e14cded83a13cb52095437 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 10:39:21 +0100 Subject: [PATCH 12/81] Dupe comment --- assets/js/frontend/add-to-cart-variation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/js/frontend/add-to-cart-variation.js b/assets/js/frontend/add-to-cart-variation.js index 53936f7e3bb..9007b074556 100644 --- a/assets/js/frontend/add-to-cart-variation.js +++ b/assets/js/frontend/add-to-cart-variation.js @@ -1,4 +1,4 @@ -/*global wc_add_to_cart_variation_params, wc_add_to_cart_variation_params */ +/*global wc_add_to_cart_variation_params */ /*! * Variations Plugin */ From 97618fa2af897b22017f2f14de0cbb9a31da9958 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 10:47:01 +0100 Subject: [PATCH 13/81] Made stock notes consistent Fixes #11673 --- includes/class-wc-ajax.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/includes/class-wc-ajax.php b/includes/class-wc-ajax.php index d6404e97fb3..2983ebeabb1 100644 --- a/includes/class-wc-ajax.php +++ b/includes/class-wc-ajax.php @@ -1319,8 +1319,14 @@ class WC_AJAX { if ( $_product->exists() && $_product->managing_stock() && isset( $order_item_qty[ $item_id ] ) && $order_item_qty[ $item_id ] > 0 ) { $stock_change = apply_filters( 'woocommerce_reduce_order_stock_quantity', $order_item_qty[ $item_id ], $item_id ); $new_stock = $_product->reduce_stock( $stock_change ); - $item_name = $_product->get_sku() ? $_product->get_sku() : $order_item['product_id']; - $note = sprintf( __( 'Item %s stock reduced from %s to %s.', 'woocommerce' ), $item_name, $new_stock + $stock_change, $new_stock ); + $item_name = $_product->get_sku() ? $_product->get_sku() : $_product->id; + + if ( ! empty( $_product->variation_id ) ) { + $note = sprintf( __( 'Item %s variation #%s stock reduced from %s to %s.', 'woocommerce' ), $item_name, $_product->variation_id, $new_stock + $stock_change, $new_stock ); + } else { + $note = sprintf( __( 'Item %s stock reduced from %s to %s.', 'woocommerce' ), $item_name, $new_stock + $stock_change, $new_stock ); + } + $return[] = $note; $order->add_order_note( $note ); $order->send_stock_notifications( $_product, $new_stock, $order_item_qty[ $item_id ] ); @@ -1360,8 +1366,14 @@ class WC_AJAX { $old_stock = $_product->get_stock_quantity(); $stock_change = apply_filters( 'woocommerce_restore_order_stock_quantity', $order_item_qty[ $item_id ], $item_id ); $new_quantity = $_product->increase_stock( $stock_change ); - $item_name = $_product->get_sku() ? $_product->get_sku(): $order_item['product_id']; - $note = sprintf( __( 'Item %s stock increased from %s to %s.', 'woocommerce' ), $item_name, $old_stock, $new_quantity ); + $item_name = $_product->get_sku() ? $_product->get_sku() : $_product->id; + + if ( ! empty( $_product->variation_id ) ) { + $note = sprintf( __( 'Item %s variation #%s stock increased from %s to %s.', 'woocommerce' ), $item_name, $_product->variation_id, $old_stock, $new_quantity ); + } else { + $note = sprintf( __( 'Item %s stock increased from %s to %s.', 'woocommerce' ), $item_name, $old_stock, $new_quantity ); + } + $return[] = $note; $order->add_order_note( $note ); } From cfc31dd311d7f05d7f73ec6d66717c150f70ca00 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 11:03:28 +0100 Subject: [PATCH 14/81] wc_prevent_adjacent_posts_rel_link_wp_head Closes #11683 --- includes/wc-template-functions.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/includes/wc-template-functions.php b/includes/wc-template-functions.php index 8b83868c82a..b3a201eeb65 100644 --- a/includes/wc-template-functions.php +++ b/includes/wc-template-functions.php @@ -95,6 +95,18 @@ function wc_prevent_endpoint_indexing() { } add_action( 'template_redirect', 'wc_prevent_endpoint_indexing' ); +/** + * Remove adjacent_posts_rel_link_wp_head - pointless for products. + * + * @since 2.7.0 + */ +function wc_prevent_adjacent_posts_rel_link_wp_head() { + if ( is_singular( 'product' ) ) { + remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); + } +} +add_action( 'template_redirect', 'wc_prevent_adjacent_posts_rel_link_wp_head' ); + /** * When the_post is called, put product data into a global. * From f7958f2b209e5f7e035b51a4d9cc34bc781a6346 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 11:53:40 +0100 Subject: [PATCH 15/81] [2.6] Drafts don't have post_date_gmt Fixes #11686 @claudiosmweb @justinshreve --- includes/class-wc-webhook.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/includes/class-wc-webhook.php b/includes/class-wc-webhook.php index 4d9891dac9b..2efd9e32a9d 100644 --- a/includes/class-wc-webhook.php +++ b/includes/class-wc-webhook.php @@ -160,8 +160,11 @@ class WC_Webhook { // creation date to determine the actual event $resource = get_post( absint( $arg ) ); + // Drafts don't have post_date_gmt so calculate it here + $gmt_date = get_gmt_from_date( $resource->post_date ); + // a resource is considered created when the hook is executed within 10 seconds of the post creation date - $resource_created = ( ( time() - 10 ) <= strtotime( $resource->post_date_gmt ) ); + $resource_created = ( ( time() - 10 ) <= strtotime( $gmt_date ) ); if ( 'created' == $this->get_event() && ! $resource_created ) { $should_deliver = false; From f3651a98819d1fef570fe005ef94feea7acafb80 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 11:54:00 +0100 Subject: [PATCH 16/81] Fix user agent calls --- includes/api/class-wc-rest-orders-controller.php | 2 +- includes/api/legacy/v1/class-wc-api-orders.php | 2 +- includes/api/legacy/v2/class-wc-api-orders.php | 2 +- includes/api/legacy/v3/class-wc-api-orders.php | 2 +- includes/cli/class-wc-cli-order.php | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 0a83409f7dd..c6c323d43c4 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -149,7 +149,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'payment_method_title' => $order->get_payment_method_title(), 'transaction_id' => $order->get_transaction_id(), 'customer_ip_address' => $order->get_customer_ip_address(), - 'customer_user_agent' => $order->get_user_agent(), + 'customer_user_agent' => $order->get_customer_user_agent(), 'created_via' => $order->created_via, 'customer_note' => $order->get_customer_note(), 'date_completed' => wc_rest_prepare_date_response( $order->completed_date ), diff --git a/includes/api/legacy/v1/class-wc-api-orders.php b/includes/api/legacy/v1/class-wc-api-orders.php index 03ab49bd3e8..254099962ee 100644 --- a/includes/api/legacy/v1/class-wc-api-orders.php +++ b/includes/api/legacy/v1/class-wc-api-orders.php @@ -163,7 +163,7 @@ class WC_API_Orders extends WC_API_Resource { ), 'note' => $order->get_customer_note(), 'customer_ip' => $order->get_customer_ip_address(), - 'customer_user_agent' => $order->get_user_agent(), + 'customer_user_agent' => $order->get_customer_user_agent(), 'customer_id' => $order->get_user_id(), 'view_order_url' => $order->get_view_order_url(), 'line_items' => array(), diff --git a/includes/api/legacy/v2/class-wc-api-orders.php b/includes/api/legacy/v2/class-wc-api-orders.php index 6a62eee6a3f..c8519635dfe 100644 --- a/includes/api/legacy/v2/class-wc-api-orders.php +++ b/includes/api/legacy/v2/class-wc-api-orders.php @@ -201,7 +201,7 @@ class WC_API_Orders extends WC_API_Resource { ), 'note' => $order->get_customer_note(), 'customer_ip' => $order->get_customer_ip_address(), - 'customer_user_agent' => $order->get_user_agent(), + 'customer_user_agent' => $order->get_customer_user_agent(), 'customer_id' => $order->get_user_id(), 'view_order_url' => $order->get_view_order_url(), 'line_items' => array(), diff --git a/includes/api/legacy/v3/class-wc-api-orders.php b/includes/api/legacy/v3/class-wc-api-orders.php index 03c8cc90485..391a0a8c281 100644 --- a/includes/api/legacy/v3/class-wc-api-orders.php +++ b/includes/api/legacy/v3/class-wc-api-orders.php @@ -207,7 +207,7 @@ class WC_API_Orders extends WC_API_Resource { ), 'note' => $order->get_customer_note(), 'customer_ip' => $order->get_customer_ip_address(), - 'customer_user_agent' => $order->get_user_agent(), + 'customer_user_agent' => $order->get_customer_user_agent(), 'customer_id' => $order->get_user_id(), 'view_order_url' => $order->get_view_order_url(), 'line_items' => array(), diff --git a/includes/cli/class-wc-cli-order.php b/includes/cli/class-wc-cli-order.php index 2d78b0d087d..879e0b2f004 100644 --- a/includes/cli/class-wc-cli-order.php +++ b/includes/cli/class-wc-cli-order.php @@ -676,7 +676,7 @@ class WC_CLI_Order extends WC_CLI_Command { ), 'note' => $order->get_customer_note(), 'customer_ip' => $order->get_customer_ip_address(), - 'customer_user_agent' => $order->get_user_agent(), + 'customer_user_agent' => $order->get_customer_user_agent(), 'customer_id' => $order->get_user_id(), 'view_order_url' => $order->get_view_order_url(), 'line_items' => array(), From e336886afa8b58f07f22c28d4fc7adf60fde07dc Mon Sep 17 00:00:00 2001 From: sumnermic Date: Fri, 12 Aug 2016 13:58:54 +0100 Subject: [PATCH 17/81] Add anchor attribute target "_blank" Add anchor attribute target "_blank" to Regenerate Thumbnails link. It's pretty annoying for it to not open in a new window/tab. --- includes/admin/settings/class-wc-settings-products.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/settings/class-wc-settings-products.php b/includes/admin/settings/class-wc-settings-products.php index 6dfdb8e16a4..88cf34f2f08 100644 --- a/includes/admin/settings/class-wc-settings-products.php +++ b/includes/admin/settings/class-wc-settings-products.php @@ -175,7 +175,7 @@ class WC_Settings_Products extends WC_Settings_Page { array( 'title' => __( 'Product Images', 'woocommerce' ), 'type' => 'title', - 'desc' => sprintf( __( 'These settings affect the display and dimensions of images in your catalog - the display on the front-end will still be affected by CSS styles. After changing these settings you may need to regenerate your thumbnails.', 'woocommerce' ), 'https://wordpress.org/extend/plugins/regenerate-thumbnails/' ), + 'desc' => sprintf( __( 'These settings affect the display and dimensions of images in your catalog - the display on the front-end will still be affected by CSS styles. After changing these settings you may need to regenerate your thumbnails.', 'woocommerce' ), 'https://wordpress.org/extend/plugins/regenerate-thumbnails/' ), 'id' => 'image_options' ), From eb45acf0d5e022db5ab7426e77e30cee4862beef Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 14:23:59 +0100 Subject: [PATCH 18/81] [2.6] Use method title in admin shipping dropdown fixes #11678 --- includes/admin/meta-boxes/views/html-order-shipping.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/admin/meta-boxes/views/html-order-shipping.php b/includes/admin/meta-boxes/views/html-order-shipping.php index 9e7ed254a39..e7f36e8c831 100644 --- a/includes/admin/meta-boxes/views/html-order-shipping.php +++ b/includes/admin/meta-boxes/views/html-order-shipping.php @@ -30,7 +30,7 @@ if ( ! defined( 'ABSPATH' ) ) { $method_id = isset( $item['method_id'] ) ? $item['method_id'] : ''; $current_method = ( 0 === strpos( $method_id, $method->id ) ) ? $method_id : $method->id; - echo ''; + echo ''; if ( $method_id == $current_method ) { $found_method = true; From a6f850a4a4aa5a065c85d04136078baaad7d96ce Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 15:59:01 +0100 Subject: [PATCH 19/81] Invalid CSS is invalid. Not used afaik. Closes #11657 --- assets/css/activation.css | 2 +- assets/css/admin.css | 2 +- assets/css/admin.scss | 10 +--------- assets/css/auth.css | 2 +- assets/css/dashboard.css | 2 +- assets/css/menu.css | 2 +- assets/css/prettyPhoto.css | 2 +- assets/css/wc-setup.css | 2 +- assets/css/woocommerce-layout.css | 2 +- assets/css/woocommerce-smallscreen.css | 2 +- assets/css/woocommerce.css | 2 +- 11 files changed, 11 insertions(+), 19 deletions(-) diff --git a/assets/css/activation.css b/assets/css/activation.css index ce7686b0118..24186e17625 100644 --- a/assets/css/activation.css +++ b/assets/css/activation.css @@ -1 +1 @@ -div.woocommerce-message{overflow:hidden;position:relative;border-left-color:#cc99c2!important}div.woocommerce-message p{max-width:700px}.woocommerce-message a.button-primary,p.woocommerce-actions a.button-primary{background:#bb77ae;border-color:#A36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;color:#fff;text-shadow:0 -1px 1px #A36597,1px 0 1px #A36597,0 1px 1px #A36597,-1px 0 1px #A36597}.woocommerce-message a.button-primary:active,.woocommerce-message a.button-primary:focus,.woocommerce-message a.button-primary:hover,p.woocommerce-actions a.button-primary:active,p.woocommerce-actions a.button-primary:focus,p.woocommerce-actions a.button-primary:hover{background:#A36597;border-color:#A36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597}.woocommerce-message a.woocommerce-message-close,p.woocommerce-actions a.woocommerce-message-close{position:absolute;top:0;right:0;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.woocommerce-message a.woocommerce-message-close:before,p.woocommerce-actions a.woocommerce-message-close:before{position:absolute;top:8px;left:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.woocommerce-message a.button-primary,.woocommerce-message a.button-secondary,p.woocommerce-actions a.button-primary,p.woocommerce-actions a.button-secondary{text-decoration:none!important}.woocommerce-message .twitter-share-button,p.woocommerce-actions .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}.woocommerce-about-text,p.woocommerce-actions{margin-bottom:1em!important}div.woocommerce-legacy-shipping-notice,div.woocommerce-no-shipping-methods-notice{overflow:hidden;padding:1px 12px}div.woocommerce-legacy-shipping-notice p,div.woocommerce-no-shipping-methods-notice p{position:relative;z-index:1;max-width:700px;line-height:1.5em;margin:12px 0}div.woocommerce-legacy-shipping-notice p.main,div.woocommerce-no-shipping-methods-notice p.main{font-size:1.1em}div.woocommerce-legacy-shipping-notice:before,div.woocommerce-no-shipping-methods-notice:before{content:"\e01b";font-family:WooCommerce;text-align:center;line-height:1;color:#F7F1F6;display:block;width:1em;font-size:20em;top:36px;right:12px;position:absolute} \ No newline at end of file +div.woocommerce-message{overflow:hidden;position:relative;border-left-color:#cc99c2!important}div.woocommerce-message p{max-width:700px}.woocommerce-message a.button-primary,p.woocommerce-actions a.button-primary{background:#bb77ae;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;color:#fff;text-shadow:0 -1px 1px #a36597,1px 0 1px #a36597,0 1px 1px #a36597,-1px 0 1px #a36597}.woocommerce-message a.button-primary:active,.woocommerce-message a.button-primary:focus,.woocommerce-message a.button-primary:hover,p.woocommerce-actions a.button-primary:active,p.woocommerce-actions a.button-primary:focus,p.woocommerce-actions a.button-primary:hover{background:#a36597;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.woocommerce-message a.woocommerce-message-close,p.woocommerce-actions a.woocommerce-message-close{position:absolute;top:0;right:0;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.woocommerce-message a.woocommerce-message-close::before,p.woocommerce-actions a.woocommerce-message-close::before{position:absolute;top:8px;left:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.woocommerce-message a.button-primary,.woocommerce-message a.button-secondary,p.woocommerce-actions a.button-primary,p.woocommerce-actions a.button-secondary{text-decoration:none!important}.woocommerce-message .twitter-share-button,p.woocommerce-actions .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}.woocommerce-about-text,p.woocommerce-actions{margin-bottom:1em!important}div.woocommerce-legacy-shipping-notice,div.woocommerce-no-shipping-methods-notice{overflow:hidden;padding:1px 12px}div.woocommerce-legacy-shipping-notice p,div.woocommerce-no-shipping-methods-notice p{position:relative;z-index:1;max-width:700px;line-height:1.5em;margin:12px 0}div.woocommerce-legacy-shipping-notice p.main,div.woocommerce-no-shipping-methods-notice p.main{font-size:1.1em}div.woocommerce-legacy-shipping-notice::before,div.woocommerce-no-shipping-methods-notice::before{content:'\e01b';font-family:WooCommerce;text-align:center;line-height:1;color:#f7f1f6;display:block;width:1em;font-size:20em;top:36px;right:12px;position:absolute} \ No newline at end of file diff --git a/assets/css/admin.css b/assets/css/admin.css index c8cc2bb90d7..90c2475f646 100644 --- a/assets/css/admin.css +++ b/assets/css/admin.css @@ -1 +1 @@ -@charset "UTF-8";.select2-container .select2-choice,.select2-results .select2-result-label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.button.wc-reload:after,.woocommerce-help-tip:after{font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.select2-container{margin:0;position:relative;display:block!important;zoom:1;vertical-align:middle}.select2-container,.select2-drop,.select2-search,.select2-search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.select2-container .select2-choice{display:block;padding:0 0 0 8px;overflow:hidden;position:relative;border:1px solid #ccc;white-space:nowrap;color:#444;text-decoration:none;border-radius:3px;background-clip:padding-box;user-select:none;background-color:#fff;font-weight:400}html[dir=rtl] .select2-container .select2-choice{padding:0 8px 0 0}.select2-container.select2-drop-above .select2-choice{border-bottom-color:#ccc;border-radius:0 0 4px 4px}.select2-container.select2-allowclear .select2-choice .select2-chosen{margin-right:42px}.select2-container .select2-choice>.select2-chosen{margin-right:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;float:none;width:auto}html[dir=rtl] .select2-container .select2-choice>.select2-chosen{margin-left:26px;margin-right:0}.select2-container .select2-choice abbr{display:none;width:12px;height:12px;position:absolute;right:24px;top:5px;font-size:1px;text-decoration:none;border:0;background:url(../images/select2.png) right top no-repeat;cursor:pointer;outline:0}.select2-container.select2-allowclear .select2-choice abbr{display:inline-block}.select2-container .select2-choice abbr:hover{background-position:right -11px;cursor:pointer}.select2-drop-mask{border:0;margin:0;padding:0;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:9998;background-color:#fff;filter:alpha(opacity=0)}.select2-drop{width:100%;margin-top:-1px;position:absolute;top:100%;background:#fff;color:#000;border:1px solid #ccc;border-top:0;border-radius:0 0 3px 3px}.select2-drop.select2-drop-above{margin-top:1px;border-top:1px solid #ccc;border-bottom:0;border-radius:3px 3px 0 0}.select2-drop-active{border:1px solid #666;border-top:none}.select2-drop.select2-drop-above.select2-drop-active{border-top:1px solid #666}.select2-drop-auto-width{border-top:1px solid #ccc;width:auto}.select2-drop-auto-width .select2-search{padding-top:4px}.select2-container .select2-choice .select2-arrow{display:inline-block;width:18px;height:100%;position:absolute;right:0;top:0;border-radius:0 3px 3px 0;background-clip:padding-box}html[dir=rtl] .select2-container .select2-choice .select2-arrow{left:0;right:auto;border-radius:3px 0 0 3px}.select2-container .select2-choice .select2-arrow b{display:block;width:100%;height:100%;position:relative}.select2-container .select2-choice .select2-arrow b:after{position:absolute;display:block;content:"";top:50%;left:50%;border:4px solid transparent;border-top-color:#666;margin-left:-7px;margin-top:-2px}.select2-search{display:inline-block;width:100%;margin:0;padding-left:4px;padding-right:4px;position:relative;z-index:10000;white-space:nowrap;padding-bottom:4px}.select2-search input{width:100%;height:auto!important;padding:4px 20px 4px 5px!important;margin:0;outline:0;font-family:sans-serif;font-size:1em;border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none;background:url(../images/select2.png) 100% -22px no-repeat #fff}html[dir=rtl] .select2-search input{padding:4px 5px 4px 20px;background:url(../images/select2.png) -37px -22px no-repeat #fff}.select2-drop.select2-drop-above .select2-search input{margin-top:4px}.select2-search input.select2-active{background:url(../images/select2-spinner.gif) 100% no-repeat #fff}.select2-container-active .select2-choice,.select2-container-active .select2-choices{border:1px solid #666;outline:0}.select2-dropdown-open .select2-choice{border-bottom-color:transparent;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-dropdown-open .select2-choice .select2-arrow b:after{border-top-color:transparent;border-bottom-color:#666;margin-top:-6px}.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{border:1px solid #666;border-top-color:transparent}.select2-dropdown-open .select2-choice .select2-arrow{background:0 0;border-left:none;filter:none}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow{border-right:none}.select2-dropdown-open .select2-choice .select2-arrow b{background-position:-18px 1px}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow b{background-position:-16px 1px}.select2-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.select2-results{max-height:200px;padding:4px;margin:0;position:relative;overflow-x:hidden;overflow-y:auto;-webkit-tap-highlight-color:transparent;background:#fafafa}html[dir=rtl] .select2-results{padding:0 4px 0 0;margin:4px 0 4px 4px}.select2-results ul.select2-result-sub{margin:0;padding-left:0}.select2-results li{list-style:none;display:list-item;background-image:none;margin:3px 0}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:700}.select2-results .select2-result-label{padding:5px 7px;margin:0;cursor:pointer;min-height:1em;user-select:none}.select2-results-dept-1 .select2-result-label{padding-left:20px}.select2-results-dept-2 .select2-result-label{padding-left:40px}.select2-results-dept-3 .select2-result-label{padding-left:60px}.select2-results-dept-4 .select2-result-label{padding-left:80px}.select2-results-dept-5 .select2-result-label{padding-left:100px}.select2-results-dept-6 .select2-result-label{padding-left:110px}.select2-results-dept-7 .select2-result-label{padding-left:120px}.select2-results .select2-highlighted{background:#f1f1f1;color:#000;border-radius:3px}.select2-results li em{background:#feffde;font-style:normal}.select2-results .select2-highlighted em{background:0 0}.select2-results .select2-highlighted ul{background:#fff;color:#000}.select2-results .select2-ajax-error,.select2-results .select2-no-results,.select2-results .select2-searching,.select2-results .select2-selection-limit{background:#f4f4f4;display:list-item;padding-left:5px}.select2-results .select2-disabled.select2-highlighted{color:#666;background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-disabled{background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-selected{display:none}.select2-more-results.select2-active{background:url(../images/select2-spinner.gif) 100% no-repeat #f4f4f4}.select2-results .select2-ajax-error{background:rgba(255,50,50,.2)}.select2-more-results{background:#f4f4f4;display:list-item}.select2-container.select2-container-disabled .select2-choice{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container.select2-container-disabled .select2-choice .select2-arrow{background-color:#f4f4f4;background-image:none;border-left:0}.select2-container.select2-container-disabled .select2-choice abbr{display:none}.select2-container-multi .select2-choices{height:auto!important;height:1%;margin:0;padding:0 5px 0 0;position:relative;border:1px solid #ccc;cursor:text;overflow:hidden;background-color:#fff;min-height:26px}html[dir=rtl] .select2-container-multi .select2-choices{padding:0 0 0 5px}.select2-locked{padding:3px 5px!important}.select2-container-multi.select2-container-active .select2-choices{border:1px solid #666;outline:0}.select2-container-multi .select2-choices li{float:left;list-style:none}html[dir=rtl] .select2-container-multi .select2-choices li{float:right}.select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap}.select2-container-multi .select2-choices .select2-search-field:first-child{width:100%}.select2-container-multi .select2-choices .select2-search-field input{margin:1px 0;outline:0;border:0;-webkit-box-shadow:none;box-shadow:none;background:0 0!important}.select2-container-multi .select2-choices .select2-search-field input.select2-active{background:url(../images/select2-spinner.gif) 100% no-repeat #fff!important}.select2-default{color:#999!important}.select2-container-multi .select2-choices .select2-search-choice{padding:5px 8px 5px 24px;margin:3px 0 3px 5px;position:relative;line-height:15px;color:#333;cursor:default;border-radius:2px;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#e4e4e4}.select2-container-multi .ui-sortable .select2-search-choice{cursor:move}html[dir=rtl] .select2-container-multi .select2-choices .select2-search-choice{margin:3px 5px 3px 0;padding:5px 24px 5px 8px}.select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}.select2-container-multi .select2-choices .select2-search-choice-focus{background:#d4d4d4}.select2-search-choice-close{display:block;width:12px;height:13px;position:absolute;right:7px;top:6px;font-size:1px;outline:0;background:url(../images/select2.png) right top no-repeat}html[dir=rtl] .select2-search-choice-close{right:auto;left:7px}.select2-container-multi .select2-search-choice-close{left:7px}html[dir=rtl] .select2-container-multi .select2-search-choice-close{left:auto;right:7px}.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover,.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close{background-position:right -11px}.select2-container-multi.select2-container-disabled .select2-choices{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice{padding:3px 5px;border:1px solid #ddd;background-image:none;background-color:#f4f4f4}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:0 0}.select2-result-selectable .select2-match,.select2-result-unselectable .select2-match{text-decoration:underline}.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0)!important;width:1px!important;height:1px!important;border:0!important;margin:0!important;padding:0!important;overflow:hidden!important;position:absolute!important;outline:0!important;left:0!important;top:0!important}.select2-display-none{display:none}.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:2dppx){.select2-search input{background-image:url(../images/select2x2.png)!important;background-repeat:no-repeat!important;background-size:60px 40px!important;background-position:100% -21px!important}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.blockUI.blockOverlay:before{height:1em;width:1em;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;display:block;content:"";-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.wc_addons_wrap .products{overflow:hidden}.wc_addons_wrap .products li{float:left;margin:0 1em 1em 0!important;padding:0;vertical-align:top;width:300px}.wc_addons_wrap .products li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f5f5f5;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.wc_addons_wrap .products li a img{max-width:258px;max-height:24px;padding:17px 20px;display:block;margin:0;background:#fff;border-right:260px solid #fff}.wc_addons_wrap .products li a .price,.wc_addons_wrap .products li a img.extension-thumb+h3{display:none}.wc_addons_wrap .products li a h2,.wc_addons_wrap .products li a h3{margin:0!important;padding:20px!important;background:#fff}.wc_addons_wrap .products li a p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wc_addons_wrap .products li a:focus,.wc_addons_wrap .products li a:hover{background-color:#fff}.wc_addons_wrap .storefront{background:url(../images/storefront-bg.jpg) bottom right #f6f6f6;border:1px solid #ddd;padding:20px;overflow:hidden;zoom:1}.wc_addons_wrap .storefront img{width:278px;height:auto;float:left;margin:0 20px 0 0;box-shadow:0 1px 6px rgba(0,0,0,.1)}.wc_addons_wrap .storefront p{max-width:750px}.woocommerce-BlankState a.button-primary,.woocommerce-BlankState button.button-primary,.woocommerce-message a.button-primary,.woocommerce-message button.button-primary{background:#bb77ae;border-color:#A36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;color:#fff;text-shadow:0 -1px 1px #A36597,1px 0 1px #A36597,0 1px 1px #A36597,-1px 0 1px #A36597}.woocommerce-BlankState a.button-primary:active,.woocommerce-BlankState a.button-primary:focus,.woocommerce-BlankState a.button-primary:hover,.woocommerce-BlankState button.button-primary:active,.woocommerce-BlankState button.button-primary:focus,.woocommerce-BlankState button.button-primary:hover,.woocommerce-message a.button-primary:active,.woocommerce-message a.button-primary:focus,.woocommerce-message a.button-primary:hover,.woocommerce-message button.button-primary:active,.woocommerce-message button.button-primary:focus,.woocommerce-message button.button-primary:hover{background:#A36597;border-color:#A36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597}.woocommerce-message{position:relative;border-left-color:#cc99c2!important;overflow:hidden}.woocommerce-message a.docs,.woocommerce-message a.skip{text-decoration:none!important}.woocommerce-message a.woocommerce-message-close{position:absolute;top:10px;right:10px;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.woocommerce-message a.woocommerce-message-close:before{position:absolute;top:8px;left:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.woocommerce-message .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}#variable_product_options #message,#variable_product_options .notice{margin:10px}.clear{clear:both}#woocommerce-fields-bulk.inline-edit-col label,#woocommerce-fields.inline-edit-col{clear:left}.wrap.woocommerce div.error,.wrap.woocommerce div.updated{margin-top:10px}mark.amount{background:0 0;color:inherit}.postbox,.woocommerce{input:invalid;input-border:1px solid #cc010b;input-background:#ffebe8}.simplify-commerce-banner{overflow:hidden}.simplify-commerce-banner img{float:right;padding:15px 0;margin-left:1em;width:200px}.woocommerce-help-tip{color:#666;display:inline-block;font-size:1.1em;font-style:normal;height:16px;line-height:16px;position:relative;vertical-align:middle;width:16px}.woocommerce-help-tip:after{font-family:Dashicons;speak:none;font-weight:400;line-height:1;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";cursor:help}h2 .woocommerce-help-tip{margin-top:-5px;margin-left:.25em}table.wc_status_table{margin-bottom:1em}table.wc_status_table h2{font-size:14px;margin:0}table.wc_status_table tr:nth-child(2n) td,table.wc_status_table tr:nth-child(2n) th{background:#fcfcfc}table.wc_status_table th{font-weight:700;padding:9px}table.wc_status_table td:first-child{width:33%}table.wc_status_table td.help{width:1em}table.wc_status_table td{padding:9px;font-size:1.1em}table.wc_status_table td mark{background:0 0}table.wc_status_table td mark.yes{color:#7ad03a}table.wc_status_table td mark.no{color:#999}table.wc_status_table td mark.error{color:#a00}table.wc_status_table td ul{margin:0}table.wc_status_table .help_tip{cursor:help}#debug-report{display:none;margin:10px 0;padding:0;position:relative}#debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}#log-viewer-select{padding:10px 0 8px;line-height:28px}#log-viewer-select h2 a{vertical-align:middle}#log-viewer textarea{width:100%;resize:vertical}.inline-edit-product.quick-edit-row .inline-edit-col-center,.inline-edit-product.quick-edit-row .inline-edit-col-right{float:right!important}#woocommerce-fields.inline-edit-col label.featured,#woocommerce-fields.inline-edit-col label.manage_stock{margin-left:10px}#woocommerce-fields.inline-edit-col .dimensions div{display:block;margin:.2em 0}#woocommerce-fields.inline-edit-col .dimensions div span.title{display:block;float:left;width:5em}#woocommerce-fields.inline-edit-col .dimensions div span.input-text-wrap{display:block;margin-left:5em}#woocommerce-fields.inline-edit-col .text{box-sizing:border-box;width:99%;float:left;margin:1px 1% 1px 1px}#woocommerce-fields.inline-edit-col .height,#woocommerce-fields.inline-edit-col .length,#woocommerce-fields.inline-edit-col .width{width:32.33%}#woocommerce-fields.inline-edit-col .height{margin-right:0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group label{clear:none;width:49%;margin:.2em 0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group.dimensions label{width:75%;max-width:75%}#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .regular_price,#woocommerce-fields-bulk.inline-edit-col .sale_price,#woocommerce-fields-bulk.inline-edit-col .stock,#woocommerce-fields-bulk.inline-edit-col .weight{box-sizing:border-box;width:100%;margin-left:4.4em}#woocommerce-fields-bulk.inline-edit-col .height,#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .width{box-sizing:border-box;width:25%}.column-coupon_code{line-height:2.25em}.column-coupon_code,ul.wc_coupon_list{margin:0;overflow:hidden;zoom:1;clear:both}ul.wc_coupon_list li{margin:0}ul.wc_coupon_list li.code{display:inline-block}ul.wc_coupon_list li.code:after{content:", "}ul.wc_coupon_list li.code:last-of-type:after{display:none}ul.wc_coupon_list li.code .tips{cursor:pointer}ul.wc_coupon_list_block{margin:0;padding-bottom:2px}ul.wc_coupon_list_block li{border-top:1px solid #fff;border-bottom:1px solid #ccc;line-height:2.5em;margin:0;padding:.5em 0}ul.wc_coupon_list_block li:first-child{border-top:0;padding-top:0}ul.wc_coupon_list_block li:last-child{border-bottom:0;padding-bottom:0}.button.wc-reload{text-indent:-9999px;position:relative;padding:0;height:28px;width:28px!important;display:inline-block}.button.wc-reload:after{font-family:Dashicons;speak:none;font-weight:400;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:28px}#order_data h2,#order_data p.order_number{font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:400}.tablenav .actions{overflow:visible}.tablenav .select2-container{float:left;max-width:200px;font-size:14px;vertical-align:middle;margin:1px 6px 1px 1px}#woocommerce-order-data .handlediv,#woocommerce-order-data .hndle{display:none}#woocommerce-order-data .inside{display:block!important}#order_data{padding:23px 24px 12px}#order_data h2{margin:0;font-size:21px;line-height:1.2;text-shadow:1px 1px 1px #fff;padding:0}#order_data h3{font-size:14px}#order_data h3,#order_data h4{color:#333;margin:1.33em 0 0}#order_data p{color:#777}#order_data p.order_number{margin:0;line-height:1.6em;font-size:16px}#order_data .order_data_column_container{clear:both}#order_data .order_data_column{width:32%;padding:0 2% 0 0;float:left}#order_data .order_data_column:last-child{padding-right:0}#order_data .order_data_column p{padding:0!important}#order_data .order_data_column .address strong{display:block}#order_data .order_data_column .form-field{float:left;width:48%;padding:0;margin:9px 0 0}#order_data .order_data_column .form-field label{display:block;padding:0 0 3px}#order_data .order_data_column .form-field input,#order_data .order_data_column .form-field select,#order_data .order_data_column .form-field textarea{width:100%}#order_data .order_data_column .form-field .select2-container{width:100%!important}#order_data .order_data_column .form-field .date-picker{width:50%}#order_data .order_data_column .form-field .hour,#order_data .order_data_column .form-field .minute{width:3.5em}#order_data .order_data_column .form-field small{display:block;margin:5px 0 0;color:#999}#order_data .order_data_column .form-field.last{float:right}#order_data .order_data_column .form-field-wide{width:100%;clear:both}#order_data .order_data_column .form-field-wide .wc-customer-search,#order_data .order_data_column .form-field-wide .wc-enhanced-select,#order_data .order_data_column .form-field-wide input,#order_data .order_data_column .form-field-wide select,#order_data .order_data_column .form-field-wide textarea{width:100%}#order_data .order_data_column p.none_set{color:#999}#order_data .order_data_column ._billing_address_1_field,#order_data .order_data_column ._billing_city_field,#order_data .order_data_column ._billing_country_field,#order_data .order_data_column ._billing_email_field,#order_data .order_data_column ._billing_first_name_field,#order_data .order_data_column ._shipping_address_1_field,#order_data .order_data_column ._shipping_city_field,#order_data .order_data_column ._shipping_country_field,#order_data .order_data_column ._shipping_first_name_field{float:left}#order_data .order_data_column ._billing_address_2_field,#order_data .order_data_column ._billing_last_name_field,#order_data .order_data_column ._billing_phone_field,#order_data .order_data_column ._billing_postcode_field,#order_data .order_data_column ._billing_state_field,#order_data .order_data_column ._shipping_address_2_field,#order_data .order_data_column ._shipping_last_name_field,#order_data .order_data_column ._shipping_postcode_field,#order_data .order_data_column ._shipping_state_field,#order_data .order_data_column .wc-customer-user label a,#order_data .order_data_column .wc-order-status label a{float:right}#order_data .order_data_column ._billing_company_field,#order_data .order_data_column ._shipping_company_field,#order_data .order_data_column ._transaction_id_field{clear:both;width:100%}#order_data .order_data_column ._billing_email_field{clear:left}#order_data .order_data_column div.edit_address{display:none;zoom:1;padding-right:1px}#order_data .order_data_column .billing-same-as-shipping,#order_data .order_data_column .load_customer_billing,#order_data .order_data_column .load_customer_shipping,#order_data .order_data_column a.edit_address{width:14px;height:0;padding:14px 0 0;margin:0 0 0 6px;overflow:hidden;position:relative;color:#999;border:0;float:right}#order_data .order_data_column .billing-same-as-shipping:focus,#order_data .order_data_column .billing-same-as-shipping:hover,#order_data .order_data_column .load_customer_billing:focus,#order_data .order_data_column .load_customer_billing:hover,#order_data .order_data_column .load_customer_shipping:focus,#order_data .order_data_column .load_customer_shipping:hover,#order_data .order_data_column a.edit_address:focus,#order_data .order_data_column a.edit_address:hover{color:#000}#order_data .order_data_column .billing-same-as-shipping:after,#order_data .order_data_column .load_customer_billing:after,#order_data .order_data_column .load_customer_shipping:after,#order_data .order_data_column a.edit_address:after{font-family:WooCommerce;position:absolute;top:0;left:0;text-align:center;vertical-align:top;line-height:14px;font-size:14px;font-weight:400;-webkit-font-smoothing:antialiased}#order_data .order_data_column .billing-same-as-shipping:after{content:"\e008"}#order_data .order_data_column .load_customer_billing:after,#order_data .order_data_column .load_customer_shipping:after{content:"\e03a"}#order_data .order_data_column a.edit_address:after{font-family:Dashicons;content:"\f464"}.order_actions{margin:0;overflow:hidden;zoom:1}.order_actions li{border-top:1px solid #fff;border-bottom:1px solid #ddd;padding:6px 0;margin:0;line-height:1.6em;float:left;width:50%;text-align:center}.order_actions li a{float:none;text-align:center;text-decoration:underline}.order_actions li.wide{width:auto;float:none;clear:both;padding:6px;text-align:left;overflow:hidden}.order_actions li #delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}.order_actions li .save_order{float:right}.order_actions li#actions{overflow:hidden}.order_actions li#actions .button{width:24px;box-sizing:border-box;float:right}.order_actions li#actions select{width:225px;box-sizing:border-box;float:left}#woocommerce-order-items .inside{margin:0;padding:0;background:#fefefe}#woocommerce-order-items .wc-order-data-row{border-bottom:1px solid #DFDFDF;padding:1.5em 2em;background:#f8f8f8;line-height:2em;text-align:right}#woocommerce-order-items .wc-order-data-row:after,#woocommerce-order-items .wc-order-data-row:before{content:" ";display:table}#woocommerce-order-items .wc-order-data-row:after{clear:both}#woocommerce-order-items .wc-order-data-row p{margin:0;line-height:2em}#woocommerce-order-items .wc-order-data-row .wc-used-coupons{text-align:left}#woocommerce-order-items .wc-order-data-row .wc-used-coupons .tips{display:inline-block}#woocommerce-order-items .wc-order-add-item{background:#fff;vertical-align:top;border-top:none}#woocommerce-order-items .wc-order-add-item .add_item_id,#woocommerce-order-items .wc-order-add-item .select2-container{vertical-align:top}#woocommerce-order-items .wc-order-add-item .add_item_id .search-field input,#woocommerce-order-items .wc-order-add-item .select2-container .search-field input{min-width:100px}#woocommerce-order-items .wc-order-add-item .select2-container{width:400px!important;text-align:left}#woocommerce-order-items .wc-order-add-item .calculate-action,#woocommerce-order-items .wc-order-add-item .cancel-action,#woocommerce-order-items .wc-order-add-item .save-action{float:left;margin-right:2px}#woocommerce-order-items .wc-used-coupons{float:left;width:50%}#woocommerce-order-items .wc-order-totals{float:right;width:50%;margin:0;padding:0;text-align:right}#woocommerce-order-items .wc-order-totals .amount{font-weight:700}#woocommerce-order-items .wc-order-totals .label{vertical-align:top}#woocommerce-order-items .wc-order-totals .total{font-size:1em!important;width:10em;margin:0 0 0 .5em;box-sizing:border-box}#woocommerce-order-items .wc-order-totals .total input[type=text]{width:96%;float:right}#woocommerce-order-items .wc-order-totals .refunded-total{color:#a00}#woocommerce-order-items .refund-actions{margin-top:5px;padding-top:12px;border-top:1px solid #DFDFDF}#woocommerce-order-items .refund-actions .button{float:right;margin-left:4px}#woocommerce-order-items .refund-actions .cancel-action,#woocommerce-order-items .wc-order-item-bulk-edit .cancel-action{float:left;margin-left:0}#woocommerce-order-items .add_meta{margin-left:0!important}#woocommerce-order-items h3 small{color:#999}#woocommerce-order-items .amount{white-space:nowrap}#woocommerce-order-items .add-items .description{margin-right:10px}#woocommerce-order-items .add-items .button{float:left;margin-right:.25em}#woocommerce-order-items .add-items .button-primary{float:none;margin-right:0}#woocommerce-order-items .inside{display:block!important}#woocommerce-order-items .handlediv,#woocommerce-order-items .hndle{display:none}#woocommerce-order-items .woocommerce_order_items_wrapper{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items{width:100%;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th{text-align:left;padding:1em;font-weight:400;color:#999;background:#f8f8f8;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th.sortable{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:last-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:first-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th .wc-arrow{float:right;position:relative;margin-right:-1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td{padding:1.5em 1em 1em;text-align:left;line-height:1.5em;vertical-align:top;border-bottom:1px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td select{width:50%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{font-size:14px;padding:4px;color:#555}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:last-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:first-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr td{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected{background:#F5EBF3}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected td{border-color:#E6CCE1;opacity:.8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:last-child td{border-bottom:1px solid #dfdfdf}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:first-child td{border-top:8px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody#order_line_items tr:first-child td{border-top:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb{text-align:left;width:38px;padding-bottom:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail{width:38px;height:38px;border:2px solid #e8e8e8;background:#f8f8f8;color:#ccc;position:relative;font-size:21px;display:block;text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail:before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;height:100%;text-align:center;content:"";width:38px;line-height:38px;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail img{width:100%;height:100%;margin:0;padding:0;position:relative}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-sku,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-variation{display:block;margin-top:.5em;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item{min-width:200px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .center,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .variation-id{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class{text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label{white-space:nowrap;color:#999;font-size:.833em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label input{display:inline}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class input{width:70px;vertical-align:middle;text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class select{width:85px;height:26px;vertical-align:middle;font-size:1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input{display:inline-block;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);margin:1px 0;min-width:80px;overflow:hidden;line-height:1em;text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input{width:100%;box-sizing:border-box}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input label{font-size:.75em;padding:4px 6px 0;color:#555;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input{width:100%;box-sizing:border-box;border:0;box-shadow:none;margin:0;padding:0 6px 4px;color:#555;background:0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input::-webkit-input-placeholder{color:#ddd}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child{border-bottom:1px dashed #ddd;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child label{color:#ccc}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .view{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .edit{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes label{display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount{display:block;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{margin-right:.25em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input{text-align:center;width:50px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items span.subtotal{opacity:.5}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.tax_class,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.tax_class{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .calculated{border-color:#ae8ca2;border-style:dotted}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{margin:.5em 0 0;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div:before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div:before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div:before{color:#ccc;top:0;left:0;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-align:center;font-family:WooCommerce}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr th{border:0;padding:0 4px .5em 0;line-height:1.5em;width:20%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td{padding:0 4px .5em 0;border:0;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input{width:100%;margin:0;position:relative;border-bottom:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .refund_by,ul.order_notes li p.meta .exact-date{border-bottom:1px dotted #999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td textarea{width:100%;height:4em;margin:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input:focus+textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input:focus+textarea{border-top-color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p{margin:0 0 .5em;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p:last-child{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div:before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div:before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div:before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method_name{width:100%;margin:0 0 .5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;float:right;font-size:14px;visibility:hidden;margin:3px -18px 0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:hover:before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:hover:before{color:#a00}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax:hover .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax:hover .delete-order-tax{visibility:visible}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded{display:block;color:#a00;white-space:nowrap;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded:before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;width:100%;height:100%;text-align:center;content:"";position:relative;top:auto;left:auto;margin:-1px 4px 0 0;vertical-align:middle;line-height:1em}#woocommerce-order-items .wc-order-edit-line-item{padding-left:0}#woocommerce-order-items .wc-order-edit-line-item-actions{width:44px;text-align:right;padding-left:0;vertical-align:middle}#woocommerce-order-items .wc-order-edit-line-item-actions a{color:#ccc;display:inline-block;cursor:pointer;padding:0 0 .5em;margin:0 0 0 12px;vertical-align:middle;text-decoration:none;line-height:16px;width:16px;overflow:hidden}#woocommerce-order-items .wc-order-edit-line-item-actions a:before{margin:0;padding:0;font-size:16px;width:16px;height:16px}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item:before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund:before,#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item:before{font-family:Dashicons;-webkit-font-smoothing:antialiased;text-indent:0;top:0;left:0;width:100%;height:100%;margin:0;text-align:center;position:relative;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1}#woocommerce-order-items .wc-order-edit-line-item-actions a:hover:before{color:#999}#woocommerce-order-items .wc-order-edit-line-item-actions a:first-child{margin-left:0}#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item:before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item:before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund:before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item:hover:before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund:hover:before{color:#a00}#woocommerce-order-items tbody tr .wc-order-edit-line-item-actions{visibility:hidden}#woocommerce-order-items tbody tr:hover .wc-order-edit-line-item-actions{visibility:visible}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions{width:1.5em;visibility:visible!important}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions a{padding:0}#woocommerce-order-downloads .buttons{float:left;padding:0;margin:0;vertical-align:top}#woocommerce-order-downloads .buttons .add_item_id,#woocommerce-order-downloads .buttons .select2-container{width:400px!important;margin-right:9px;vertical-align:top;float:left}#woocommerce-order-downloads .buttons button{margin:2px 0 0}#woocommerce-order-downloads h3 small{color:#999}#poststuff #woocommerce-order-actions .inside{margin:0;padding:0}#poststuff #woocommerce-order-actions .inside ul.order_actions li{padding:6px 10px;box-sizing:border-box}#poststuff #woocommerce-order-actions .inside ul.order_actions li:last-child{border-bottom:0}#poststuff #woocommerce-order-notes .inside{margin:0;padding:0}#poststuff #woocommerce-order-notes .inside ul.order_notes li{padding:0 10px}#woocommerce_customers p.search-box{margin:6px 0 4px;float:left}#woocommerce_customers .tablenav{float:right;clear:none}.widefat.customers td{vertical-align:middle;padding:4px 7px}.widefat .column-order_title{width:15%}.widefat .column-order_title time{display:block;color:#999;margin:3px 0}.widefat .column-orders,.widefat .column-paying,.widefat .column-spent{text-align:center;width:8%}.widefat .column-last_order{width:11%}.widefat .column-order_actions,.widefat .column-user_actions,.widefat .column-wc_actions{width:110px}.widefat .column-order_actions a.button,.widefat .column-user_actions a.button,.widefat .column-wc_actions a.button{float:left;margin:0 4px 2px 0;cursor:pointer;padding:3px 4px;height:auto}.widefat .column-order_actions a.button img,.widefat .column-user_actions a.button img,.widefat .column-wc_actions a.button img{display:block;width:12px;height:auto}.widefat small.meta{display:block;color:#999;font-size:inherit;margin:3px 0}.widefat .column-order_date,.widefat .column-order_total{width:9%}.widefat .column-order_status{width:45px;text-align:center}.widefat .column-order_status mark{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;background:0 0;font-size:1.4em;margin:0 auto}.widefat .column-order_status mark.cancelled:after,.widefat .column-order_status mark.completed:after,.widefat .column-order_status mark.failed:after,.widefat .column-order_status mark.on-hold:after,.widefat .column-order_status mark.pending:after,.widefat .column-order_status mark.processing:after,.widefat .column-order_status mark.refunded:after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.column-customer_message .note-on:after,.column-order_notes .note-on:after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;top:0;left:0;text-align:center;line-height:16px;font-family:WooCommerce}.widefat .column-order_status mark.pending:after{content:"\e012";color:#ffba00}.widefat .column-order_status mark.completed:after{content:"\e015";color:#2ea2cc}.widefat .column-order_status mark.on-hold:after{content:"\e033";color:#999}.widefat .column-order_status mark.failed:after{content:"\e016";color:#d0c21f}.widefat .column-order_status mark.cancelled:after{content:"\e013";color:#a00}.widefat .column-order_status mark.processing:after{content:"\e011";color:#73a724}.widefat .column-order_status mark.refunded:after{content:"\e014";color:#999}.widefat td.column-order_status{padding-top:9px}.column-customer_message .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-customer_message .note-on:after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.column-order_notes .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-order_notes .note-on:after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.order_actions .complete,.order_actions .processing,.order_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.order_actions .processing:after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.order_actions .complete:after,.order_actions .view:after{font-family:Dashicons;text-indent:0;position:absolute;width:100%;height:100%;left:0;line-height:1.85;margin:0;text-align:center;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;top:0;font-weight:400}.order_actions .complete:after{content:""}.order_actions .view:after{content:""}.user_actions .edit,.user_actions .link,.user_actions .refresh,.user_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.user_actions .edit:after,.user_actions .link:after,.user_actions .refresh:after,.user_actions .view:after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.user_actions .edit:after{font-family:Dashicons;content:"\f464"}.user_actions .link:after{content:"\e00d"}.user_actions .view:after{content:"\e010"}.user_actions .refresh:after{content:"\e031"}.attributes-table td,.attributes-table th{width:15%;vertical-align:top}.attributes-table .attribute-terms{width:32%}.attributes-table .attribute-actions{width:2em}.attributes-table .attribute-actions .configure-terms{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.attributes-table .attribute-actions .configure-terms:after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}ul.order_notes{padding:2px 0 0}ul.order_notes li .note_content{padding:10px;background:#efefef;position:relative}ul.order_notes li .note_content p{margin:0;padding:0;word-wrap:break-word}ul.order_notes li p.meta{padding:10px;color:#999;margin:0;font-size:11px}ul.order_notes li a.delete_note{color:#a00}table.wp-list-table .row-actions,table.wp-list-table span.na{color:#999}ul.order_notes li .note_content:after{content:"";display:block;position:absolute;bottom:-10px;left:20px;width:0;height:0;border-width:10px 10px 0 0;border-style:solid;border-color:#efefef transparent}ul.order_notes li.customer-note .note_content{background:#A7CEDC}ul.order_notes li.customer-note .note_content:after{border-color:#A7CEDC transparent}ul.order_notes li.system-note .note_content{background:#d7cad2}ul.order_notes li.system-note .note_content:after{border-color:#d7cad2 transparent}.add_note{border-top:1px solid #ddd;padding:10px 10px 0}.add_note h4{margin-top:5px!important}.add_note #add_order_note{width:100%;height:50px}table.wp-list-table .column-thumb{width:52px;text-align:center;white-space:nowrap}table.wp-list-table .column-name{width:22%}table.wp-list-table .column-product_cat,table.wp-list-table .column-product_tag{width:11%!important}table.wp-list-table .column-featured,table.wp-list-table .column-product_type{width:48px;text-align:left!important}table.wp-list-table .column-customer_message,table.wp-list-table .column-order_notes{width:48px;text-align:center}table.wp-list-table .column-customer_message img,table.wp-list-table .column-order_notes img{margin:0 auto;padding-top:0!important}table.wp-list-table .manage-column.column-featured img,table.wp-list-table .manage-column.column-product_type img{padding-left:2px}table.wp-list-table .column-price .woocommerce-price-suffix{display:none}table.wp-list-table img{margin:1px 2px}table.wp-list-table td.column-thumb img{margin:0;width:auto;height:auto;max-width:40px;max-height:40px;vertical-align:middle}table.wp-list-table .column-is_in_stock{text-align:left!important}table.wp-list-table span.wc-featured,table.wp-list-table span.wc-image,table.wp-list-table span.wc-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table span.wc-featured:before,table.wp-list-table span.wc-image:before,table.wp-list-table span.wc-type:before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.wc-featured{margin:0;cursor:pointer}table.wp-list-table span.wc-featured:before{content:"\f155"}table.wp-list-table span.wc-featured.not-featured:before{content:"\f154"}table.wp-list-table td.column-featured span.wc-featured{font-size:1.6em}table.wp-list-table span.wc-type{margin:0}table.wp-list-table span.wc-type:before{font-family:WooCommerce;content:"\e006"}table.wp-list-table .notes_head:after,table.wp-list-table .order-notes_head:after,table.wp-list-table .status_head:after,table.wp-list-table span.product-type:before{font-family:WooCommerce;text-align:center;line-height:1;top:0;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;left:0}table.wp-list-table span.product-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.6em}table.wp-list-table span.product-type:before{font-weight:400;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}table.wp-list-table span.product-type.grouped:before{content:"\e002"}table.wp-list-table span.product-type.external:before{content:"\e034"}table.wp-list-table span.product-type.variable:before{content:"\e003"}table.wp-list-table span.product-type.downloadable:before{content:"\e001"}table.wp-list-table span.product-type.virtual:before{content:"\e000"}table.wp-list-table mark.instock{font-weight:700;color:#7ad03a;background:0 0;line-height:1}table.wp-list-table mark.outofstock{font-weight:700;color:#a44;background:0 0;line-height:1}table.wp-list-table .notes_head,table.wp-list-table .order-notes_head,table.wp-list-table .status_head{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table .notes_head:after,table.wp-list-table .order-notes_head:after,table.wp-list-table .status_head:after{font-weight:400;margin:0;text-indent:0;position:absolute;width:100%;height:100%}table.wc_emails .wc-email-settings-table-name,table.wc_emails td.name,table.wc_gateways .wc-email-settings-table-name,table.wc_gateways td.name,table.wc_shipping .wc-email-settings-table-name,table.wc_shipping td.name{font-weight:700}table.wp-list-table .order-notes_head:after{content:"\e028"}table.wp-list-table .notes_head:after{content:"\e026"}table.wp-list-table .status_head:after{content:"\e011"}table.wp-list-table .column-order_items{width:12%}table.wp-list-table .column-order_items table.order_items{width:100%;margin:3px 0 0;padding:0;display:none}table.wp-list-table .column-order_items table.order_items td{border:0;margin:0;padding:0 0 3px}table.wp-list-table .column-order_items table.order_items td.qty{color:#999;padding-right:6px;text-align:left}mark.notice{background:#fff;color:#a00;margin:0 0 0 10px}a.export_rates,a.import_rates{float:right;margin-left:9px;margin-top:-2px;margin-bottom:0}#rates-search{float:right}#rates-search input.wc-tax-rates-search-field{padding:4px 8px;font-size:1.2em}#rates-pagination{float:right;margin-right:.5em}#rates-pagination .tablenav{margin:0}table.wc_input_table,table.wc_tax_rates{width:100%}table.wc_input_table span.tips,table.wc_tax_rates span.tips{color:#2ea2cc}table.wc_input_table th,table.wc_tax_rates th{white-space:nowrap;padding:10px}table.wc_input_table td,table.wc_tax_rates td{padding:0;border-right:1px solid #DFDFDF;border-bottom:1px solid #DFDFDF;border-top:0;background:#fff;cursor:default}table.wc_input_table td input[type=text],table.wc_input_table td input[type=number],table.wc_tax_rates td input[type=text],table.wc_tax_rates td input[type=number]{width:100%;padding:8px 10px;margin:0;border:0;outline:0;background:0 0}table.wc_input_table td input[type=text]:focus,table.wc_input_table td input[type=number]:focus,table.wc_tax_rates td input[type=text]:focus,table.wc_tax_rates td input[type=number]:focus{outline:0;box-shadow:none}table.wc_input_table td.apply_to_shipping,table.wc_input_table td.compound,table.wc_tax_rates td.apply_to_shipping,table.wc_tax_rates td.compound{padding:5px 7px;vertical-align:middle}table.wc_input_table td.apply_to_shipping input,table.wc_input_table td.compound input,table.wc_tax_rates td.apply_to_shipping input,table.wc_tax_rates td.compound input{width:auto;padding:0}table.wc_input_table td:last-child,table.wc_tax_rates td:last-child{border-right:0}table.wc_input_table tr.current td,table.wc_tax_rates tr.current td{background-color:#fefbcc}table.wc_input_table .cost,table.wc_input_table .cost input,table.wc_input_table .item_cost,table.wc_input_table .item_cost input,table.wc_tax_rates .cost,table.wc_tax_rates .cost input,table.wc_tax_rates .item_cost,table.wc_tax_rates .item_cost input{text-align:right}table.wc_input_table th.sort,table.wc_tax_rates th.sort{width:17px;padding:0 4px}table.wc_input_table td.sort,table.wc_tax_rates td.sort{padding:0 4px}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort{cursor:move;font-size:15px;background:#f9f9f9;text-align:center;vertical-align:middle}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort:before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort:before{content:"\f333";font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort:hover:before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort:hover:before{color:#333}table.wc_input_table .button,table.wc_tax_rates .button{float:left;margin-right:5px}table.wc_input_table .export,table.wc_input_table .import,table.wc_tax_rates .export,table.wc_tax_rates .import{float:right;margin-right:0;margin-left:5px}table.wc_input_table span.tips,table.wc_tax_rates span.tips{padding:0 3px}table.wc_input_table .pagination,table.wc_tax_rates .pagination{float:right}table.wc_input_table .pagination .button,table.wc_tax_rates .pagination .button{margin-left:5px;margin-right:0}table.wc_input_table .pagination .current,table.wc_tax_rates .pagination .current{background:#bbb;text-shadow:none}table.wc_input_table tr:last-child td,table.wc_tax_rates tr:last-child td{border-bottom:0}table.wc_emails,table.wc_gateways,table.wc_shipping{position:relative}table.wc_emails td,table.wc_gateways td,table.wc_shipping td{vertical-align:middle;padding:7px;line-height:2em}table.wc_emails tr:nth-child(odd) td,table.wc_gateways tr:nth-child(odd) td,table.wc_shipping tr:nth-child(odd) td{background:#f9f9f9}table.wc_emails th,table.wc_gateways th,table.wc_shipping th{padding:9px 7px!important;vertical-align:middle}table.wc_emails .settings,table.wc_gateways .settings,table.wc_shipping .settings{text-align:right}table.wc_emails .default,table.wc_emails .radio,table.wc_emails .status,table.wc_gateways .default,table.wc_gateways .radio,table.wc_gateways .status,table.wc_shipping .default,table.wc_shipping .radio,table.wc_shipping .status{text-align:center}table.wc_emails .default .tips,table.wc_emails .radio .tips,table.wc_emails .status .tips,table.wc_gateways .default .tips,table.wc_gateways .radio .tips,table.wc_gateways .status .tips,table.wc_shipping .default .tips,table.wc_shipping .radio .tips,table.wc_shipping .status .tips{margin:0 auto}table.wc_emails .default input,table.wc_emails .radio input,table.wc_emails .status input,table.wc_gateways .default input,table.wc_gateways .radio input,table.wc_gateways .status input,table.wc_shipping .default input,table.wc_shipping .radio input,table.wc_shipping .status input{margin:0}table.wc_emails th.sort,table.wc_gateways th.sort,table.wc_shipping th.sort{width:28px;padding:0}table.wc_emails td.sort,table.wc_gateways td.sort,table.wc_shipping td.sort{padding:0 7px;cursor:move;font-size:15px;text-align:center;vertical-align:middle}table.wc_emails td.sort:before,table.wc_gateways td.sort:before,table.wc_shipping td.sort:before{content:"\f333";font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_emails .wc-email-settings-table-name span,table.wc_gateways .wc-email-settings-table-name span,table.wc_shipping .wc-email-settings-table-name span{font-weight:400;color:#999;margin:0 0 0 4px!important}table.wc_emails .wc-email-settings-table-status,table.wc_gateways .wc-email-settings-table-status,table.wc_shipping .wc-email-settings-table-status{text-align:center;width:1em}table.wc_emails .wc-email-settings-table-status .tips,table.wc_gateways .wc-email-settings-table-status .tips,table.wc_shipping .wc-email-settings-table-status .tips{margin:0 auto}table.wc_emails .wc-email-settings-table-actions a,table.wc_gateways .wc-email-settings-table-actions a,table.wc_shipping .wc-email-settings-table-actions a{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}table.wc_emails .wc-email-settings-table-actions a:after,table.wc_gateways .wc-email-settings-table-actions a:after,table.wc_shipping .wc-email-settings-table-actions a:after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}table.wc-shipping-classes td,table.wc-shipping-classes th,table.wc-shipping-zone-methods td,table.wc-shipping-zone-methods th,table.wc-shipping-zones td,table.wc-shipping-zones th{vertical-align:top;line-height:24px;padding:1em;font-size:14px;background:#fff}table.wc-shipping-classes td li,table.wc-shipping-classes th li,table.wc-shipping-zone-methods td li,table.wc-shipping-zone-methods th li,table.wc-shipping-zones td li,table.wc-shipping-zones th li{line-height:24px;font-size:14px}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state{background:#F7F1F6!important;overflow:hidden;position:relative;padding:7.5em 7.5%;border-bottom:2px solid #EEE2EC}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state p{color:#a46497;font-size:1.5em;line-height:1.5em;margin:0 0 1em;position:relative;z-index:1;text-shadow:1px 1px 1px #fff}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state p.main{font-size:2em}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state li{margin-left:1em;list-style:circle inside}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state:before,table.wc-shipping-classes td.wc-shipping-zones-blank-state:before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state:before,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state:before,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state:before,table.wc-shipping-zones td.wc-shipping-zones-blank-state:before{content:"\e01b";font-family:WooCommerce;text-align:center;line-height:1;color:#EEE2EC;display:block;width:1em;font-size:40em;top:50%;right:-3.75%;margin-top:-.1875em;position:absolute}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-classes td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zones-blank-state .button-primary{background-color:#804877;border-color:#804877;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);margin:0;opacity:1;text-shadow:0 -1px 1px #8a4f7f,1px 0 1px #8a4f7f,0 1px 1px #8a4f7f,-1px 0 1px #8a4f7f;font-size:1.5em;padding:.75em 1em;height:auto;position:relative;z-index:1}table.wc-shipping-classes .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-classes .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-classes tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-classes tr.odd td,table.wc-shipping-zone-methods .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tr.odd td,table.wc-shipping-zones .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zones .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zones tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zones tr.odd td{background:#f9f9f9}table.wc-shipping-classes p,table.wc-shipping-classes ul,table.wc-shipping-zone-methods p,table.wc-shipping-zone-methods ul,table.wc-shipping-zones p,table.wc-shipping-zones ul{margin:0}table.wc-shipping-classes td.wc-shipping-zone-method-sort,table.wc-shipping-classes td.wc-shipping-zone-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-sort,table.wc-shipping-zones td.wc-shipping-zone-method-sort,table.wc-shipping-zones td.wc-shipping-zone-sort{cursor:move;font-size:15px;text-align:center}table.wc-shipping-classes td.wc-shipping-zone-method-sort:before,table.wc-shipping-classes td.wc-shipping-zone-sort:before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort:before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort:before,table.wc-shipping-zones td.wc-shipping-zone-method-sort:before,table.wc-shipping-zones td.wc-shipping-zone-sort:before{content:"\f333";font-family:Dashicons;text-align:center;color:#999;display:block;width:17px;float:left;height:100%;line-height:24px}table.wc-shipping-classes td.wc-shipping-zone-method-sort:hover:before,table.wc-shipping-classes td.wc-shipping-zone-sort:hover:before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort:hover:before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort:hover:before,table.wc-shipping-zones td.wc-shipping-zone-method-sort:hover:before,table.wc-shipping-zones td.wc-shipping-zone-sort:hover:before{color:#333}table.wc-shipping-classes td.wc-shipping-zone-worldwide,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide,table.wc-shipping-zones td.wc-shipping-zone-worldwide{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-worldwide:before,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide:before,table.wc-shipping-zones td.wc-shipping-zone-worldwide:before{content:"\f319";font-family:dashicons;text-align:center;color:#999;display:block;width:17px;float:left;height:100%;line-height:24px}table.wc-shipping-classes .wc-shipping-zone-methods,table.wc-shipping-classes .wc-shipping-zone-name,table.wc-shipping-zone-methods .wc-shipping-zone-methods,table.wc-shipping-zone-methods .wc-shipping-zone-name,table.wc-shipping-zones .wc-shipping-zone-methods,table.wc-shipping-zones .wc-shipping-zone-name{width:25%}table.wc-shipping-classes .wc-shipping-class-description input,table.wc-shipping-classes .wc-shipping-class-description select,table.wc-shipping-classes .wc-shipping-class-description textarea,table.wc-shipping-classes .wc-shipping-class-name input,table.wc-shipping-classes .wc-shipping-class-name select,table.wc-shipping-classes .wc-shipping-class-name textarea,table.wc-shipping-classes .wc-shipping-class-slug input,table.wc-shipping-classes .wc-shipping-class-slug select,table.wc-shipping-classes .wc-shipping-class-slug textarea,table.wc-shipping-classes .wc-shipping-zone-name input,table.wc-shipping-classes .wc-shipping-zone-name select,table.wc-shipping-classes .wc-shipping-zone-name textarea,table.wc-shipping-classes .wc-shipping-zone-region input,table.wc-shipping-classes .wc-shipping-zone-region select,table.wc-shipping-classes .wc-shipping-zone-region textarea,table.wc-shipping-zone-methods .wc-shipping-class-description input,table.wc-shipping-zone-methods .wc-shipping-class-description select,table.wc-shipping-zone-methods .wc-shipping-class-description textarea,table.wc-shipping-zone-methods .wc-shipping-class-name input,table.wc-shipping-zone-methods .wc-shipping-class-name select,table.wc-shipping-zone-methods .wc-shipping-class-name textarea,table.wc-shipping-zone-methods .wc-shipping-class-slug input,table.wc-shipping-zone-methods .wc-shipping-class-slug select,table.wc-shipping-zone-methods .wc-shipping-class-slug textarea,table.wc-shipping-zone-methods .wc-shipping-zone-name input,table.wc-shipping-zone-methods .wc-shipping-zone-name select,table.wc-shipping-zone-methods .wc-shipping-zone-name textarea,table.wc-shipping-zone-methods .wc-shipping-zone-region input,table.wc-shipping-zone-methods .wc-shipping-zone-region select,table.wc-shipping-zone-methods .wc-shipping-zone-region textarea,table.wc-shipping-zones .wc-shipping-class-description input,table.wc-shipping-zones .wc-shipping-class-description select,table.wc-shipping-zones .wc-shipping-class-description textarea,table.wc-shipping-zones .wc-shipping-class-name input,table.wc-shipping-zones .wc-shipping-class-name select,table.wc-shipping-zones .wc-shipping-class-name textarea,table.wc-shipping-zones .wc-shipping-class-slug input,table.wc-shipping-zones .wc-shipping-class-slug select,table.wc-shipping-zones .wc-shipping-class-slug textarea,table.wc-shipping-zones .wc-shipping-zone-name input,table.wc-shipping-zones .wc-shipping-zone-name select,table.wc-shipping-zones .wc-shipping-zone-name textarea,table.wc-shipping-zones .wc-shipping-zone-region input,table.wc-shipping-zones .wc-shipping-zone-region select,table.wc-shipping-zones .wc-shipping-zone-region textarea{width:100%}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete{color:red}table.wc-shipping-classes .wc-shipping-class-description .wc-shipping-zone-postcodes-toggle,table.wc-shipping-classes .wc-shipping-class-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-classes .wc-shipping-class-slug .wc-shipping-zone-postcodes-toggle,table.wc-shipping-classes .wc-shipping-zone-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-classes .wc-shipping-zone-region .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-class-description .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-class-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-class-slug .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-zone-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-zone-region .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-class-description .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-class-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-class-slug .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-zone-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-zone-region .wc-shipping-zone-postcodes-toggle{float:right;margin:0;font-size:.9em;text-decoration:underline}table.wc-shipping-classes .wc-shipping-class-description .wc-shipping-zone-postcodes,table.wc-shipping-classes .wc-shipping-class-name .wc-shipping-zone-postcodes,table.wc-shipping-classes .wc-shipping-class-slug .wc-shipping-zone-postcodes,table.wc-shipping-classes .wc-shipping-zone-name .wc-shipping-zone-postcodes,table.wc-shipping-classes .wc-shipping-zone-region .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-class-description .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-class-name .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-class-slug .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-zone-name .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-zone-region .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-class-description .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-class-name .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-class-slug .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-zone-name .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-zone-region .wc-shipping-zone-postcodes{display:none}table.wc-shipping-classes .wc-shipping-class-description .wc-shipping-zone-postcodes textarea,table.wc-shipping-classes .wc-shipping-class-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-classes .wc-shipping-class-slug .wc-shipping-zone-postcodes textarea,table.wc-shipping-classes .wc-shipping-zone-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-classes .wc-shipping-zone-region .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-class-description .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-class-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-class-slug .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-zone-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-zone-region .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-class-description .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-class-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-class-slug .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-zone-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-zone-region .wc-shipping-zone-postcodes textarea{margin-top:1em}table.wc-shipping-classes .wc-shipping-class-description .wc-shipping-zone-postcodes .description,table.wc-shipping-classes .wc-shipping-class-name .wc-shipping-zone-postcodes .description,table.wc-shipping-classes .wc-shipping-class-slug .wc-shipping-zone-postcodes .description,table.wc-shipping-classes .wc-shipping-zone-name .wc-shipping-zone-postcodes .description,table.wc-shipping-classes .wc-shipping-zone-region .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-class-description .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-class-name .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-class-slug .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-zone-name .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-zone-region .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-class-description .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-class-name .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-class-slug .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-zone-name .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-zone-region .wc-shipping-zone-postcodes .description{font-size:.9em;color:#999}table.wc-shipping-classes .wc-shipping-class-count,table.wc-shipping-zone-methods .wc-shipping-class-count,table.wc-shipping-zones .wc-shipping-class-count{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-methods,table.wc-shipping-zone-methods td.wc-shipping-zone-methods,table.wc-shipping-zones td.wc-shipping-zone-methods{color:#999}table.wc-shipping-classes td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .method_disabled{text-decoration:line-through}table.wc-shipping-classes td.wc-shipping-zone-methods ul,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul,table.wc-shipping-zones td.wc-shipping-zone-methods ul{color:#999;position:relative;padding-right:32px}table.wc-shipping-classes td.wc-shipping-zone-methods ul li,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li,table.wc-shipping-zones td.wc-shipping-zone-methods ul li{display:inline;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:before{content:", "}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:first-child:before,table.wc-shipping-classes td.wc-shipping-zone-methods ul li:nth-child(2):before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:first-child:before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:nth-child(2):before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:first-child:before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:nth-child(2):before{content:""}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:first-child,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:first-child,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:first-child{display:block}table.wc-shipping-classes td.wc-shipping-zone-methods ul li.wc-shipping-zone-methods-add-row,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li.wc-shipping-zone-methods-add-row,table.wc-shipping-zones td.wc-shipping-zone-methods ul li.wc-shipping-zone-methods-add-row{position:absolute;right:0;top:0}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method{display:block;width:24px;padding:24px 0 0;height:0;overflow:hidden;cursor:pointer}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method:before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method:before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method:before{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;font-family:Dashicons;content:"\f502";color:#999;vertical-align:middle;line-height:24px;font-size:16px;margin:0}table.wc-shipping-classes .wc-shipping-zone-method-enabled .status-disabled:before,table.wc-shipping-classes .wc-shipping-zone-method-enabled .status-enabled:before,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .status-disabled:before,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .status-enabled:before,table.wc-shipping-zones .wc-shipping-zone-method-enabled .status-disabled:before,table.wc-shipping-zones .wc-shipping-zone-method-enabled .status-enabled:before{line-height:inherit}table.wc-shipping-classes .wc-shipping-zone-method-enabled .status-disabled,table.wc-shipping-classes .wc-shipping-zone-method-enabled .status-enabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .status-disabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .status-enabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled .status-disabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled .status-enabled{margin-top:1px;display:inline-block}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled{cursor:not-allowed}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled:before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled:before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled:before{color:#ccc}table.wc-shipping-classes .wc-shipping-zone-method-title,table.wc-shipping-zone-methods .wc-shipping-zone-method-title,table.wc-shipping-zones .wc-shipping-zone-method-title{width:33%}table.wc-shipping-classes .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zone-methods .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zones .wc-shipping-zone-method-title .wc-shipping-zone-method-delete{color:red}table.wc-shipping-classes .wc-shipping-zone-method-enabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled{text-align:center}table.wc-shipping-classes tfoot input,table.wc-shipping-classes tfoot select,table.wc-shipping-zone-methods tfoot input,table.wc-shipping-zone-methods tfoot select,table.wc-shipping-zones tfoot input,table.wc-shipping-zones tfoot select{vertical-align:middle!important}table.wc-shipping-classes tfoot .button-secondary,table.wc-shipping-zone-methods tfoot .button-secondary,table.wc-shipping-zones tfoot .button-secondary{float:right}table.wc-shipping-classes .editing .wc-shipping-zone-edit,table.wc-shipping-classes .editing .wc-shipping-zone-view,table.wc-shipping-zone-methods .editing .wc-shipping-zone-edit,table.wc-shipping-zone-methods .editing .wc-shipping-zone-view,table.wc-shipping-zones .editing .wc-shipping-zone-edit,table.wc-shipping-zones .editing .wc-shipping-zone-view{display:none}.wc-modal-shipping-method-settings{background:#f8f8f8;padding:1em!important}.wc-modal-shipping-method-settings form .form-table{width:100%;background:#fff;margin:0 0 1.5em}.wc-modal-shipping-method-settings form .form-table tr th{width:30%;position:relative}.wc-modal-shipping-method-settings form .form-table tr th .woocommerce-help-tip{float:right;margin:-8px -.5em 0 0;vertical-align:middle;right:0;top:50%;position:absolute}.wc-modal-shipping-method-settings form .form-table tr td input,.wc-modal-shipping-method-settings form .form-table tr td select,.wc-modal-shipping-method-settings form .form-table tr td textarea{width:50%;min-width:250px}.wc-modal-shipping-method-settings form .form-table tr td input[type=checkbox]{width:auto;min-width:16px}.wc-modal-shipping-method-settings form .form-table tr td,.wc-modal-shipping-method-settings form .form-table tr th{vertical-align:middle;margin:0;line-height:24px;padding:1em;border-bottom:1px solid #f8f8f8}.wc-modal-shipping-method-settings form .form-table:last-of-type{margin-bottom:0}.wc-backbone-modal .wc-shipping-zone-method-selector p{margin-top:0}.wc-backbone-modal .wc-shipping-zone-method-selector .wc-shipping-zone-method-description{margin:.75em 1px 0;line-height:1.5em;color:#999;font-style:italic}.wc-backbone-modal .wc-shipping-zone-method-selector select{width:100%;cursor:pointer}img.help_tip{margin:0 0 0 9px;vertical-align:middle}.postbox img.help_tip{margin-top:0}.postbox .woocommerce-help-tip{margin:0 0 0 9px}.status-disabled,.status-enabled,.status-manual{font-size:1.4em;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}.status-disabled:before,.status-enabled:before,.status-manual:before{font-family:WooCommerce;line-height:1;margin:0;position:absolute;width:100%;height:100%;text-indent:0;top:0;font-variant:normal;-webkit-font-smoothing:antialiased;font-weight:400;text-align:center;left:0;speak:none;text-transform:none}.status-manual:before{content:"";color:#999}.status-enabled:before{content:"";color:#a46497}.status-disabled:before{content:"";color:#ccc}.woocommerce h2.woo-nav-tab-wrapper{margin-bottom:1em}.woocommerce nav.woo-nav-tab-wrapper{margin:1.5em 0 1em;border-bottom:1px solid #ccc}.woocommerce .subsubsub{margin:-8px 0 0}.woocommerce .wc-admin-breadcrumb{margin-left:.5em}.woocommerce .wc-admin-breadcrumb a{color:#a46497}.woocommerce #template div{margin:0}.woocommerce #template div p .button{float:right;margin-left:10px;margin-top:-4px}.woocommerce #template div .editor textarea{margin-bottom:8px}.woocommerce textarea[disabled=disabled]{background:#DFDFDF!important}.woocommerce table.form-table{margin:0;position:relative}.woocommerce table.form-table .forminp-radio ul{margin:0}.woocommerce table.form-table .forminp-radio ul li{line-height:1.4em}.woocommerce table.form-table textarea.input-text{height:100%;min-width:150px;display:block}.woocommerce table.form-table input.regular-input{width:25em}.woocommerce table.form-table textarea.wide-input{width:100%}.woocommerce table.form-table .woocommerce-help-tip,.woocommerce table.form-table img.help_tip{padding:0;margin:-4px 0 0 5px;vertical-align:middle;cursor:help;line-height:1}.woocommerce table.form-table span.help_tip{cursor:help;color:#2ea2cc}.woocommerce table.form-table th{position:relative;padding-right:24px}.woocommerce table.form-table .select2-container{display:block;max-width:350px;vertical-align:top;margin-bottom:3px}.woocommerce table.form-table table.widefat th{padding-right:inherit}.woocommerce table.form-table th .woocommerce-help-tip,.woocommerce table.form-table th img.help_tip{margin:0 -24px 0 0;float:right}.woocommerce table.form-table .wp-list-table .woocommerce-help-tip{float:none}.woocommerce table.form-table fieldset{margin-top:4px}.woocommerce table.form-table fieldset .woocommerce-help-tip,.woocommerce table.form-table fieldset img.help_tip{margin:-3px 0 0 5px}.woocommerce table.form-table fieldset p.description{margin-bottom:8px}.woocommerce table.form-table fieldset:first-child{margin-top:0}.woocommerce table.form-table .iris-picker{z-index:100;display:none;position:absolute;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2)}.woocommerce table.form-table .iris-picker .ui-slider{border:0!important;margin:0!important;width:auto!important;height:auto!important;background:none!important}.woocommerce table.form-table .iris-picker .ui-slider .ui-slider-handle{margin-bottom:0!important}.woocommerce table.form-table .colorpickpreview{padding:3px 3px 3px 20px;border:1px solid #ddd;border-right:0}.woocommerce table.form-table .colorpick{border-left:0}.woocommerce table.form-table .image_width_settings{vertical-align:middle}.woocommerce table.form-table .image_width_settings label{margin-left:10px}.woocommerce table.form-table .wc_emails_wrapper{padding:0 15px 10px 0}.woocommerce #tabs-wrap table a.remove{margin-left:4px}.woocommerce #tabs-wrap table p{margin:0 0 4px!important;overflow:hidden;zoom:1}.woocommerce #tabs-wrap table p a.add{float:left}#wp-excerpt-editor-container{background:#fff}#product_variation-parent #parent_id{width:100%}#postimagediv img{border:1px solid #d5d5d5;max-width:100%}#woocommerce-product-images .inside{margin:0;padding:0}#woocommerce-product-images .inside .add_product_images{padding:0 12px 12px}#woocommerce-product-images .inside #product_images_container{padding:0 0 0 9px}#woocommerce-product-images .inside #product_images_container ul{margin:0;padding:0}#woocommerce-product-images .inside #product_images_container ul:after,#woocommerce-product-images .inside #product_images_container ul:before{content:" ";display:table}#woocommerce-product-images .inside #product_images_container ul:after{clear:both}#woocommerce-product-images .inside #product_images_container ul li.add,#woocommerce-product-images .inside #product_images_container ul li.image,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{width:80px;float:left;cursor:move;border:1px solid #d5d5d5;margin:9px 9px 0 0;background:#f7f7f7;border-radius:2px;position:relative;box-sizing:border-box}#woocommerce-product-images .inside #product_images_container ul li.add img,#woocommerce-product-images .inside #product_images_container ul li.image img,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder img{width:100%;height:auto;display:block}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{border:3px dashed #ddd;position:relative}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder:after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-size:2.618em;line-height:72px;color:#ddd}#woocommerce-product-images .inside #product_images_container ul ul.actions{position:absolute;top:-8px;right:-8px;padding:2px;display:none}#woocommerce-product-images .inside #product_images_container ul ul.actions li{float:right;margin:0 0 0 2px}#woocommerce-product-images .inside #product_images_container ul ul.actions li a{width:1em;margin:0;height:0;display:block;overflow:hidden}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.tips{cursor:pointer}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.4em}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:hover:before{color:#a00}#woocommerce-product-images .inside #product_images_container ul li:hover ul.actions{display:block}#woocommerce-product-data .hndle{padding:10px}#woocommerce-product-data .hndle span{display:block;vertical-align:middle;line-height:24px}#woocommerce-product-data .hndle span span{display:inline;line-height:inherit;vertical-align:baseline}#woocommerce-product-data .hndle label{padding-right:1em;font-size:12px;vertical-align:baseline}#woocommerce-product-data .hndle label:first-child{margin-right:1em;border-right:1px solid #dfdfdf}#woocommerce-product-data .hndle input,#woocommerce-product-data .hndle select{margin:-3px 0 0 .5em;vertical-align:middle}#woocommerce-product-data>.handlediv{margin-top:4px}#woocommerce-product-data .wrap{margin:0}#woocommerce-coupon-description{padding:3px 8px;font-size:1.7em;line-height:1.42em;height:auto;width:100%;outline:0;margin:10px 0;display:block}#woocommerce-coupon-description::-webkit-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description::-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-ms-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap{background:#fff}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{float:left;width:80%}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-product-data .woocommerce_options_panel .wc-radios{display:block;float:left;margin:0}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-product-data .woocommerce_options_panel .wc-radios li{display:block;padding:0 0 10px}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li input,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-product-data .woocommerce_options_panel .wc-radios li input{width:auto}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap,.woocommerce .panel-wrap{overflow:hidden}#woocommerce-coupon-data ul.wc-tabs,#woocommerce-product-data ul.wc-tabs,.woocommerce ul.wc-tabs{margin:0;width:20%;float:left;line-height:1em;padding:0 0 10px;position:relative;background-color:#fafafa;border-right:1px solid #eee;box-sizing:border-box}#woocommerce-coupon-data ul.wc-tabs:after,#woocommerce-product-data ul.wc-tabs:after,.woocommerce ul.wc-tabs:after{content:"";display:block;width:100%;height:9999em;position:absolute;bottom:-9999em;left:0;background-color:#fafafa;border-right:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li,#woocommerce-product-data ul.wc-tabs li,.woocommerce ul.wc-tabs li{margin:0;padding:0;display:block;position:relative}#woocommerce-coupon-data ul.wc-tabs li a,#woocommerce-product-data ul.wc-tabs li a,.woocommerce ul.wc-tabs li a{margin:0;padding:10px;display:block;box-shadow:none;text-decoration:none;line-height:20px!important;border-bottom:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li a:before,#woocommerce-product-data ul.wc-tabs li a:before,.woocommerce ul.wc-tabs li a:before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#woocommerce-coupon-data ul.wc-tabs li.general_options a:before,#woocommerce-product-data ul.wc-tabs li.general_options a:before,.woocommerce ul.wc-tabs li.general_options a:before{content:"\f107"}#woocommerce-coupon-data ul.wc-tabs li.inventory_options a:before,#woocommerce-product-data ul.wc-tabs li.inventory_options a:before,.woocommerce ul.wc-tabs li.inventory_options a:before{content:"\f481"}#woocommerce-coupon-data ul.wc-tabs li.shipping_options a:before,#woocommerce-product-data ul.wc-tabs li.shipping_options a:before,.woocommerce ul.wc-tabs li.shipping_options a:before{font-family:WooCommerce;content:"\e01a"}#woocommerce-coupon-data ul.wc-tabs li.linked_product_options a:before,#woocommerce-product-data ul.wc-tabs li.linked_product_options a:before,.woocommerce ul.wc-tabs li.linked_product_options a:before{content:"\f103"}#woocommerce-coupon-data ul.wc-tabs li.attribute_options a:before,#woocommerce-product-data ul.wc-tabs li.attribute_options a:before,.woocommerce ul.wc-tabs li.attribute_options a:before{content:"\f175"}#woocommerce-coupon-data ul.wc-tabs li.advanced_options a:before,#woocommerce-product-data ul.wc-tabs li.advanced_options a:before,.woocommerce ul.wc-tabs li.advanced_options a:before{font-family:Dashicons;content:"\f111"}#woocommerce-coupon-data ul.wc-tabs li.variations_options a:before,#woocommerce-product-data ul.wc-tabs li.variations_options a:before,.woocommerce ul.wc-tabs li.variations_options a:before{content:"\f509"}#woocommerce-coupon-data ul.wc-tabs li.usage_restriction_options a:before,#woocommerce-product-data ul.wc-tabs li.usage_restriction_options a:before,.woocommerce ul.wc-tabs li.usage_restriction_options a:before{font-family:WooCommerce;content:"\e602"}#woocommerce-coupon-data ul.wc-tabs li.usage_limit_options a:before,#woocommerce-product-data ul.wc-tabs li.usage_limit_options a:before,.woocommerce ul.wc-tabs li.usage_limit_options a:before{font-family:WooCommerce;content:"\e601"}#woocommerce-coupon-data ul.wc-tabs li.general_coupon_data a:before,#woocommerce-product-data ul.wc-tabs li.general_coupon_data a:before,.woocommerce ul.wc-tabs li.general_coupon_data a:before{font-family:WooCommerce;content:"\e600"}#woocommerce-coupon-data ul.wc-tabs li.active a,#woocommerce-product-data ul.wc-tabs li.active a,.woocommerce ul.wc-tabs li.active a{color:#555;position:relative;background-color:#eee}.woocommerce_page_wc-settings .shippingrows th.check-column{padding-top:20px}.woocommerce_page_wc-settings .shippingrows tfoot th{padding-left:10px}.woocommerce_page_wc-settings .shippingrows .add.button:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}.woocommerce_page_wc-settings h3.wc-settings-sub-title{font-size:1.2em}#woocommerce-coupon-data .inside,#woocommerce-order-data .inside,#woocommerce-order-downloads .inside,#woocommerce-product-data .inside,#woocommerce-product-type-options .inside{margin:0;padding:0}.panel,.woocommerce_options_panel{padding:9px;color:#555}.panel .form-field .woocommerce-help-tip,.woocommerce_options_panel .form-field .woocommerce-help-tip{font-size:1.4em}.panel,.woocommerce_page_settings .woocommerce_options_panel{padding:0}#woocommerce-product-specs .inside,#woocommerce-product-type-options .panel{margin:0;padding:9px}#woocommerce-product-type-options .panel p,.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p{margin:0 0 9px;font-size:12px;padding:5px 9px;line-height:24px}#woocommerce-product-type-options .panel p:after,.woocommerce_options_panel fieldset.form-field:after,.woocommerce_options_panel p:after{content:".";display:block;height:0;clear:both;visibility:hidden}.woocommerce_options_panel .checkbox,.woocommerce_variable_attributes .checkbox{width:auto;margin:3px 0;vertical-align:middle}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{width:100%;padding:0!important}.woocommerce_options_panel .downloadable_files table th,.woocommerce_variations .downloadable_files table th{padding:7px 0 7px 7px!important}.woocommerce_options_panel .downloadable_files table th.sort,.woocommerce_variations .downloadable_files table th.sort{width:17px;padding:7px!important}.woocommerce_options_panel .downloadable_files table th .woocommerce-help-tip,.woocommerce_variations .downloadable_files table th .woocommerce-help-tip{font-size:1.1em;margin-left:0}.woocommerce_options_panel .downloadable_files table td,.woocommerce_variations .downloadable_files table td{vertical-align:middle!important;padding:4px 0 4px 7px!important;position:relative}.woocommerce_options_panel .downloadable_files table td:last-child,.woocommerce_variations .downloadable_files table td:last-child{padding-right:7px!important}.woocommerce_options_panel .downloadable_files table td input.input_text,.woocommerce_variations .downloadable_files table td input.input_text{width:100%;float:none;min-width:0;margin:1px 0}.woocommerce_options_panel .downloadable_files table td .upload_file_button,.woocommerce_variations .downloadable_files table td .upload_file_button{width:auto;float:right;cursor:pointer}.woocommerce_options_panel .downloadable_files table td .delete,.woocommerce_variations .downloadable_files table td .delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.2em}.woocommerce_options_panel .downloadable_files table td .delete:before,.woocommerce_variations .downloadable_files table td .delete:before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}.woocommerce_options_panel .downloadable_files table td .delete:hover:before,.woocommerce_variations .downloadable_files table td .delete:hover:before{color:#a00}.woocommerce_options_panel .downloadable_files table td.sort,.woocommerce_variations .downloadable_files table td.sort{width:17px;cursor:move;font-size:15px;text-align:center;background:#f9f9f9;padding-right:7px!important}.woocommerce_options_panel .downloadable_files table td.sort:before,.woocommerce_variations .downloadable_files table td.sort:before{content:"\f333";font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}.woocommerce_options_panel .downloadable_files table td.sort:hover:before,.woocommerce_variations .downloadable_files table td.sort:hover:before{color:#333}.woocommerce_variation h3 .sort{width:17px;height:26px;cursor:move;float:right;font-size:15px;font-weight:400;margin-right:.5em;visibility:hidden;text-align:center;vertical-align:middle}.woocommerce_variation h3 .sort:before{content:"\f333";font-family:Dashicons;text-align:center;line-height:28px;color:#999;display:block;width:17px;float:left;height:100%}.woocommerce_variation h3 .sort:hover:before{color:#777}.woocommerce_variation h3:hover .sort,.woocommerce_variation.ui-sortable-helper .sort{visibility:visible}.woocommerce_options_panel{min-height:175px;box-sizing:border-box}.woocommerce_options_panel .downloadable_files{padding:0 9px 0 162px;position:relative;margin:9px 0}.woocommerce_options_panel .downloadable_files label{position:absolute;left:0;margin:0 0 0 12px;line-height:24px}.woocommerce_options_panel p{margin:9px 0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px 5px 162px!important}.woocommerce_options_panel .sale_price_dates_fields .short:first-of-type{margin-bottom:1em}.woocommerce_options_panel .sale_price_dates_fields .short:nth-of-type(2){clear:left}.woocommerce_options_panel label,.woocommerce_options_panel legend{float:left;width:150px;padding:0;margin:0 0 0 -150px}.woocommerce_options_panel label .req,.woocommerce_options_panel legend .req{font-weight:700;font-style:normal;color:#a00}.woocommerce_options_panel .description{padding:0;margin:0 0 0 7px;clear:none;display:inline}.woocommerce_options_panel .description-block{margin-left:0;display:block}.woocommerce_options_panel input,.woocommerce_options_panel select,.woocommerce_options_panel textarea{margin:0}.woocommerce_options_panel textarea{height:3.5em;line-height:1.5em;vertical-align:top}.woocommerce_options_panel input[type=text],.woocommerce_options_panel input[type=number],.woocommerce_options_panel input[type=email],.woocommerce_options_panel input[type=password]{width:50%;float:left}.woocommerce_options_panel input.button{width:auto;margin-left:8px}.woocommerce_options_panel select{float:left}.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:50%}.woocommerce_options_panel .sized{width:auto!important;margin-right:6px}.woocommerce_options_panel .options_group{border-top:1px solid #fff;border-bottom:1px solid #eee}.woocommerce_options_panel .options_group:first-child{border-top:0}.woocommerce_options_panel .options_group:last-child{border-bottom:0}.woocommerce_options_panel .options_group fieldset{margin:9px 0;font-size:12px;padding:5px 9px;line-height:24px}.woocommerce_options_panel .options_group fieldset label{width:auto;float:none}.woocommerce_options_panel .options_group fieldset ul{float:left;width:50%;margin:0;padding:0}.woocommerce_options_panel .options_group fieldset ul li{margin:0;width:auto}.woocommerce_options_panel .options_group fieldset ul li input{width:auto;float:none;margin-right:4px}.woocommerce_options_panel .options_group fieldset ul.wc-radios label{margin-left:0}.woocommerce_options_panel .dimensions_field .wrap{display:block;width:50%}.woocommerce_options_panel .dimensions_field .wrap input{width:30.75%;margin-right:3.8%}.woocommerce_options_panel .dimensions_field .wrap .last{margin-right:0}.woocommerce_options_panel.padded{padding:1em}#woocommerce-product-data input.dp-applied,.woocommerce_options_panel .select2-container{float:left}#grouped_product_options,#simple_product_options,#virtual_product_options{padding:12px;font-style:italic;color:#666}.wc-metaboxes-wrapper .toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #eee;padding:9px 12px!important}.wc-metaboxes-wrapper .toolbar:first-child{border-top:0}.wc-metaboxes-wrapper .toolbar:last-child{border-bottom:0}.wc-metaboxes-wrapper .toolbar .add_variation{float:right;margin-left:5px}.wc-metaboxes-wrapper .toolbar .cancel-variation-changes,.wc-metaboxes-wrapper .toolbar .save-variation-changes{float:left;margin-right:5px}.wc-metaboxes-wrapper p.toolbar{overflow:hidden;zoom:1}.wc-metaboxes-wrapper .expand-close{margin-right:2px;color:#777;font-size:12px;font-style:italic}.wc-metaboxes-wrapper .expand-close a{background:0 0;padding:0;font-size:12px;text-decoration:none}.wc-metaboxes-wrapper#product_attributes .expand-close{float:right;line-height:28px}.wc-metaboxes-wrapper .fr,.wc-metaboxes-wrapper button.add_variable_attribute{float:right;margin:0 0 0 6px}.wc-metaboxes-wrapper .wc-metaboxes{border-bottom:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin-bottom:9px;border-width:1px;border-style:dashed}.wc-metaboxes-wrapper .wc-metabox{background:#fff;border-bottom:1px solid #eee;margin:0!important}.wc-metaboxes-wrapper .wc-metabox select{font-weight:400}.wc-metaboxes-wrapper .wc-metabox:last-of-type{border-bottom:0}.wc-metaboxes-wrapper .wc-metabox .handlediv{width:27px}.wc-metaboxes-wrapper .wc-metabox .handlediv:before{content:"\f142"!important;cursor:pointer;display:inline-block;font:400 20px/1 Dashicons;line-height:.5!important;padding:8px 10px;position:relative;right:12px;top:0}.wc-metaboxes-wrapper .wc-metabox.closed{border-radius:3px}.wc-metaboxes-wrapper .wc-metabox.closed .handlediv:before{content:"\f140"!important}.wc-metaboxes-wrapper .wc-metabox.closed h3{border:0}.wc-metaboxes-wrapper .wc-metabox h3{margin:0!important;padding:.75em .75em .75em 1em!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}.wc-metaboxes-wrapper .wc-metabox h3 a.delete,.wc-metaboxes-wrapper .wc-metabox h3 button{float:right}.wc-metaboxes-wrapper .wc-metabox h3 a.delete{color:red;font-weight:400;line-height:26px;text-decoration:none;position:relative;visibility:hidden}.wc-metaboxes-wrapper .wc-metabox h3 strong{line-height:26px;font-weight:700}.wc-metaboxes-wrapper .wc-metabox h3 select{font-family:sans-serif;max-width:20%;margin:.25em .25em .25em 0}.wc-metaboxes-wrapper .wc-metabox h3 .handlediv{background-position:6px 5px!important;visibility:hidden;height:26px}.wc-metaboxes-wrapper .wc-metabox h3.fixed{cursor:pointer!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3{cursor:pointer;padding:.5em .75em .5em 1em!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .handlediv,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .sort,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 a.delete{margin-top:.25em}.wc-metaboxes-wrapper .wc-metabox h3:hover .handlediv,.wc-metaboxes-wrapper .wc-metabox h3:hover a.delete,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper .handlediv,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper a.delete{visibility:visible}.wc-metaboxes-wrapper .wc-metabox table{width:100%;position:relative;background-color:#fdfdfd;padding:1em;border-top:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox table td{text-align:left;padding:0 6px 1em 0;vertical-align:top;border:0}.wc-metaboxes-wrapper .wc-metabox table td label{text-align:left;display:block;line-height:21px}.wc-metaboxes-wrapper .wc-metabox table td input{float:left;min-width:200px}.wc-metaboxes-wrapper .wc-metabox table td input,.wc-metaboxes-wrapper .wc-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}.wc-metaboxes-wrapper .wc-metabox table td .select2-container,.wc-metaboxes-wrapper .wc-metabox table td select{width:100%!important}.wc-metaboxes-wrapper .wc-metabox table td input.short{width:200px}.wc-metaboxes-wrapper .wc-metabox table td input.checkbox{width:16px;min-width:inherit;vertical-align:text-bottom;display:inline-block;float:none}.wc-metaboxes-wrapper .wc-metabox table td.attribute_name{width:200px}.wc-metaboxes-wrapper .wc-metabox table .minus,.wc-metaboxes-wrapper .wc-metabox table .plus{margin-top:6px}.wc-metaboxes-wrapper .wc-metabox table .fl{float:left}.wc-metaboxes-wrapper .wc-metabox table .fr{float:right}.variations-pagenav{float:right;line-height:24px}.variations-pagenav .displaying-num{color:#777;font-size:12px;font-style:italic}.variations-pagenav a{padding:0 10px 3px;background:rgba(0,0,0,.05);font-size:16px;font-weight:400;text-decoration:none}.variations-pagenav a.disabled,.variations-pagenav a.disabled:active,.variations-pagenav a.disabled:focus,.variations-pagenav a.disabled:hover{color:#A0A5AA;background:rgba(0,0,0,.05)}.variations-defaults{float:left}.variations-defaults select{margin:.25em .25em .25em 0}.woocommerce_variable_attributes{background-color:#fdfdfd;border-top:1px solid #eee}.woocommerce_variable_attributes .data{padding:1em 2em}.woocommerce_variable_attributes .data:after,.woocommerce_variable_attributes .data:before{content:" ";display:table}.woocommerce_variable_attributes .data:after{clear:both}.woocommerce_variable_attributes .upload_image_button{display:block;width:48px;height:48px;float:left;margin-right:20px;position:relative;cursor:pointer}.woocommerce_variable_attributes .upload_image_button img{width:100%;height:auto;display:none}.woocommerce_variable_attributes .upload_image_button:before{content:"\f128";font-family:Dashicons;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;line-height:48px;font-size:48px;font-weight:400;-webkit-font-smoothing:antialiased}.woocommerce_variable_attributes .upload_image_button.remove img{display:block}.woocommerce_variable_attributes .upload_image_button.remove:before{content:"\f335";display:none}.woocommerce_variable_attributes .upload_image_button.remove:hover:before{display:block}.woocommerce_variable_attributes .options{border:1px solid #eee;border-width:1px 0;padding:.25em 0}.woocommerce_variable_attributes .options label{display:inline-block;padding:4px 1em 2px 0}.woocommerce_variable_attributes .options input[type=checkbox]{margin-top:5px;margin-right:3px}.form-row label{display:block}.form-row input[type=number],.form-row input[type=text],.form-row select{width:100%}.form-row.dimensions_field input{width:25%;float:left;margin-right:1%}.form-row.dimensions_field input:last-of-type{margin-right:0}.form-row-first,.form-row-last{width:48%;float:right}.form-row-first{clear:both;float:left}.form-row-full{clear:both}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:9999999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#333}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#333}#tiptip_content,.chart-tooltip,.wc_error_tip{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}.wc_error_tip{max-width:20em;line-height:1.8em;position:absolute;white-space:normal;background:#d82223;margin:1.5em 1px 0 -1em;z-index:9999999}.wc_error_tip:after{content:"";display:block;border:8px solid #d82223;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-3px;left:50%;margin:-1em 0 0 -3px}img.ui-datepicker-trigger{vertical-align:middle;margin-top:-1px;cursor:pointer}.wc-metabox-content img.ui-datepicker-trigger,.woocommerce_options_panel img.ui-datepicker-trigger{float:left;margin-right:8px;margin-top:4px;margin-left:4px}#ui-datepicker-div{display:none}.woocommerce-reports-wide.woocommerce-reports-wrap,.woocommerce-reports-wrap.woocommerce-reports-wrap{margin-left:300px;padding-top:18px}.woocommerce-reports-wide.halved,.woocommerce-reports-wrap.halved{margin:0;overflow:hidden;zoom:1}.woocommerce-reports-wide .widefat td,.woocommerce-reports-wrap .widefat td{vertical-align:top;padding:7px}.woocommerce-reports-wide .widefat td .description,.woocommerce-reports-wrap .widefat td .description{margin:4px 0 0}.woocommerce-reports-wide .postbox:after,.woocommerce-reports-wrap .postbox:after{content:".";display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox h3,.woocommerce-reports-wrap .postbox h3{cursor:default!important}.woocommerce-reports-wide .postbox .inside,.woocommerce-reports-wrap .postbox .inside{padding:10px;margin:0!important}.woocommerce-reports-wide .postbox div.stats_range,.woocommerce-reports-wide .postbox h3.stats_range,.woocommerce-reports-wrap .postbox div.stats_range,.woocommerce-reports-wrap .postbox h3.stats_range{border-bottom-color:#dfdfdf;margin:0;padding:0!important}.woocommerce-reports-wide .postbox div.stats_range .export_csv,.woocommerce-reports-wide .postbox h3.stats_range .export_csv,.woocommerce-reports-wrap .postbox div.stats_range .export_csv,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv{float:right;line-height:26px;border-left:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range .export_csv:before,.woocommerce-reports-wide .postbox h3.stats_range .export_csv:before,.woocommerce-reports-wrap .postbox div.stats_range .export_csv:before,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv:before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none;margin-right:4px}.woocommerce-reports-wide .postbox div.stats_range ul,.woocommerce-reports-wide .postbox h3.stats_range ul,.woocommerce-reports-wrap .postbox div.stats_range ul,.woocommerce-reports-wrap .postbox h3.stats_range ul{list-style:none;margin:0;padding:0;zoom:1;background:#f5f5f5;border-bottom:1px solid #ccc}.woocommerce-reports-wide .postbox div.stats_range ul:after,.woocommerce-reports-wide .postbox div.stats_range ul:before,.woocommerce-reports-wide .postbox h3.stats_range ul:after,.woocommerce-reports-wide .postbox h3.stats_range ul:before,.woocommerce-reports-wrap .postbox div.stats_range ul:after,.woocommerce-reports-wrap .postbox div.stats_range ul:before,.woocommerce-reports-wrap .postbox h3.stats_range ul:after,.woocommerce-reports-wrap .postbox h3.stats_range ul:before{content:" ";display:table}.woocommerce-reports-wide .postbox div.stats_range ul:after,.woocommerce-reports-wide .postbox h3.stats_range ul:after,.woocommerce-reports-wrap .postbox div.stats_range ul:after,.woocommerce-reports-wrap .postbox h3.stats_range ul:after{clear:both}.woocommerce-reports-wide .postbox div.stats_range ul li,.woocommerce-reports-wide .postbox h3.stats_range ul li,.woocommerce-reports-wrap .postbox div.stats_range ul li,.woocommerce-reports-wrap .postbox h3.stats_range ul li{float:left;margin:0;padding:0;line-height:26px;font-weight:700;font-size:14px}.woocommerce-reports-wide .postbox div.stats_range ul li a,.woocommerce-reports-wide .postbox h3.stats_range ul li a,.woocommerce-reports-wrap .postbox div.stats_range ul li a,.woocommerce-reports-wrap .postbox h3.stats_range ul li a{border-right:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range ul li.active,.woocommerce-reports-wide .postbox h3.stats_range ul li.active,.woocommerce-reports-wrap .postbox div.stats_range ul li.active,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active{background:#fff;-webkit-box-shadow:0 4px 0 0 #fff;box-shadow:0 4px 0 0 #fff}.woocommerce-reports-wide .postbox div.stats_range ul li.active a,.woocommerce-reports-wide .postbox h3.stats_range ul li.active a,.woocommerce-reports-wrap .postbox div.stats_range ul li.active a,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active a{color:#777}.woocommerce-reports-wide .postbox div.stats_range ul li.custom,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom{padding:9px 10px;vertical-align:middle}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form{display:inline;margin:0}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker{padding:0;margin:0 10px 0 0;background:0 0;border:0;color:#777;text-align:center;-webkit-box-shadow:none;box-shadow:none}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker.from{margin-right:0}.woocommerce-reports-wide .postbox .chart-with-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar{padding:12px 12px 12px 249px;margin:0!important}.woocommerce-reports-wide .postbox .chart-with-sidebar .chart-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar .chart-sidebar{width:225px;margin-left:-237px;float:left}.woocommerce-reports-wide .postbox .chart-widgets,.woocommerce-reports-wrap .postbox .chart-widgets{margin:0;padding:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget{margin:0 0 1em;background:#fafafa;border:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget:after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget:after{content:".";display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4{background:#fff;border:1px solid #dfdfdf;border-left-width:0;border-right-width:0;padding:10px;margin:0;color:#2ea2cc;border-top-width:0;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr.active td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr.active td{background:#f5f5f5}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4.section_title:hover,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4.section_title:hover{color:#a00}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title{cursor:pointer}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span{display:block}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span:after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span:after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none;float:right;font-size:.9em;line-height:1.618}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open{color:#333}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open span:after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open span:after{display:none}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section{border-bottom:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section .select2-container,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section .select2-container{width:100%!important}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section:last-of-type,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section:last-of-type{border-radius:0 0 3px 3px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td{padding:7px 10px;vertical-align:top;border-top:1px solid #e5e5e5;line-height:1.4em}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.sparkline,form.report_filters div,form.report_filters input,form.report_filters label,form.report_filters p{vertical-align:middle}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr:first-child td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr:first-child td{border-top:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name{max-width:175px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name a,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name a{word-wrap:break-word}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table .wc_sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table .wc_sparkline{width:32px;height:1em;display:block;float:right}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p{margin:0;padding:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p .submit{margin-top:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget #product_ids,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget #product_ids{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_none,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_none{float:right;color:#999;margin-left:4px;margin-top:10px}.woocommerce-reports-wide .postbox .chart-legend,.woocommerce-reports-wrap .postbox .chart-legend{list-style:none;margin:0 0 1em;padding:0;border:1px solid #dfdfdf;border-right-width:0;border-bottom-width:0;background:#fff}.woocommerce-reports-wide .postbox .chart-legend li,.woocommerce-reports-wrap .postbox .chart-legend li{border-right:5px solid #aaa;color:#aaa;padding:1em;display:block;margin:0;-webkit-transition:all ease .5s;box-shadow:inset 0 -1px 0 0 #dfdfdf}.woocommerce-reports-wide .postbox .chart-legend li strong,.woocommerce-reports-wrap .postbox .chart-legend li strong{font-size:1.618em;line-height:1.2em;color:#464646;font-weight:400;display:block;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif}.woocommerce-reports-wide .postbox .chart-legend li strong del,.woocommerce-reports-wrap .postbox .chart-legend li strong del{color:#e74c3c;font-weight:400}.woocommerce-reports-wide .postbox .chart-legend li:hover,.woocommerce-reports-wrap .postbox .chart-legend li:hover{box-shadow:inset 0 -1px 0 0 #dfdfdf,inset 300px 0 0 rgba(156,93,144,.1);border-right:5px solid #9c5d90!important;padding-left:1.5em;color:#9c5d90}.woocommerce-reports-wide .postbox .pie-chart-legend,.woocommerce-reports-wrap .postbox .pie-chart-legend{margin:12px 0 0;overflow:hidden}.woocommerce-reports-wide .postbox .pie-chart-legend li,.woocommerce-reports-wrap .postbox .pie-chart-legend li{float:left;margin:0;padding:6px 0 0;border-top:4px solid #999;text-align:center;box-sizing:border-box;width:50%}.woocommerce-reports-wide .postbox .stat,.woocommerce-reports-wrap .postbox .stat{font-size:1.5em!important;font-weight:700;text-align:center}.woocommerce-reports-wide .postbox .chart-placeholder,.woocommerce-reports-wrap .postbox .chart-placeholder{width:100%;height:650px;overflow:hidden;position:relative}.woocommerce-reports-wide .postbox .chart-prompt,.woocommerce-reports-wrap .postbox .chart-prompt{line-height:650px;margin:0;color:#999;font-size:1.2em;font-style:italic;text-align:center}.woocommerce-reports-wide .postbox .chart-container,.woocommerce-reports-wrap .postbox .chart-container{background:#fff;padding:12px;position:relative;border:1px solid #dfdfdf;border-radius:3px}.woocommerce-reports-wide .postbox .main .chart-legend,.woocommerce-reports-wrap .postbox .main .chart-legend{margin-top:12px}.woocommerce-reports-wide .postbox .main .chart-legend li,.woocommerce-reports-wrap .postbox .main .chart-legend li{border-right:0;margin:0 8px 0 0;float:left;border-top:4px solid #aaa}.woocommerce-reports-wide .woocommerce-reports-main,.woocommerce-reports-wrap .woocommerce-reports-main{float:left;min-width:100%}.woocommerce-reports-wide .woocommerce-reports-main table td,.woocommerce-reports-wrap .woocommerce-reports-main table td{padding:9px}.woocommerce-reports-wide .woocommerce-reports-sidebar,.woocommerce-reports-wrap .woocommerce-reports-sidebar{display:inline;width:281px;margin-left:-300px;clear:both;float:left}.woocommerce-reports-wide .woocommerce-reports-left,.woocommerce-reports-wrap .woocommerce-reports-left{width:49.5%;float:left}.woocommerce-reports-wide .woocommerce-reports-right,.woocommerce-reports-wrap .woocommerce-reports-right{width:49.5%;float:right}.woocommerce-reports-wide .column-wc_actions a.edit,.woocommerce-reports-wide .column-wc_actions a.view,.woocommerce-reports-wrap .column-wc_actions a.edit,.woocommerce-reports-wrap .column-wc_actions a.view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.woocommerce-reports-wide .column-wc_actions a.edit:after,.woocommerce-reports-wide .column-wc_actions a.view:after,.woocommerce-reports-wrap .column-wc_actions a.edit:after,.woocommerce-reports-wrap .column-wc_actions a.view:after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;line-height:1.85}.woocommerce-reports-wide .column-wc_actions a.edit:after,.woocommerce-reports-wrap .column-wc_actions a.edit:after{content:"\f464"}.woocommerce-reports-wide .column-wc_actions a.view:after,.woocommerce-reports-wrap .column-wc_actions a.view:after{content:"\f177"}.woocommerce-wide-reports-wrap{padding-bottom:11px}.woocommerce-wide-reports-wrap .widefat .export-data{float:right}.woocommerce-wide-reports-wrap .widefat td,.woocommerce-wide-reports-wrap .widefat th{vertical-align:middle;padding:7px}.chart-tooltip{position:absolute;display:none;line-height:1}table.bar_chart{width:100%}table.bar_chart thead th{text-align:left;color:#ccc;padding:6px 0}table.bar_chart tbody th{padding:6px 0;width:25%;text-align:left!important;font-weight:400!important;border-bottom:1px solid #fee}table.bar_chart tbody td{text-align:right;line-height:24px;padding:6px 6px 6px 0;border-bottom:1px solid #fee}table.bar_chart tbody td span{color:#8a4b75;display:block}table.bar_chart tbody td span.alt{color:#47a03e;margin-top:6px}table.bar_chart tbody td.bars{position:relative;text-align:left;padding:6px 6px 6px 0;border-bottom:1px solid #fee}table.bar_chart tbody td.bars a,table.bar_chart tbody td.bars span{text-decoration:none;clear:both;background:#8a4b75;float:left;display:block;line-height:24px;height:24px;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.post-type-product .woocommerce-BlankState-message:before,.post-type-shop_coupon .woocommerce-BlankState-message:before,.post-type-shop_order .woocommerce-BlankState-message:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}table.bar_chart tbody td.bars span.alt{clear:both;background:#47a03e}table.bar_chart tbody td.bars span.alt span{margin:0;color:#c5dec2!important;text-shadow:0 1px 0 #47a03e;background:0 0}.post-type-shop_order .woocommerce-BlankState-message:before{content:""}.post-type-shop_coupon .woocommerce-BlankState-message:before{content:""}.post-type-product .woocommerce-BlankState-message:before{content:""}.woocommerce-BlankState{text-align:center;padding:5em 0 0}.woocommerce-BlankState .woocommerce-BlankState-message{color:#aaa;margin:0 auto 1.5em;line-height:1.5em;font-size:1.2em;max-width:500px}.woocommerce-BlankState .woocommerce-BlankState-message:before{color:#ddd;text-shadow:0 -1px 1px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.8);font-size:8em;display:block;position:relative!important;top:auto;left:auto;line-height:1em;margin:0 0 .1875em}.woocommerce-BlankState .woocommerce-BlankState-cta{font-size:1.2em;padding:.75em 1.5em;height:auto}@media only screen and (max-width:1280px){#order_data .order_data_column{width:48%}#order_data .order_data_column:first-child{width:100%}.woocommerce_options_panel .description{display:block;clear:both;margin-left:0}.woocommerce_options_panel .dimensions_field .wrap,.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:80%}.woocommerce_options_panel .downloadable_files,.woocommerce_variations .downloadable_files{padding:0;clear:both}.woocommerce_options_panel .downloadable_files label,.woocommerce_variations .downloadable_files label{position:static}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{margin:0 12px 24px;width:94%}.woocommerce_options_panel .downloadable_files table .sort,.woocommerce_variations .downloadable_files table .sort{visibility:hidden}.woocommerce_options_panel .woocommerce_variable_attributes .downloadable_files table,.woocommerce_variations .woocommerce_variable_attributes .downloadable_files table{margin:0 0 1em;width:100%}}@media only screen and (max-width:900px){#woocommerce-coupon-data ul.coupon_data_tabs,#woocommerce-product-data .wc-tabs-back,#woocommerce-product-data ul.product_data_tabs{width:10%}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{width:90%}#woocommerce-coupon-data ul.coupon_data_tabs li a,#woocommerce-product-data ul.product_data_tabs li a{position:relative;text-indent:-999px;padding:10px}#woocommerce-coupon-data ul.coupon_data_tabs li a:before,#woocommerce-product-data ul.product_data_tabs li a:before{position:absolute;top:0;right:0;bottom:0;left:0;text-indent:0;text-align:center;line-height:40px;width:100%;height:40px}}@media only screen and (max-width:782px){#wp-excerpt-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 20px 0 15px}#wp-excerpt-editor-tools{padding-top:20px;padding-right:15px;overflow:hidden;margin-bottom:-1px}.post-type-product .wp-list-table .is-expanded td:not(.hidden),.post-type-shop_order .wp-list-table .is-expanded td:not(.hidden){overflow:visible}#woocommerce-product-data .checkbox{width:25px}.variations-pagenav{float:none;text-align:center;font-size:18px}.variations-pagenav .displaying-num{font-size:16px}.variations-pagenav a{padding:8px 20px 11px;font-size:18px}.variations-pagenav select{padding:0 20px}.variations-defaults{float:none;text-align:center;margin-top:10px}.post-type-product .wp-list-table .column-thumb{display:none;text-align:left;padding-bottom:0}.post-type-product .wp-list-table .column-thumb:before{display:none!important}.post-type-product .wp-list-table .column-thumb img{max-width:32px}.post-type-product .wp-list-table .toggle-row{top:-28px}.post-type-shop_order .wp-list-table .column-order_status{display:none;text-align:left;padding-bottom:0}.post-type-shop_order .wp-list-table .column-order_status mark{margin:0}.post-type-shop_order .wp-list-table .column-order_status:before{display:none!important}.post-type-shop_order .wp-list-table .column-customer_message,.post-type-shop_order .wp-list-table .column-order_notes{text-align:inherit}.post-type-shop_order .wp-list-table .column-order_notes .note-on{font-size:1.3em;margin:0}.post-type-shop_order .wp-list-table .toggle-row{top:-15px}}@media only screen and (max-width:500px){.woocommerce_options_panel label,.woocommerce_options_panel legend{float:none;width:auto;display:block;margin:0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px!important}}.wc-backbone-modal *{box-sizing:border-box}.wc-backbone-modal .wc-backbone-modal-content{position:fixed;background:#fff;z-index:100000;left:50%;top:50%;transform:translate(-50%,-50%);width:500px}.wc-backbone-modal .wc-backbone-modal-content article{overflow:auto}.wc-backbone-modal.wc-backbone-modal-shipping-method-settings .wc-backbone-modal-content{width:75%;min-width:500px}.wc-backbone-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:99900}.wc-backbone-modal-main{padding-bottom:55px}.wc-backbone-modal-main article,.wc-backbone-modal-main header{display:block;position:relative}.wc-backbone-modal-main .wc-backbone-modal-header{height:auto;background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}.wc-backbone-modal-main .wc-backbone-modal-header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link{cursor:pointer;color:#777;height:54px;width:54px;padding:0;position:absolute;top:0;right:0;text-align:center;border:0;border-left:1px solid #ddd;background-color:transparent;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:before{font:400 22px/50px dashicons!important;color:#666;display:block;content:'\f335';font-weight:300}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus,.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:hover{background:#ddd;border-color:#ccc;color:#000}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus{outline:0}.wc-backbone-modal-main article{padding:1.5em}.wc-backbone-modal-main article p{margin:1.5em 0}.wc-backbone-modal-main article p:last-child,.wc-backbone-modal-main footer .inner .button{margin-bottom:0}.wc-backbone-modal-main article p:first-child{margin-top:0}.wc-backbone-modal-main article .pagination{padding:10px 0 0;text-align:center}.wc-backbone-modal-main footer{position:absolute;left:0;right:0;bottom:0;z-index:100;padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px rgba(0,0,0,.1)}.wc-backbone-modal-main footer .inner{float:right;line-height:23px}.select2-drop{z-index:999999!important}.select2-container-multi .select2-choices .select2-search-field input{font-family:inherit;font-size:inherit;font-weight:inherit;padding:3px 5px}.select2-container{line-height:1.85em;font-size:14px} \ No newline at end of file +@charset "UTF-8";.select2-container .select2-choice,.select2-results .select2-result-label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-touch-callout:none}.button.wc-reload::after,.woocommerce-help-tip::after{text-transform:none;-webkit-font-smoothing:antialiased}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}.select2-container{margin:0;position:relative;display:block!important;zoom:1;vertical-align:middle}.select2-container,.select2-drop,.select2-search,.select2-search input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.select2-container .select2-choice{display:block;padding:0 0 0 8px;overflow:hidden;position:relative;border:1px solid #ccc;white-space:nowrap;color:#444;text-decoration:none;border-radius:3px;background-clip:padding-box;user-select:none;background-color:#fff;font-weight:400}html[dir=rtl] .select2-container .select2-choice{padding:0 8px 0 0}.select2-container.select2-drop-above .select2-choice{border-bottom-color:#ccc;border-radius:0 0 4px 4px}.select2-container.select2-allowclear .select2-choice .select2-chosen{margin-right:42px}.select2-container .select2-choice>.select2-chosen{margin-right:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;float:none;width:auto}html[dir=rtl] .select2-container .select2-choice>.select2-chosen{margin-left:26px;margin-right:0}.select2-container .select2-choice abbr{display:none;width:12px;height:12px;position:absolute;right:24px;top:5px;font-size:1px;text-decoration:none;border:0;background:url(../images/select2.png) right top no-repeat;cursor:pointer;outline:0}.select2-container.select2-allowclear .select2-choice abbr{display:inline-block}.select2-container .select2-choice abbr:hover{background-position:right -11px;cursor:pointer}.select2-drop-mask{border:0;margin:0;padding:0;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:9998;background-color:#fff;filter:alpha(opacity=0)}.select2-drop{width:100%;margin-top:-1px;position:absolute;top:100%;background:#fff;color:#000;border:1px solid #ccc;border-top:0;border-radius:0 0 3px 3px}.select2-drop.select2-drop-above{margin-top:1px;border-top:1px solid #ccc;border-bottom:0;border-radius:3px 3px 0 0}.select2-drop-active{border:1px solid #666;border-top:none}.select2-drop.select2-drop-above.select2-drop-active{border-top:1px solid #666}.select2-drop-auto-width{border-top:1px solid #ccc;width:auto}.select2-drop-auto-width .select2-search{padding-top:4px}.select2-container .select2-choice .select2-arrow{display:inline-block;width:18px;height:100%;position:absolute;right:0;top:0;border-radius:0 3px 3px 0;background-clip:padding-box}html[dir=rtl] .select2-container .select2-choice .select2-arrow{left:0;right:auto;border-radius:3px 0 0 3px}.select2-container .select2-choice .select2-arrow b{display:block;width:100%;height:100%;position:relative}.select2-container .select2-choice .select2-arrow b:after{position:absolute;display:block;content:"";top:50%;left:50%;border:4px solid transparent;border-top-color:#666;margin-left:-7px;margin-top:-2px}.select2-search{display:inline-block;width:100%;margin:0;padding-left:4px;padding-right:4px;position:relative;z-index:10000;white-space:nowrap;padding-bottom:4px}.select2-search input{width:100%;height:auto!important;padding:4px 20px 4px 5px!important;margin:0;outline:0;font-family:sans-serif;font-size:1em;border:1px solid #ccc;-webkit-box-shadow:none;box-shadow:none;background:url(../images/select2.png) 100% -22px no-repeat #fff}html[dir=rtl] .select2-search input{padding:4px 5px 4px 20px;background:url(../images/select2.png) -37px -22px no-repeat #fff}.select2-drop.select2-drop-above .select2-search input{margin-top:4px}.select2-search input.select2-active{background:url(../images/select2-spinner.gif) 100% no-repeat #fff}.select2-container-active .select2-choice,.select2-container-active .select2-choices{border:1px solid #666;outline:0}.select2-dropdown-open .select2-choice{border-bottom-color:transparent;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-dropdown-open .select2-choice .select2-arrow b:after{border-top-color:transparent;border-bottom-color:#666;margin-top:-6px}.select2-dropdown-open.select2-drop-above .select2-choice,.select2-dropdown-open.select2-drop-above .select2-choices{border:1px solid #666;border-top-color:transparent}.select2-dropdown-open .select2-choice .select2-arrow{background:0 0;border-left:none;filter:none}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow{border-right:none}.select2-dropdown-open .select2-choice .select2-arrow b{background-position:-18px 1px}html[dir=rtl] .select2-dropdown-open .select2-choice .select2-arrow b{background-position:-16px 1px}.select2-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.select2-results{max-height:200px;padding:4px;margin:0;position:relative;overflow-x:hidden;overflow-y:auto;-webkit-tap-highlight-color:transparent;background:#fafafa}html[dir=rtl] .select2-results{padding:0 4px 0 0;margin:4px 0 4px 4px}.select2-results ul.select2-result-sub{margin:0;padding-left:0}.select2-results li{list-style:none;display:list-item;background-image:none;margin:3px 0}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:700}.select2-results .select2-result-label{padding:5px 7px;margin:0;cursor:pointer;min-height:1em;user-select:none}.select2-results-dept-1 .select2-result-label{padding-left:20px}.select2-results-dept-2 .select2-result-label{padding-left:40px}.select2-results-dept-3 .select2-result-label{padding-left:60px}.select2-results-dept-4 .select2-result-label{padding-left:80px}.select2-results-dept-5 .select2-result-label{padding-left:100px}.select2-results-dept-6 .select2-result-label{padding-left:110px}.select2-results-dept-7 .select2-result-label{padding-left:120px}.select2-results .select2-highlighted{background:#f1f1f1;color:#000;border-radius:3px}.select2-results li em{background:#feffde;font-style:normal}.select2-results .select2-highlighted em{background:0 0}.select2-results .select2-highlighted ul{background:#fff;color:#000}.select2-results .select2-ajax-error,.select2-results .select2-no-results,.select2-results .select2-searching,.select2-results .select2-selection-limit{background:#f4f4f4;display:list-item;padding-left:5px}.select2-results .select2-disabled.select2-highlighted{color:#666;background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-disabled{background:#f4f4f4;display:list-item;cursor:default}.select2-results .select2-selected{display:none}.select2-more-results.select2-active{background:url(../images/select2-spinner.gif) 100% no-repeat #f4f4f4}.select2-results .select2-ajax-error{background:rgba(255,50,50,.2)}.select2-more-results{background:#f4f4f4;display:list-item}.select2-container.select2-container-disabled .select2-choice{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container.select2-container-disabled .select2-choice .select2-arrow{background-color:#f4f4f4;background-image:none;border-left:0}.select2-container.select2-container-disabled .select2-choice abbr{display:none}.select2-container-multi .select2-choices{height:auto!important;height:1%;margin:0;padding:0 5px 0 0;position:relative;border:1px solid #ccc;cursor:text;overflow:hidden;background-color:#fff;min-height:26px}html[dir=rtl] .select2-container-multi .select2-choices{padding:0 0 0 5px}.select2-locked{padding:3px 5px!important}.select2-container-multi.select2-container-active .select2-choices{border:1px solid #666;outline:0}.select2-container-multi .select2-choices li{float:left;list-style:none}html[dir=rtl] .select2-container-multi .select2-choices li{float:right}.select2-container-multi .select2-choices .select2-search-field{margin:0;padding:0;white-space:nowrap}.select2-container-multi .select2-choices .select2-search-field:first-child{width:100%}.select2-container-multi .select2-choices .select2-search-field input{margin:1px 0;outline:0;border:0;-webkit-box-shadow:none;box-shadow:none;background:0 0!important}.select2-container-multi .select2-choices .select2-search-field input.select2-active{background:url(../images/select2-spinner.gif) 100% no-repeat #fff!important}.select2-default{color:#999!important}.select2-container-multi .select2-choices .select2-search-choice{padding:5px 8px 5px 24px;margin:3px 0 3px 5px;position:relative;line-height:15px;color:#333;cursor:default;border-radius:2px;background-clip:padding-box;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#e4e4e4}.select2-container-multi .ui-sortable .select2-search-choice{cursor:move}html[dir=rtl] .select2-container-multi .select2-choices .select2-search-choice{margin:3px 5px 3px 0;padding:5px 24px 5px 8px}.select2-container-multi .select2-choices .select2-search-choice .select2-chosen{cursor:default}.select2-container-multi .select2-choices .select2-search-choice-focus{background:#d4d4d4}.select2-search-choice-close{display:block;width:12px;height:13px;position:absolute;right:7px;top:6px;font-size:1px;outline:0;background:url(../images/select2.png) right top no-repeat}html[dir=rtl] .select2-search-choice-close{right:auto;left:7px}.select2-container-multi .select2-search-choice-close{left:7px}html[dir=rtl] .select2-container-multi .select2-search-choice-close{left:auto;right:7px}.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover,.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close{background-position:right -11px}.select2-container-multi.select2-container-disabled .select2-choices{background-color:#f4f4f4;background-image:none;border:1px solid #ddd;cursor:default}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice{padding:3px 5px;border:1px solid #ddd;background-image:none;background-color:#f4f4f4}.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close{display:none;background:0 0}.select2-result-selectable .select2-match,.select2-result-unselectable .select2-match{text-decoration:underline}.select2-offscreen,.select2-offscreen:focus{clip:rect(0 0 0 0)!important;width:1px!important;height:1px!important;border:0!important;margin:0!important;padding:0!important;overflow:hidden!important;position:absolute!important;outline:0!important;left:0!important;top:0!important}.select2-display-none{display:none}.select2-measure-scrollbar{position:absolute;top:-10000px;left:-10000px;width:100px;height:100px;overflow:scroll}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:2dppx){.select2-search input{background-image:url(../images/select2x2.png)!important;background-repeat:no-repeat!important;background-size:60px 40px!important;background-position:100% -21px!important}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}.blockUI.blockOverlay::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.wc_addons_wrap .products{overflow:hidden}.wc_addons_wrap .products li{float:left;margin:0 1em 1em 0!important;padding:0;vertical-align:top;width:300px}.wc_addons_wrap .products li a{text-decoration:none;color:inherit;border:1px solid #ddd;display:block;min-height:220px;overflow:hidden;background:#f5f5f5;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),inset 0 -1px 0 rgba(0,0,0,.1)}.wc_addons_wrap .products li a img{max-width:258px;max-height:24px;padding:17px 20px;display:block;margin:0;background:#fff;border-right:260px solid #fff}.wc_addons_wrap .products li a .price,.wc_addons_wrap .products li a img.extension-thumb+h3{display:none}.wc_addons_wrap .products li a h2,.wc_addons_wrap .products li a h3{margin:0!important;padding:20px!important;background:#fff}.wc_addons_wrap .products li a p{padding:20px!important;margin:0!important;border-top:1px solid #f1f1f1}.wc_addons_wrap .products li a:focus,.wc_addons_wrap .products li a:hover{background-color:#fff}.wc_addons_wrap .storefront{background:url(../images/storefront-bg.jpg) bottom right #f6f6f6;border:1px solid #ddd;padding:20px;overflow:hidden;zoom:1}.wc_addons_wrap .storefront img{width:278px;height:auto;float:left;margin:0 20px 0 0;box-shadow:0 1px 6px rgba(0,0,0,.1)}.wc_addons_wrap .storefront p{max-width:750px}.woocommerce-BlankState a.button-primary,.woocommerce-BlankState button.button-primary,.woocommerce-message a.button-primary,.woocommerce-message button.button-primary{background:#bb77ae;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;color:#fff;text-shadow:0 -1px 1px #a36597,1px 0 1px #a36597,0 1px 1px #a36597,-1px 0 1px #a36597}.woocommerce-BlankState a.button-primary:active,.woocommerce-BlankState a.button-primary:focus,.woocommerce-BlankState a.button-primary:hover,.woocommerce-BlankState button.button-primary:active,.woocommerce-BlankState button.button-primary:focus,.woocommerce-BlankState button.button-primary:hover,.woocommerce-message a.button-primary:active,.woocommerce-message a.button-primary:focus,.woocommerce-message a.button-primary:hover,.woocommerce-message button.button-primary:active,.woocommerce-message button.button-primary:focus,.woocommerce-message button.button-primary:hover{background:#a36597;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.woocommerce-message{position:relative;border-left-color:#cc99c2!important;overflow:hidden}.woocommerce-message a.docs,.woocommerce-message a.skip{text-decoration:none!important}.woocommerce-message a.woocommerce-message-close{position:absolute;top:10px;right:10px;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.woocommerce-message a.woocommerce-message-close::before{position:absolute;top:8px;left:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.woocommerce-message .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}#variable_product_options #message,#variable_product_options .notice{margin:10px}.clear{clear:both}#woocommerce-fields-bulk.inline-edit-col label,#woocommerce-fields.inline-edit-col{clear:left}.wrap.woocommerce div.error,.wrap.woocommerce div.updated{margin-top:10px}mark.amount{background:0 0;color:inherit}.simplify-commerce-banner{overflow:hidden}.simplify-commerce-banner img{float:right;padding:15px 0;margin-left:1em;width:200px}.woocommerce-help-tip{color:#666;display:inline-block;font-size:1.1em;font-style:normal;height:16px;line-height:16px;position:relative;vertical-align:middle;width:16px}.woocommerce-help-tip::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;line-height:1;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";cursor:help}h2 .woocommerce-help-tip{margin-top:-5px;margin-left:.25em}table.wc_status_table{margin-bottom:1em}table.wc_status_table h2{font-size:14px;margin:0}table.wc_status_table tr:nth-child(2n) td,table.wc_status_table tr:nth-child(2n) th{background:#fcfcfc}table.wc_status_table th{font-weight:700;padding:9px}table.wc_status_table td:first-child{width:33%}table.wc_status_table td.help{width:1em}table.wc_status_table td{padding:9px;font-size:1.1em}table.wc_status_table td mark{background:0 0}table.wc_status_table td mark.yes{color:#7ad03a}table.wc_status_table td mark.no{color:#999}table.wc_status_table td mark.error{color:#a00}table.wc_status_table td ul{margin:0}table.wc_status_table .help_tip{cursor:help}#debug-report{display:none;margin:10px 0;padding:0;position:relative}#debug-report textarea{font-family:monospace;width:100%;margin:0;height:300px;padding:20px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;resize:none;font-size:12px;line-height:20px;outline:0}#log-viewer-select{padding:10px 0 8px;line-height:28px}#log-viewer-select h2 a{vertical-align:middle}#log-viewer textarea{width:100%;resize:vertical}.inline-edit-product.quick-edit-row .inline-edit-col-center,.inline-edit-product.quick-edit-row .inline-edit-col-right{float:right!important}#woocommerce-fields.inline-edit-col label.featured,#woocommerce-fields.inline-edit-col label.manage_stock{margin-left:10px}#woocommerce-fields.inline-edit-col .dimensions div{display:block;margin:.2em 0}#woocommerce-fields.inline-edit-col .dimensions div span.title{display:block;float:left;width:5em}#woocommerce-fields.inline-edit-col .dimensions div span.input-text-wrap{display:block;margin-left:5em}#woocommerce-fields.inline-edit-col .text{box-sizing:border-box;width:99%;float:left;margin:1px 1% 1px 1px}#woocommerce-fields.inline-edit-col .height,#woocommerce-fields.inline-edit-col .length,#woocommerce-fields.inline-edit-col .width{width:32.33%}#woocommerce-fields.inline-edit-col .height{margin-right:0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group label{clear:none;width:49%;margin:.2em 0}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group.dimensions label{width:75%;max-width:75%}#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .regular_price,#woocommerce-fields-bulk.inline-edit-col .sale_price,#woocommerce-fields-bulk.inline-edit-col .stock,#woocommerce-fields-bulk.inline-edit-col .weight{box-sizing:border-box;width:100%;margin-left:4.4em}#woocommerce-fields-bulk.inline-edit-col .height,#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .width{box-sizing:border-box;width:25%}.column-coupon_code{line-height:2.25em}.column-coupon_code,ul.wc_coupon_list{margin:0;overflow:hidden;zoom:1;clear:both}ul.wc_coupon_list li{margin:0}ul.wc_coupon_list li.code{display:inline-block}ul.wc_coupon_list li.code::after{content:', '}ul.wc_coupon_list li.code:last-of-type::after{display:none}ul.wc_coupon_list li.code .tips{cursor:pointer}ul.wc_coupon_list_block{margin:0;padding-bottom:2px}ul.wc_coupon_list_block li{border-top:1px solid #fff;border-bottom:1px solid #ccc;line-height:2.5em;margin:0;padding:.5em 0}ul.wc_coupon_list_block li:first-child{border-top:0;padding-top:0}ul.wc_coupon_list_block li:last-child{border-bottom:0;padding-bottom:0}.button.wc-reload{text-indent:-9999px;position:relative;padding:0;height:28px;width:28px!important;display:inline-block}.button.wc-reload::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:28px}#order_data h2,#order_data p.order_number{font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif;font-weight:400}.tablenav .actions{overflow:visible}.tablenav .select2-container{float:left;max-width:200px;font-size:14px;vertical-align:middle;margin:1px 6px 1px 1px}#woocommerce-order-data .handlediv,#woocommerce-order-data .hndle{display:none}#woocommerce-order-data .inside{display:block!important}#order_data{padding:23px 24px 12px}#order_data h2{margin:0;font-size:21px;line-height:1.2;text-shadow:1px 1px 1px #fff;padding:0}#order_data h3{font-size:14px}#order_data h3,#order_data h4{color:#333;margin:1.33em 0 0}#order_data p{color:#777}#order_data p.order_number{margin:0;line-height:1.6em;font-size:16px}#order_data .order_data_column_container{clear:both}#order_data .order_data_column{width:32%;padding:0 2% 0 0;float:left}#order_data .order_data_column:last-child{padding-right:0}#order_data .order_data_column p{padding:0!important}#order_data .order_data_column .address strong{display:block}#order_data .order_data_column .form-field{float:left;width:48%;padding:0;margin:9px 0 0}#order_data .order_data_column .form-field label{display:block;padding:0 0 3px}#order_data .order_data_column .form-field input,#order_data .order_data_column .form-field select,#order_data .order_data_column .form-field textarea{width:100%}#order_data .order_data_column .form-field .select2-container{width:100%!important}#order_data .order_data_column .form-field .date-picker{width:50%}#order_data .order_data_column .form-field .hour,#order_data .order_data_column .form-field .minute{width:3.5em}#order_data .order_data_column .form-field small{display:block;margin:5px 0 0;color:#999}#order_data .order_data_column .form-field.last{float:right}#order_data .order_data_column .form-field-wide{width:100%;clear:both}#order_data .order_data_column .form-field-wide .wc-customer-search,#order_data .order_data_column .form-field-wide .wc-enhanced-select,#order_data .order_data_column .form-field-wide input,#order_data .order_data_column .form-field-wide select,#order_data .order_data_column .form-field-wide textarea{width:100%}#order_data .order_data_column p.none_set{color:#999}#order_data .order_data_column ._billing_address_1_field,#order_data .order_data_column ._billing_city_field,#order_data .order_data_column ._billing_country_field,#order_data .order_data_column ._billing_email_field,#order_data .order_data_column ._billing_first_name_field,#order_data .order_data_column ._shipping_address_1_field,#order_data .order_data_column ._shipping_city_field,#order_data .order_data_column ._shipping_country_field,#order_data .order_data_column ._shipping_first_name_field{float:left}#order_data .order_data_column ._billing_address_2_field,#order_data .order_data_column ._billing_last_name_field,#order_data .order_data_column ._billing_phone_field,#order_data .order_data_column ._billing_postcode_field,#order_data .order_data_column ._billing_state_field,#order_data .order_data_column ._shipping_address_2_field,#order_data .order_data_column ._shipping_last_name_field,#order_data .order_data_column ._shipping_postcode_field,#order_data .order_data_column ._shipping_state_field,#order_data .order_data_column .wc-customer-user label a,#order_data .order_data_column .wc-order-status label a{float:right}#order_data .order_data_column ._billing_company_field,#order_data .order_data_column ._shipping_company_field,#order_data .order_data_column ._transaction_id_field{clear:both;width:100%}#order_data .order_data_column ._billing_email_field{clear:left}#order_data .order_data_column div.edit_address{display:none;zoom:1;padding-right:1px}#order_data .order_data_column .billing-same-as-shipping,#order_data .order_data_column .load_customer_billing,#order_data .order_data_column .load_customer_shipping,#order_data .order_data_column a.edit_address{width:14px;height:0;padding:14px 0 0;margin:0 0 0 6px;overflow:hidden;position:relative;color:#999;border:0;float:right}#order_data .order_data_column .billing-same-as-shipping:focus,#order_data .order_data_column .billing-same-as-shipping:hover,#order_data .order_data_column .load_customer_billing:focus,#order_data .order_data_column .load_customer_billing:hover,#order_data .order_data_column .load_customer_shipping:focus,#order_data .order_data_column .load_customer_shipping:hover,#order_data .order_data_column a.edit_address:focus,#order_data .order_data_column a.edit_address:hover{color:#000}#order_data .order_data_column .billing-same-as-shipping::after,#order_data .order_data_column .load_customer_billing::after,#order_data .order_data_column .load_customer_shipping::after,#order_data .order_data_column a.edit_address::after{font-family:WooCommerce;position:absolute;top:0;left:0;text-align:center;vertical-align:top;line-height:14px;font-size:14px;font-weight:400;-webkit-font-smoothing:antialiased}#order_data .order_data_column .billing-same-as-shipping::after{content:'\e008'}#order_data .order_data_column .load_customer_billing::after,#order_data .order_data_column .load_customer_shipping::after{content:'\e03a'}#order_data .order_data_column a.edit_address::after{font-family:Dashicons;content:'\f464'}.order_actions{margin:0;overflow:hidden;zoom:1}.order_actions li{border-top:1px solid #fff;border-bottom:1px solid #ddd;padding:6px 0;margin:0;line-height:1.6em;float:left;width:50%;text-align:center}.order_actions li a{float:none;text-align:center;text-decoration:underline}.order_actions li.wide{width:auto;float:none;clear:both;padding:6px;text-align:left;overflow:hidden}.order_actions li #delete-action{line-height:25px;vertical-align:middle;text-align:left;float:left}.order_actions li .save_order{float:right}.order_actions li#actions{overflow:hidden}.order_actions li#actions .button{width:24px;box-sizing:border-box;float:right}.order_actions li#actions select{width:225px;box-sizing:border-box;float:left}#woocommerce-order-items .inside{margin:0;padding:0;background:#fefefe}#woocommerce-order-items .wc-order-data-row{border-bottom:1px solid #dfdfdf;padding:1.5em 2em;background:#f8f8f8;line-height:2em;text-align:right}#woocommerce-order-items .wc-order-data-row::after,#woocommerce-order-items .wc-order-data-row::before{content:' ';display:table}#woocommerce-order-items .wc-order-data-row::after{clear:both}#woocommerce-order-items .wc-order-data-row p{margin:0;line-height:2em}#woocommerce-order-items .wc-order-data-row .wc-used-coupons{text-align:left}#woocommerce-order-items .wc-order-data-row .wc-used-coupons .tips{display:inline-block}#woocommerce-order-items .wc-order-add-item{background:#fff;vertical-align:top;border-top:none}#woocommerce-order-items .wc-order-add-item .add_item_id,#woocommerce-order-items .wc-order-add-item .select2-container{vertical-align:top}#woocommerce-order-items .wc-order-add-item .add_item_id .search-field input,#woocommerce-order-items .wc-order-add-item .select2-container .search-field input{min-width:100px}#woocommerce-order-items .wc-order-add-item .select2-container{width:400px!important;text-align:left}#woocommerce-order-items .wc-order-add-item .calculate-action,#woocommerce-order-items .wc-order-add-item .cancel-action,#woocommerce-order-items .wc-order-add-item .save-action{float:left;margin-right:2px}#woocommerce-order-items .wc-used-coupons{float:left;width:50%}#woocommerce-order-items .wc-order-totals{float:right;width:50%;margin:0;padding:0;text-align:right}#woocommerce-order-items .wc-order-totals .amount{font-weight:700}#woocommerce-order-items .wc-order-totals .label{vertical-align:top}#woocommerce-order-items .wc-order-totals .total{font-size:1em!important;width:10em;margin:0 0 0 .5em;box-sizing:border-box}#woocommerce-order-items .wc-order-totals .total input[type=text]{width:96%;float:right}#woocommerce-order-items .wc-order-totals .refunded-total{color:#a00}#woocommerce-order-items .refund-actions{margin-top:5px;padding-top:12px;border-top:1px solid #dfdfdf}#woocommerce-order-items .refund-actions .button{float:right;margin-left:4px}#woocommerce-order-items .refund-actions .cancel-action,#woocommerce-order-items .wc-order-item-bulk-edit .cancel-action{float:left;margin-left:0}#woocommerce-order-items .add_meta{margin-left:0!important}#woocommerce-order-items h3 small{color:#999}#woocommerce-order-items .amount{white-space:nowrap}#woocommerce-order-items .add-items .description{margin-right:10px}#woocommerce-order-items .add-items .button{float:left;margin-right:.25em}#woocommerce-order-items .add-items .button-primary{float:none;margin-right:0}#woocommerce-order-items .inside{display:block!important}#woocommerce-order-items .handlediv,#woocommerce-order-items .hndle{display:none}#woocommerce-order-items .woocommerce_order_items_wrapper{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items{width:100%;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th{text-align:left;padding:1em;font-weight:400;color:#999;background:#f8f8f8;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th.sortable{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:last-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th:first-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items thead th .wc-arrow{float:right;position:relative;margin-right:-1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td{padding:1.5em 1em 1em;text-align:left;line-height:1.5em;vertical-align:top;border-bottom:1px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td select{width:50%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{font-size:14px;padding:4px;color:#555}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:last-child{padding-right:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td:first-child{padding-left:2em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr td{cursor:pointer}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected{background:#f5ebf3}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr.selected td{border-color:#e6cce1;opacity:.8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:last-child td{border-bottom:1px solid #dfdfdf}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:first-child td{border-top:8px solid #f8f8f8}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tbody#order_line_items tr:first-child td{border-top:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb{text-align:left;width:38px;padding-bottom:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail{width:38px;height:38px;border:2px solid #e8e8e8;background:#f8f8f8;color:#ccc;position:relative;font-size:21px;display:block;text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;height:100%;text-align:center;content:"";width:38px;line-height:38px;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.thumb .wc-order-item-thumbnail img{width:100%;height:100%;margin:0;padding:0;position:relative}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-sku,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.name .wc-order-item-variation{display:block;margin-top:.5em;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item{min-width:200px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .center,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .variation-id{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class{text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label{white-space:nowrap;color:#999;font-size:.833em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax label input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label input{display:inline}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class input{width:70px;vertical-align:middle;text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax select,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class select{width:85px;height:26px;vertical-align:middle;font-size:1em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input{display:inline-block;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);margin:1px 0;min-width:80px;overflow:hidden;line-height:1em;text-align:right}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input{width:100%;box-sizing:border-box}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input label{font-size:.75em;padding:4px 6px 0;color:#555;display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input{width:100%;box-sizing:border-box;border:0;box-shadow:none;margin:0;padding:0 6px 4px;color:#555;background:0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input input::-webkit-input-placeholder,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input input::-webkit-input-placeholder{color:#ddd}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child{border-bottom:1px dashed #ddd;background:#fff}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input div.input:first-child label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input div.input:first-child label{color:#ccc}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .view,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .view{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .edit,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .edit{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class del,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-taxes label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-refund-fields label,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-taxes label{display:block}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax .wc-order-item-discount,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .wc-order-item-discount{display:block;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .item_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax small.times,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class small.times{margin-right:.25em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity{text-align:center}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input{text-align:center;width:50px}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items span.subtotal{opacity:.5}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.tax_class,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.tax_class{text-align:left}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .calculated{border-color:#ae8ca2;border-style:dotted}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{width:100%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{margin:.5em 0 0;font-size:.92em!important;color:#888}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{color:#ccc;top:0;left:0;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-align:center;font-family:WooCommerce}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr th,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr th{border:0;padding:0 4px .5em 0;line-height:1.5em;width:20%}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td{padding:0 4px .5em 0;border:0;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input{width:100%;margin:0;position:relative;border-bottom:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items .refund_by,ul.order_notes li p.meta .exact-date{border-bottom:1px dotted #999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td textarea{width:100%;height:4em;margin:0;box-shadow:none}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td input:focus+textarea,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input:focus+textarea{border-top-color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p{margin:0 0 .5em;line-height:1.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p:last-child,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p:last-child{margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.5em;line-height:1em;vertical-align:middle;margin:0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div::before{line-height:1;margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .shipping_method_name{width:100%;margin:0 0 .5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{white-space:nowrap}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;float:right;font-size:14px;visibility:hidden;margin:3px -18px 0 0}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:hover::before,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:hover::before{color:#a00}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax:hover .delete-order-tax,#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax:hover .delete-order-tax{visibility:visible}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded{display:block;color:#a00;white-space:nowrap;margin-top:.5em}#woocommerce-order-items .woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;width:100%;height:100%;text-align:center;content:"";position:relative;top:auto;left:auto;margin:-1px 4px 0 0;vertical-align:middle;line-height:1em}#woocommerce-order-items .wc-order-edit-line-item{padding-left:0}#woocommerce-order-items .wc-order-edit-line-item-actions{width:44px;text-align:right;padding-left:0;vertical-align:middle}#woocommerce-order-items .wc-order-edit-line-item-actions a{color:#ccc;display:inline-block;cursor:pointer;padding:0 0 .5em;margin:0 0 0 12px;vertical-align:middle;text-decoration:none;line-height:16px;width:16px;overflow:hidden}#woocommerce-order-items .wc-order-edit-line-item-actions a::before{margin:0;padding:0;font-size:16px;width:16px;height:16px}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before,#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{font-family:Dashicons;-webkit-font-smoothing:antialiased;text-indent:0;top:0;left:0;width:100%;height:100%;margin:0;text-align:center;position:relative;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1}#woocommerce-order-items .wc-order-edit-line-item-actions a:hover::before{color:#999}#woocommerce-order-items .wc-order-edit-line-item-actions a:first-child{margin-left:0}#woocommerce-order-items .wc-order-edit-line-item-actions .edit-order-item::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund::before{content:""}#woocommerce-order-items .wc-order-edit-line-item-actions .delete-order-item:hover::before,#woocommerce-order-items .wc-order-edit-line-item-actions .delete_refund:hover::before{color:#a00}#woocommerce-order-items tbody tr .wc-order-edit-line-item-actions{visibility:hidden}#woocommerce-order-items tbody tr:hover .wc-order-edit-line-item-actions{visibility:visible}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions{width:1.5em;visibility:visible!important}#woocommerce-order-items .wc-order-totals .wc-order-edit-line-item-actions a{padding:0}#woocommerce-order-downloads .buttons{float:left;padding:0;margin:0;vertical-align:top}#woocommerce-order-downloads .buttons .add_item_id,#woocommerce-order-downloads .buttons .select2-container{width:400px!important;margin-right:9px;vertical-align:top;float:left}#woocommerce-order-downloads .buttons button{margin:2px 0 0}#woocommerce-order-downloads h3 small{color:#999}#poststuff #woocommerce-order-actions .inside{margin:0;padding:0}#poststuff #woocommerce-order-actions .inside ul.order_actions li{padding:6px 10px;box-sizing:border-box}#poststuff #woocommerce-order-actions .inside ul.order_actions li:last-child{border-bottom:0}#poststuff #woocommerce-order-notes .inside{margin:0;padding:0}#poststuff #woocommerce-order-notes .inside ul.order_notes li{padding:0 10px}#woocommerce_customers p.search-box{margin:6px 0 4px;float:left}#woocommerce_customers .tablenav{float:right;clear:none}.widefat.customers td{vertical-align:middle;padding:4px 7px}.widefat .column-order_title{width:15%}.widefat .column-order_title time{display:block;color:#999;margin:3px 0}.widefat .column-orders,.widefat .column-paying,.widefat .column-spent{text-align:center;width:8%}.widefat .column-last_order{width:11%}.widefat .column-order_actions,.widefat .column-user_actions,.widefat .column-wc_actions{width:110px}.widefat .column-order_actions a.button,.widefat .column-user_actions a.button,.widefat .column-wc_actions a.button{float:left;margin:0 4px 2px 0;cursor:pointer;padding:3px 4px;height:auto}.widefat .column-order_actions a.button img,.widefat .column-user_actions a.button img,.widefat .column-wc_actions a.button img{display:block;width:12px;height:auto}.widefat small.meta{display:block;color:#999;font-size:inherit;margin:3px 0}.widefat .column-order_date,.widefat .column-order_total{width:9%}.widefat .column-order_status{width:45px;text-align:center}.widefat .column-order_status mark{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;background:0 0;font-size:1.4em;margin:0 auto}.widefat .column-order_status mark.cancelled::after,.widefat .column-order_status mark.completed::after,.widefat .column-order_status mark.failed::after,.widefat .column-order_status mark.on-hold::after,.widefat .column-order_status mark.pending::after,.widefat .column-order_status mark.processing::after,.widefat .column-order_status mark.refunded::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}.column-customer_message .note-on::after,.column-order_notes .note-on::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;top:0;left:0;text-align:center;line-height:16px;font-family:WooCommerce}.widefat .column-order_status mark.pending::after{content:'\e012';color:#ffba00}.widefat .column-order_status mark.completed::after{content:'\e015';color:#2ea2cc}.widefat .column-order_status mark.on-hold::after{content:'\e033';color:#999}.widefat .column-order_status mark.failed::after{content:'\e016';color:#d0c21f}.widefat .column-order_status mark.cancelled::after{content:'\e013';color:#a00}.widefat .column-order_status mark.processing::after{content:'\e011';color:#73a724}.widefat .column-order_status mark.refunded::after{content:'\e014';color:#999}.widefat td.column-order_status{padding-top:9px}.column-customer_message .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-customer_message .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.column-order_notes .note-on{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto;color:#999}.column-order_notes .note-on::after{margin:0;text-indent:0;position:absolute;width:100%;height:100%;content:""}.order_actions .complete,.order_actions .processing,.order_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.order_actions .processing::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.order_actions .complete::after,.order_actions .view::after{font-family:Dashicons;text-indent:0;position:absolute;width:100%;height:100%;left:0;line-height:1.85;margin:0;text-align:center;font-weight:400;top:0;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased}.order_actions .complete::after{content:""}.order_actions .view::after{content:""}.user_actions .edit,.user_actions .link,.user_actions .refresh,.user_actions .view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.user_actions .edit::after,.user_actions .link::after,.user_actions .refresh::after,.user_actions .view::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";line-height:1.85}.user_actions .edit::after{font-family:Dashicons;content:'\f464'}.user_actions .link::after{content:'\e00d'}.user_actions .view::after{content:'\e010'}.user_actions .refresh::after{content:'\e031'}.attributes-table td,.attributes-table th{width:15%;vertical-align:top}.attributes-table .attribute-terms{width:32%}.attributes-table .attribute-actions{width:2em}.attributes-table .attribute-actions .configure-terms{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.attributes-table .attribute-actions .configure-terms::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}ul.order_notes{padding:2px 0 0}ul.order_notes li .note_content{padding:10px;background:#efefef;position:relative}ul.order_notes li .note_content p{margin:0;padding:0;word-wrap:break-word}ul.order_notes li p.meta{padding:10px;color:#999;margin:0;font-size:11px}ul.order_notes li a.delete_note{color:#a00}table.wp-list-table .row-actions,table.wp-list-table span.na{color:#999}ul.order_notes li .note_content::after{content:'';display:block;position:absolute;bottom:-10px;left:20px;width:0;height:0;border-width:10px 10px 0 0;border-style:solid;border-color:#efefef transparent}ul.order_notes li.customer-note .note_content{background:#a7cedc}ul.order_notes li.customer-note .note_content::after{border-color:#a7cedc transparent}ul.order_notes li.system-note .note_content{background:#d7cad2}ul.order_notes li.system-note .note_content::after{border-color:#d7cad2 transparent}.add_note{border-top:1px solid #ddd;padding:10px 10px 0}.add_note h4{margin-top:5px!important}.add_note #add_order_note{width:100%;height:50px}table.wp-list-table .column-thumb{width:52px;text-align:center;white-space:nowrap}table.wp-list-table .column-name{width:22%}table.wp-list-table .column-product_cat,table.wp-list-table .column-product_tag{width:11%!important}table.wp-list-table .column-featured,table.wp-list-table .column-product_type{width:48px;text-align:left!important}table.wp-list-table .column-customer_message,table.wp-list-table .column-order_notes{width:48px;text-align:center}table.wp-list-table .column-customer_message img,table.wp-list-table .column-order_notes img{margin:0 auto;padding-top:0!important}table.wp-list-table .manage-column.column-featured img,table.wp-list-table .manage-column.column-product_type img{padding-left:2px}table.wp-list-table .column-price .woocommerce-price-suffix{display:none}table.wp-list-table img{margin:1px 2px}table.wp-list-table td.column-thumb img{margin:0;width:auto;height:auto;max-width:40px;max-height:40px;vertical-align:middle}table.wp-list-table .column-is_in_stock{text-align:left!important}table.wp-list-table span.wc-featured,table.wp-list-table span.wc-image,table.wp-list-table span.wc-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table span.wc-featured::before,table.wp-list-table span.wc-image::before,table.wp-list-table span.wc-type::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.wc-featured{margin:0;cursor:pointer}table.wp-list-table span.wc-featured::before{content:'\f155'}table.wp-list-table span.wc-featured.not-featured::before{content:'\f154'}table.wp-list-table td.column-featured span.wc-featured{font-size:1.6em}table.wp-list-table span.wc-type{margin:0}table.wp-list-table span.wc-type::before{font-family:WooCommerce;content:'\e006'}table.wp-list-table span.product-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.6em}table.wp-list-table span.product-type::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:""}table.wp-list-table span.product-type.grouped::before{content:'\e002'}table.wp-list-table span.product-type.external::before{content:'\e034'}table.wp-list-table span.product-type.variable::before{content:'\e003'}table.wp-list-table span.product-type.downloadable::before{content:'\e001'}table.wp-list-table span.product-type.virtual::before{content:'\e000'}table.wp-list-table mark.instock{font-weight:700;color:#7ad03a;background:0 0;line-height:1}table.wp-list-table mark.outofstock{font-weight:700;color:#a44;background:0 0;line-height:1}table.wp-list-table .notes_head,table.wp-list-table .order-notes_head,table.wp-list-table .status_head{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;margin:0 auto}table.wp-list-table .notes_head::after,table.wp-list-table .order-notes_head::after,table.wp-list-table .status_head::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}table.wc_emails .wc-email-settings-table-name,table.wc_emails td.name,table.wc_gateways .wc-email-settings-table-name,table.wc_gateways td.name,table.wc_shipping .wc-email-settings-table-name,table.wc_shipping td.name{font-weight:700}table.wp-list-table .order-notes_head::after{content:'\e028'}table.wp-list-table .notes_head::after{content:'\e026'}table.wp-list-table .status_head::after{content:'\e011'}table.wp-list-table .column-order_items{width:12%}table.wp-list-table .column-order_items table.order_items{width:100%;margin:3px 0 0;padding:0;display:none}table.wp-list-table .column-order_items table.order_items td{border:0;margin:0;padding:0 0 3px}table.wp-list-table .column-order_items table.order_items td.qty{color:#999;padding-right:6px;text-align:left}mark.notice{background:#fff;color:#a00;margin:0 0 0 10px}a.export_rates,a.import_rates{float:right;margin-left:9px;margin-top:-2px;margin-bottom:0}#rates-search{float:right}#rates-search input.wc-tax-rates-search-field{padding:4px 8px;font-size:1.2em}#rates-pagination{float:right;margin-right:.5em}#rates-pagination .tablenav{margin:0}table.wc_input_table,table.wc_tax_rates{width:100%}table.wc_input_table span.tips,table.wc_tax_rates span.tips{color:#2ea2cc}table.wc_input_table th,table.wc_tax_rates th{white-space:nowrap;padding:10px}table.wc_input_table td,table.wc_tax_rates td{padding:0;border-right:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;border-top:0;background:#fff;cursor:default}table.wc_input_table td input[type=text],table.wc_input_table td input[type=number],table.wc_tax_rates td input[type=text],table.wc_tax_rates td input[type=number]{width:100%;padding:8px 10px;margin:0;border:0;outline:0;background:0 0}table.wc_input_table td input[type=text]:focus,table.wc_input_table td input[type=number]:focus,table.wc_tax_rates td input[type=text]:focus,table.wc_tax_rates td input[type=number]:focus{outline:0;box-shadow:none}table.wc_input_table td.apply_to_shipping,table.wc_input_table td.compound,table.wc_tax_rates td.apply_to_shipping,table.wc_tax_rates td.compound{padding:5px 7px;vertical-align:middle}table.wc_input_table td.apply_to_shipping input,table.wc_input_table td.compound input,table.wc_tax_rates td.apply_to_shipping input,table.wc_tax_rates td.compound input{width:auto;padding:0}table.wc_input_table td:last-child,table.wc_tax_rates td:last-child{border-right:0}table.wc_input_table tr.current td,table.wc_tax_rates tr.current td{background-color:#fefbcc}table.wc_input_table .cost,table.wc_input_table .cost input,table.wc_input_table .item_cost,table.wc_input_table .item_cost input,table.wc_tax_rates .cost,table.wc_tax_rates .cost input,table.wc_tax_rates .item_cost,table.wc_tax_rates .item_cost input{text-align:right}table.wc_input_table th.sort,table.wc_tax_rates th.sort{width:17px;padding:0 4px}table.wc_input_table td.sort,table.wc_tax_rates td.sort{padding:0 4px}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort{cursor:move;font-size:15px;background:#f9f9f9;text-align:center;vertical-align:middle}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_input_table .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before,table.wc_tax_rates .ui-sortable:not(.ui-sortable-disabled) td.sort:hover::before{color:#333}table.wc_input_table .button,table.wc_tax_rates .button{float:left;margin-right:5px}table.wc_input_table .export,table.wc_input_table .import,table.wc_tax_rates .export,table.wc_tax_rates .import{float:right;margin-right:0;margin-left:5px}table.wc_input_table span.tips,table.wc_tax_rates span.tips{padding:0 3px}table.wc_input_table .pagination,table.wc_tax_rates .pagination{float:right}table.wc_input_table .pagination .button,table.wc_tax_rates .pagination .button{margin-left:5px;margin-right:0}table.wc_input_table .pagination .current,table.wc_tax_rates .pagination .current{background:#bbb;text-shadow:none}table.wc_input_table tr:last-child td,table.wc_tax_rates tr:last-child td{border-bottom:0}table.wc_emails,table.wc_gateways,table.wc_shipping{position:relative}table.wc_emails td,table.wc_gateways td,table.wc_shipping td{vertical-align:middle;padding:7px;line-height:2em}table.wc_emails tr:nth-child(odd) td,table.wc_gateways tr:nth-child(odd) td,table.wc_shipping tr:nth-child(odd) td{background:#f9f9f9}table.wc_emails th,table.wc_gateways th,table.wc_shipping th{padding:9px 7px!important;vertical-align:middle}table.wc_emails .settings,table.wc_gateways .settings,table.wc_shipping .settings{text-align:right}table.wc_emails .default,table.wc_emails .radio,table.wc_emails .status,table.wc_gateways .default,table.wc_gateways .radio,table.wc_gateways .status,table.wc_shipping .default,table.wc_shipping .radio,table.wc_shipping .status{text-align:center}table.wc_emails .default .tips,table.wc_emails .radio .tips,table.wc_emails .status .tips,table.wc_gateways .default .tips,table.wc_gateways .radio .tips,table.wc_gateways .status .tips,table.wc_shipping .default .tips,table.wc_shipping .radio .tips,table.wc_shipping .status .tips{margin:0 auto}table.wc_emails .default input,table.wc_emails .radio input,table.wc_emails .status input,table.wc_gateways .default input,table.wc_gateways .radio input,table.wc_gateways .status input,table.wc_shipping .default input,table.wc_shipping .radio input,table.wc_shipping .status input{margin:0}table.wc_emails th.sort,table.wc_gateways th.sort,table.wc_shipping th.sort{width:28px;padding:0}table.wc_emails td.sort,table.wc_gateways td.sort,table.wc_shipping td.sort{padding:0 7px;cursor:move;font-size:15px;text-align:center;vertical-align:middle}table.wc_emails td.sort::before,table.wc_gateways td.sort::before,table.wc_shipping td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_emails .wc-email-settings-table-name span,table.wc_gateways .wc-email-settings-table-name span,table.wc_shipping .wc-email-settings-table-name span{font-weight:400;color:#999;margin:0 0 0 4px!important}table.wc_emails .wc-email-settings-table-status,table.wc_gateways .wc-email-settings-table-status,table.wc_shipping .wc-email-settings-table-status{text-align:center;width:1em}table.wc_emails .wc-email-settings-table-status .tips,table.wc_gateways .wc-email-settings-table-status .tips,table.wc_shipping .wc-email-settings-table-status .tips{margin:0 auto}table.wc_emails .wc-email-settings-table-actions a,table.wc_gateways .wc-email-settings-table-actions a,table.wc_shipping .wc-email-settings-table-actions a{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}table.wc_emails .wc-email-settings-table-actions a::after,table.wc_gateways .wc-email-settings-table-actions a::after,table.wc_shipping .wc-email-settings-table-actions a::after{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-family:Dashicons;line-height:1.85}table.wc-shipping-classes td,table.wc-shipping-classes th,table.wc-shipping-zone-methods td,table.wc-shipping-zone-methods th,table.wc-shipping-zones td,table.wc-shipping-zones th{vertical-align:top;line-height:24px;padding:1em;font-size:14px;background:#fff}table.wc-shipping-classes td li,table.wc-shipping-classes th li,table.wc-shipping-zone-methods td li,table.wc-shipping-zone-methods th li,table.wc-shipping-zones td li,table.wc-shipping-zones th li{line-height:24px;font-size:14px}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state,table.wc-shipping-classes td.wc-shipping-zones-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state,table.wc-shipping-zones td.wc-shipping-zones-blank-state{background:#f7f1f6!important;overflow:hidden;position:relative;padding:7.5em 7.5%;border-bottom:2px solid #eee2ec}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p,table.wc-shipping-zones td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state p{color:#a46497;font-size:1.5em;line-height:1.5em;margin:0 0 1em;position:relative;z-index:1;text-shadow:1px 1px 1px #fff}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state li.main,table.wc-shipping-classes td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state p.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state li.main,table.wc-shipping-zones td.wc-shipping-zones-blank-state p.main{font-size:2em}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state li,table.wc-shipping-classes td.wc-shipping-zones-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state li,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state li,table.wc-shipping-zones td.wc-shipping-zones-blank-state li{margin-left:1em;list-style:circle inside}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-classes td.wc-shipping-zones-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state::before,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state::before,table.wc-shipping-zones td.wc-shipping-zones-blank-state::before{content:'\e01b';font-family:WooCommerce;text-align:center;line-height:1;color:#eee2ec;display:block;width:1em;font-size:40em;top:50%;right:-3.75%;margin-top:-.1875em;position:absolute}table.wc-shipping-classes td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-classes td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zone-methods td.wc-shipping-zones-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zone-method-blank-state .button-primary,table.wc-shipping-zones td.wc-shipping-zones-blank-state .button-primary{background-color:#804877;border-color:#804877;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);margin:0;opacity:1;text-shadow:0 -1px 1px #8a4f7f,1px 0 1px #8a4f7f,0 1px 1px #8a4f7f,-1px 0 1px #8a4f7f;font-size:1.5em;padding:.75em 1em;height:auto;position:relative;z-index:1}table.wc-shipping-classes .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-classes .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-classes tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-classes tr.odd td,table.wc-shipping-zone-methods .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zone-methods tr.odd td,table.wc-shipping-zones .wc-shipping-class-rows tr:nth-child(odd) td,table.wc-shipping-zones .wc-shipping-zone-method-rows tr:nth-child(odd) td,table.wc-shipping-zones tbody.wc-shipping-zone-rows tr:nth-child(odd) td,table.wc-shipping-zones tr.odd td{background:#f9f9f9}table.wc-shipping-classes p,table.wc-shipping-classes ul,table.wc-shipping-zone-methods p,table.wc-shipping-zone-methods ul,table.wc-shipping-zones p,table.wc-shipping-zones ul{margin:0}table.wc-shipping-classes td.wc-shipping-zone-method-sort,table.wc-shipping-classes td.wc-shipping-zone-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort,table.wc-shipping-zone-methods td.wc-shipping-zone-sort,table.wc-shipping-zones td.wc-shipping-zone-method-sort,table.wc-shipping-zones td.wc-shipping-zone-sort{cursor:move;font-size:15px;text-align:center}table.wc-shipping-classes td.wc-shipping-zone-method-sort::before,table.wc-shipping-classes td.wc-shipping-zone-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort::before,table.wc-shipping-zones td.wc-shipping-zone-sort::before{content:'\f333';font-family:Dashicons;text-align:center;color:#999;display:block;width:17px;float:left;height:100%;line-height:24px}table.wc-shipping-classes td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-classes td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zone-methods td.wc-shipping-zone-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-method-sort:hover::before,table.wc-shipping-zones td.wc-shipping-zone-sort:hover::before{color:#333}table.wc-shipping-classes td.wc-shipping-zone-worldwide,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide,table.wc-shipping-zones td.wc-shipping-zone-worldwide{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-worldwide::before,table.wc-shipping-zone-methods td.wc-shipping-zone-worldwide::before,table.wc-shipping-zones td.wc-shipping-zone-worldwide::before{content:'\f319';font-family:dashicons;text-align:center;color:#999;display:block;width:17px;float:left;height:100%;line-height:24px}table.wc-shipping-classes .wc-shipping-zone-methods,table.wc-shipping-classes .wc-shipping-zone-name,table.wc-shipping-zone-methods .wc-shipping-zone-methods,table.wc-shipping-zone-methods .wc-shipping-zone-name,table.wc-shipping-zones .wc-shipping-zone-methods,table.wc-shipping-zones .wc-shipping-zone-name{width:25%}table.wc-shipping-classes .wc-shipping-class-description input,table.wc-shipping-classes .wc-shipping-class-description select,table.wc-shipping-classes .wc-shipping-class-description textarea,table.wc-shipping-classes .wc-shipping-class-name input,table.wc-shipping-classes .wc-shipping-class-name select,table.wc-shipping-classes .wc-shipping-class-name textarea,table.wc-shipping-classes .wc-shipping-class-slug input,table.wc-shipping-classes .wc-shipping-class-slug select,table.wc-shipping-classes .wc-shipping-class-slug textarea,table.wc-shipping-classes .wc-shipping-zone-name input,table.wc-shipping-classes .wc-shipping-zone-name select,table.wc-shipping-classes .wc-shipping-zone-name textarea,table.wc-shipping-classes .wc-shipping-zone-region input,table.wc-shipping-classes .wc-shipping-zone-region select,table.wc-shipping-classes .wc-shipping-zone-region textarea,table.wc-shipping-zone-methods .wc-shipping-class-description input,table.wc-shipping-zone-methods .wc-shipping-class-description select,table.wc-shipping-zone-methods .wc-shipping-class-description textarea,table.wc-shipping-zone-methods .wc-shipping-class-name input,table.wc-shipping-zone-methods .wc-shipping-class-name select,table.wc-shipping-zone-methods .wc-shipping-class-name textarea,table.wc-shipping-zone-methods .wc-shipping-class-slug input,table.wc-shipping-zone-methods .wc-shipping-class-slug select,table.wc-shipping-zone-methods .wc-shipping-class-slug textarea,table.wc-shipping-zone-methods .wc-shipping-zone-name input,table.wc-shipping-zone-methods .wc-shipping-zone-name select,table.wc-shipping-zone-methods .wc-shipping-zone-name textarea,table.wc-shipping-zone-methods .wc-shipping-zone-region input,table.wc-shipping-zone-methods .wc-shipping-zone-region select,table.wc-shipping-zone-methods .wc-shipping-zone-region textarea,table.wc-shipping-zones .wc-shipping-class-description input,table.wc-shipping-zones .wc-shipping-class-description select,table.wc-shipping-zones .wc-shipping-class-description textarea,table.wc-shipping-zones .wc-shipping-class-name input,table.wc-shipping-zones .wc-shipping-class-name select,table.wc-shipping-zones .wc-shipping-class-name textarea,table.wc-shipping-zones .wc-shipping-class-slug input,table.wc-shipping-zones .wc-shipping-class-slug select,table.wc-shipping-zones .wc-shipping-class-slug textarea,table.wc-shipping-zones .wc-shipping-zone-name input,table.wc-shipping-zones .wc-shipping-zone-name select,table.wc-shipping-zones .wc-shipping-zone-name textarea,table.wc-shipping-zones .wc-shipping-zone-region input,table.wc-shipping-zones .wc-shipping-zone-region select,table.wc-shipping-zones .wc-shipping-zone-region textarea{width:100%}table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-classes .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zone-methods .wc-shipping-zone-region a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-description a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-class-slug a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-name a.wc-shipping-zone-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-class-delete,table.wc-shipping-zones .wc-shipping-zone-region a.wc-shipping-zone-delete{color:red}table.wc-shipping-classes .wc-shipping-class-description .wc-shipping-zone-postcodes-toggle,table.wc-shipping-classes .wc-shipping-class-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-classes .wc-shipping-class-slug .wc-shipping-zone-postcodes-toggle,table.wc-shipping-classes .wc-shipping-zone-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-classes .wc-shipping-zone-region .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-class-description .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-class-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-class-slug .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-zone-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zone-methods .wc-shipping-zone-region .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-class-description .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-class-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-class-slug .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-zone-name .wc-shipping-zone-postcodes-toggle,table.wc-shipping-zones .wc-shipping-zone-region .wc-shipping-zone-postcodes-toggle{float:right;margin:0;font-size:.9em;text-decoration:underline}table.wc-shipping-classes .wc-shipping-class-description .wc-shipping-zone-postcodes,table.wc-shipping-classes .wc-shipping-class-name .wc-shipping-zone-postcodes,table.wc-shipping-classes .wc-shipping-class-slug .wc-shipping-zone-postcodes,table.wc-shipping-classes .wc-shipping-zone-name .wc-shipping-zone-postcodes,table.wc-shipping-classes .wc-shipping-zone-region .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-class-description .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-class-name .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-class-slug .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-zone-name .wc-shipping-zone-postcodes,table.wc-shipping-zone-methods .wc-shipping-zone-region .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-class-description .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-class-name .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-class-slug .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-zone-name .wc-shipping-zone-postcodes,table.wc-shipping-zones .wc-shipping-zone-region .wc-shipping-zone-postcodes{display:none}table.wc-shipping-classes .wc-shipping-class-description .wc-shipping-zone-postcodes textarea,table.wc-shipping-classes .wc-shipping-class-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-classes .wc-shipping-class-slug .wc-shipping-zone-postcodes textarea,table.wc-shipping-classes .wc-shipping-zone-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-classes .wc-shipping-zone-region .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-class-description .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-class-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-class-slug .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-zone-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-zone-methods .wc-shipping-zone-region .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-class-description .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-class-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-class-slug .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-zone-name .wc-shipping-zone-postcodes textarea,table.wc-shipping-zones .wc-shipping-zone-region .wc-shipping-zone-postcodes textarea{margin-top:1em}table.wc-shipping-classes .wc-shipping-class-description .wc-shipping-zone-postcodes .description,table.wc-shipping-classes .wc-shipping-class-name .wc-shipping-zone-postcodes .description,table.wc-shipping-classes .wc-shipping-class-slug .wc-shipping-zone-postcodes .description,table.wc-shipping-classes .wc-shipping-zone-name .wc-shipping-zone-postcodes .description,table.wc-shipping-classes .wc-shipping-zone-region .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-class-description .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-class-name .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-class-slug .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-zone-name .wc-shipping-zone-postcodes .description,table.wc-shipping-zone-methods .wc-shipping-zone-region .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-class-description .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-class-name .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-class-slug .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-zone-name .wc-shipping-zone-postcodes .description,table.wc-shipping-zones .wc-shipping-zone-region .wc-shipping-zone-postcodes .description{font-size:.9em;color:#999}table.wc-shipping-classes .wc-shipping-class-count,table.wc-shipping-zone-methods .wc-shipping-class-count,table.wc-shipping-zones .wc-shipping-class-count{text-align:center}table.wc-shipping-classes td.wc-shipping-zone-methods,table.wc-shipping-zone-methods td.wc-shipping-zone-methods,table.wc-shipping-zones td.wc-shipping-zone-methods{color:#999}table.wc-shipping-classes td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .method_disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .method_disabled{text-decoration:line-through}table.wc-shipping-classes td.wc-shipping-zone-methods ul,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul,table.wc-shipping-zones td.wc-shipping-zone-methods ul{color:#999;position:relative;padding-right:32px}table.wc-shipping-classes td.wc-shipping-zone-methods ul li,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li,table.wc-shipping-zones td.wc-shipping-zone-methods ul li{display:inline;margin:0}table.wc-shipping-classes td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li::before{content:', '}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-classes td.wc-shipping-zone-methods ul li:nth-child(2)::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:nth-child(2)::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:first-child::before,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:nth-child(2)::before{content:''}table.wc-shipping-classes td.wc-shipping-zone-methods ul li:first-child,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li:first-child,table.wc-shipping-zones td.wc-shipping-zone-methods ul li:first-child{display:block}table.wc-shipping-classes td.wc-shipping-zone-methods ul li.wc-shipping-zone-methods-add-row,table.wc-shipping-zone-methods td.wc-shipping-zone-methods ul li.wc-shipping-zone-methods-add-row,table.wc-shipping-zones td.wc-shipping-zone-methods ul li.wc-shipping-zone-methods-add-row{position:absolute;right:0;top:0}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method{display:block;width:24px;padding:24px 0 0;height:0;overflow:hidden;cursor:pointer}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method::before{speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;font-family:Dashicons;content:'\f502';color:#999;vertical-align:middle;line-height:24px;font-size:16px;margin:0}table.wc-shipping-classes .wc-shipping-zone-method-enabled .status-disabled::before,table.wc-shipping-classes .wc-shipping-zone-method-enabled .status-enabled::before,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .status-disabled::before,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .status-enabled::before,table.wc-shipping-zones .wc-shipping-zone-method-enabled .status-disabled::before,table.wc-shipping-zones .wc-shipping-zone-method-enabled .status-enabled::before{line-height:inherit}table.wc-shipping-classes .wc-shipping-zone-method-enabled .status-disabled,table.wc-shipping-classes .wc-shipping-zone-method-enabled .status-enabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .status-disabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled .status-enabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled .status-disabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled .status-enabled{margin-top:1px;display:inline-block}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled{cursor:not-allowed}table.wc-shipping-classes td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zone-methods td.wc-shipping-zone-methods .add_shipping_method.disabled::before,table.wc-shipping-zones td.wc-shipping-zone-methods .add_shipping_method.disabled::before{color:#ccc}table.wc-shipping-classes .wc-shipping-zone-method-title,table.wc-shipping-zone-methods .wc-shipping-zone-method-title,table.wc-shipping-zones .wc-shipping-zone-method-title{width:33%}table.wc-shipping-classes .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zone-methods .wc-shipping-zone-method-title .wc-shipping-zone-method-delete,table.wc-shipping-zones .wc-shipping-zone-method-title .wc-shipping-zone-method-delete{color:red}table.wc-shipping-classes .wc-shipping-zone-method-enabled,table.wc-shipping-zone-methods .wc-shipping-zone-method-enabled,table.wc-shipping-zones .wc-shipping-zone-method-enabled{text-align:center}table.wc-shipping-classes tfoot input,table.wc-shipping-classes tfoot select,table.wc-shipping-zone-methods tfoot input,table.wc-shipping-zone-methods tfoot select,table.wc-shipping-zones tfoot input,table.wc-shipping-zones tfoot select{vertical-align:middle!important}table.wc-shipping-classes tfoot .button-secondary,table.wc-shipping-zone-methods tfoot .button-secondary,table.wc-shipping-zones tfoot .button-secondary{float:right}table.wc-shipping-classes .editing .wc-shipping-zone-edit,table.wc-shipping-classes .editing .wc-shipping-zone-view,table.wc-shipping-zone-methods .editing .wc-shipping-zone-edit,table.wc-shipping-zone-methods .editing .wc-shipping-zone-view,table.wc-shipping-zones .editing .wc-shipping-zone-edit,table.wc-shipping-zones .editing .wc-shipping-zone-view{display:none}.wc-modal-shipping-method-settings{background:#f8f8f8;padding:1em!important}.wc-modal-shipping-method-settings form .form-table{width:100%;background:#fff;margin:0 0 1.5em}.wc-modal-shipping-method-settings form .form-table tr th{width:30%;position:relative}.wc-modal-shipping-method-settings form .form-table tr th .woocommerce-help-tip{float:right;margin:-8px -.5em 0 0;vertical-align:middle;right:0;top:50%;position:absolute}.wc-modal-shipping-method-settings form .form-table tr td input,.wc-modal-shipping-method-settings form .form-table tr td select,.wc-modal-shipping-method-settings form .form-table tr td textarea{width:50%;min-width:250px}.wc-modal-shipping-method-settings form .form-table tr td input[type=checkbox]{width:auto;min-width:16px}.wc-modal-shipping-method-settings form .form-table tr td,.wc-modal-shipping-method-settings form .form-table tr th{vertical-align:middle;margin:0;line-height:24px;padding:1em;border-bottom:1px solid #f8f8f8}.wc-modal-shipping-method-settings form .form-table:last-of-type{margin-bottom:0}.wc-backbone-modal .wc-shipping-zone-method-selector p{margin-top:0}.wc-backbone-modal .wc-shipping-zone-method-selector .wc-shipping-zone-method-description{margin:.75em 1px 0;line-height:1.5em;color:#999;font-style:italic}.wc-backbone-modal .wc-shipping-zone-method-selector select{width:100%;cursor:pointer}img.help_tip{margin:0 0 0 9px;vertical-align:middle}.postbox img.help_tip{margin-top:0}.postbox .woocommerce-help-tip{margin:0 0 0 9px}.status-disabled,.status-enabled,.status-manual{font-size:1.4em;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}.status-disabled::before,.status-enabled::before,.status-manual::before{font-family:WooCommerce;line-height:1;margin:0;position:absolute;width:100%;height:100%;text-indent:0;top:0;font-variant:normal;-webkit-font-smoothing:antialiased;font-weight:400;text-align:center;left:0;speak:none;text-transform:none}.status-manual::before{content:"";color:#999}.status-enabled::before{content:"";color:#a46497}.status-disabled::before{content:"";color:#ccc}.woocommerce h2.woo-nav-tab-wrapper{margin-bottom:1em}.woocommerce nav.woo-nav-tab-wrapper{margin:1.5em 0 1em;border-bottom:1px solid #ccc}.woocommerce .subsubsub{margin:-8px 0 0}.woocommerce .wc-admin-breadcrumb{margin-left:.5em}.woocommerce .wc-admin-breadcrumb a{color:#a46497}.woocommerce #template div{margin:0}.woocommerce #template div p .button{float:right;margin-left:10px;margin-top:-4px}.woocommerce #template div .editor textarea{margin-bottom:8px}.woocommerce textarea[disabled=disabled]{background:#dfdfdf!important}.woocommerce table.form-table{margin:0;position:relative}.woocommerce table.form-table .forminp-radio ul{margin:0}.woocommerce table.form-table .forminp-radio ul li{line-height:1.4em}.woocommerce table.form-table textarea.input-text{height:100%;min-width:150px;display:block}.woocommerce table.form-table input.regular-input{width:25em}.woocommerce table.form-table textarea.wide-input{width:100%}.woocommerce table.form-table .woocommerce-help-tip,.woocommerce table.form-table img.help_tip{padding:0;margin:-4px 0 0 5px;vertical-align:middle;cursor:help;line-height:1}.woocommerce table.form-table span.help_tip{cursor:help;color:#2ea2cc}.woocommerce table.form-table th{position:relative;padding-right:24px}.woocommerce table.form-table .select2-container{display:block;max-width:350px;vertical-align:top;margin-bottom:3px}.woocommerce table.form-table table.widefat th{padding-right:inherit}.woocommerce table.form-table th .woocommerce-help-tip,.woocommerce table.form-table th img.help_tip{margin:0 -24px 0 0;float:right}.woocommerce table.form-table .wp-list-table .woocommerce-help-tip{float:none}.woocommerce table.form-table fieldset{margin-top:4px}.woocommerce table.form-table fieldset .woocommerce-help-tip,.woocommerce table.form-table fieldset img.help_tip{margin:-3px 0 0 5px}.woocommerce table.form-table fieldset p.description{margin-bottom:8px}.woocommerce table.form-table fieldset:first-child{margin-top:0}.woocommerce table.form-table .iris-picker{z-index:100;display:none;position:absolute;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2)}.woocommerce table.form-table .iris-picker .ui-slider{border:0!important;margin:0!important;width:auto!important;height:auto!important;background:none!important}.woocommerce table.form-table .iris-picker .ui-slider .ui-slider-handle{margin-bottom:0!important}.woocommerce table.form-table .colorpickpreview{padding:3px 3px 3px 20px;border:1px solid #ddd;border-right:0}.woocommerce table.form-table .colorpick{border-left:0}.woocommerce table.form-table .image_width_settings{vertical-align:middle}.woocommerce table.form-table .image_width_settings label{margin-left:10px}.woocommerce table.form-table .wc_emails_wrapper{padding:0 15px 10px 0}.woocommerce #tabs-wrap table a.remove{margin-left:4px}.woocommerce #tabs-wrap table p{margin:0 0 4px!important;overflow:hidden;zoom:1}.woocommerce #tabs-wrap table p a.add{float:left}#wp-excerpt-editor-container{background:#fff}#product_variation-parent #parent_id{width:100%}#postimagediv img{border:1px solid #d5d5d5;max-width:100%}#woocommerce-product-images .inside{margin:0;padding:0}#woocommerce-product-images .inside .add_product_images{padding:0 12px 12px}#woocommerce-product-images .inside #product_images_container{padding:0 0 0 9px}#woocommerce-product-images .inside #product_images_container ul{margin:0;padding:0}#woocommerce-product-images .inside #product_images_container ul::after,#woocommerce-product-images .inside #product_images_container ul::before{content:' ';display:table}#woocommerce-product-images .inside #product_images_container ul::after{clear:both}#woocommerce-product-images .inside #product_images_container ul li.add,#woocommerce-product-images .inside #product_images_container ul li.image,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{width:80px;float:left;cursor:move;border:1px solid #d5d5d5;margin:9px 9px 0 0;background:#f7f7f7;border-radius:2px;position:relative;box-sizing:border-box}#woocommerce-product-images .inside #product_images_container ul li.add img,#woocommerce-product-images .inside #product_images_container ul li.image img,#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder img{width:100%;height:auto;display:block}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder{border:3px dashed #ddd;position:relative}#woocommerce-product-images .inside #product_images_container ul li.wc-metabox-sortable-placeholder::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-size:2.618em;line-height:72px;color:#ddd}#woocommerce-product-images .inside #product_images_container ul ul.actions{position:absolute;top:-8px;right:-8px;padding:2px;display:none}#woocommerce-product-images .inside #product_images_container ul ul.actions li{float:right;margin:0 0 0 2px}#woocommerce-product-images .inside #product_images_container ul ul.actions li a{width:1em;margin:0;height:0;display:block;overflow:hidden}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.tips{cursor:pointer}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.4em}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:hover::before{color:#a00}#woocommerce-product-images .inside #product_images_container ul li:hover ul.actions{display:block}#woocommerce-product-data .hndle{padding:10px}#woocommerce-product-data .hndle span{display:block;vertical-align:middle;line-height:24px}#woocommerce-product-data .hndle span span{display:inline;line-height:inherit;vertical-align:baseline}#woocommerce-product-data .hndle label{padding-right:1em;font-size:12px;vertical-align:baseline}#woocommerce-product-data .hndle label:first-child{margin-right:1em;border-right:1px solid #dfdfdf}#woocommerce-product-data .hndle input,#woocommerce-product-data .hndle select{margin:-3px 0 0 .5em;vertical-align:middle}#woocommerce-product-data>.handlediv{margin-top:4px}#woocommerce-product-data .wrap{margin:0}#woocommerce-coupon-description{padding:3px 8px;font-size:1.7em;line-height:1.42em;height:auto;width:100%;outline:0;margin:10px 0;display:block}#woocommerce-coupon-description::-webkit-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description::-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-ms-input-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-description:-moz-placeholder{line-height:1.42em;color:#bbb}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap{background:#fff}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{float:left;width:80%}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios,#woocommerce-product-data .woocommerce_options_panel .wc-radios{display:block;float:left;margin:0}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li,#woocommerce-product-data .woocommerce_options_panel .wc-radios li{display:block;padding:0 0 10px}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-coupon-data .woocommerce_options_panel .wc-radios li input,#woocommerce-product-data .wc-metaboxes-wrapper .wc-radios li input,#woocommerce-product-data .woocommerce_options_panel .wc-radios li input{width:auto}#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap,.woocommerce .panel-wrap{overflow:hidden}#woocommerce-coupon-data ul.wc-tabs,#woocommerce-product-data ul.wc-tabs,.woocommerce ul.wc-tabs{margin:0;width:20%;float:left;line-height:1em;padding:0 0 10px;position:relative;background-color:#fafafa;border-right:1px solid #eee;box-sizing:border-box}#woocommerce-coupon-data ul.wc-tabs::after,#woocommerce-product-data ul.wc-tabs::after,.woocommerce ul.wc-tabs::after{content:'';display:block;width:100%;height:9999em;position:absolute;bottom:-9999em;left:0;background-color:#fafafa;border-right:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li,#woocommerce-product-data ul.wc-tabs li,.woocommerce ul.wc-tabs li{margin:0;padding:0;display:block;position:relative}#woocommerce-coupon-data ul.wc-tabs li a,#woocommerce-product-data ul.wc-tabs li a,.woocommerce ul.wc-tabs li a{margin:0;padding:10px;display:block;box-shadow:none;text-decoration:none;line-height:20px!important;border-bottom:1px solid #eee}#woocommerce-coupon-data ul.wc-tabs li a::before,#woocommerce-product-data ul.wc-tabs li a::before,.woocommerce ul.wc-tabs li a::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#woocommerce-coupon-data ul.wc-tabs li.general_options a::before,#woocommerce-product-data ul.wc-tabs li.general_options a::before,.woocommerce ul.wc-tabs li.general_options a::before{content:'\f107'}#woocommerce-coupon-data ul.wc-tabs li.inventory_options a::before,#woocommerce-product-data ul.wc-tabs li.inventory_options a::before,.woocommerce ul.wc-tabs li.inventory_options a::before{content:'\f481'}#woocommerce-coupon-data ul.wc-tabs li.shipping_options a::before,#woocommerce-product-data ul.wc-tabs li.shipping_options a::before,.woocommerce ul.wc-tabs li.shipping_options a::before{font-family:WooCommerce;content:'\e01a'}#woocommerce-coupon-data ul.wc-tabs li.linked_product_options a::before,#woocommerce-product-data ul.wc-tabs li.linked_product_options a::before,.woocommerce ul.wc-tabs li.linked_product_options a::before{content:'\f103'}#woocommerce-coupon-data ul.wc-tabs li.attribute_options a::before,#woocommerce-product-data ul.wc-tabs li.attribute_options a::before,.woocommerce ul.wc-tabs li.attribute_options a::before{content:'\f175'}#woocommerce-coupon-data ul.wc-tabs li.advanced_options a::before,#woocommerce-product-data ul.wc-tabs li.advanced_options a::before,.woocommerce ul.wc-tabs li.advanced_options a::before{font-family:Dashicons;content:'\f111'}#woocommerce-coupon-data ul.wc-tabs li.variations_options a::before,#woocommerce-product-data ul.wc-tabs li.variations_options a::before,.woocommerce ul.wc-tabs li.variations_options a::before{content:'\f509'}#woocommerce-coupon-data ul.wc-tabs li.usage_restriction_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_restriction_options a::before,.woocommerce ul.wc-tabs li.usage_restriction_options a::before{font-family:WooCommerce;content:'\e602'}#woocommerce-coupon-data ul.wc-tabs li.usage_limit_options a::before,#woocommerce-product-data ul.wc-tabs li.usage_limit_options a::before,.woocommerce ul.wc-tabs li.usage_limit_options a::before{font-family:WooCommerce;content:'\e601'}#woocommerce-coupon-data ul.wc-tabs li.general_coupon_data a::before,#woocommerce-product-data ul.wc-tabs li.general_coupon_data a::before,.woocommerce ul.wc-tabs li.general_coupon_data a::before{font-family:WooCommerce;content:'\e600'}#woocommerce-coupon-data ul.wc-tabs li.active a,#woocommerce-product-data ul.wc-tabs li.active a,.woocommerce ul.wc-tabs li.active a{color:#555;position:relative;background-color:#eee}.woocommerce_page_wc-settings .shippingrows th.check-column{padding-top:20px}.woocommerce_page_wc-settings .shippingrows tfoot th{padding-left:10px}.woocommerce_page_wc-settings .shippingrows .add.button::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}.woocommerce_page_wc-settings h3.wc-settings-sub-title{font-size:1.2em}#woocommerce-coupon-data .inside,#woocommerce-order-data .inside,#woocommerce-order-downloads .inside,#woocommerce-product-data .inside,#woocommerce-product-type-options .inside{margin:0;padding:0}.panel,.woocommerce_options_panel{padding:9px;color:#555}.panel .form-field .woocommerce-help-tip,.woocommerce_options_panel .form-field .woocommerce-help-tip{font-size:1.4em}.panel,.woocommerce_page_settings .woocommerce_options_panel{padding:0}#woocommerce-product-specs .inside,#woocommerce-product-type-options .panel{margin:0;padding:9px}#woocommerce-product-type-options .panel p,.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p{margin:0 0 9px;font-size:12px;padding:5px 9px;line-height:24px}#woocommerce-product-type-options .panel p::after,.woocommerce_options_panel fieldset.form-field::after,.woocommerce_options_panel p::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce_options_panel .checkbox,.woocommerce_variable_attributes .checkbox{width:auto;margin:3px 0;vertical-align:middle}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{width:100%;padding:0!important}.woocommerce_options_panel .downloadable_files table th,.woocommerce_variations .downloadable_files table th{padding:7px 0 7px 7px!important}.woocommerce_options_panel .downloadable_files table th.sort,.woocommerce_variations .downloadable_files table th.sort{width:17px;padding:7px!important}.woocommerce_options_panel .downloadable_files table th .woocommerce-help-tip,.woocommerce_variations .downloadable_files table th .woocommerce-help-tip{font-size:1.1em;margin-left:0}.woocommerce_options_panel .downloadable_files table td,.woocommerce_variations .downloadable_files table td{vertical-align:middle!important;padding:4px 0 4px 7px!important;position:relative}.woocommerce_options_panel .downloadable_files table td:last-child,.woocommerce_variations .downloadable_files table td:last-child{padding-right:7px!important}.woocommerce_options_panel .downloadable_files table td input.input_text,.woocommerce_variations .downloadable_files table td input.input_text{width:100%;float:none;min-width:0;margin:1px 0}.woocommerce_options_panel .downloadable_files table td .upload_file_button,.woocommerce_variations .downloadable_files table td .upload_file_button{width:auto;float:right;cursor:pointer}.woocommerce_options_panel .downloadable_files table td .delete,.woocommerce_variations .downloadable_files table td .delete{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.2em}.woocommerce_options_panel .downloadable_files table td .delete::before,.woocommerce_variations .downloadable_files table td .delete::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";color:#999}.woocommerce_options_panel .downloadable_files table td .delete:hover::before,.woocommerce_variations .downloadable_files table td .delete:hover::before{color:#a00}.woocommerce_options_panel .downloadable_files table td.sort,.woocommerce_variations .downloadable_files table td.sort{width:17px;cursor:move;font-size:15px;text-align:center;background:#f9f9f9;padding-right:7px!important}.woocommerce_options_panel .downloadable_files table td.sort::before,.woocommerce_variations .downloadable_files table td.sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}.woocommerce_options_panel .downloadable_files table td.sort:hover::before,.woocommerce_variations .downloadable_files table td.sort:hover::before{color:#333}.woocommerce_variation h3 .sort{width:17px;height:26px;cursor:move;float:right;font-size:15px;font-weight:400;margin-right:.5em;visibility:hidden;text-align:center;vertical-align:middle}.woocommerce_variation h3 .sort::before{content:'\f333';font-family:Dashicons;text-align:center;line-height:28px;color:#999;display:block;width:17px;float:left;height:100%}.woocommerce_variation h3 .sort:hover::before{color:#777}.woocommerce_variation h3:hover .sort,.woocommerce_variation.ui-sortable-helper .sort{visibility:visible}.woocommerce_options_panel{min-height:175px;box-sizing:border-box}.woocommerce_options_panel .downloadable_files{padding:0 9px 0 162px;position:relative;margin:9px 0}.woocommerce_options_panel .downloadable_files label{position:absolute;left:0;margin:0 0 0 12px;line-height:24px}.woocommerce_options_panel p{margin:9px 0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px 5px 162px!important}.woocommerce_options_panel .sale_price_dates_fields .short:first-of-type{margin-bottom:1em}.woocommerce_options_panel .sale_price_dates_fields .short:nth-of-type(2){clear:left}.woocommerce_options_panel label,.woocommerce_options_panel legend{float:left;width:150px;padding:0;margin:0 0 0 -150px}.woocommerce_options_panel label .req,.woocommerce_options_panel legend .req{font-weight:700;font-style:normal;color:#a00}.woocommerce_options_panel .description{padding:0;margin:0 0 0 7px;clear:none;display:inline}.woocommerce_options_panel .description-block{margin-left:0;display:block}.woocommerce_options_panel input,.woocommerce_options_panel select,.woocommerce_options_panel textarea{margin:0}.woocommerce_options_panel textarea{height:3.5em;line-height:1.5em;vertical-align:top}.woocommerce_options_panel input[type=text],.woocommerce_options_panel input[type=number],.woocommerce_options_panel input[type=email],.woocommerce_options_panel input[type=password]{width:50%;float:left}.woocommerce_options_panel input.button{width:auto;margin-left:8px}.woocommerce_options_panel select{float:left}.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:50%}.woocommerce_options_panel .sized{width:auto!important;margin-right:6px}.woocommerce_options_panel .options_group{border-top:1px solid #fff;border-bottom:1px solid #eee}.woocommerce_options_panel .options_group:first-child{border-top:0}.woocommerce_options_panel .options_group:last-child{border-bottom:0}.woocommerce_options_panel .options_group fieldset{margin:9px 0;font-size:12px;padding:5px 9px;line-height:24px}.woocommerce_options_panel .options_group fieldset label{width:auto;float:none}.woocommerce_options_panel .options_group fieldset ul{float:left;width:50%;margin:0;padding:0}.woocommerce_options_panel .options_group fieldset ul li{margin:0;width:auto}.woocommerce_options_panel .options_group fieldset ul li input{width:auto;float:none;margin-right:4px}.woocommerce_options_panel .options_group fieldset ul.wc-radios label{margin-left:0}.woocommerce_options_panel .dimensions_field .wrap{display:block;width:50%}.woocommerce_options_panel .dimensions_field .wrap input{width:30.75%;margin-right:3.8%}.woocommerce_options_panel .dimensions_field .wrap .last{margin-right:0}.woocommerce_options_panel.padded{padding:1em}#woocommerce-product-data input.dp-applied,.woocommerce_options_panel .select2-container{float:left}#grouped_product_options,#simple_product_options,#virtual_product_options{padding:12px;font-style:italic;color:#666}.wc-metaboxes-wrapper .toolbar{margin:0!important;border-top:1px solid #fff;border-bottom:1px solid #eee;padding:9px 12px!important}.wc-metaboxes-wrapper .toolbar:first-child{border-top:0}.wc-metaboxes-wrapper .toolbar:last-child{border-bottom:0}.wc-metaboxes-wrapper .toolbar .add_variation{float:right;margin-left:5px}.wc-metaboxes-wrapper .toolbar .cancel-variation-changes,.wc-metaboxes-wrapper .toolbar .save-variation-changes{float:left;margin-right:5px}.wc-metaboxes-wrapper p.toolbar{overflow:hidden;zoom:1}.wc-metaboxes-wrapper .expand-close{margin-right:2px;color:#777;font-size:12px;font-style:italic}.wc-metaboxes-wrapper .expand-close a{background:0 0;padding:0;font-size:12px;text-decoration:none}.wc-metaboxes-wrapper#product_attributes .expand-close{float:right;line-height:28px}.wc-metaboxes-wrapper .fr,.wc-metaboxes-wrapper button.add_variable_attribute{float:right;margin:0 0 0 6px}.wc-metaboxes-wrapper .wc-metaboxes{border-bottom:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox-sortable-placeholder{border-color:#bbb;background-color:#f5f5f5;margin-bottom:9px;border-width:1px;border-style:dashed}.wc-metaboxes-wrapper .wc-metabox{background:#fff;border-bottom:1px solid #eee;margin:0!important}.wc-metaboxes-wrapper .wc-metabox select{font-weight:400}.wc-metaboxes-wrapper .wc-metabox:last-of-type{border-bottom:0}.wc-metaboxes-wrapper .wc-metabox .handlediv{width:27px}.wc-metaboxes-wrapper .wc-metabox .handlediv::before{content:'\f142'!important;cursor:pointer;display:inline-block;font:400 20px/1 Dashicons;line-height:.5!important;padding:8px 10px;position:relative;right:12px;top:0}.wc-metaboxes-wrapper .wc-metabox.closed{border-radius:3px}.wc-metaboxes-wrapper .wc-metabox.closed .handlediv::before{content:'\f140'!important}.wc-metaboxes-wrapper .wc-metabox.closed h3{border:0}.wc-metaboxes-wrapper .wc-metabox h3{margin:0!important;padding:.75em .75em .75em 1em!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}.wc-metaboxes-wrapper .wc-metabox h3 a.delete,.wc-metaboxes-wrapper .wc-metabox h3 button{float:right}.wc-metaboxes-wrapper .wc-metabox h3 a.delete{color:red;font-weight:400;line-height:26px;text-decoration:none;position:relative;visibility:hidden}.wc-metaboxes-wrapper .wc-metabox h3 strong{line-height:26px;font-weight:700}.wc-metaboxes-wrapper .wc-metabox h3 select{font-family:sans-serif;max-width:20%;margin:.25em .25em .25em 0}.wc-metaboxes-wrapper .wc-metabox h3 .handlediv{background-position:6px 5px!important;visibility:hidden;height:26px}.wc-metaboxes-wrapper .wc-metabox h3.fixed{cursor:pointer!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3{cursor:pointer;padding:.5em .75em .5em 1em!important}.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .handlediv,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 .sort,.wc-metaboxes-wrapper .wc-metabox.woocommerce_variation h3 a.delete{margin-top:.25em}.wc-metaboxes-wrapper .wc-metabox h3:hover .handlediv,.wc-metaboxes-wrapper .wc-metabox h3:hover a.delete,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper .handlediv,.wc-metaboxes-wrapper .wc-metabox.ui-sortable-helper a.delete{visibility:visible}.wc-metaboxes-wrapper .wc-metabox table{width:100%;position:relative;background-color:#fdfdfd;padding:1em;border-top:1px solid #eee}.wc-metaboxes-wrapper .wc-metabox table td{text-align:left;padding:0 6px 1em 0;vertical-align:top;border:0}.wc-metaboxes-wrapper .wc-metabox table td label{text-align:left;display:block;line-height:21px}.wc-metaboxes-wrapper .wc-metabox table td input{float:left;min-width:200px}.wc-metaboxes-wrapper .wc-metabox table td input,.wc-metaboxes-wrapper .wc-metabox table td textarea{width:100%;margin:0;display:block;font-size:14px;padding:4px;color:#555}.wc-metaboxes-wrapper .wc-metabox table td .select2-container,.wc-metaboxes-wrapper .wc-metabox table td select{width:100%!important}.wc-metaboxes-wrapper .wc-metabox table td input.short{width:200px}.wc-metaboxes-wrapper .wc-metabox table td input.checkbox{width:16px;min-width:inherit;vertical-align:text-bottom;display:inline-block;float:none}.wc-metaboxes-wrapper .wc-metabox table td.attribute_name{width:200px}.wc-metaboxes-wrapper .wc-metabox table .minus,.wc-metaboxes-wrapper .wc-metabox table .plus{margin-top:6px}.wc-metaboxes-wrapper .wc-metabox table .fl{float:left}.wc-metaboxes-wrapper .wc-metabox table .fr{float:right}.variations-pagenav{float:right;line-height:24px}.variations-pagenav .displaying-num{color:#777;font-size:12px;font-style:italic}.variations-pagenav a{padding:0 10px 3px;background:rgba(0,0,0,.05);font-size:16px;font-weight:400;text-decoration:none}.variations-pagenav a.disabled,.variations-pagenav a.disabled:active,.variations-pagenav a.disabled:focus,.variations-pagenav a.disabled:hover{color:#a0a5aa;background:rgba(0,0,0,.05)}.variations-defaults{float:left}.variations-defaults select{margin:.25em .25em .25em 0}.woocommerce_variable_attributes{background-color:#fdfdfd;border-top:1px solid #eee}.woocommerce_variable_attributes .data{padding:1em 2em}.woocommerce_variable_attributes .data::after,.woocommerce_variable_attributes .data::before{content:' ';display:table}.woocommerce_variable_attributes .data::after{clear:both}.woocommerce_variable_attributes .upload_image_button{display:block;width:48px;height:48px;float:left;margin-right:20px;position:relative;cursor:pointer}.woocommerce_variable_attributes .upload_image_button img{width:100%;height:auto;display:none}.woocommerce_variable_attributes .upload_image_button::before{content:'\f128';font-family:Dashicons;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;line-height:48px;font-size:48px;font-weight:400;-webkit-font-smoothing:antialiased}.woocommerce_variable_attributes .upload_image_button.remove img{display:block}.woocommerce_variable_attributes .upload_image_button.remove::before{content:'\f335';display:none}.woocommerce_variable_attributes .upload_image_button.remove:hover::before{display:block}.woocommerce_variable_attributes .options{border:1px solid #eee;border-width:1px 0;padding:.25em 0}.woocommerce_variable_attributes .options label{display:inline-block;padding:4px 1em 2px 0}.woocommerce_variable_attributes .options input[type=checkbox]{margin-top:5px;margin-right:3px}.form-row label{display:block}.form-row input[type=number],.form-row input[type=text],.form-row select{width:100%}.form-row.dimensions_field input{width:25%;float:left;margin-right:1%}.form-row.dimensions_field input:last-of-type{margin-right:0}.form-row-first,.form-row-last{width:48%;float:right}.form-row-first{clear:both;float:left}.form-row-full{clear:both}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:9999999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#333}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#333}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#333}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#333}#tiptip_content,.chart-tooltip,.wc_error_tip{color:#fff;font-size:.8em;max-width:150px;background:#333;text-align:center;border-radius:3px;padding:.618em 1em;box-shadow:0 1px 3px rgba(0,0,0,.2)}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{padding:1px;background:#888}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}.wc_error_tip{max-width:20em;line-height:1.8em;position:absolute;white-space:normal;background:#d82223;margin:1.5em 1px 0 -1em;z-index:9999999}.wc_error_tip::after{content:'';display:block;border:8px solid #d82223;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-3px;left:50%;margin:-1em 0 0 -3px}img.ui-datepicker-trigger{vertical-align:middle;margin-top:-1px;cursor:pointer}.wc-metabox-content img.ui-datepicker-trigger,.woocommerce_options_panel img.ui-datepicker-trigger{float:left;margin-right:8px;margin-top:4px;margin-left:4px}#ui-datepicker-div{display:none}.woocommerce-reports-wide.woocommerce-reports-wrap,.woocommerce-reports-wrap.woocommerce-reports-wrap{margin-left:300px;padding-top:18px}.woocommerce-reports-wide.halved,.woocommerce-reports-wrap.halved{margin:0;overflow:hidden;zoom:1}.woocommerce-reports-wide .widefat td,.woocommerce-reports-wrap .widefat td{vertical-align:top;padding:7px}.woocommerce-reports-wide .widefat td .description,.woocommerce-reports-wrap .widefat td .description{margin:4px 0 0}.woocommerce-reports-wide .postbox::after,.woocommerce-reports-wrap .postbox::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox h3,.woocommerce-reports-wrap .postbox h3{cursor:default!important}.woocommerce-reports-wide .postbox .inside,.woocommerce-reports-wrap .postbox .inside{padding:10px;margin:0!important}.woocommerce-reports-wide .postbox div.stats_range,.woocommerce-reports-wide .postbox h3.stats_range,.woocommerce-reports-wrap .postbox div.stats_range,.woocommerce-reports-wrap .postbox h3.stats_range{border-bottom-color:#dfdfdf;margin:0;padding:0!important}.woocommerce-reports-wide .postbox div.stats_range .export_csv,.woocommerce-reports-wide .postbox h3.stats_range .export_csv,.woocommerce-reports-wrap .postbox div.stats_range .export_csv,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv{float:right;line-height:26px;border-left:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range .export_csv::before,.woocommerce-reports-wide .postbox h3.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox div.stats_range .export_csv::before,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv::before{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";text-decoration:none;margin-right:4px}.woocommerce-reports-wide .postbox div.stats_range ul,.woocommerce-reports-wide .postbox h3.stats_range ul,.woocommerce-reports-wrap .postbox div.stats_range ul,.woocommerce-reports-wrap .postbox h3.stats_range ul{list-style:none;margin:0;padding:0;zoom:1;background:#f5f5f5;border-bottom:1px solid #ccc}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox div.stats_range ul::before,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::before,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::before,.woocommerce-reports-wrap .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::before{content:' ';display:table}.woocommerce-reports-wide .postbox div.stats_range ul::after,.woocommerce-reports-wide .postbox h3.stats_range ul::after,.woocommerce-reports-wrap .postbox div.stats_range ul::after,.woocommerce-reports-wrap .postbox h3.stats_range ul::after{clear:both}.woocommerce-reports-wide .postbox div.stats_range ul li,.woocommerce-reports-wide .postbox h3.stats_range ul li,.woocommerce-reports-wrap .postbox div.stats_range ul li,.woocommerce-reports-wrap .postbox h3.stats_range ul li{float:left;margin:0;padding:0;line-height:26px;font-weight:700;font-size:14px}.woocommerce-reports-wide .postbox div.stats_range ul li a,.woocommerce-reports-wide .postbox h3.stats_range ul li a,.woocommerce-reports-wrap .postbox div.stats_range ul li a,.woocommerce-reports-wrap .postbox h3.stats_range ul li a{border-right:1px solid #dfdfdf;padding:10px;display:block;text-decoration:none}.woocommerce-reports-wide .postbox div.stats_range ul li.active,.woocommerce-reports-wide .postbox h3.stats_range ul li.active,.woocommerce-reports-wrap .postbox div.stats_range ul li.active,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active{background:#fff;-webkit-box-shadow:0 4px 0 0 #fff;box-shadow:0 4px 0 0 #fff}.woocommerce-reports-wide .postbox div.stats_range ul li.active a,.woocommerce-reports-wide .postbox h3.stats_range ul li.active a,.woocommerce-reports-wrap .postbox div.stats_range ul li.active a,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active a{color:#777}.woocommerce-reports-wide .postbox div.stats_range ul li.custom,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom{padding:9px 10px;vertical-align:middle}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form{display:inline;margin:0}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker{padding:0;margin:0 10px 0 0;background:0 0;border:0;color:#777;text-align:center;-webkit-box-shadow:none;box-shadow:none}.woocommerce-reports-wide .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wide .postbox h3.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox div.stats_range ul li.custom form input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom div input.range_datepicker.from,.woocommerce-reports-wrap .postbox h3.stats_range ul li.custom form input.range_datepicker.from{margin-right:0}.woocommerce-reports-wide .postbox .chart-with-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar{padding:12px 12px 12px 249px;margin:0!important}.woocommerce-reports-wide .postbox .chart-with-sidebar .chart-sidebar,.woocommerce-reports-wrap .postbox .chart-with-sidebar .chart-sidebar{width:225px;margin-left:-237px;float:left}.woocommerce-reports-wide .postbox .chart-widgets,.woocommerce-reports-wrap .postbox .chart-widgets{margin:0;padding:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget{margin:0 0 1em;background:#fafafa;border:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget::after{content:'.';display:block;height:0;clear:both;visibility:hidden}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4{background:#fff;border:1px solid #dfdfdf;border-left-width:0;border-right-width:0;padding:10px;margin:0;color:#2ea2cc;border-top-width:0;background-image:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9));background-image:-webkit-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-moz-linear-gradient(bottom,#ececec,#f9f9f9);background-image:-o-linear-gradient(bottom,#ececec,#f9f9f9);background-image:linear-gradient(to top,#ececec,#f9f9f9)}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr.active td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.count,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr.active td{background:#f5f5f5}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget h4.section_title:hover,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget h4.section_title:hover{color:#a00}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title{cursor:pointer}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span{display:block}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title span::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none;float:right;font-size:.9em;line-height:1.618}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open{color:#333}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section_title.open span::after,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section_title.open span::after{display:none}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section{border-bottom:1px solid #dfdfdf}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section .select2-container,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section .select2-container{width:100%!important}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .section:last-of-type,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section:last-of-type{border-radius:0 0 3px 3px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td{padding:7px 10px;vertical-align:top;border-top:1px solid #e5e5e5;line-height:1.4em}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.sparkline,form.report_filters div,form.report_filters input,form.report_filters label,form.report_filters p{vertical-align:middle}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table tr:first-child td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr:first-child td{border-top:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name{max-width:175px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name a,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name a{word-wrap:break-word}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table .wc_sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table .wc_sparkline{width:32px;height:1em;display:block;float:right}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p{margin:0;padding:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget p .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget form .submit,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget p .submit{margin-top:10px}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget #product_ids,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget #product_ids{width:100%}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget .select_none,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_all,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .select_none{float:right;color:#999;margin-left:4px;margin-top:10px}.woocommerce-reports-wide .postbox .chart-legend,.woocommerce-reports-wrap .postbox .chart-legend{list-style:none;margin:0 0 1em;padding:0;border:1px solid #dfdfdf;border-right-width:0;border-bottom-width:0;background:#fff}.woocommerce-reports-wide .postbox .chart-legend li,.woocommerce-reports-wrap .postbox .chart-legend li{border-right:5px solid #aaa;color:#aaa;padding:1em;display:block;margin:0;-webkit-transition:all ease .5s;box-shadow:inset 0 -1px 0 0 #dfdfdf}.woocommerce-reports-wide .postbox .chart-legend li strong,.woocommerce-reports-wrap .postbox .chart-legend li strong{font-size:1.618em;line-height:1.2em;color:#464646;font-weight:400;display:block;font-family:HelveticaNeue-Light,'Helvetica Neue Light','Helvetica Neue',sans-serif}.woocommerce-reports-wide .postbox .chart-legend li strong del,.woocommerce-reports-wrap .postbox .chart-legend li strong del{color:#e74c3c;font-weight:400}.woocommerce-reports-wide .postbox .chart-legend li:hover,.woocommerce-reports-wrap .postbox .chart-legend li:hover{box-shadow:inset 0 -1px 0 0 #dfdfdf,inset 300px 0 0 rgba(156,93,144,.1);border-right:5px solid #9c5d90!important;padding-left:1.5em;color:#9c5d90}.woocommerce-reports-wide .postbox .pie-chart-legend,.woocommerce-reports-wrap .postbox .pie-chart-legend{margin:12px 0 0;overflow:hidden}.woocommerce-reports-wide .postbox .pie-chart-legend li,.woocommerce-reports-wrap .postbox .pie-chart-legend li{float:left;margin:0;padding:6px 0 0;border-top:4px solid #999;text-align:center;box-sizing:border-box;width:50%}.woocommerce-reports-wide .postbox .stat,.woocommerce-reports-wrap .postbox .stat{font-size:1.5em!important;font-weight:700;text-align:center}.woocommerce-reports-wide .postbox .chart-placeholder,.woocommerce-reports-wrap .postbox .chart-placeholder{width:100%;height:650px;overflow:hidden;position:relative}.woocommerce-reports-wide .postbox .chart-prompt,.woocommerce-reports-wrap .postbox .chart-prompt{line-height:650px;margin:0;color:#999;font-size:1.2em;font-style:italic;text-align:center}.woocommerce-reports-wide .postbox .chart-container,.woocommerce-reports-wrap .postbox .chart-container{background:#fff;padding:12px;position:relative;border:1px solid #dfdfdf;border-radius:3px}.woocommerce-reports-wide .postbox .main .chart-legend,.woocommerce-reports-wrap .postbox .main .chart-legend{margin-top:12px}.woocommerce-reports-wide .postbox .main .chart-legend li,.woocommerce-reports-wrap .postbox .main .chart-legend li{border-right:0;margin:0 8px 0 0;float:left;border-top:4px solid #aaa}.woocommerce-reports-wide .woocommerce-reports-main,.woocommerce-reports-wrap .woocommerce-reports-main{float:left;min-width:100%}.woocommerce-reports-wide .woocommerce-reports-main table td,.woocommerce-reports-wrap .woocommerce-reports-main table td{padding:9px}.woocommerce-reports-wide .woocommerce-reports-sidebar,.woocommerce-reports-wrap .woocommerce-reports-sidebar{display:inline;width:281px;margin-left:-300px;clear:both;float:left}.woocommerce-reports-wide .woocommerce-reports-left,.woocommerce-reports-wrap .woocommerce-reports-left{width:49.5%;float:left}.woocommerce-reports-wide .woocommerce-reports-right,.woocommerce-reports-wrap .woocommerce-reports-right{width:49.5%;float:right}.woocommerce-reports-wide .column-wc_actions a.edit,.woocommerce-reports-wide .column-wc_actions a.view,.woocommerce-reports-wrap .column-wc_actions a.edit,.woocommerce-reports-wrap .column-wc_actions a.view{display:block;text-indent:-9999px;position:relative;padding:0!important;height:2em!important;width:2em}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{font-family:Dashicons;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;line-height:1.85}.woocommerce-reports-wide .column-wc_actions a.edit::after,.woocommerce-reports-wrap .column-wc_actions a.edit::after{content:'\f464'}.woocommerce-reports-wide .column-wc_actions a.view::after,.woocommerce-reports-wrap .column-wc_actions a.view::after{content:'\f177'}.woocommerce-wide-reports-wrap{padding-bottom:11px}.woocommerce-wide-reports-wrap .widefat .export-data{float:right}.woocommerce-wide-reports-wrap .widefat td,.woocommerce-wide-reports-wrap .widefat th{vertical-align:middle;padding:7px}.chart-tooltip{position:absolute;display:none;line-height:1}table.bar_chart{width:100%}table.bar_chart thead th{text-align:left;color:#ccc;padding:6px 0}table.bar_chart tbody th{padding:6px 0;width:25%;text-align:left!important;font-weight:400!important;border-bottom:1px solid #fee}table.bar_chart tbody td{text-align:right;line-height:24px;padding:6px 6px 6px 0;border-bottom:1px solid #fee}table.bar_chart tbody td span{color:#8a4b75;display:block}table.bar_chart tbody td span.alt{color:#47a03e;margin-top:6px}table.bar_chart tbody td.bars{position:relative;text-align:left;padding:6px 6px 6px 0;border-bottom:1px solid #fee}table.bar_chart tbody td.bars a,table.bar_chart tbody td.bars span{text-decoration:none;clear:both;background:#8a4b75;float:left;display:block;line-height:24px;height:24px;-moz-border-radius:3px;-webkit-border-radius:3px;-o-border-radius:3px;-khtml-border-radius:3px;border-radius:3px}.post-type-product .woocommerce-BlankState-message::before,.post-type-shop_coupon .woocommerce-BlankState-message::before,.post-type-shop_order .woocommerce-BlankState-message::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center}table.bar_chart tbody td.bars span.alt{clear:both;background:#47a03e}table.bar_chart tbody td.bars span.alt span{margin:0;color:#c5dec2!important;text-shadow:0 1px 0 #47a03e;background:0 0}.post-type-shop_order .woocommerce-BlankState-message::before{content:""}.post-type-shop_coupon .woocommerce-BlankState-message::before{content:""}.post-type-product .woocommerce-BlankState-message::before{content:""}.woocommerce-BlankState{text-align:center;padding:5em 0 0}.woocommerce-BlankState .woocommerce-BlankState-message{color:#aaa;margin:0 auto 1.5em;line-height:1.5em;font-size:1.2em;max-width:500px}.woocommerce-BlankState .woocommerce-BlankState-message::before{color:#ddd;text-shadow:0 -1px 1px rgba(0,0,0,.2),0 1px 0 rgba(255,255,255,.8);font-size:8em;display:block;position:relative!important;top:auto;left:auto;line-height:1em;margin:0 0 .1875em}.woocommerce-BlankState .woocommerce-BlankState-cta{font-size:1.2em;padding:.75em 1.5em;height:auto}@media only screen and (max-width:1280px){#order_data .order_data_column{width:48%}#order_data .order_data_column:first-child{width:100%}.woocommerce_options_panel .description{display:block;clear:both;margin-left:0}.woocommerce_options_panel .dimensions_field .wrap,.woocommerce_options_panel .short,.woocommerce_options_panel input[type=text].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=email].short,.woocommerce_options_panel input[type=password].short{width:80%}.woocommerce_options_panel .downloadable_files,.woocommerce_variations .downloadable_files{padding:0;clear:both}.woocommerce_options_panel .downloadable_files label,.woocommerce_variations .downloadable_files label{position:static}.woocommerce_options_panel .downloadable_files table,.woocommerce_variations .downloadable_files table{margin:0 12px 24px;width:94%}.woocommerce_options_panel .downloadable_files table .sort,.woocommerce_variations .downloadable_files table .sort{visibility:hidden}.woocommerce_options_panel .woocommerce_variable_attributes .downloadable_files table,.woocommerce_variations .woocommerce_variable_attributes .downloadable_files table{margin:0 0 1em;width:100%}}@media only screen and (max-width:900px){#woocommerce-coupon-data ul.coupon_data_tabs,#woocommerce-product-data .wc-tabs-back,#woocommerce-product-data ul.product_data_tabs{width:10%}#woocommerce-coupon-data .wc-metaboxes-wrapper,#woocommerce-coupon-data .woocommerce_options_panel,#woocommerce-product-data .wc-metaboxes-wrapper,#woocommerce-product-data .woocommerce_options_panel{width:90%}#woocommerce-coupon-data ul.coupon_data_tabs li a,#woocommerce-product-data ul.product_data_tabs li a{position:relative;text-indent:-999px;padding:10px}#woocommerce-coupon-data ul.coupon_data_tabs li a::before,#woocommerce-product-data ul.product_data_tabs li a::before{position:absolute;top:0;right:0;bottom:0;left:0;text-indent:0;text-align:center;line-height:40px;width:100%;height:40px}}@media only screen and (max-width:782px){#wp-excerpt-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 20px 0 15px}#wp-excerpt-editor-tools{padding-top:20px;padding-right:15px;overflow:hidden;margin-bottom:-1px}.post-type-product .wp-list-table .is-expanded td:not(.hidden),.post-type-shop_order .wp-list-table .is-expanded td:not(.hidden){overflow:visible}#woocommerce-product-data .checkbox{width:25px}.variations-pagenav{float:none;text-align:center;font-size:18px}.variations-pagenav .displaying-num{font-size:16px}.variations-pagenav a{padding:8px 20px 11px;font-size:18px}.variations-pagenav select{padding:0 20px}.variations-defaults{float:none;text-align:center;margin-top:10px}.post-type-product .wp-list-table .column-thumb{display:none;text-align:left;padding-bottom:0}.post-type-product .wp-list-table .column-thumb::before{display:none!important}.post-type-product .wp-list-table .column-thumb img{max-width:32px}.post-type-product .wp-list-table .toggle-row{top:-28px}.post-type-shop_order .wp-list-table .column-order_status{display:none;text-align:left;padding-bottom:0}.post-type-shop_order .wp-list-table .column-order_status mark{margin:0}.post-type-shop_order .wp-list-table .column-order_status::before{display:none!important}.post-type-shop_order .wp-list-table .column-customer_message,.post-type-shop_order .wp-list-table .column-order_notes{text-align:inherit}.post-type-shop_order .wp-list-table .column-order_notes .note-on{font-size:1.3em;margin:0}.post-type-shop_order .wp-list-table .toggle-row{top:-15px}}@media only screen and (max-width:500px){.woocommerce_options_panel label,.woocommerce_options_panel legend{float:none;width:auto;display:block;margin:0}.woocommerce_options_panel fieldset.form-field,.woocommerce_options_panel p.form-field{padding:5px 20px!important}}.wc-backbone-modal *{box-sizing:border-box}.wc-backbone-modal .wc-backbone-modal-content{position:fixed;background:#fff;z-index:100000;left:50%;top:50%;transform:translate(-50%,-50%);width:500px}.wc-backbone-modal .wc-backbone-modal-content article{overflow:auto}.wc-backbone-modal.wc-backbone-modal-shipping-method-settings .wc-backbone-modal-content{width:75%;min-width:500px}.wc-backbone-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:99900}.wc-backbone-modal-main{padding-bottom:55px}.wc-backbone-modal-main article,.wc-backbone-modal-main header{display:block;position:relative}.wc-backbone-modal-main .wc-backbone-modal-header{height:auto;background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}.wc-backbone-modal-main .wc-backbone-modal-header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link{cursor:pointer;color:#777;height:54px;width:54px;padding:0;position:absolute;top:0;right:0;text-align:center;border:0;border-left:1px solid #ddd;background-color:transparent;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link::before{font:400 22px/50px dashicons!important;color:#666;display:block;content:'\f335';font-weight:300}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus,.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:hover{background:#ddd;border-color:#ccc;color:#000}.wc-backbone-modal-main .wc-backbone-modal-header .modal-close-link:focus{outline:0}.wc-backbone-modal-main article{padding:1.5em}.wc-backbone-modal-main article p{margin:1.5em 0}.wc-backbone-modal-main article p:last-child,.wc-backbone-modal-main footer .inner .button{margin-bottom:0}.wc-backbone-modal-main article p:first-child{margin-top:0}.wc-backbone-modal-main article .pagination{padding:10px 0 0;text-align:center}.wc-backbone-modal-main footer{position:absolute;left:0;right:0;bottom:0;z-index:100;padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px rgba(0,0,0,.1)}.wc-backbone-modal-main footer .inner{float:right;line-height:23px}.select2-drop{z-index:999999!important}.select2-container-multi .select2-choices .select2-search-field input{font-family:inherit;font-size:inherit;font-weight:inherit;padding:3px 5px}.select2-container{line-height:1.85em;font-size:14px} \ No newline at end of file diff --git a/assets/css/admin.scss b/assets/css/admin.scss index 87a84c1efb3..e3030dd469d 100644 --- a/assets/css/admin.scss +++ b/assets/css/admin.scss @@ -178,14 +178,6 @@ mark.amount { color: inherit; } -.postbox, -.woocommerce { - input: invalid { - border: 1px solid #cc010b; - background: #ffebe8; - } -} - .simplify-commerce-banner { overflow: hidden; @@ -4206,7 +4198,7 @@ img.ui-datepicker-trigger { text-align: center; -webkit-box-shadow: none; box-shadow: none; - + &.from { margin-right: 0; } diff --git a/assets/css/auth.css b/assets/css/auth.css index 194ca482046..f47b2733ddb 100644 --- a/assets/css/auth.css +++ b/assets/css/auth.css @@ -1 +1 @@ -body{background:#f1f1f1;box-shadow:none;margin:100px auto 24px;padding:0}#wc-logo{border:0;margin:0 0 24px;padding:0;text-align:center}#wc-logo img{max-width:50%}.wc-auth-content{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.13);overflow:hidden;padding:24px 24px 0;zoom:1}.wc-auth-content h1,.wc-auth-content h2,.wc-auth-content h3,.wc-auth-content table{border:0;clear:none;color:#666;margin:0 0 24px;padding:0}.wc-auth-content p,.wc-auth-content ul{color:#666;font-size:1em;line-height:1.75em;margin:0 0 24px}.wc-auth-content p{padding:0}.wc-auth-content a{color:#A16696}.wc-auth-content a:focus,.wc-auth-content a:hover{color:#111}.wc-auth-content .wc-auth-login label{color:#999;display:block;margin-bottom:.5em}.wc-auth-content .wc-auth-login input{box-sizing:border-box;font-size:1.3em;padding:.5em;width:100%}.wc-auth-content .wc-auth-login .wc-auth-actions{padding:0}.wc-auth-content .wc-auth-login .wc-auth-actions .wc-auth-login-button{float:none;width:100%}.wc-auth-permissions{list-style:disc inside;padding:0}.wc-auth-permissions li{font-size:1em}.wc-auth-logged-in-as{background:#f5f5f5;border-bottom:2px solid #eee;line-height:70px;margin:0 0 24px;padding:0 1em 0 0}.wc-auth-logged-in-as p{margin:0;line-height:70px}.wc-auth-logged-in-as img{float:left;height:70px;margin:0 1em 0 0}.wc-auth-logged-in-as .wc-auth-logout{float:right}.wc-auth .wc-auth-actions{overflow:hidden;padding-left:24px}.wc-auth .wc-auth-actions .button{background:#f7f7f7;border:1px solid #d7d7d7;box-sizing:border-box;color:#777;float:right;font-size:1.25em;height:auto;line-height:1em;padding:1em 2em;text-align:center;width:50%}.wc-auth .wc-auth-actions .button:focus,.wc-auth .wc-auth-actions .button:hover{background:#fcfcfc}.wc-auth .wc-auth-actions .button-primary{background:#ad6ea1;border-color:#a16696;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);color:#fff;float:right;opacity:1;text-shadow:0 -1px 1px #8a4f7f,1px 0 1px #8a4f7f,0 1px 1px #8a4f7f,-1px 0 1px #8a4f7f}.wc-auth .wc-auth-actions .button-primary:focus,.wc-auth .wc-auth-actions .button-primary:hover{background:#B472A8;color:#fff}.wc-auth .wc-auth-actions .wc-auth-approve{float:right}.wc-auth .wc-auth-actions .wc-auth-deny{float:left;margin-left:-24px} \ No newline at end of file +body{background:#f1f1f1;box-shadow:none;margin:100px auto 24px;padding:0}#wc-logo{border:0;margin:0 0 24px;padding:0;text-align:center}#wc-logo img{max-width:50%}.wc-auth-content{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.13);overflow:hidden;padding:24px 24px 0;zoom:1}.wc-auth-content h1,.wc-auth-content h2,.wc-auth-content h3,.wc-auth-content table{border:0;clear:none;color:#666;margin:0 0 24px;padding:0}.wc-auth-content p,.wc-auth-content ul{color:#666;font-size:1em;line-height:1.75em;margin:0 0 24px}.wc-auth-content p{padding:0}.wc-auth-content a{color:#a16696}.wc-auth-content a:focus,.wc-auth-content a:hover{color:#111}.wc-auth-content .wc-auth-login label{color:#999;display:block;margin-bottom:.5em}.wc-auth-content .wc-auth-login input{box-sizing:border-box;font-size:1.3em;padding:.5em;width:100%}.wc-auth-content .wc-auth-login .wc-auth-actions{padding:0}.wc-auth-content .wc-auth-login .wc-auth-actions .wc-auth-login-button{float:none;width:100%}.wc-auth-permissions{list-style:disc inside;padding:0}.wc-auth-permissions li{font-size:1em}.wc-auth-logged-in-as{background:#f5f5f5;border-bottom:2px solid #eee;line-height:70px;margin:0 0 24px;padding:0 1em 0 0}.wc-auth-logged-in-as p{margin:0;line-height:70px}.wc-auth-logged-in-as img{float:left;height:70px;margin:0 1em 0 0}.wc-auth-logged-in-as .wc-auth-logout{float:right}.wc-auth .wc-auth-actions{overflow:hidden;padding-left:24px}.wc-auth .wc-auth-actions .button{background:#f7f7f7;border:1px solid #d7d7d7;box-sizing:border-box;color:#777;float:right;font-size:1.25em;height:auto;line-height:1em;padding:1em 2em;text-align:center;width:50%}.wc-auth .wc-auth-actions .button:focus,.wc-auth .wc-auth-actions .button:hover{background:#fcfcfc}.wc-auth .wc-auth-actions .button-primary{background:#ad6ea1;border-color:#a16696;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 0 rgba(0,0,0,.15);color:#fff;float:right;opacity:1;text-shadow:0 -1px 1px #8a4f7f,1px 0 1px #8a4f7f,0 1px 1px #8a4f7f,-1px 0 1px #8a4f7f}.wc-auth .wc-auth-actions .button-primary:focus,.wc-auth .wc-auth-actions .button-primary:hover{background:#b472a8;color:#fff}.wc-auth .wc-auth-actions .wc-auth-approve{float:right}.wc-auth .wc-auth-actions .wc-auth-deny{float:left;margin-left:-24px} \ No newline at end of file diff --git a/assets/css/dashboard.css b/assets/css/dashboard.css index 393d88c131f..684acc4b8cd 100644 --- a/assets/css/dashboard.css +++ b/assets/css/dashboard.css @@ -1 +1 @@ -@charset "UTF-8";@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}ul.woocommerce_stats{overflow:hidden;zoom:1}ul.woocommerce_stats li{width:25%;padding:0 1em;float:left;font-size:.8em;border-left:1px solid #fff;border-right:1px solid #ececec;text-align:center;box-sizing:border-box}ul.woocommerce_stats li:first-child{border-left:0}ul.woocommerce_stats li:last-child{border-right:0}#woocommerce_dashboard_status .wc_status_list li.low-in-stock,#woocommerce_dashboard_status .wc_status_list li.processing-orders{border-right:1px solid #ececec}ul.woocommerce_stats strong{font-family:Georgia,"Times New Roman","Bitstream Charter",Times,serif;font-size:4em;line-height:1.2em;font-weight:400;text-align:center;display:block}#woocommerce_dashboard_status .inside{padding:0;margin:0}#woocommerce_dashboard_status .wc_status_list{overflow:hidden;margin:0}#woocommerce_dashboard_status .wc_status_list li{width:50%;float:left;padding:0;box-sizing:border-box;margin:0;border-top:1px solid #ececec;color:#aaa}#woocommerce_dashboard_status .wc_status_list li a{display:block;color:#aaa;padding:9px 12px;-webkit-transition:all ease .5s;position:relative;font-size:12px}#woocommerce_dashboard_status .wc_status_list li a .wc_sparkline{width:4em;height:2em;display:block;float:right;position:absolute;right:0;top:50%;margin-right:12px;margin-top:-1.25em}#woocommerce_dashboard_status .wc_status_list li a strong{font-size:18px;line-height:1.2em;font-weight:400;display:block;color:#21759b}#woocommerce_dashboard_status .wc_status_list li a:hover{color:#2ea2cc}#woocommerce_dashboard_status .wc_status_list li a:hover strong,#woocommerce_dashboard_status .wc_status_list li a:hover:before{color:#2ea2cc!important}#woocommerce_dashboard_status .wc_status_list li a:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0 12px 12px 0;text-indent:0;top:0;left:0;height:100%;text-align:center;content:"";font-size:2em;position:relative;width:auto;line-height:1.2em;color:#464646;float:left}#woocommerce_dashboard_status .wc_status_list li.best-seller-this-month,#woocommerce_dashboard_status .wc_status_list li.sales-this-month{width:100%}#woocommerce_dashboard_status .wc_status_list li:first-child{border-top:0}#woocommerce_dashboard_status .wc_status_list li.sales-this-month a:before{font-family:Dashicons;content:"\f185"}#woocommerce_dashboard_status .wc_status_list li.best-seller-this-month a:before{content:"\e006"}#woocommerce_dashboard_status .wc_status_list li.processing-orders a:before{content:"\e011";color:#7ad03a}#woocommerce_dashboard_status .wc_status_list li.on-hold-orders a:before{content:"\e033";color:#999}#woocommerce_dashboard_status .wc_status_list li.low-in-stock a:before{content:"\e016";color:#ffba00}#woocommerce_dashboard_status .wc_status_list li.out-of-stock a:before{content:"\e013";color:#a00}#woocommerce_dashboard_recent_reviews li{line-height:1.5em;margin-bottom:12px}#woocommerce_dashboard_recent_reviews h4.meta{line-height:1.4;margin:-.2em 0 0;font-weight:400;color:#999}#woocommerce_dashboard_recent_reviews blockquote{padding:0;margin:0}#woocommerce_dashboard_recent_reviews .avatar{float:left;margin:0 10px 5px 0}#woocommerce_dashboard_recent_reviews .star-rating{float:right;overflow:hidden;position:relative;height:1.5em;line-height:1.5;margin-left:.5em;width:5.4em;font-family:WooCommerce!important}#woocommerce_dashboard_recent_reviews .star-rating:before{content:"\e021\e021\e021\e021\e021";color:#b3b3b3;float:left;top:0;left:0;position:absolute;letter-spacing:.1em;letter-spacing:0\9}#woocommerce_dashboard_recent_reviews .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}#woocommerce_dashboard_recent_reviews .star-rating span:before{content:"\e020\e020\e020\e020\e020";top:0;position:absolute;left:0;letter-spacing:.1em;letter-spacing:0\9;color:#9c5d90}#dash-right-now li.product-count a:before{font-family:WooCommerce;content:"\e01d"} \ No newline at end of file +@charset "UTF-8";@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}ul.woocommerce_stats{overflow:hidden;zoom:1}ul.woocommerce_stats li{width:25%;padding:0 1em;text-align:center;float:left;font-size:.8em;border-left:1px solid #fff;border-right:1px solid #ececec;box-sizing:border-box}ul.woocommerce_stats li:first-child{border-left:0}ul.woocommerce_stats li:last-child{border-right:0}#woocommerce_dashboard_status .wc_status_list li.low-in-stock,#woocommerce_dashboard_status .wc_status_list li.processing-orders{border-right:1px solid #ececec}ul.woocommerce_stats strong{font-family:Georgia,'Times New Roman','Bitstream Charter',Times,serif;font-size:4em;line-height:1.2em;font-weight:400;text-align:center;display:block}#woocommerce_dashboard_status .inside{padding:0;margin:0}#woocommerce_dashboard_status .wc_status_list{overflow:hidden;margin:0}#woocommerce_dashboard_status .wc_status_list li{width:50%;float:left;padding:0;box-sizing:border-box;margin:0;border-top:1px solid #ececec;color:#aaa}#woocommerce_dashboard_status .wc_status_list li a{display:block;color:#aaa;padding:9px 12px;-webkit-transition:all ease .5s;position:relative;font-size:12px}#woocommerce_dashboard_status .wc_status_list li a .wc_sparkline{width:4em;height:2em;display:block;float:right;position:absolute;right:0;top:50%;margin-right:12px;margin-top:-1.25em}#woocommerce_dashboard_status .wc_status_list li a strong{font-size:18px;line-height:1.2em;font-weight:400;display:block;color:#21759b}#woocommerce_dashboard_status .wc_status_list li a:hover{color:#2ea2cc}#woocommerce_dashboard_status .wc_status_list li a:hover strong,#woocommerce_dashboard_status .wc_status_list li a:hover::before{color:#2ea2cc!important}#woocommerce_dashboard_status .wc_status_list li a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0 12px 12px 0;text-indent:0;top:0;left:0;height:100%;text-align:center;content:"";font-size:2em;position:relative;width:auto;line-height:1.2em;color:#464646;float:left}#woocommerce_dashboard_status .wc_status_list li.best-seller-this-month,#woocommerce_dashboard_status .wc_status_list li.sales-this-month{width:100%}#woocommerce_dashboard_status .wc_status_list li:first-child{border-top:0}#woocommerce_dashboard_status .wc_status_list li.sales-this-month a::before{font-family:Dashicons;content:'\f185'}#woocommerce_dashboard_status .wc_status_list li.best-seller-this-month a::before{content:'\e006'}#woocommerce_dashboard_status .wc_status_list li.processing-orders a::before{content:'\e011';color:#7ad03a}#woocommerce_dashboard_status .wc_status_list li.on-hold-orders a::before{content:'\e033';color:#999}#woocommerce_dashboard_status .wc_status_list li.low-in-stock a::before{content:'\e016';color:#ffba00}#woocommerce_dashboard_status .wc_status_list li.out-of-stock a::before{content:'\e013';color:#a00}#woocommerce_dashboard_recent_reviews li{line-height:1.5em;margin-bottom:12px}#woocommerce_dashboard_recent_reviews h4.meta{line-height:1.4;margin:-.2em 0 0;font-weight:400;color:#999}#woocommerce_dashboard_recent_reviews blockquote{padding:0;margin:0}#woocommerce_dashboard_recent_reviews .avatar{float:left;margin:0 10px 5px 0}#woocommerce_dashboard_recent_reviews .star-rating{float:right;overflow:hidden;position:relative;height:1.5em;line-height:1.5;margin-left:.5em;width:5.4em;font-family:WooCommerce!important}#woocommerce_dashboard_recent_reviews .star-rating::before{content:'\e021\e021\e021\e021\e021';color:#b3b3b3;float:left;top:0;left:0;position:absolute;letter-spacing:.1em;letter-spacing:0\9}#woocommerce_dashboard_recent_reviews .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}#woocommerce_dashboard_recent_reviews .star-rating span::before{content:'\e020\e020\e020\e020\e020';top:0;position:absolute;left:0;letter-spacing:.1em;letter-spacing:0\9;color:#9c5d90}#dash-right-now li.product-count a::before{font-family:WooCommerce;content:'\e01d'} \ No newline at end of file diff --git a/assets/css/menu.css b/assets/css/menu.css index c6f932b2670..39c4500a205 100644 --- a/assets/css/menu.css +++ b/assets/css/menu.css @@ -1 +1 @@ -@charset "UTF-8";@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}#adminmenu #toplevel_page_woocommerce .menu-icon-generic div.wp-menu-image:before{font-family:WooCommerce!important;content:"\e03d"}#adminmenu #menu-posts-product .menu-icon-post div.wp-menu-image:before,#adminmenu #menu-posts-product .menu-icon-product div.wp-menu-image:before{font-family:WooCommerce!important;content:"\e006"}#adminmenu #toplevel_page_wc-reports .menu-icon-generic div.wp-menu-image:before{font-family:WooCommerce!important;content:"\e023";font-size:1.3em!important}span.mce_woocommerce_shortcodes_button{background-image:none!important;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}span.mce_woocommerce_shortcodes_button:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-size:.9em;line-height:1.2}.wc_plugin_upgrade_notice{font-weight:400;color:#fff;background:#d54d21;padding:1em;margin:9px 0}.wc_plugin_upgrade_notice a{color:#fff;text-decoration:underline}.wc_plugin_upgrade_notice:before{content:"\f348";display:inline-block;font:400 18px/1 dashicons;speak:none;margin:0 8px 0 -2px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top} \ No newline at end of file +@charset "UTF-8";@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}#adminmenu #toplevel_page_woocommerce .menu-icon-generic div.wp-menu-image::before{font-family:WooCommerce!important;content:'\e03d'}#adminmenu #menu-posts-product .menu-icon-post div.wp-menu-image::before,#adminmenu #menu-posts-product .menu-icon-product div.wp-menu-image::before{font-family:WooCommerce!important;content:'\e006'}#adminmenu #toplevel_page_wc-reports .menu-icon-generic div.wp-menu-image::before{font-family:WooCommerce!important;content:'\e023';font-size:1.3em!important}span.mce_woocommerce_shortcodes_button{background-image:none!important;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}span.mce_woocommerce_shortcodes_button::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;margin:0;text-indent:0;position:absolute;top:0;left:0;width:100%;height:100%;text-align:center;content:"";font-size:.9em;line-height:1.2}.wc_plugin_upgrade_notice{font-weight:400;color:#fff;background:#d54d21;padding:1em;margin:9px 0}.wc_plugin_upgrade_notice a{color:#fff;text-decoration:underline}.wc_plugin_upgrade_notice::before{content:'\f348';display:inline-block;font:400 18px/1 dashicons;speak:none;margin:0 8px 0 -2px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top} \ No newline at end of file diff --git a/assets/css/prettyPhoto.css b/assets/css/prettyPhoto.css index 575e9a7c0c9..919822a1101 100644 --- a/assets/css/prettyPhoto.css +++ b/assets/css/prettyPhoto.css @@ -1 +1 @@ -@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}div.pp_woocommerce .pp_content_container{background:#fff;border-radius:3px;box-shadow:0 1px 30px rgba(0,0,0,.25);padding:20px 0}div.pp_woocommerce .pp_content_container:after,div.pp_woocommerce .pp_content_container:before{content:" ";display:table}div.pp_woocommerce .pp_content_container:after{clear:both}div.pp_woocommerce .pp_loaderIcon:before{height:1em;width:1em;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;display:block;content:"";-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}div.pp_woocommerce div.ppt{color:#000}div.pp_woocommerce .pp_gallery ul li a{border:1px solid rgba(0,0,0,.5);background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);border-radius:2px;display:block}div.pp_woocommerce .pp_arrow_next,div.pp_woocommerce .pp_arrow_previous,div.pp_woocommerce .pp_close,div.pp_woocommerce .pp_next:before,div.pp_woocommerce .pp_previous:before,div.pp_woocommerce a.pp_contract,div.pp_woocommerce a.pp_expand{border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);line-height:1em;transition:all ease-in-out .2s;color:#fff!important}div.pp_woocommerce .pp_gallery ul li a:hover,div.pp_woocommerce .pp_gallery ul li.selected a{border-color:#000}div.pp_woocommerce .pp_next:before,div.pp_woocommerce .pp_previous:before{background-color:#444;font-size:16px!important;font-family:WooCommerce;content:"\e00b";text-indent:0;display:none;position:absolute;top:50%;margin-top:-10px;text-align:center}div.pp_woocommerce .pp_next:before:hover,div.pp_woocommerce .pp_previous:before:hover{background-color:#000}div.pp_woocommerce .pp_next:hover:before,div.pp_woocommerce .pp_previous:hover:before{display:block}div.pp_woocommerce .pp_previous:before{left:1em}div.pp_woocommerce .pp_next:before{right:1em;font-family:WooCommerce;content:"\e008"}div.pp_woocommerce .pp_details{margin:0;padding-top:1em}div.pp_woocommerce .pp_description,div.pp_woocommerce .pp_nav{font-size:14px}div.pp_woocommerce .pp_arrow_next,div.pp_woocommerce .pp_arrow_previous,div.pp_woocommerce .pp_nav,div.pp_woocommerce .pp_nav .pp_pause,div.pp_woocommerce .pp_nav p,div.pp_woocommerce .pp_play{margin:0}div.pp_woocommerce .pp_nav{margin-right:1em;position:relative}div.pp_woocommerce .pp_close{background-color:#444;top:-.5em;right:-.5em;font-size:1.618em!important}div.pp_woocommerce .pp_close:hover{background-color:#000}div.pp_woocommerce .pp_close:before{font-family:WooCommerce;content:"\e013";display:block;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;text-indent:0}div.pp_woocommerce .pp_arrow_next,div.pp_woocommerce .pp_arrow_previous{background-color:#444;font-size:16px!important;position:relative;margin-top:-1px}div.pp_woocommerce .pp_arrow_next:hover,div.pp_woocommerce .pp_arrow_previous:hover{background-color:#000}div.pp_woocommerce .pp_arrow_next:before,div.pp_woocommerce .pp_arrow_previous:before{font-family:WooCommerce;content:"\e00b";display:block;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;text-indent:0}div.pp_woocommerce .pp_arrow_previous{margin-right:.5em}div.pp_woocommerce .pp_arrow_next{margin-left:.5em}div.pp_woocommerce .pp_arrow_next:before{content:"\e008"}div.pp_woocommerce a.pp_contract,div.pp_woocommerce a.pp_expand{background-color:#444;right:auto;left:-.5em;top:-.5em;font-size:1.618em!important}div.pp_woocommerce a.pp_contract:hover,div.pp_woocommerce a.pp_expand:hover{background-color:#000}div.pp_woocommerce a.pp_contract:before,div.pp_woocommerce a.pp_expand:before{font-family:WooCommerce;content:"\e005";display:block;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;text-indent:0}div.pp_woocommerce a.pp_contract:before{content:"\e004"}div.pp_woocommerce #respond{margin:0;width:100%;background:0 0;border:none;padding:0}div.pp_woocommerce #respond .form-submit{margin-top:0;float:none}div.pp_woocommerce .pp_inline{padding:0!important}.rtl div.pp_woocommerce .pp_content_container{text-align:right}@media only screen and (max-width:768px){div.pp_woocommerce .pp_contract,div.pp_woocommerce .pp_description,div.pp_woocommerce .pp_expand,div.pp_woocommerce .pp_gallery,div.pp_woocommerce .pp_next,div.pp_woocommerce .pp_previous{display:none!important}div.pp_woocommerce{left:5%!important;right:5%!important;box-sizing:border-box;width:90%!important}div.pp_woocommerce .pp_arrow_next,div.pp_woocommerce .pp_arrow_previous,div.pp_woocommerce .pp_close{height:44px;width:44px;font-size:44px;line-height:44px}div.pp_woocommerce .pp_arrow_next:before,div.pp_woocommerce .pp_arrow_previous:before,div.pp_woocommerce .pp_close:before{font-size:44px}.pp_content,div.pp_woocommerce .pp_details{width:100%!important}.pp_content #pp_full_res>img{width:100%!important;height:auto!important}.currentTextHolder{line-height:3}}div.pp_pic_holder a:focus{outline:0}div.pp_overlay{background:#000;display:none;left:0;position:absolute;top:0;width:100%;z-index:9999}div.pp_pic_holder{display:none;position:absolute;width:100px;z-index:10000}.pp_top{height:20px;position:relative}* html .pp_top{padding:0 20px}.pp_top .pp_left{height:20px;left:0;position:absolute;width:20px}.pp_top .pp_middle{height:20px;left:20px;position:absolute;right:20px}* html .pp_top .pp_middle{left:0;position:static}.pp_top .pp_right{height:20px;left:auto;position:absolute;right:0;top:0;width:20px}.pp_content{height:40px;min-width:40px}* html .pp_content{width:40px}.pp_fade{display:none}.pp_content_container{position:relative;text-align:left;width:100%}.pp_content_container .pp_left{padding-left:20px}.pp_content_container .pp_right{padding-right:20px}.pp_content_container .pp_details{float:left;margin:10px 0 2px}.pp_description{display:none;margin:0}.pp_social{float:left;margin:0}.pp_social .facebook{float:left;margin-left:5px;width:55px;overflow:hidden}.pp_social .twitter{float:left}.pp_nav{clear:right;float:left;margin:3px 10px 0 0}.pp_nav p{float:left;margin:2px 4px;white-space:nowrap}.pp_nav .pp_pause,.pp_nav .pp_play{float:left;margin-right:4px;text-indent:-10000px}a.pp_arrow_next,a.pp_arrow_previous{display:block;float:left;height:15px;margin-top:3px;text-indent:-100000px;width:14px}.pp_hoverContainer{position:absolute;top:0;width:100%;z-index:2000}.pp_gallery{display:none;left:50%;margin-top:-50px;position:absolute;z-index:10000}.pp_gallery div{float:left;overflow:hidden;position:relative}.pp_gallery ul{float:left;height:35px;margin:0 0 0 5px;padding:0;position:relative;white-space:nowrap}.pp_gallery ul a{border:1px solid #000;border:1px solid rgba(0,0,0,.5);display:block;float:left;height:33px;overflow:hidden}.pp_gallery li.selected a,.pp_gallery ul a:hover{border-color:#fff}.pp_gallery ul a img{border:0}.pp_gallery li{display:block;float:left;margin:0 5px 0 0;padding:0}.pp_gallery li.default a{display:block;height:33px;width:50px}.pp_gallery li.default a img{display:none}a.pp_next,a.pp_previous{display:block;height:100%;width:49%;text-indent:-10000px}.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous{margin-top:7px!important}a.pp_next{float:right}a.pp_previous{float:left}a.pp_contract,a.pp_expand{cursor:pointer;display:none;height:20px;position:absolute;right:30px;text-indent:-10000px;top:10px;width:20px;z-index:20000}a.pp_close{position:absolute;right:0;top:0;display:block;text-indent:-10000px}.pp_bottom{height:20px;position:relative}* html .pp_bottom{padding:0 20px}.pp_bottom .pp_left{height:20px;left:0;position:absolute;width:20px}.pp_bottom .pp_middle{height:20px;left:20px;position:absolute;right:20px}* html .pp_bottom .pp_middle{left:0;position:static}.pp_bottom .pp_right{height:20px;left:auto;position:absolute;right:0;top:0;width:20px}.pp_loaderIcon{display:block;height:24px;left:50%;margin:-12px 0 0 -12px;position:absolute;top:50%;width:24px}#pp_full_res .pp_inline{text-align:left}div.ppt{color:#fff!important;font-weight:700;display:none;font-size:17px;margin:0 0 5px 15px;z-index:9999} \ No newline at end of file +@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}div.pp_woocommerce .pp_content_container{background:#fff;border-radius:3px;box-shadow:0 1px 30px rgba(0,0,0,.25);padding:20px 0}div.pp_woocommerce .pp_content_container::after,div.pp_woocommerce .pp_content_container::before{content:' ';display:table}div.pp_woocommerce .pp_content_container::after{clear:both}div.pp_woocommerce .pp_loaderIcon::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}div.pp_woocommerce div.ppt{color:#000}div.pp_woocommerce .pp_gallery ul li a{border:1px solid rgba(0,0,0,.5);background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2);border-radius:2px;display:block}div.pp_woocommerce .pp_arrow_next,div.pp_woocommerce .pp_arrow_previous,div.pp_woocommerce .pp_close,div.pp_woocommerce .pp_next::before,div.pp_woocommerce .pp_previous::before,div.pp_woocommerce a.pp_contract,div.pp_woocommerce a.pp_expand{border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);line-height:1em;transition:all ease-in-out .2s;color:#fff!important}div.pp_woocommerce .pp_gallery ul li a:hover,div.pp_woocommerce .pp_gallery ul li.selected a{border-color:#000}div.pp_woocommerce .pp_next::before,div.pp_woocommerce .pp_previous::before{background-color:#444;font-size:16px!important;font-family:WooCommerce;content:'\e00b';text-indent:0;display:none;position:absolute;top:50%;margin-top:-10px;text-align:center}div.pp_woocommerce .pp_next::before:hover,div.pp_woocommerce .pp_previous::before:hover{background-color:#000}div.pp_woocommerce .pp_next:hover::before,div.pp_woocommerce .pp_previous:hover::before{display:block}div.pp_woocommerce .pp_previous::before{left:1em}div.pp_woocommerce .pp_next::before{right:1em;font-family:WooCommerce;content:'\e008'}div.pp_woocommerce .pp_details{margin:0;padding-top:1em}div.pp_woocommerce .pp_description,div.pp_woocommerce .pp_nav{font-size:14px}div.pp_woocommerce .pp_arrow_next,div.pp_woocommerce .pp_arrow_previous,div.pp_woocommerce .pp_nav,div.pp_woocommerce .pp_nav .pp_pause,div.pp_woocommerce .pp_nav p,div.pp_woocommerce .pp_play{margin:0}div.pp_woocommerce .pp_nav{margin-right:1em;position:relative}div.pp_woocommerce .pp_close{background-color:#444;top:-.5em;right:-.5em;font-size:1.618em!important}div.pp_woocommerce .pp_close:hover{background-color:#000}div.pp_woocommerce .pp_close::before{font-family:WooCommerce;content:'\e013';display:block;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;text-indent:0}div.pp_woocommerce .pp_arrow_next,div.pp_woocommerce .pp_arrow_previous{background-color:#444;font-size:16px!important;position:relative;margin-top:-1px}div.pp_woocommerce .pp_arrow_next:hover,div.pp_woocommerce .pp_arrow_previous:hover{background-color:#000}div.pp_woocommerce .pp_arrow_next::before,div.pp_woocommerce .pp_arrow_previous::before{font-family:WooCommerce;content:'\e00b';display:block;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;text-indent:0}div.pp_woocommerce .pp_arrow_previous{margin-right:.5em}div.pp_woocommerce .pp_arrow_next{margin-left:.5em}div.pp_woocommerce .pp_arrow_next::before{content:'\e008'}div.pp_woocommerce a.pp_contract,div.pp_woocommerce a.pp_expand{background-color:#444;right:auto;left:-.5em;top:-.5em;font-size:1.618em!important}div.pp_woocommerce a.pp_contract:hover,div.pp_woocommerce a.pp_expand:hover{background-color:#000}div.pp_woocommerce a.pp_contract::before,div.pp_woocommerce a.pp_expand::before{font-family:WooCommerce;content:'\e005';display:block;position:absolute;top:0;left:0;right:0;bottom:0;text-align:center;text-indent:0}div.pp_woocommerce a.pp_contract::before{content:'\e004'}div.pp_woocommerce #respond{margin:0;width:100%;background:0 0;border:none;padding:0}div.pp_woocommerce #respond .form-submit{margin-top:0;float:none}div.pp_woocommerce .pp_inline{padding:0!important}.rtl div.pp_woocommerce .pp_content_container{text-align:right}@media only screen and (max-width:768px){div.pp_woocommerce .pp_contract,div.pp_woocommerce .pp_description,div.pp_woocommerce .pp_expand,div.pp_woocommerce .pp_gallery,div.pp_woocommerce .pp_next,div.pp_woocommerce .pp_previous{display:none!important}div.pp_woocommerce{left:5%!important;right:5%!important;box-sizing:border-box;width:90%!important}div.pp_woocommerce .pp_arrow_next,div.pp_woocommerce .pp_arrow_previous,div.pp_woocommerce .pp_close{height:44px;width:44px;font-size:44px;line-height:44px}div.pp_woocommerce .pp_arrow_next::before,div.pp_woocommerce .pp_arrow_previous::before,div.pp_woocommerce .pp_close::before{font-size:44px}.pp_content,div.pp_woocommerce .pp_details{width:100%!important}.pp_content #pp_full_res>img{width:100%!important;height:auto!important}.currentTextHolder{line-height:3}}div.pp_pic_holder a:focus{outline:0}div.pp_overlay{background:#000;display:none;left:0;position:absolute;top:0;width:100%;z-index:9999}div.pp_pic_holder{display:none;position:absolute;width:100px;z-index:10000}.pp_top{height:20px;position:relative}* html .pp_top{padding:0 20px}.pp_top .pp_left{height:20px;left:0;position:absolute;width:20px}.pp_top .pp_middle{height:20px;left:20px;position:absolute;right:20px}* html .pp_top .pp_middle{left:0;position:static}.pp_top .pp_right{height:20px;left:auto;position:absolute;right:0;top:0;width:20px}.pp_content{height:40px;min-width:40px}* html .pp_content{width:40px}.pp_fade{display:none}.pp_content_container{position:relative;text-align:left;width:100%}.pp_content_container .pp_left{padding-left:20px}.pp_content_container .pp_right{padding-right:20px}.pp_content_container .pp_details{float:left;margin:10px 0 2px}.pp_description{display:none;margin:0}.pp_social{float:left;margin:0}.pp_social .facebook{float:left;margin-left:5px;width:55px;overflow:hidden}.pp_social .twitter{float:left}.pp_nav{clear:right;float:left;margin:3px 10px 0 0}.pp_nav p{float:left;margin:2px 4px;white-space:nowrap}.pp_nav .pp_pause,.pp_nav .pp_play{float:left;margin-right:4px;text-indent:-10000px}a.pp_arrow_next,a.pp_arrow_previous{display:block;float:left;height:15px;margin-top:3px;text-indent:-100000px;width:14px}.pp_hoverContainer{position:absolute;top:0;width:100%;z-index:2000}.pp_gallery{display:none;left:50%;margin-top:-50px;position:absolute;z-index:10000}.pp_gallery div{float:left;overflow:hidden;position:relative}.pp_gallery ul{float:left;height:35px;margin:0 0 0 5px;padding:0;position:relative;white-space:nowrap}.pp_gallery ul a{border:1px solid #000;border:1px solid rgba(0,0,0,.5);display:block;float:left;height:33px;overflow:hidden}.pp_gallery li.selected a,.pp_gallery ul a:hover{border-color:#fff}.pp_gallery ul a img{border:0}.pp_gallery li{display:block;float:left;margin:0 5px 0 0;padding:0}.pp_gallery li.default a{display:block;height:33px;width:50px}.pp_gallery li.default a img{display:none}a.pp_next,a.pp_previous{display:block;height:100%;width:49%;text-indent:-10000px}.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous{margin-top:7px!important}a.pp_next{float:right}a.pp_previous{float:left}a.pp_contract,a.pp_expand{cursor:pointer;display:none;height:20px;position:absolute;right:30px;text-indent:-10000px;top:10px;width:20px;z-index:20000}a.pp_close{position:absolute;right:0;top:0;display:block;text-indent:-10000px}.pp_bottom{height:20px;position:relative}* html .pp_bottom{padding:0 20px}.pp_bottom .pp_left{height:20px;left:0;position:absolute;width:20px}.pp_bottom .pp_middle{height:20px;left:20px;position:absolute;right:20px}* html .pp_bottom .pp_middle{left:0;position:static}.pp_bottom .pp_right{height:20px;left:auto;position:absolute;right:0;top:0;width:20px}.pp_loaderIcon{display:block;height:24px;left:50%;margin:-12px 0 0 -12px;position:absolute;top:50%;width:24px}#pp_full_res .pp_inline{text-align:left}div.ppt{color:#fff!important;font-weight:700;display:none;font-size:17px;margin:0 0 5px 15px;z-index:9999} \ No newline at end of file diff --git a/assets/css/wc-setup.css b/assets/css/wc-setup.css index 0ab82e2b8e9..48bb09a9411 100644 --- a/assets/css/wc-setup.css +++ b/assets/css/wc-setup.css @@ -1 +1 @@ -.wc-setup-content p,.wc-setup-content table{font-size:1em;line-height:1.75em;color:#666}body{margin:100px auto 24px;box-shadow:none;background:#f1f1f1;padding:0}#wc-logo{border:0;margin:0 0 24px;padding:0;text-align:center}#wc-logo img{max-width:50%}.wc-setup-content{box-shadow:0 1px 3px rgba(0,0,0,.13);padding:24px 24px 0;background:#fff;overflow:hidden;zoom:1}.wc-setup-content h1,.wc-setup-content h2,.wc-setup-content h3,.wc-setup-content table{margin:0 0 24px;border:0;padding:0;color:#666;clear:none}.wc-setup-content p{margin:0 0 24px}.wc-setup-content a{color:#a16696}.wc-setup-content a:focus,.wc-setup-content a:hover{color:#111}.wc-setup-content .form-table th{width:35%;vertical-align:top;font-weight:400}.wc-setup-content .form-table td{vertical-align:top}.wc-setup-content .form-table td input,.wc-setup-content .form-table td select{width:100%;box-sizing:border-box}.wc-setup-content .form-table td input[size]{width:auto}.wc-setup-content .form-table td .description{line-height:1.5em;display:block;margin-top:.25em;color:#999;font-style:italic}.wc-setup-content .form-table td .input-checkbox,.wc-setup-content .form-table td .input-radio{width:auto;box-sizing:inherit;padding:inherit;margin:0 .5em 0 0;box-shadow:none}.wc-setup-content .form-table .section_title td{padding:0}.wc-setup-content .form-table .section_title td h2,.wc-setup-content .form-table .section_title td p{margin:12px 0 0}.wc-setup-content .form-table td,.wc-setup-content .form-table th{padding:12px 0;margin:0;border:0}.wc-setup-content .form-table td:first-child,.wc-setup-content .form-table th:first-child{padding-right:1em}.wc-setup-content table.tax-rates{width:100%;font-size:.92em}.wc-setup-content table.tax-rates th{padding:0;text-align:center;width:auto;vertical-align:middle}.wc-setup-content table.tax-rates td{border:1px solid #f5f5f5;padding:6px;text-align:center;vertical-align:middle}.wc-setup-content table.tax-rates td input{outline:0;border:0;padding:0;box-shadow:none;text-align:center;width:100%}.wc-setup-content table.tax-rates .add,.wc-setup-content table.tax-rates .remove{padding:1em 0 0 1em;line-height:1em;width:0;height:0;display:inline-block;font-size:1em;overflow:hidden}.wc-setup-content table.tax-rates td.sort{cursor:move;color:#ccc}.wc-setup-content table.tax-rates td.sort:before{content:"\f333";font-family:dashicons}.wc-setup-content table.tax-rates td.readonly{background:#f5f5f5}.wc-setup-content table.tax-rates .add{margin:6px 0 0;position:relative}.wc-setup-content table.tax-rates .add:before{content:"\f502";font-family:dashicons;position:absolute;left:0;top:0}.wc-setup-content table.tax-rates .remove{margin:0;position:relative}.wc-setup-content table.tax-rates .remove:before{content:"\f182";font-family:dashicons;position:absolute;left:0;top:0}.wc-setup-content .wc-setup-pages{width:100%;border-top:1px solid #eee}.wc-setup-content .wc-setup-pages thead th{display:none}.wc-setup-content .wc-setup-pages .page-name{width:30%;font-weight:700}.wc-setup-content .wc-setup-pages td,.wc-setup-content .wc-setup-pages th{padding:14px 0;border-bottom:1px solid #eee}.wc-setup-content .wc-setup-pages td:first-child,.wc-setup-content .wc-setup-pages th:first-child{padding-right:9px}.wc-setup-content .wc-setup-pages th{padding-top:0}.wc-setup-content .wc-setup-pages .page-options p{color:#777;margin:6px 0 0 24px;line-height:1.75em}.wc-setup-content .wc-setup-pages .page-options p input{vertical-align:middle;margin:1px 0 0;height:1.75em;width:1.75em;line-height:1.75em}.wc-setup-content .wc-setup-pages .page-options p label{line-height:1}@media screen and (max-width:782px){.wc-setup-content .form-table tbody th{width:auto}}.wc-setup-content .twitter-share-button{float:right}.wc-setup-content .wc-setup-next-steps{overflow:hidden;margin:0 0 24px}.wc-setup-content .wc-setup-next-steps h2{margin-bottom:12px}.wc-setup-content .wc-setup-next-steps .wc-setup-next-steps-first{float:left;width:50%;box-sizing:border-box}.wc-setup-content .wc-setup-next-steps .wc-setup-next-steps-last{float:right;width:50%;box-sizing:border-box}.wc-setup-content .wc-setup-next-steps ul{padding:0 2em 0 0;list-style:none;margin:0 0 -.75em}.wc-setup-content .wc-setup-next-steps ul li a{display:block;padding:0 0 .75em}.wc-setup-content .wc-setup-next-steps ul .setup-product a{background-color:#bb77ae;border-color:#A36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;text-shadow:0 -1px 1px #A36597,1px 0 1px #A36597,0 1px 1px #A36597,-1px 0 1px #A36597;font-size:1em;height:auto;line-height:1.75em;margin:0 0 .75em;opacity:1;padding:1em;text-align:center}.wc-setup-content .wc-setup-next-steps ul .setup-product a:active,.wc-setup-content .wc-setup-next-steps ul .setup-product a:focus,.wc-setup-content .wc-setup-next-steps ul .setup-product a:hover{background:#A36597;border-color:#A36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597}.wc-setup-content .wc-setup-next-steps ul li a:before{color:#82878c;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 10px 0 0;top:1px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.wc-setup-content .wc-setup-next-steps ul .learn-more a:before{content:"\f105"}.wc-setup-content .wc-setup-next-steps ul .video-walkthrough a:before{content:"\f126"}.wc-setup-content .wc-setup-next-steps ul .newsletter a:before{content:"\f465"}.wc-setup-content .updated,.wc-setup-content .woocommerce-tracker{padding:24px 24px 0;margin:0 0 24px;overflow:hidden;background:#f5f5f5}.wc-setup-content .updated p,.wc-setup-content .woocommerce-tracker p{padding:0;margin:0 0 12px}.wc-setup-content .updated p:last-child,.wc-setup-content .woocommerce-tracker p:last-child{margin:0 0 24px}.wc-setup-steps{padding:0 0 24px;margin:0;list-style:none;overflow:hidden;color:#ccc;width:100%;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex}.wc-setup-steps li{width:20%;float:left;padding:0 0 .8em;margin:0;text-align:center;position:relative;border-bottom:4px solid #ccc;line-height:1.4em}.wc-setup-steps li:before{content:"";border:4px solid #ccc;border-radius:100%;width:4px;height:4px;position:absolute;bottom:0;left:50%;margin-left:-6px;margin-bottom:-8px;background:#fff}.wc-setup-steps li.active{border-color:#a16696;color:#a16696}.wc-setup-steps li.active:before{border-color:#a16696}.wc-setup-steps li.done{border-color:#a16696;color:#a16696}.wc-setup-steps li.done:before{border-color:#a16696;background:#a16696}.wc-setup .wc-setup-actions{overflow:hidden}.wc-setup .wc-setup-actions .button{float:right;font-size:1.25em;padding:.5em 1em;line-height:1em;margin-right:.5em;margin-bottom:2px;height:auto;border-radius:4px}.wc-setup .wc-setup-actions .button-primary{background-color:#bb77ae;border-color:#A36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;text-shadow:0 -1px 1px #A36597,1px 0 1px #A36597,0 1px 1px #A36597,-1px 0 1px #A36597;float:right;margin:0;opacity:1}.wc-setup .wc-setup-actions .button-primary:active,.wc-setup .wc-setup-actions .button-primary:focus,.wc-setup .wc-setup-actions .button-primary:hover{background:#A36597;border-color:#A36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #A36597}.wc-return-to-dashboard{font-size:.85em;color:#b5b5b5;margin:1.18em 0;display:block;text-align:center}ul.wc-wizard-payment-gateways{border:1px solid #eee;border-bottom-width:2px;padding:0;margin:0 0 1em;list-style:none;border-radius:4px}ul.wc-wizard-payment-gateways li.wc-wizard-gateway{padding:1.5em 1em 1em 4em;border-top:1px solid #eee;list-style:none;cursor:pointer;color:#555;box-sizing:border-box;clear:both}ul.wc-wizard-payment-gateways li.wc-wizard-gateway:first-child{border-top:0}ul.wc-wizard-payment-gateways li.wc-wizard-gateway.featured{width:50%;float:left;clear:none;border-right:1px solid #eee;border-top:0}ul.wc-wizard-payment-gateways li.wc-wizard-gateway.featured-row-last{border-right:0}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-settings{display:none;margin-bottom:0;cursor:default}ul.wc-wizard-payment-gateways li.wc-wizard-gateway.checked{background:#F7F1F6}ul.wc-wizard-payment-gateways li.wc-wizard-gateway.checked .wc-wizard-gateway-settings{display:table}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-description{font-style:italic}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-description p,ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable{margin:0 0 .5em}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable label{display:block;font-weight:700;vertical-align:middle}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable label img{max-height:2em;vertical-align:middle}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable label:before{content:'';background:#fff;border:2px solid #eee;display:inline-block;float:left;vertical-align:middle;width:2em;height:2em;padding:0;box-sizing:border-box;line-height:1.8em;text-align:center;margin:0 1em 0 -3em;border-radius:4px}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable input{opacity:0;width:0;position:absolute}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable input:checked+label:before{content:"\f147";font-family:dashicons;color:#fff;border-color:#a46497;background:#a46497}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable input:focus+label{outline:#ddd solid 1px} \ No newline at end of file +.wc-setup-content p,.wc-setup-content table{font-size:1em;line-height:1.75em;color:#666}body{margin:100px auto 24px;box-shadow:none;background:#f1f1f1;padding:0}#wc-logo{border:0;margin:0 0 24px;padding:0;text-align:center}#wc-logo img{max-width:50%}.wc-setup-content{box-shadow:0 1px 3px rgba(0,0,0,.13);padding:24px 24px 0;background:#fff;overflow:hidden;zoom:1}.wc-setup-content h1,.wc-setup-content h2,.wc-setup-content h3,.wc-setup-content table{margin:0 0 24px;border:0;padding:0;color:#666;clear:none}.wc-setup-content p{margin:0 0 24px}.wc-setup-content a{color:#a16696}.wc-setup-content a:focus,.wc-setup-content a:hover{color:#111}.wc-setup-content .form-table th{width:35%;vertical-align:top;font-weight:400}.wc-setup-content .form-table td{vertical-align:top}.wc-setup-content .form-table td input,.wc-setup-content .form-table td select{width:100%;box-sizing:border-box}.wc-setup-content .form-table td input[size]{width:auto}.wc-setup-content .form-table td .description{line-height:1.5em;display:block;margin-top:.25em;color:#999;font-style:italic}.wc-setup-content .form-table td .input-checkbox,.wc-setup-content .form-table td .input-radio{width:auto;box-sizing:inherit;padding:inherit;margin:0 .5em 0 0;box-shadow:none}.wc-setup-content .form-table .section_title td{padding:0}.wc-setup-content .form-table .section_title td h2,.wc-setup-content .form-table .section_title td p{margin:12px 0 0}.wc-setup-content .form-table td,.wc-setup-content .form-table th{padding:12px 0;margin:0;border:0}.wc-setup-content .form-table td:first-child,.wc-setup-content .form-table th:first-child{padding-right:1em}.wc-setup-content table.tax-rates{width:100%;font-size:.92em}.wc-setup-content table.tax-rates th{padding:0;text-align:center;width:auto;vertical-align:middle}.wc-setup-content table.tax-rates td{border:1px solid #f5f5f5;padding:6px;text-align:center;vertical-align:middle}.wc-setup-content table.tax-rates td input{outline:0;border:0;padding:0;box-shadow:none;text-align:center;width:100%}.wc-setup-content table.tax-rates .add,.wc-setup-content table.tax-rates .remove{padding:1em 0 0 1em;line-height:1em;width:0;height:0;display:inline-block;font-size:1em;overflow:hidden}.wc-setup-content table.tax-rates td.sort{cursor:move;color:#ccc}.wc-setup-content table.tax-rates td.sort::before{content:'\f333';font-family:dashicons}.wc-setup-content table.tax-rates td.readonly{background:#f5f5f5}.wc-setup-content table.tax-rates .add{margin:6px 0 0;position:relative}.wc-setup-content table.tax-rates .add::before{content:'\f502';font-family:dashicons;position:absolute;left:0;top:0}.wc-setup-content table.tax-rates .remove{margin:0;position:relative}.wc-setup-content table.tax-rates .remove::before{content:'\f182';font-family:dashicons;position:absolute;left:0;top:0}.wc-setup-content .wc-setup-pages{width:100%;border-top:1px solid #eee}.wc-setup-content .wc-setup-pages thead th{display:none}.wc-setup-content .wc-setup-pages .page-name{width:30%;font-weight:700}.wc-setup-content .wc-setup-pages td,.wc-setup-content .wc-setup-pages th{padding:14px 0;border-bottom:1px solid #eee}.wc-setup-content .wc-setup-pages td:first-child,.wc-setup-content .wc-setup-pages th:first-child{padding-right:9px}.wc-setup-content .wc-setup-pages th{padding-top:0}.wc-setup-content .wc-setup-pages .page-options p{color:#777;margin:6px 0 0 24px;line-height:1.75em}.wc-setup-content .wc-setup-pages .page-options p input{vertical-align:middle;margin:1px 0 0;height:1.75em;width:1.75em;line-height:1.75em}.wc-setup-content .wc-setup-pages .page-options p label{line-height:1}@media screen and (max-width:782px){.wc-setup-content .form-table tbody th{width:auto}}.wc-setup-content .twitter-share-button{float:right}.wc-setup-content .wc-setup-next-steps{overflow:hidden;margin:0 0 24px}.wc-setup-content .wc-setup-next-steps h2{margin-bottom:12px}.wc-setup-content .wc-setup-next-steps .wc-setup-next-steps-first{float:left;width:50%;box-sizing:border-box}.wc-setup-content .wc-setup-next-steps .wc-setup-next-steps-last{float:right;width:50%;box-sizing:border-box}.wc-setup-content .wc-setup-next-steps ul{padding:0 2em 0 0;list-style:none;margin:0 0 -.75em}.wc-setup-content .wc-setup-next-steps ul li a{display:block;padding:0 0 .75em}.wc-setup-content .wc-setup-next-steps ul .setup-product a{background-color:#bb77ae;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;text-shadow:0 -1px 1px #a36597,1px 0 1px #a36597,0 1px 1px #a36597,-1px 0 1px #a36597;font-size:1em;height:auto;line-height:1.75em;margin:0 0 .75em;opacity:1;padding:1em;text-align:center}.wc-setup-content .wc-setup-next-steps ul .setup-product a:active,.wc-setup-content .wc-setup-next-steps ul .setup-product a:focus,.wc-setup-content .wc-setup-next-steps ul .setup-product a:hover{background:#a36597;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.wc-setup-content .wc-setup-next-steps ul li a::before{color:#82878c;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 10px 0 0;top:1px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.wc-setup-content .wc-setup-next-steps ul .learn-more a::before{content:'\f105'}.wc-setup-content .wc-setup-next-steps ul .video-walkthrough a::before{content:'\f126'}.wc-setup-content .wc-setup-next-steps ul .newsletter a::before{content:'\f465'}.wc-setup-content .updated,.wc-setup-content .woocommerce-tracker{padding:24px 24px 0;margin:0 0 24px;overflow:hidden;background:#f5f5f5}.wc-setup-content .updated p,.wc-setup-content .woocommerce-tracker p{padding:0;margin:0 0 12px}.wc-setup-content .updated p:last-child,.wc-setup-content .woocommerce-tracker p:last-child{margin:0 0 24px}.wc-setup-steps{padding:0 0 24px;margin:0;list-style:none;overflow:hidden;color:#ccc;width:100%;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex}.wc-setup-steps li{width:20%;float:left;padding:0 0 .8em;margin:0;text-align:center;position:relative;border-bottom:4px solid #ccc;line-height:1.4em}.wc-setup-steps li::before{content:'';border:4px solid #ccc;border-radius:100%;width:4px;height:4px;position:absolute;bottom:0;left:50%;margin-left:-6px;margin-bottom:-8px;background:#fff}.wc-setup-steps li.active{border-color:#a16696;color:#a16696}.wc-setup-steps li.active::before{border-color:#a16696}.wc-setup-steps li.done{border-color:#a16696;color:#a16696}.wc-setup-steps li.done::before{border-color:#a16696;background:#a16696}.wc-setup .wc-setup-actions{overflow:hidden}.wc-setup .wc-setup-actions .button{float:right;font-size:1.25em;padding:.5em 1em;line-height:1em;margin-right:.5em;margin-bottom:2px;height:auto;border-radius:4px}.wc-setup .wc-setup-actions .button-primary{background-color:#bb77ae;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;text-shadow:0 -1px 1px #a36597,1px 0 1px #a36597,0 1px 1px #a36597,-1px 0 1px #a36597;float:right;margin:0;opacity:1}.wc-setup .wc-setup-actions .button-primary:active,.wc-setup .wc-setup-actions .button-primary:focus,.wc-setup .wc-setup-actions .button-primary:hover{background:#a36597;border-color:#a36597;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 #a36597}.wc-return-to-dashboard{font-size:.85em;color:#b5b5b5;margin:1.18em 0;display:block;text-align:center}ul.wc-wizard-payment-gateways{border:1px solid #eee;border-bottom-width:2px;padding:0;margin:0 0 1em;list-style:none;border-radius:4px}ul.wc-wizard-payment-gateways li.wc-wizard-gateway{padding:1.5em 1em 1em 4em;border-top:1px solid #eee;list-style:none;cursor:pointer;color:#555;box-sizing:border-box;clear:both}ul.wc-wizard-payment-gateways li.wc-wizard-gateway:first-child{border-top:0}ul.wc-wizard-payment-gateways li.wc-wizard-gateway.featured{width:50%;float:left;clear:none;border-right:1px solid #eee;border-top:0}ul.wc-wizard-payment-gateways li.wc-wizard-gateway.featured-row-last{border-right:0}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-settings{display:none;margin-bottom:0;cursor:default}ul.wc-wizard-payment-gateways li.wc-wizard-gateway.checked{background:#f7f1f6}ul.wc-wizard-payment-gateways li.wc-wizard-gateway.checked .wc-wizard-gateway-settings{display:table}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-description{font-style:italic}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-description p,ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable{margin:0 0 .5em}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable label{display:block;font-weight:700;vertical-align:middle}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable label img{max-height:2em;vertical-align:middle}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable label::before{content:'';background:#fff;border:2px solid #eee;display:inline-block;float:left;vertical-align:middle;width:2em;height:2em;padding:0;box-sizing:border-box;line-height:1.8em;text-align:center;margin:0 1em 0 -3em;border-radius:4px}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable input{opacity:0;width:0;position:absolute}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable input:checked+label::before{content:'\f147';font-family:dashicons;color:#fff;border-color:#a46497;background:#a46497}ul.wc-wizard-payment-gateways li.wc-wizard-gateway .wc-wizard-gateway-enable input:focus+label{outline:#ddd solid 1px} \ No newline at end of file diff --git a/assets/css/woocommerce-layout.css b/assets/css/woocommerce-layout.css index bd299171443..464c1d72776 100644 --- a/assets/css/woocommerce-layout.css +++ b/assets/css/woocommerce-layout.css @@ -1 +1 @@ -.woocommerce #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce #content div.product div.thumbnails:after,.woocommerce #content div.product div.thumbnails:before,.woocommerce .col2-set:after,.woocommerce .col2-set:before,.woocommerce div.product .woocommerce-tabs ul.tabs:after,.woocommerce div.product .woocommerce-tabs ul.tabs:before,.woocommerce div.product div.thumbnails:after,.woocommerce div.product div.thumbnails:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page #content div.product div.thumbnails:after,.woocommerce-page #content div.product div.thumbnails:before,.woocommerce-page .col2-set:after,.woocommerce-page .col2-set:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page div.product div.thumbnails:after,.woocommerce-page div.product div.thumbnails:before{content:" ";display:table}.woocommerce #content div.product .woocommerce-tabs,.woocommerce #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce #content div.product div.thumbnails a.first,.woocommerce #content div.product div.thumbnails:after,.woocommerce .cart-collaterals:after,.woocommerce .col2-set:after,.woocommerce .woocommerce-pagination ul.page-numbers:after,.woocommerce div.product .woocommerce-tabs,.woocommerce div.product .woocommerce-tabs ul.tabs:after,.woocommerce div.product div.thumbnails a.first,.woocommerce div.product div.thumbnails:after,.woocommerce ul.products,.woocommerce ul.products li.first,.woocommerce ul.products:after,.woocommerce-page #content div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page #content div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails:after,.woocommerce-page .cart-collaterals:after,.woocommerce-page .col2-set:after,.woocommerce-page .woocommerce-pagination ul.page-numbers:after,.woocommerce-page div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails:after,.woocommerce-page ul.products,.woocommerce-page ul.products li.first,.woocommerce-page ul.products:after{clear:both}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%}.woocommerce .col2-set .col-1,.woocommerce-page .col2-set .col-1{float:left;width:48%}.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-2{float:right;width:48%}.woocommerce img,.woocommerce-page img{height:auto;max-width:100%}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{float:left;width:48%}.woocommerce #content div.product div.thumbnails a,.woocommerce div.product div.thumbnails a,.woocommerce-page #content div.product div.thumbnails a,.woocommerce-page div.product div.thumbnails a{float:left;width:30.75%;margin-right:3.8%;margin-bottom:1em}.woocommerce #content div.product div.thumbnails a.last,.woocommerce div.product div.thumbnails a.last,.woocommerce-page #content div.product div.thumbnails a.last,.woocommerce-page div.product div.thumbnails a.last{margin-right:0}.woocommerce #content div.product div.thumbnails.columns-1 a,.woocommerce div.product div.thumbnails.columns-1 a,.woocommerce-page #content div.product div.thumbnails.columns-1 a,.woocommerce-page div.product div.thumbnails.columns-1 a{width:100%;margin-right:0;float:none}.woocommerce #content div.product div.thumbnails.columns-2 a,.woocommerce div.product div.thumbnails.columns-2 a,.woocommerce-page #content div.product div.thumbnails.columns-2 a,.woocommerce-page div.product div.thumbnails.columns-2 a{width:48%}.woocommerce #content div.product div.thumbnails.columns-4 a,.woocommerce div.product div.thumbnails.columns-4 a,.woocommerce-page #content div.product div.thumbnails.columns-4 a,.woocommerce-page div.product div.thumbnails.columns-4 a{width:22.05%}.woocommerce #content div.product div.thumbnails.columns-5 a,.woocommerce div.product div.thumbnails.columns-5 a,.woocommerce-page #content div.product div.thumbnails.columns-5 a,.woocommerce-page div.product div.thumbnails.columns-5 a{width:16.9%}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{float:right;width:48%}.woocommerce #content div.product .woocommerce-tabs ul.tabs li,.woocommerce div.product .woocommerce-tabs ul.tabs li,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li,.woocommerce-page div.product .woocommerce-tabs ul.tabs li{display:inline-block}.woocommerce #content div.product #reviews .comment:after,.woocommerce #content div.product #reviews .comment:before,.woocommerce .woocommerce-pagination ul.page-numbers:after,.woocommerce .woocommerce-pagination ul.page-numbers:before,.woocommerce div.product #reviews .comment:after,.woocommerce div.product #reviews .comment:before,.woocommerce ul.products:after,.woocommerce ul.products:before,.woocommerce-page #content div.product #reviews .comment:after,.woocommerce-page #content div.product #reviews .comment:before,.woocommerce-page .woocommerce-pagination ul.page-numbers:after,.woocommerce-page .woocommerce-pagination ul.page-numbers:before,.woocommerce-page div.product #reviews .comment:after,.woocommerce-page div.product #reviews .comment:before,.woocommerce-page ul.products:after,.woocommerce-page ul.products:before{content:" ";display:table}.woocommerce #content div.product #reviews .comment:after,.woocommerce div.product #reviews .comment:after,.woocommerce-page #content div.product #reviews .comment:after,.woocommerce-page div.product #reviews .comment:after{clear:both}.woocommerce #content div.product #reviews .comment img,.woocommerce div.product #reviews .comment img,.woocommerce-page #content div.product #reviews .comment img,.woocommerce-page div.product #reviews .comment img{float:right;height:auto}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{float:left;margin:0 3.8% 2.992em 0;padding:0;position:relative;width:22.05%}.woocommerce ul.products li.last,.woocommerce-page ul.products li.last{margin-right:0}.woocommerce-page.columns-1 ul.products li.product,.woocommerce.columns-1 ul.products li.product{width:100%;margin-right:0}.woocommerce-page.columns-2 ul.products li.product,.woocommerce.columns-2 ul.products li.product{width:48%}.woocommerce-page.columns-3 ul.products li.product,.woocommerce.columns-3 ul.products li.product{width:30.75%}.woocommerce-page.columns-5 ul.products li.product,.woocommerce.columns-5 ul.products li.product{width:16.95%}.woocommerce-page.columns-6 ul.products li.product,.woocommerce.columns-6 ul.products li.product{width:13.5%}.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-result-count{float:left}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:right}.woocommerce .woocommerce-pagination ul.page-numbers li,.woocommerce-page .woocommerce-pagination ul.page-numbers li{display:inline-block}.woocommerce #content table.cart img,.woocommerce table.cart img,.woocommerce-page #content table.cart img,.woocommerce-page table.cart img{height:auto}.woocommerce #content table.cart td.actions,.woocommerce table.cart td.actions,.woocommerce-page #content table.cart td.actions,.woocommerce-page table.cart td.actions{text-align:right}.woocommerce #content table.cart td.actions .input-text,.woocommerce table.cart td.actions .input-text,.woocommerce-page #content table.cart td.actions .input-text,.woocommerce-page table.cart td.actions .input-text{width:80px}.woocommerce #content table.cart td.actions .coupon,.woocommerce table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon{float:left}.woocommerce #content table.cart td.actions .coupon label,.woocommerce table.cart td.actions .coupon label,.woocommerce-page #content table.cart td.actions .coupon label,.woocommerce-page table.cart td.actions .coupon label{display:none}.woocommerce .cart-collaterals .shipping_calculator:after,.woocommerce .cart-collaterals .shipping_calculator:before,.woocommerce .cart-collaterals:after,.woocommerce .cart-collaterals:before,.woocommerce form .form-row:after,.woocommerce form .form-row:before,.woocommerce ul.cart_list li:after,.woocommerce ul.cart_list li:before,.woocommerce ul.product_list_widget li:after,.woocommerce ul.product_list_widget li:before,.woocommerce-page .cart-collaterals .shipping_calculator:after,.woocommerce-page .cart-collaterals .shipping_calculator:before,.woocommerce-page .cart-collaterals:after,.woocommerce-page .cart-collaterals:before,.woocommerce-page form .form-row:after,.woocommerce-page form .form-row:before,.woocommerce-page ul.cart_list li:after,.woocommerce-page ul.cart_list li:before,.woocommerce-page ul.product_list_widget li:after,.woocommerce-page ul.product_list_widget li:before{content:" ";display:table}.woocommerce .cart-collaterals,.woocommerce-page .cart-collaterals{width:100%}.woocommerce .cart-collaterals .related,.woocommerce-page .cart-collaterals .related{width:30.75%;float:left}.woocommerce .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .cross-sells{width:48%;float:left}.woocommerce .cart-collaterals .cross-sells ul.products,.woocommerce-page .cart-collaterals .cross-sells ul.products{float:none}.woocommerce .cart-collaterals .cross-sells ul.products li,.woocommerce-page .cart-collaterals .cross-sells ul.products li{width:48%}.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .shipping_calculator{width:48%;clear:right;float:right}.woocommerce .cart-collaterals .shipping_calculator:after,.woocommerce form .form-row-wide,.woocommerce form .form-row:after,.woocommerce ul.cart_list li:after,.woocommerce ul.product_list_widget li:after,.woocommerce-page .cart-collaterals .shipping_calculator:after,.woocommerce-page form .form-row-wide,.woocommerce-page form .form-row:after,.woocommerce-page ul.cart_list li:after,.woocommerce-page ul.product_list_widget li:after{clear:both}.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-2,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-2{width:47%}.woocommerce .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cart_totals{float:right;width:48%}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img,.woocommerce-page ul.cart_list li img,.woocommerce-page ul.product_list_widget li img{float:right;height:auto}.woocommerce form .form-row label,.woocommerce-page form .form-row label{display:block}.woocommerce form .form-row label.checkbox,.woocommerce-page form .form-row label.checkbox{display:inline}.woocommerce form .form-row select,.woocommerce-page form .form-row select{width:100%}.woocommerce form .form-row .input-text,.woocommerce-page form .form-row .input-text{box-sizing:border-box;width:100%}.woocommerce form .form-row-first,.woocommerce form .form-row-last,.woocommerce-page form .form-row-first,.woocommerce-page form .form-row-last{float:left;width:47%;overflow:visible}.woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:right}.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}.woocommerce #payment .terms,.woocommerce #payment .wc-terms-and-conditions,.woocommerce-page #payment .terms,.woocommerce-page #payment .wc-terms-and-conditions{text-align:left;padding:0 1em 0 0;float:left}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:right}.woocommerce-account .woocommerce-MyAccount-navigation{float:left;width:30%}.woocommerce-account .woocommerce-MyAccount-content{float:right;width:68%}.woocommerce-page.left-sidebar #content.twentyeleven{width:58.4%;margin:0 7.6%;float:right}.woocommerce-page.right-sidebar #content.twentyeleven{margin:0 7.6%;width:58.4%;float:left}.twentyfourteen .tfwc{padding:12px 10px 0;max-width:474px;margin:0 auto}.twentyfourteen .tfwc .product .entry-summary{padding:0!important;margin:0 0 1.618em!important}.twentyfourteen .tfwc div.product.hentry.has-post-thumbnail{margin-top:0}.twentyfourteen .tfwc .product .images img{margin-bottom:1em}@media screen and (min-width:673px){.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width:1040px){.twentyfourteen .tfwc{padding-right:15px;padding-left:15px}}@media screen and (min-width:1110px){.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width:1218px){.twentyfourteen .tfwc{margin-right:54px}.full-width .twentyfourteen .tfwc{margin-right:auto}}.twentyfifteen .t15wc{padding-left:7.6923%;padding-right:7.6923%;padding-top:7.6923%;margin-bottom:7.6923%;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.15)}.twentyfifteen .t15wc .page-title{margin-left:0}@media screen and (min-width:38.75em){.twentyfifteen .t15wc{margin-right:7.6923%;margin-left:7.6923%;margin-top:8.3333%}}@media screen and (min-width:59.6875em){.twentyfifteen .t15wc{margin-left:8.3333%;margin-right:8.3333%;padding:10%}.single-product .twentyfifteen .entry-summary{padding:0!important}}.twentysixteen .site-main{margin-right:7.6923%;margin-left:7.6923%}.twentysixteen .entry-summary{margin-right:0;margin-left:0}#content .twentysixteen div.product div.images,#content .twentysixteen div.product div.summary{width:46.42857%}@media screen and (min-width:44.375em){.twentysixteen .site-main{margin-right:23.0769%}}@media screen and (min-width:56.875em){.twentysixteen .site-main{margin-right:0;margin-left:0}.no-sidebar .twentysixteen .site-main{margin-right:15%;margin-left:15%}.no-sidebar .twentysixteen .entry-summary{margin-right:0;margin-left:0}}.rtl .woocommerce .col2-set .col-1,.rtl .woocommerce-page .col2-set .col-1{float:right}.rtl .woocommerce .col2-set .col-2,.rtl .woocommerce-page .col2-set .col-2{float:left}.rtl .woocommerce form .form-row-first,.rtl .woocommerce form .form-row-last,.rtl .woocommerce-page form .form-row-first,.rtl .woocommerce-page form .form-row-last{float:right}.rtl .woocommerce form .form-row-last,.rtl .woocommerce-page form .form-row-last{float:left} \ No newline at end of file +.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce #content div.product div.thumbnails::after,.woocommerce #content div.product div.thumbnails::before,.woocommerce .col2-set::after,.woocommerce .col2-set::before,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product .woocommerce-tabs ul.tabs::before,.woocommerce div.product div.thumbnails::after,.woocommerce div.product div.thumbnails::before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page #content div.product div.thumbnails::before,.woocommerce-page .col2-set::after,.woocommerce-page .col2-set::before,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product .woocommerce-tabs ul.tabs::before,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page div.product div.thumbnails::before{content:' ';display:table}.woocommerce #content div.product .woocommerce-tabs,.woocommerce #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce #content div.product div.thumbnails a.first,.woocommerce #content div.product div.thumbnails::after,.woocommerce .cart-collaterals::after,.woocommerce .col2-set::after,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce div.product .woocommerce-tabs,.woocommerce div.product .woocommerce-tabs ul.tabs::after,.woocommerce div.product div.thumbnails a.first,.woocommerce div.product div.thumbnails::after,.woocommerce ul.products,.woocommerce ul.products li.first,.woocommerce ul.products::after,.woocommerce-page #content div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page #content div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails::after,.woocommerce-page .cart-collaterals::after,.woocommerce-page .col2-set::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs::after,.woocommerce-page div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails::after,.woocommerce-page ul.products,.woocommerce-page ul.products li.first,.woocommerce-page ul.products::after{clear:both}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%}.woocommerce .col2-set .col-1,.woocommerce-page .col2-set .col-1{float:left;width:48%}.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-2{float:right;width:48%}.woocommerce img,.woocommerce-page img{height:auto;max-width:100%}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{float:left;width:48%}.woocommerce #content div.product div.thumbnails a,.woocommerce div.product div.thumbnails a,.woocommerce-page #content div.product div.thumbnails a,.woocommerce-page div.product div.thumbnails a{float:left;width:30.75%;margin-right:3.8%;margin-bottom:1em}.woocommerce #content div.product div.thumbnails a.last,.woocommerce div.product div.thumbnails a.last,.woocommerce-page #content div.product div.thumbnails a.last,.woocommerce-page div.product div.thumbnails a.last{margin-right:0}.woocommerce #content div.product div.thumbnails.columns-1 a,.woocommerce div.product div.thumbnails.columns-1 a,.woocommerce-page #content div.product div.thumbnails.columns-1 a,.woocommerce-page div.product div.thumbnails.columns-1 a{width:100%;margin-right:0;float:none}.woocommerce #content div.product div.thumbnails.columns-2 a,.woocommerce div.product div.thumbnails.columns-2 a,.woocommerce-page #content div.product div.thumbnails.columns-2 a,.woocommerce-page div.product div.thumbnails.columns-2 a{width:48%}.woocommerce #content div.product div.thumbnails.columns-4 a,.woocommerce div.product div.thumbnails.columns-4 a,.woocommerce-page #content div.product div.thumbnails.columns-4 a,.woocommerce-page div.product div.thumbnails.columns-4 a{width:22.05%}.woocommerce #content div.product div.thumbnails.columns-5 a,.woocommerce div.product div.thumbnails.columns-5 a,.woocommerce-page #content div.product div.thumbnails.columns-5 a,.woocommerce-page div.product div.thumbnails.columns-5 a{width:16.9%}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{float:right;width:48%}.woocommerce #content div.product .woocommerce-tabs ul.tabs li,.woocommerce div.product .woocommerce-tabs ul.tabs li,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li,.woocommerce-page div.product .woocommerce-tabs ul.tabs li{display:inline-block}.woocommerce #content div.product #reviews .comment::after,.woocommerce #content div.product #reviews .comment::before,.woocommerce .woocommerce-pagination ul.page-numbers::after,.woocommerce .woocommerce-pagination ul.page-numbers::before,.woocommerce div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::before,.woocommerce ul.products::after,.woocommerce ul.products::before,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::before,.woocommerce-page .woocommerce-pagination ul.page-numbers::after,.woocommerce-page .woocommerce-pagination ul.page-numbers::before,.woocommerce-page div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::before,.woocommerce-page ul.products::after,.woocommerce-page ul.products::before{content:' ';display:table}.woocommerce #content div.product #reviews .comment::after,.woocommerce div.product #reviews .comment::after,.woocommerce-page #content div.product #reviews .comment::after,.woocommerce-page div.product #reviews .comment::after{clear:both}.woocommerce #content div.product #reviews .comment img,.woocommerce div.product #reviews .comment img,.woocommerce-page #content div.product #reviews .comment img,.woocommerce-page div.product #reviews .comment img{float:right;height:auto}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product{float:left;margin:0 3.8% 2.992em 0;padding:0;position:relative;width:22.05%}.woocommerce ul.products li.last,.woocommerce-page ul.products li.last{margin-right:0}.woocommerce-page.columns-1 ul.products li.product,.woocommerce.columns-1 ul.products li.product{width:100%;margin-right:0}.woocommerce-page.columns-2 ul.products li.product,.woocommerce.columns-2 ul.products li.product{width:48%}.woocommerce-page.columns-3 ul.products li.product,.woocommerce.columns-3 ul.products li.product{width:30.75%}.woocommerce-page.columns-5 ul.products li.product,.woocommerce.columns-5 ul.products li.product{width:16.95%}.woocommerce-page.columns-6 ul.products li.product,.woocommerce.columns-6 ul.products li.product{width:13.5%}.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-result-count{float:left}.woocommerce .woocommerce-ordering,.woocommerce-page .woocommerce-ordering{float:right}.woocommerce .woocommerce-pagination ul.page-numbers li,.woocommerce-page .woocommerce-pagination ul.page-numbers li{display:inline-block}.woocommerce #content table.cart img,.woocommerce table.cart img,.woocommerce-page #content table.cart img,.woocommerce-page table.cart img{height:auto}.woocommerce #content table.cart td.actions,.woocommerce table.cart td.actions,.woocommerce-page #content table.cart td.actions,.woocommerce-page table.cart td.actions{text-align:right}.woocommerce #content table.cart td.actions .input-text,.woocommerce table.cart td.actions .input-text,.woocommerce-page #content table.cart td.actions .input-text,.woocommerce-page table.cart td.actions .input-text{width:80px}.woocommerce #content table.cart td.actions .coupon,.woocommerce table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon{float:left}.woocommerce #content table.cart td.actions .coupon label,.woocommerce table.cart td.actions .coupon label,.woocommerce-page #content table.cart td.actions .coupon label,.woocommerce-page table.cart td.actions .coupon label{display:none}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce .cart-collaterals .shipping_calculator::before,.woocommerce .cart-collaterals::after,.woocommerce .cart-collaterals::before,.woocommerce form .form-row::after,.woocommerce form .form-row::before,.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page .cart-collaterals .shipping_calculator::before,.woocommerce-page .cart-collaterals::after,.woocommerce-page .cart-collaterals::before,.woocommerce-page form .form-row::after,.woocommerce-page form .form-row::before,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.cart_list li::before,.woocommerce-page ul.product_list_widget li::after,.woocommerce-page ul.product_list_widget li::before{content:' ';display:table}.woocommerce .cart-collaterals,.woocommerce-page .cart-collaterals{width:100%}.woocommerce .cart-collaterals .related,.woocommerce-page .cart-collaterals .related{width:30.75%;float:left}.woocommerce .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .cross-sells{width:48%;float:left}.woocommerce .cart-collaterals .cross-sells ul.products,.woocommerce-page .cart-collaterals .cross-sells ul.products{float:none}.woocommerce .cart-collaterals .cross-sells ul.products li,.woocommerce-page .cart-collaterals .cross-sells ul.products li{width:48%}.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .shipping_calculator{width:48%;clear:right;float:right}.woocommerce .cart-collaterals .shipping_calculator::after,.woocommerce form .form-row-wide,.woocommerce form .form-row::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li::after,.woocommerce-page .cart-collaterals .shipping_calculator::after,.woocommerce-page form .form-row-wide,.woocommerce-page form .form-row::after,.woocommerce-page ul.cart_list li::after,.woocommerce-page ul.product_list_widget li::after{clear:both}.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce .cart-collaterals .shipping_calculator .col2-set .col-2,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-1,.woocommerce-page .cart-collaterals .shipping_calculator .col2-set .col-2{width:47%}.woocommerce .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cart_totals{float:right;width:48%}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img,.woocommerce-page ul.cart_list li img,.woocommerce-page ul.product_list_widget li img{float:right;height:auto}.woocommerce form .form-row label,.woocommerce-page form .form-row label{display:block}.woocommerce form .form-row label.checkbox,.woocommerce-page form .form-row label.checkbox{display:inline}.woocommerce form .form-row select,.woocommerce-page form .form-row select{width:100%}.woocommerce form .form-row .input-text,.woocommerce-page form .form-row .input-text{box-sizing:border-box;width:100%}.woocommerce form .form-row-first,.woocommerce form .form-row-last,.woocommerce-page form .form-row-first,.woocommerce-page form .form-row-last{float:left;width:47%;overflow:visible}.woocommerce form .form-row-last,.woocommerce-page form .form-row-last{float:right}.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}.woocommerce #payment .terms,.woocommerce #payment .wc-terms-and-conditions,.woocommerce-page #payment .terms,.woocommerce-page #payment .wc-terms-and-conditions{text-align:left;padding:0 1em 0 0;float:left}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:right}.woocommerce-account .woocommerce-MyAccount-navigation{float:left;width:30%}.woocommerce-account .woocommerce-MyAccount-content{float:right;width:68%}.woocommerce-page.left-sidebar #content.twentyeleven{width:58.4%;margin:0 7.6%;float:right}.woocommerce-page.right-sidebar #content.twentyeleven{margin:0 7.6%;width:58.4%;float:left}.twentyfourteen .tfwc{padding:12px 10px 0;max-width:474px;margin:0 auto}.twentyfourteen .tfwc .product .entry-summary{padding:0!important;margin:0 0 1.618em!important}.twentyfourteen .tfwc div.product.hentry.has-post-thumbnail{margin-top:0}.twentyfourteen .tfwc .product .images img{margin-bottom:1em}@media screen and (min-width:673px){.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width:1040px){.twentyfourteen .tfwc{padding-right:15px;padding-left:15px}}@media screen and (min-width:1110px){.twentyfourteen .tfwc{padding-right:30px;padding-left:30px}}@media screen and (min-width:1218px){.twentyfourteen .tfwc{margin-right:54px}.full-width .twentyfourteen .tfwc{margin-right:auto}}.twentyfifteen .t15wc{padding-left:7.6923%;padding-right:7.6923%;padding-top:7.6923%;margin-bottom:7.6923%;background:#fff;box-shadow:0 0 1px rgba(0,0,0,.15)}.twentyfifteen .t15wc .page-title{margin-left:0}@media screen and (min-width:38.75em){.twentyfifteen .t15wc{margin-right:7.6923%;margin-left:7.6923%;margin-top:8.3333%}}@media screen and (min-width:59.6875em){.twentyfifteen .t15wc{margin-left:8.3333%;margin-right:8.3333%;padding:10%}.single-product .twentyfifteen .entry-summary{padding:0!important}}.twentysixteen .site-main{margin-right:7.6923%;margin-left:7.6923%}.twentysixteen .entry-summary{margin-right:0;margin-left:0}#content .twentysixteen div.product div.images,#content .twentysixteen div.product div.summary{width:46.42857%}@media screen and (min-width:44.375em){.twentysixteen .site-main{margin-right:23.0769%}}@media screen and (min-width:56.875em){.twentysixteen .site-main{margin-right:0;margin-left:0}.no-sidebar .twentysixteen .site-main{margin-right:15%;margin-left:15%}.no-sidebar .twentysixteen .entry-summary{margin-right:0;margin-left:0}}.rtl .woocommerce .col2-set .col-1,.rtl .woocommerce-page .col2-set .col-1{float:right}.rtl .woocommerce .col2-set .col-2,.rtl .woocommerce-page .col2-set .col-2{float:left}.rtl .woocommerce form .form-row-first,.rtl .woocommerce form .form-row-last,.rtl .woocommerce-page form .form-row-first,.rtl .woocommerce-page form .form-row-last{float:right}.rtl .woocommerce form .form-row-last,.rtl .woocommerce-page form .form-row-last{float:left} \ No newline at end of file diff --git a/assets/css/woocommerce-smallscreen.css b/assets/css/woocommerce-smallscreen.css index d218b04cc9c..854e157abb0 100644 --- a/assets/css/woocommerce-smallscreen.css +++ b/assets/css/woocommerce-smallscreen.css @@ -1 +1 @@ -.woocommerce table.shop_table_responsive tbody th,.woocommerce table.shop_table_responsive thead,.woocommerce-page table.shop_table_responsive tbody th,.woocommerce-page table.shop_table_responsive thead{display:none}.woocommerce table.shop_table_responsive tbody tr:first-child td:first-child,.woocommerce-page table.shop_table_responsive tbody tr:first-child td:first-child{border-top:0}.woocommerce table.shop_table_responsive tr,.woocommerce-page table.shop_table_responsive tr{display:block}.woocommerce table.shop_table_responsive tr td,.woocommerce-page table.shop_table_responsive tr td{display:block;text-align:right!important}.woocommerce #content table.cart .product-thumbnail,.woocommerce table.cart .product-thumbnail,.woocommerce table.my_account_orders tr td.order-actions:before,.woocommerce table.shop_table_responsive tr td.actions:before,.woocommerce table.shop_table_responsive tr td.product-remove:before,.woocommerce-page #content table.cart .product-thumbnail,.woocommerce-page table.cart .product-thumbnail,.woocommerce-page table.my_account_orders tr td.order-actions:before,.woocommerce-page table.shop_table_responsive tr td.actions:before,.woocommerce-page table.shop_table_responsive tr td.product-remove:before{display:none}.woocommerce table.shop_table_responsive tr td.order-actions,.woocommerce-page table.shop_table_responsive tr td.order-actions{text-align:left!important}.woocommerce table.shop_table_responsive tr td:before,.woocommerce-page table.shop_table_responsive tr td:before{content:attr(data-title) ": ";font-weight:700;float:left}.woocommerce table.shop_table_responsive tr:nth-child(2n) td,.woocommerce-page table.shop_table_responsive tr:nth-child(2n) td{background-color:rgba(0,0,0,.025)}.woocommerce table.my_account_orders tr td.order-actions,.woocommerce-page table.my_account_orders tr td.order-actions{text-align:left}.woocommerce table.my_account_orders tr td.order-actions .button,.woocommerce-page table.my_account_orders tr td.order-actions .button{float:none;margin:.125em .25em .125em 0}.woocommerce .col2-set .col-1,.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-1,.woocommerce-page .col2-set .col-2{float:none;width:100%}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product,.woocommerce-page[class*=columns-] ul.products li.product,.woocommerce[class*=columns-] ul.products li.product{width:48%;float:left;clear:both;margin:0 0 2.992em}.woocommerce ul.products li.product:nth-child(2n),.woocommerce-page ul.products li.product:nth-child(2n),.woocommerce-page[class*=columns-] ul.products li.product:nth-child(2n),.woocommerce[class*=columns-] ul.products li.product:nth-child(2n){float:right;clear:none!important}.woocommerce #content div.product div.images,.woocommerce #content div.product div.summary,.woocommerce div.product div.images,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.images,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.images,.woocommerce-page div.product div.summary{float:none;width:100%}.woocommerce #content table.cart td.actions,.woocommerce table.cart td.actions,.woocommerce-page #content table.cart td.actions,.woocommerce-page table.cart td.actions{text-align:left}.woocommerce #content table.cart td.actions .coupon,.woocommerce table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon{float:none;padding-bottom:.5em}.woocommerce #content table.cart td.actions .coupon:after,.woocommerce #content table.cart td.actions .coupon:before,.woocommerce table.cart td.actions .coupon:after,.woocommerce table.cart td.actions .coupon:before,.woocommerce-page #content table.cart td.actions .coupon:after,.woocommerce-page #content table.cart td.actions .coupon:before,.woocommerce-page table.cart td.actions .coupon:after,.woocommerce-page table.cart td.actions .coupon:before{content:" ";display:table}.woocommerce #content table.cart td.actions .coupon:after,.woocommerce table.cart td.actions .coupon:after,.woocommerce-page #content table.cart td.actions .coupon:after,.woocommerce-page table.cart td.actions .coupon:after{clear:both}.woocommerce #content table.cart td.actions .coupon .button,.woocommerce #content table.cart td.actions .coupon .input-text,.woocommerce #content table.cart td.actions .coupon input,.woocommerce table.cart td.actions .coupon .button,.woocommerce table.cart td.actions .coupon .input-text,.woocommerce table.cart td.actions .coupon input,.woocommerce-page #content table.cart td.actions .coupon .button,.woocommerce-page #content table.cart td.actions .coupon .input-text,.woocommerce-page #content table.cart td.actions .coupon input,.woocommerce-page table.cart td.actions .coupon .button,.woocommerce-page table.cart td.actions .coupon .input-text,.woocommerce-page table.cart td.actions .coupon input{width:48%;box-sizing:border-box}.woocommerce #content table.cart td.actions .coupon .button.alt,.woocommerce #content table.cart td.actions .coupon .input-text+.button,.woocommerce table.cart td.actions .coupon .button.alt,.woocommerce table.cart td.actions .coupon .input-text+.button,.woocommerce-page #content table.cart td.actions .coupon .button.alt,.woocommerce-page #content table.cart td.actions .coupon .input-text+.button,.woocommerce-page table.cart td.actions .coupon .button.alt,.woocommerce-page table.cart td.actions .coupon .input-text+.button{float:right}.woocommerce #content table.cart td.actions .button,.woocommerce table.cart td.actions .button,.woocommerce-page #content table.cart td.actions .button,.woocommerce-page table.cart td.actions .button{display:block;width:100%}.woocommerce .cart-collaterals .cart_totals,.woocommerce .cart-collaterals .cross-sells,.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .shipping_calculator{width:100%;float:none;text-align:left}.woocommerce-page.woocommerce-checkout form.login .form-row,.woocommerce.woocommerce-checkout form.login .form-row{width:100%;float:none}.woocommerce #payment .terms,.woocommerce-page #payment .terms{text-align:left;padding:0}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:none;width:100%;box-sizing:border-box;margin-bottom:1em}.woocommerce .lost_reset_password .form-row-first,.woocommerce .lost_reset_password .form-row-last,.woocommerce-page .lost_reset_password .form-row-first,.woocommerce-page .lost_reset_password .form-row-last{width:100%;float:none;margin-right:0}.woocommerce-account .woocommerce-MyAccount-content,.woocommerce-account .woocommerce-MyAccount-navigation{float:none;width:100%}.single-product .twentythirteen .panel{padding-left:20px!important;padding-right:20px!important} \ No newline at end of file +.woocommerce table.shop_table_responsive tbody th,.woocommerce table.shop_table_responsive thead,.woocommerce-page table.shop_table_responsive tbody th,.woocommerce-page table.shop_table_responsive thead{display:none}.woocommerce table.shop_table_responsive tbody tr:first-child td:first-child,.woocommerce-page table.shop_table_responsive tbody tr:first-child td:first-child{border-top:0}.woocommerce table.shop_table_responsive tr,.woocommerce-page table.shop_table_responsive tr{display:block}.woocommerce table.shop_table_responsive tr td,.woocommerce-page table.shop_table_responsive tr td{display:block;text-align:right!important}.woocommerce #content table.cart .product-thumbnail,.woocommerce table.cart .product-thumbnail,.woocommerce table.my_account_orders tr td.order-actions::before,.woocommerce table.shop_table_responsive tr td.actions::before,.woocommerce table.shop_table_responsive tr td.product-remove::before,.woocommerce-page #content table.cart .product-thumbnail,.woocommerce-page table.cart .product-thumbnail,.woocommerce-page table.my_account_orders tr td.order-actions::before,.woocommerce-page table.shop_table_responsive tr td.actions::before,.woocommerce-page table.shop_table_responsive tr td.product-remove::before{display:none}.woocommerce table.shop_table_responsive tr td.order-actions,.woocommerce-page table.shop_table_responsive tr td.order-actions{text-align:left!important}.woocommerce table.shop_table_responsive tr td::before,.woocommerce-page table.shop_table_responsive tr td::before{content:attr(data-title) ": ";font-weight:700;float:left}.woocommerce table.shop_table_responsive tr:nth-child(2n) td,.woocommerce-page table.shop_table_responsive tr:nth-child(2n) td{background-color:rgba(0,0,0,.025)}.woocommerce table.my_account_orders tr td.order-actions,.woocommerce-page table.my_account_orders tr td.order-actions{text-align:left}.woocommerce table.my_account_orders tr td.order-actions .button,.woocommerce-page table.my_account_orders tr td.order-actions .button{float:none;margin:.125em .25em .125em 0}.woocommerce .col2-set .col-1,.woocommerce .col2-set .col-2,.woocommerce-page .col2-set .col-1,.woocommerce-page .col2-set .col-2{float:none;width:100%}.woocommerce ul.products li.product,.woocommerce-page ul.products li.product,.woocommerce-page[class*=columns-] ul.products li.product,.woocommerce[class*=columns-] ul.products li.product{width:48%;float:left;clear:both;margin:0 0 2.992em}.woocommerce ul.products li.product:nth-child(2n),.woocommerce-page ul.products li.product:nth-child(2n),.woocommerce-page[class*=columns-] ul.products li.product:nth-child(2n),.woocommerce[class*=columns-] ul.products li.product:nth-child(2n){float:right;clear:none!important}.woocommerce #content div.product div.images,.woocommerce #content div.product div.summary,.woocommerce div.product div.images,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.images,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.images,.woocommerce-page div.product div.summary{float:none;width:100%}.woocommerce #content table.cart td.actions,.woocommerce table.cart td.actions,.woocommerce-page #content table.cart td.actions,.woocommerce-page table.cart td.actions{text-align:left}.woocommerce #content table.cart td.actions .coupon,.woocommerce table.cart td.actions .coupon,.woocommerce-page #content table.cart td.actions .coupon,.woocommerce-page table.cart td.actions .coupon{float:none;padding-bottom:.5em}.woocommerce #content table.cart td.actions .coupon::after,.woocommerce #content table.cart td.actions .coupon::before,.woocommerce table.cart td.actions .coupon::after,.woocommerce table.cart td.actions .coupon::before,.woocommerce-page #content table.cart td.actions .coupon::after,.woocommerce-page #content table.cart td.actions .coupon::before,.woocommerce-page table.cart td.actions .coupon::after,.woocommerce-page table.cart td.actions .coupon::before{content:' ';display:table}.woocommerce #content table.cart td.actions .coupon::after,.woocommerce table.cart td.actions .coupon::after,.woocommerce-page #content table.cart td.actions .coupon::after,.woocommerce-page table.cart td.actions .coupon::after{clear:both}.woocommerce #content table.cart td.actions .coupon .button,.woocommerce #content table.cart td.actions .coupon .input-text,.woocommerce #content table.cart td.actions .coupon input,.woocommerce table.cart td.actions .coupon .button,.woocommerce table.cart td.actions .coupon .input-text,.woocommerce table.cart td.actions .coupon input,.woocommerce-page #content table.cart td.actions .coupon .button,.woocommerce-page #content table.cart td.actions .coupon .input-text,.woocommerce-page #content table.cart td.actions .coupon input,.woocommerce-page table.cart td.actions .coupon .button,.woocommerce-page table.cart td.actions .coupon .input-text,.woocommerce-page table.cart td.actions .coupon input{width:48%;box-sizing:border-box}.woocommerce #content table.cart td.actions .coupon .button.alt,.woocommerce #content table.cart td.actions .coupon .input-text+.button,.woocommerce table.cart td.actions .coupon .button.alt,.woocommerce table.cart td.actions .coupon .input-text+.button,.woocommerce-page #content table.cart td.actions .coupon .button.alt,.woocommerce-page #content table.cart td.actions .coupon .input-text+.button,.woocommerce-page table.cart td.actions .coupon .button.alt,.woocommerce-page table.cart td.actions .coupon .input-text+.button{float:right}.woocommerce #content table.cart td.actions .button,.woocommerce table.cart td.actions .button,.woocommerce-page #content table.cart td.actions .button,.woocommerce-page table.cart td.actions .button{display:block;width:100%}.woocommerce .cart-collaterals .cart_totals,.woocommerce .cart-collaterals .cross-sells,.woocommerce .cart-collaterals .shipping_calculator,.woocommerce-page .cart-collaterals .cart_totals,.woocommerce-page .cart-collaterals .cross-sells,.woocommerce-page .cart-collaterals .shipping_calculator{width:100%;float:none;text-align:left}.woocommerce-page.woocommerce-checkout form.login .form-row,.woocommerce.woocommerce-checkout form.login .form-row{width:100%;float:none}.woocommerce #payment .terms,.woocommerce-page #payment .terms{text-align:left;padding:0}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:none;width:100%;box-sizing:border-box;margin-bottom:1em}.woocommerce .lost_reset_password .form-row-first,.woocommerce .lost_reset_password .form-row-last,.woocommerce-page .lost_reset_password .form-row-first,.woocommerce-page .lost_reset_password .form-row-last{width:100%;float:none;margin-right:0}.woocommerce-account .woocommerce-MyAccount-content,.woocommerce-account .woocommerce-MyAccount-navigation{float:none;width:100%}.single-product .twentythirteen .panel{padding-left:20px!important;padding-right:20px!important} \ No newline at end of file diff --git a/assets/css/woocommerce.css b/assets/css/woocommerce.css index 11e25ebf3f5..c406a9a2d0f 100644 --- a/assets/css/woocommerce.css +++ b/assets/css/woocommerce.css @@ -1 +1 @@ -@charset "UTF-8";.clear,.woocommerce .woocommerce-breadcrumb:after{clear:both}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}p.demo_store{position:fixed;top:0;left:0;right:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2)}p.demo_store a{color:#fff}.admin-bar p.demo_store{top:32px}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay:before,.woocommerce .loader:before{height:1em;width:1em;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;display:block;content:"";-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb:after,.woocommerce .woocommerce-breadcrumb:before{content:" ";display:table}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review:after,.woocommerce .products ul:after,.woocommerce div.product form.cart:after,.woocommerce div.product p.cart:after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products:after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images,.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.social{text-align:right;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 0 0 2px}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-left:16px;width:0}.woocommerce div.product div.social iframe{float:left;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 0 0 1em;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart:after,.woocommerce div.product form.cart:before,.woocommerce div.product p.cart:after,.woocommerce div.product p.cart:before{display:table;content:" "}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active:before{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active:after{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li:after,.woocommerce div.product .woocommerce-tabs ul.tabs li:before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:" "}.woocommerce div.product .woocommerce-tabs ul.tabs li:before{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li:after{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs:before{position:absolute;content:" ";width:100%;bottom:0;left:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:left;margin:0 4px 0 0}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-left:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-right:1em}.woocommerce div.product form.cart .variations td.label{padding-right:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:left}.woocommerce div.product form.cart .group_table td.label{padding-right:1em;padding-left:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;left:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul:after,.woocommerce .products ul:before,.woocommerce ul.products:after,.woocommerce ul.products:before{content:" ";display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;right:0;left:auto;margin:-.5em -.5em 0 0}.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-right:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-right:1px solid #d3ced2;padding:0;margin:0;float:left;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;left:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-right:2.618em}.woocommerce #respond input#submit.loading:after,.woocommerce a.button.loading:after,.woocommerce button.button.loading:after,.woocommerce input.button.loading:after{font-family:WooCommerce;content:"\e01c";vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;right:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added:after,.woocommerce a.button.added:after,.woocommerce button.button.added:after,.woocommerce input.button.added:after{font-family:WooCommerce;content:"\e017";margin-left:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review:after,.woocommerce #reviews #comments .add_review:before,.woocommerce #reviews #comments ol.commentlist li .comment-text:after,.woocommerce #reviews #comments ol.commentlist li .comment-text:before,.woocommerce #reviews #comments ol.commentlist:after,.woocommerce #reviews #comments ol.commentlist:before{content:" ";display:table}.woocommerce #reviews h2 small{float:right;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond:after,.woocommerce #reviews #comments ol.commentlist li .comment-text:after,.woocommerce #reviews #comments ol.commentlist:after,.woocommerce .woocommerce-product-rating:after,.woocommerce td.product-name dl.variation:after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:0;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:left;position:absolute;top:0;left:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 0 0 50px;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 0 0 50px}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 0 0 50px}.woocommerce #reviews #comments .commentlist>li:before{content:""}.woocommerce .star-rating{float:right;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating:before{content:"\73\73\73\73\73";color:#d3ced2;float:left;top:0;left:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span:before{content:"\53\53\53\53\53";top:0;position:absolute;left:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating:after,.woocommerce .woocommerce-product-rating:before{content:" ";display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 4px 0 0;float:left}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond:after,.woocommerce #review_form #respond:before{content:" ";display:table}.woocommerce p.stars a:before,.woocommerce p.stars a:hover~a:before{content:"\e021"}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{left:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a:before{display:block;position:absolute;top:0;left:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active:before,.woocommerce p.stars:hover a:before{content:"\e020"}.woocommerce p.stars.selected a.active~a:before{content:"\e021"}.woocommerce p.stars.selected a:not(.active):before{content:"\e020"}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes .alt td,.woocommerce table.shop_attributes .alt th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 -1px 24px 0;text-align:left;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:right}.woocommerce table.my_account_orders .order-actions .button{margin:.125em 0 .125em .25em}.woocommerce td.product-name dl.variation{margin:.25em 0}.woocommerce td.product-name dl.variation:after,.woocommerce td.product-name dl.variation:before{content:" ";display:table}.woocommerce td.product-name dl.variation dd,.woocommerce td.product-name dl.variation dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce td.product-name dl.variation dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}.woocommerce ul.cart_list li dl:after,.woocommerce ul.cart_list li:after,.woocommerce ul.product_list_widget li dl:after,.woocommerce ul.product_list_widget li:after{clear:both}.woocommerce td.product-name dl.variation dd{padding:0 0 .25em}.woocommerce td.product-name dl.variation dd p:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li:after,.woocommerce ul.cart_list li:before,.woocommerce ul.product_list_widget li:after,.woocommerce ul.product_list_widget li:before{content:" ";display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:right;margin-left:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-left:1em;border-left:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl:after,.woocommerce ul.cart_list li dl:before,.woocommerce ul.product_list_widget li dl:after,.woocommerce ul.product_list_widget li dl:before{content:" ";display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}#add_payment_method .wc-proceed-to-checkout:after,.woocommerce .order_details:after,.woocommerce .widget_layered_nav ul li:after,.woocommerce .widget_rating_filter ul li:after,.woocommerce .widget_shopping_cart .buttons:after,.woocommerce-account .addresses .title:after,.woocommerce-account .woocommerce:after,.woocommerce-cart .wc-proceed-to-checkout:after,.woocommerce-checkout .wc-proceed-to-checkout:after,.woocommerce-error:after,.woocommerce-info:after,.woocommerce-message:after,.woocommerce.widget_shopping_cart .buttons:after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-left:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;left:0}.woocommerce .widget_shopping_cart .buttons:after,.woocommerce .widget_shopping_cart .buttons:before,.woocommerce.widget_shopping_cart .buttons:after,.woocommerce.widget_shopping_cart .buttons:before{content:" ";display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-right:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 8px 0 0;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:left;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 0 .25em 22px;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce .order_details{margin:0 0 1.5em;list-style:none}.woocommerce .order_details:after,.woocommerce .order_details:before{content:" ";display:table}.woocommerce .order_details li{float:left;margin-right:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-right:1px dashed #d3ced2;padding-right:2em;margin-left:0;padding-left:0;list-style-type:none}.woocommerce .order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce .order_details li:last-of-type{border:none}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li:after,.woocommerce .widget_layered_nav ul li:before{content:" ";display:table}.woocommerce .widget_layered_nav ul li.chosen a:before,.woocommerce .widget_layered_nav_filters ul li a:before{line-height:1;content:"";font-family:WooCommerce;font-weight:400;color:#a00;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a:before{margin-right:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:left;padding:0 1px 1px 0;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a:before{margin-right:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:right;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:left}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:left;margin-left:.5em;margin-right:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-left:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{left:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{right:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li:after,.woocommerce .widget_rating_filter ul li:before{content:" ";display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.woocommerce .widget_rating_filter ul li.chosen a:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none;color:#a00}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 2em 1em 3.5em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error:after,.woocommerce-error:before,.woocommerce-info:after,.woocommerce-info:before,.woocommerce-message:after,.woocommerce-message:before{content:" ";display:table}.woocommerce-error:before,.woocommerce-info:before,.woocommerce-message:before{font-family:WooCommerce;content:"\e028";display:inline-block;position:absolute;top:1em;left:1.5em}.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:right}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-left:0!important;margin-left:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message:before{content:"\e015";color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info:before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error:before{content:"\e016";color:#b81c23}.woocommerce-account .addresses .title:after,.woocommerce-account .addresses .title:before,.woocommerce-account .woocommerce:after,.woocommerce-account .woocommerce:before{content:" ";display:table}.woocommerce-account .addresses .title h3{float:left}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:right}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 4px 0 0;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout:after,#add_payment_method .wc-proceed-to-checkout:before,.woocommerce-cart .wc-proceed-to-checkout:after,.woocommerce-cart .wc-proceed-to-checkout:before,.woocommerce-checkout .wc-proceed-to-checkout:after,.woocommerce-checkout .wc-proceed-to-checkout:before{content:" ";display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button:after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button:after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button:after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li:after,#add_payment_method #payment ul.payment_methods li:before,#add_payment_method #payment ul.payment_methods:after,#add_payment_method #payment ul.payment_methods:before,.woocommerce-cart #payment ul.payment_methods li:after,.woocommerce-cart #payment ul.payment_methods li:before,.woocommerce-cart #payment ul.payment_methods:after,.woocommerce-cart #payment ul.payment_methods:before,.woocommerce-checkout #payment ul.payment_methods li:after,.woocommerce-checkout #payment ul.payment_methods li:before,.woocommerce-checkout #payment ul.payment_methods:after,.woocommerce-checkout #payment ul.payment_methods:before{content:" ";display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-left:0;border-right:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:left;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:left}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:left;width:100%}#add_payment_method #payment ul.payment_methods li:after,#add_payment_method #payment ul.payment_methods:after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li:after,.woocommerce-cart #payment ul.payment_methods:after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li:after,.woocommerce-checkout #payment ul.payment_methods:after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:left;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:left;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 1em 0 0}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px 0 0 .5em;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-left:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 1em 0 0;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:right .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box:before,.woocommerce-cart #payment div.payment_box:before,.woocommerce-checkout #payment div.payment_box:before{content:"";display:block;border:1em solid #dfdcde;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;left:0;margin:-1em 0 0 2em}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:right;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}.product.has-default-attributes.has-children>.images{opacity:0}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file +@charset "UTF-8";.clear,.woocommerce .woocommerce-breadcrumb::after{clear:both}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);-moz-transform:rotate(360deg);-ms-transform:rotate(360deg);-o-transform:rotate(360deg);transform:rotate(360deg)}}@font-face{font-family:star;src:url(../fonts/star.eot);src:url(../fonts/star.eot?#iefix) format("embedded-opentype"),url(../fonts/star.woff) format("woff"),url(../fonts/star.ttf) format("truetype"),url(../fonts/star.svg#star) format("svg");font-weight:400;font-style:normal}@font-face{font-family:WooCommerce;src:url(../fonts/WooCommerce.eot);src:url(../fonts/WooCommerce.eot?#iefix) format("embedded-opentype"),url(../fonts/WooCommerce.woff) format("woff"),url(../fonts/WooCommerce.ttf) format("truetype"),url(../fonts/WooCommerce.svg#WooCommerce) format("svg");font-weight:400;font-style:normal}p.demo_store{position:fixed;top:0;left:0;right:0;margin:0;width:100%;font-size:1em;padding:1em 0;text-align:center;background-color:#a46497;color:#fff;z-index:99998;box-shadow:0 1px 1em rgba(0,0,0,.2)}p.demo_store a{color:#fff}.admin-bar p.demo_store{top:32px}.woocommerce .blockUI.blockOverlay{position:relative}.woocommerce .blockUI.blockOverlay::before,.woocommerce .loader::before{height:1em;width:1em;display:block;position:absolute;top:50%;left:50%;margin-left:-.5em;margin-top:-.5em;content:'';-webkit-animation:spin 1s ease-in-out infinite;-moz-animation:spin 1s ease-in-out infinite;animation:spin 1s ease-in-out infinite;background:url(../images/icons/loader.svg) center center;background-size:cover;line-height:1;text-align:center;font-size:2em;color:rgba(0,0,0,.75)}.woocommerce a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;border-radius:100%;color:red!important;text-decoration:none;font-weight:700;border:0}.woocommerce a.remove:hover{color:#fff!important;background:red}.woocommerce small.note{display:block;color:#777;font-size:.857em;margin-top:10px}.woocommerce .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb::after,.woocommerce .woocommerce-breadcrumb::before{content:' ';display:table}.woocommerce .woocommerce-breadcrumb a{color:#777}.woocommerce .quantity .qty{width:3.631em;text-align:center}.woocommerce div.product{margin-bottom:0;position:relative}.woocommerce div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #reviews #comments .add_review::after,.woocommerce .products ul::after,.woocommerce div.product form.cart::after,.woocommerce div.product p.cart::after,.woocommerce nav.woocommerce-pagination ul,.woocommerce ul.products::after{clear:both}.woocommerce div.product p.price,.woocommerce div.product span.price{color:#77a464;font-size:1.25em}.woocommerce div.product p.price ins,.woocommerce div.product span.price ins{background:inherit;font-weight:700}.woocommerce div.product p.price del,.woocommerce div.product span.price del{opacity:.5}.woocommerce div.product p.stock{font-size:.92em}.woocommerce div.product .stock{color:#77a464}.woocommerce div.product .out-of-stock{color:red}.woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em}.woocommerce div.product div.images,.woocommerce div.product div.summary{margin-bottom:2em}.woocommerce div.product div.images img{display:block;width:100%;height:auto;box-shadow:none}.woocommerce div.product div.images div.thumbnails{padding-top:1em}.woocommerce div.product div.social{text-align:right;margin:0 0 1em}.woocommerce div.product div.social span{margin:0 0 0 2px}.woocommerce div.product div.social span span{margin:0}.woocommerce div.product div.social span .stButton .chicklets{padding-left:16px;width:0}.woocommerce div.product div.social iframe{float:left;margin-top:3px}.woocommerce div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 0 0 1em;margin:0 0 1.618em;overflow:hidden;position:relative}.woocommerce div.product .woocommerce-tabs ul.tabs li{border:1px solid #d3ced2;background-color:#ebe9eb;display:inline-block;position:relative;z-index:0;border-radius:4px 4px 0 0;margin:0 -5px;padding:0 1em}.woocommerce div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#515151;text-decoration:none}.woocommerce div.product form.cart::after,.woocommerce div.product form.cart::before,.woocommerce div.product p.cart::after,.woocommerce div.product p.cart::before{display:table;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#6b6b6b}.woocommerce div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::before{box-shadow:2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li.active::after{box-shadow:-2px 2px 0 #fff}.woocommerce div.product .woocommerce-tabs ul.tabs li::after,.woocommerce div.product .woocommerce-tabs ul.tabs li::before{border:1px solid #d3ced2;position:absolute;bottom:-1px;width:5px;height:5px;content:' '}.woocommerce div.product .woocommerce-tabs ul.tabs li::before{left:-6px;-webkit-border-bottom-right-radius:4px;-moz-border-bottom-right-radius:4px;border-bottom-right-radius:4px;border-width:0 1px 1px 0;box-shadow:2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs li::after{right:-6px;-webkit-border-bottom-left-radius:4px;-moz-border-bottom-left-radius:4px;border-bottom-left-radius:4px;border-width:0 0 1px 1px;box-shadow:-2px 2px 0 #ebe9eb}.woocommerce div.product .woocommerce-tabs ul.tabs::before{position:absolute;content:' ';width:100%;bottom:0;left:0;border-bottom:1px solid #d3ced2;z-index:1}.woocommerce div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce div.product form.cart,.woocommerce div.product p.cart{margin-bottom:2em}.woocommerce div.product form.cart div.quantity{float:left;margin:0 4px 0 0}.woocommerce div.product form.cart table{border-width:0 0 1px}.woocommerce div.product form.cart table td{padding-left:0}.woocommerce div.product form.cart table div.quantity{float:none;margin:0}.woocommerce div.product form.cart table small.stock{display:block;float:none}.woocommerce div.product form.cart .variations{margin-bottom:1em;border:0;width:100%}.woocommerce div.product form.cart .variations td,.woocommerce div.product form.cart .variations th{border:0;vertical-align:top;line-height:2em}.woocommerce div.product form.cart .variations label{font-weight:700}.woocommerce div.product form.cart .variations select{max-width:100%;min-width:75%;display:inline-block;margin-right:1em}.woocommerce div.product form.cart .variations td.label{padding-right:1em}.woocommerce div.product form.cart .woocommerce-variation-description p{margin-bottom:1em}.woocommerce div.product form.cart .reset_variations{visibility:hidden;font-size:.83em}.woocommerce div.product form.cart .wc-no-matching-variations{display:none}.woocommerce div.product form.cart .button{vertical-align:middle;float:left}.woocommerce div.product form.cart .group_table td.label{padding-right:1em;padding-left:1em}.woocommerce div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em;border:0}.woocommerce span.onsale{min-height:3.236em;min-width:3.236em;padding:.202em;font-weight:700;position:absolute;text-align:center;line-height:3.236;top:-.5em;left:-.5em;margin:0;border-radius:100%;background-color:#77a464;color:#fff;font-size:.857em;-webkit-font-smoothing:antialiased}.woocommerce .products ul,.woocommerce ul.products{margin:0 0 1em;padding:0;list-style:none;clear:both}.woocommerce .products ul::after,.woocommerce .products ul::before,.woocommerce ul.products::after,.woocommerce ul.products::before{content:' ';display:table}.woocommerce .products ul li,.woocommerce ul.products li{list-style:none}.woocommerce ul.products li.product .onsale{top:0;right:0;left:auto;margin:-.5em -.5em 0 0}.woocommerce ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 1em;box-shadow:none}.woocommerce ul.products li.product strong{display:block}.woocommerce ul.products li.product .star-rating{font-size:.857em}.woocommerce ul.products li.product .button{margin-top:1em}.woocommerce ul.products li.product .price{color:#77a464;display:block;font-weight:400;margin-bottom:.5em;font-size:.857em}.woocommerce ul.products li.product .price del{color:inherit;opacity:.5;display:block}.woocommerce ul.products li.product .price ins{background:0 0;font-weight:700}.woocommerce ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(132,132,132,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select{vertical-align:top}.woocommerce nav.woocommerce-pagination{text-align:center}.woocommerce nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;border:1px solid #d3ced2;border-right:0;margin:1px}.woocommerce nav.woocommerce-pagination ul li{border-right:1px solid #d3ced2;padding:0;margin:0;float:left;display:inline;overflow:hidden}.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current{background:#ebe9eb;color:#8a7e88}.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button{font-size:100%;margin:0;line-height:1;cursor:pointer;position:relative;text-decoration:none;overflow:visible;padding:.618em 1em;font-weight:700;border-radius:3px;left:auto;color:#515151;background-color:#ebe9eb;border:0;white-space:nowrap;display:inline-block;background-image:none;box-shadow:none;-webkit-box-shadow:none;text-shadow:none}.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading{opacity:.25;padding-right:2.618em}.woocommerce #respond input#submit.loading::after,.woocommerce a.button.loading::after,.woocommerce button.button.loading::after,.woocommerce input.button.loading::after{font-family:WooCommerce;content:'\e01c';vertical-align:top;-webkit-font-smoothing:antialiased;font-weight:400;position:absolute;top:.618em;right:1em;-webkit-animation:spin 2s linear infinite;-moz-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.woocommerce #respond input#submit.added::after,.woocommerce a.button.added::after,.woocommerce button.button.added::after,.woocommerce input.button.added::after{font-family:WooCommerce;content:'\e017';margin-left:.53em;vertical-align:bottom}.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover{background-color:#dad8da;text-decoration:none;background-image:none;color:#515151}.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt{background-color:#a46497;color:#fff;-webkit-font-smoothing:antialiased}.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover{background-color:#935386;color:#fff}.woocommerce #respond input#submit.alt.disabled,.woocommerce #respond input#submit.alt.disabled:hover,.woocommerce #respond input#submit.alt:disabled,.woocommerce #respond input#submit.alt:disabled:hover,.woocommerce #respond input#submit.alt:disabled[disabled],.woocommerce #respond input#submit.alt:disabled[disabled]:hover,.woocommerce a.button.alt.disabled,.woocommerce a.button.alt.disabled:hover,.woocommerce a.button.alt:disabled,.woocommerce a.button.alt:disabled:hover,.woocommerce a.button.alt:disabled[disabled],.woocommerce a.button.alt:disabled[disabled]:hover,.woocommerce button.button.alt.disabled,.woocommerce button.button.alt.disabled:hover,.woocommerce button.button.alt:disabled,.woocommerce button.button.alt:disabled:hover,.woocommerce button.button.alt:disabled[disabled],.woocommerce button.button.alt:disabled[disabled]:hover,.woocommerce input.button.alt.disabled,.woocommerce input.button.alt.disabled:hover,.woocommerce input.button.alt:disabled,.woocommerce input.button.alt:disabled:hover,.woocommerce input.button.alt:disabled[disabled],.woocommerce input.button.alt:disabled[disabled]:hover{background-color:#a46497;color:#fff}.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce #respond input#submit:disabled[disabled],.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce a.button:disabled[disabled],.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce button.button:disabled[disabled],.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce input.button:disabled[disabled]{color:inherit;cursor:not-allowed;opacity:.5;padding:.618em 1em}.woocommerce #respond input#submit.disabled:hover,.woocommerce #respond input#submit:disabled:hover,.woocommerce #respond input#submit:disabled[disabled]:hover,.woocommerce a.button.disabled:hover,.woocommerce a.button:disabled:hover,.woocommerce a.button:disabled[disabled]:hover,.woocommerce button.button.disabled:hover,.woocommerce button.button:disabled:hover,.woocommerce button.button:disabled[disabled]:hover,.woocommerce input.button.disabled:hover,.woocommerce input.button:disabled:hover,.woocommerce input.button:disabled[disabled]:hover{color:inherit;background-color:#ebe9eb}.woocommerce .cart .button,.woocommerce .cart input.button{float:none}.woocommerce a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #reviews #comments .add_review::after,.woocommerce #reviews #comments .add_review::before,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::before,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce #reviews #comments ol.commentlist::before{content:' ';display:table}.woocommerce #reviews h2 small{float:right;color:#777;font-size:15px;margin:10px 0 0}.woocommerce #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3{margin:0}.woocommerce #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment{height:75px}.woocommerce #reviews #comments h2{clear:none}.woocommerce #review_form #respond::after,.woocommerce #reviews #comments ol.commentlist li .comment-text::after,.woocommerce #reviews #comments ol.commentlist::after,.woocommerce .woocommerce-product-rating::after,.woocommerce td.product-name dl.variation::after{clear:both}.woocommerce #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:0;border:0}.woocommerce #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar{float:left;position:absolute;top:0;left:0;padding:3px;width:32px;height:auto;background:#ebe9eb;border:1px solid #e4e1e3;margin:0;box-shadow:none}.woocommerce #reviews #comments ol.commentlist li .comment-text{margin:0 0 0 50px;border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 0 0 50px}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond{border:1px solid #e4e1e3;border-radius:4px;padding:1em 1em 0;margin:20px 0 0 50px}.woocommerce #reviews #comments .commentlist>li::before{content:''}.woocommerce .star-rating{float:right;overflow:hidden;position:relative;height:1em;line-height:1;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating::before{content:'\73\73\73\73\73';color:#d3ced2;float:left;top:0;left:0;position:absolute}.woocommerce .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span::before{content:'\53\53\53\53\53';top:0;position:absolute;left:0}.woocommerce .woocommerce-product-rating{line-height:2;display:block}.woocommerce .woocommerce-product-rating::after,.woocommerce .woocommerce-product-rating::before{content:' ';display:table}.woocommerce .woocommerce-product-rating .star-rating{margin:.5em 4px 0 0;float:left}.woocommerce .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond{position:static;margin:0;width:auto;padding:0;background:0 0;border:0}.woocommerce #review_form #respond::after,.woocommerce #review_form #respond::before{content:' ';display:table}.woocommerce p.stars a::before,.woocommerce p.stars a:hover~a::before{content:'\e021'}.woocommerce #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input{left:auto}.woocommerce #review_form #respond textarea{box-sizing:border-box;width:100%}.woocommerce p.stars a{position:relative;height:1em;width:1em;text-indent:-999em;display:inline-block;text-decoration:none}.woocommerce p.stars a::before{display:block;position:absolute;top:0;left:0;width:1em;height:1em;line-height:1;font-family:WooCommerce;text-indent:0}.woocommerce table.shop_attributes td,.woocommerce table.shop_attributes th{line-height:1.5;border-bottom:1px dotted rgba(0,0,0,.1);border-top:0;margin:0}.woocommerce p.stars.selected a.active::before,.woocommerce p.stars:hover a::before{content:'\e020'}.woocommerce p.stars.selected a.active~a::before{content:'\e021'}.woocommerce p.stars.selected a:not(.active)::before{content:'\e020'}.woocommerce table.shop_attributes{border:0;border-top:1px dotted rgba(0,0,0,.1);margin-bottom:1.618em;width:100%}.woocommerce table.shop_attributes th{width:150px;font-weight:700;padding:8px}.woocommerce table.shop_attributes td{font-style:italic;padding:0}.woocommerce table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes .alt td,.woocommerce table.shop_attributes .alt th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 -1px 24px 0;text-align:left;width:100%;border-collapse:separate;border-radius:5px}.woocommerce table.shop_table th{font-weight:700;padding:9px 12px}.woocommerce table.shop_table td{border-top:1px solid rgba(0,0,0,.1);padding:6px 12px;vertical-align:middle}.woocommerce table.shop_table td small{font-weight:400}.woocommerce table.shop_table tbody:first-child tr:first-child td,.woocommerce table.shop_table tbody:first-child tr:first-child th{border-top:0}.woocommerce table.shop_table tbody th,.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions{text-align:right}.woocommerce table.my_account_orders .order-actions .button{margin:.125em 0 .125em .25em}.woocommerce td.product-name dl.variation{margin:.25em 0}.woocommerce td.product-name dl.variation::after,.woocommerce td.product-name dl.variation::before{content:' ';display:table}.woocommerce td.product-name dl.variation dd,.woocommerce td.product-name dl.variation dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce td.product-name dl.variation dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li::after,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li::after{clear:both}.woocommerce td.product-name dl.variation dd{padding:0 0 .25em}.woocommerce td.product-name dl.variation dd p:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity{min-width:80px}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li{padding:4px 0;margin:0;list-style:none}.woocommerce ul.cart_list li::after,.woocommerce ul.cart_list li::before,.woocommerce ul.product_list_widget li::after,.woocommerce ul.product_list_widget li::before{content:' ';display:table}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a{display:block;font-weight:700}.woocommerce ul.cart_list li img,.woocommerce ul.product_list_widget li img{float:right;margin-left:4px;width:32px;height:auto;box-shadow:none}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl{margin:0;padding-left:1em;border-left:2px solid rgba(0,0,0,.1)}.woocommerce ul.cart_list li dl::after,.woocommerce ul.cart_list li dl::before,.woocommerce ul.product_list_widget li dl::after,.woocommerce ul.product_list_widget li dl::before{content:' ';display:table}.woocommerce ul.cart_list li dl dd,.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dd,.woocommerce ul.product_list_widget li dl dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce ul.cart_list li dl dt,.woocommerce ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}#add_payment_method .wc-proceed-to-checkout::after,.woocommerce .order_details::after,.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_shopping_cart .buttons::after,.woocommerce-account .addresses .title::after,.woocommerce-account .woocommerce::after,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-error::after,.woocommerce-info::after,.woocommerce-message::after,.woocommerce.widget_shopping_cart .buttons::after{clear:both}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd{padding:0 0 .25em}.woocommerce ul.cart_list li dl dd p:last-child,.woocommerce ul.product_list_widget li dl dd p:last-child{margin-bottom:0}.woocommerce ul.cart_list li .star-rating,.woocommerce ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #ebe9eb;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .cart_list li,.woocommerce.widget_shopping_cart .cart_list li{padding-left:2em;position:relative;padding-top:0}.woocommerce .widget_shopping_cart .cart_list li a.remove,.woocommerce.widget_shopping_cart .cart_list li a.remove{position:absolute;top:0;left:0}.woocommerce .widget_shopping_cart .buttons::after,.woocommerce .widget_shopping_cart .buttons::before,.woocommerce.widget_shopping_cart .buttons::after,.woocommerce.widget_shopping_cart .buttons::before{content:' ';display:table}.woocommerce .widget_shopping_cart .buttons a,.woocommerce.widget_shopping_cart .buttons a{margin-right:5px;margin-bottom:5px}.woocommerce form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder{-webkit-transition:opacity .5s .5s ease;-moz-transition:opacity .5s .5s ease;transition:opacity .5s .5s ease;opacity:0}.woocommerce form .form-row label{line-height:2}.woocommerce form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline{display:inline}.woocommerce form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox{display:inline;margin:-2px 8px 0 0;text-align:center;vertical-align:middle}.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea{box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1}.woocommerce form .form-row textarea{height:4em;line-height:1.5;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row .select2-container{width:100%;line-height:2em}.woocommerce form .form-row.woocommerce-invalid label{color:#a00}.woocommerce form .form-row.woocommerce-invalid .select2-container,.woocommerce form .form-row.woocommerce-invalid input.input-text,.woocommerce form .form-row.woocommerce-invalid select{border-color:#a00}.woocommerce form .form-row.woocommerce-validated .select2-container,.woocommerce form .form-row.woocommerce-validated input.input-text,.woocommerce form .form-row.woocommerce-validated select{border-color:#69bf29}.woocommerce form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register{border:1px solid #d3ced2;padding:20px;margin:2em 0;text-align:left;border-radius:5px}.woocommerce ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li{margin:0;padding:.25em 0 .25em 22px;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method li input{margin:3px .5ex}.woocommerce ul#shipping_method li label{display:inline}.woocommerce ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents{margin:0}.woocommerce .order_details{margin:0 0 1.5em;list-style:none}.woocommerce .order_details::after,.woocommerce .order_details::before{content:' ';display:table}.woocommerce .order_details li{float:left;margin-right:2em;text-transform:uppercase;font-size:.715em;line-height:1;border-right:1px dashed #d3ced2;padding-right:2em;margin-left:0;padding-left:0;list-style-type:none}.woocommerce .order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5}.woocommerce .order_details li:last-of-type{border:none}.woocommerce .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_layered_nav ul li::after,.woocommerce .widget_layered_nav ul li::before{content:' ';display:table}.woocommerce .widget_layered_nav ul li.chosen a::before,.woocommerce .widget_layered_nav_filters ul li a::before{line-height:1;content:"";font-weight:400;color:#a00;font-family:WooCommerce;speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;text-decoration:none}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span{padding:1px 0}.woocommerce .widget_layered_nav ul li.chosen a::before{margin-right:.618em}.woocommerce .widget_layered_nav_filters ul{margin:0;padding:0;border:0;list-style:none;overflow:hidden;zoom:1}.woocommerce .widget_layered_nav_filters ul li{float:left;padding:0 1px 1px 0;list-style:none}.woocommerce .widget_layered_nav_filters ul li a{text-decoration:none}.woocommerce .widget_layered_nav_filters ul li a::before{margin-right:.618em}.woocommerce .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount{text-align:right;line-height:2.4;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:left}.woocommerce .widget_price_filter .ui-slider{position:relative;text-align:left;margin-left:.5em;margin-right:.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1em;height:1em;background-color:#a46497;border-radius:1em;cursor:ew-resize;outline:0;top:-.3em;margin-left:-.5em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;border-radius:1em;background-color:#a46497}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content{border-radius:1em;background-color:#602053;border:0}.woocommerce .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{left:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{right:-1px}.woocommerce .widget_rating_filter ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_rating_filter ul li{padding:0 0 1px;list-style:none}.woocommerce .widget_rating_filter ul li::after,.woocommerce .widget_rating_filter ul li::before{content:' ';display:table}.woocommerce .widget_rating_filter ul li a{padding:1px 0;text-decoration:none}.woocommerce .widget_rating_filter ul li .star-rating{float:none;display:inline-block}.woocommerce .widget_rating_filter ul li.chosen a::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none;color:#a00}.woocommerce-error,.woocommerce-info,.woocommerce-message{padding:1em 2em 1em 3.5em;margin:0 0 2em;position:relative;background-color:#f7f6f7;color:#515151;border-top:3px solid #a46497;list-style:none;width:auto;word-wrap:break-word}.woocommerce-error::after,.woocommerce-error::before,.woocommerce-info::after,.woocommerce-info::before,.woocommerce-message::after,.woocommerce-message::before{content:' ';display:table}.woocommerce-error::before,.woocommerce-info::before,.woocommerce-message::before{font-family:WooCommerce;content:'\e028';display:inline-block;position:absolute;top:1em;left:1.5em}.woocommerce-error .button,.woocommerce-info .button,.woocommerce-message .button{float:right}.woocommerce-error li,.woocommerce-info li,.woocommerce-message li{list-style:none!important;padding-left:0!important;margin-left:0!important}.woocommerce-message{border-top-color:#8fae1b}.woocommerce-message::before{content:'\e015';color:#8fae1b}.woocommerce-info{border-top-color:#1e85be}.woocommerce-info::before{color:#1e85be}.woocommerce-error{border-top-color:#b81c23}.woocommerce-error::before{content:'\e016';color:#b81c23}.woocommerce-account .addresses .title::after,.woocommerce-account .addresses .title::before,.woocommerce-account .woocommerce::after,.woocommerce-account .woocommerce::before{content:' ';display:table}.woocommerce-account .addresses .title h3{float:left}.woocommerce-account .addresses .title .edit,.woocommerce-account ul.digital-downloads li .count{float:right}.woocommerce-account ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce-account ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce-account ul.digital-downloads{margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li{list-style:none;margin-left:0;padding-left:0}.woocommerce-account ul.digital-downloads li::before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:.618em;content:"";text-decoration:none}#add_payment_method table.cart .product-thumbnail,.woocommerce-cart table.cart .product-thumbnail,.woocommerce-checkout table.cart .product-thumbnail{min-width:32px}#add_payment_method table.cart img,.woocommerce-cart table.cart img,.woocommerce-checkout table.cart img{width:32px;box-shadow:none}#add_payment_method table.cart td,#add_payment_method table.cart th,.woocommerce-cart table.cart td,.woocommerce-cart table.cart th,.woocommerce-checkout table.cart td,.woocommerce-checkout table.cart th{vertical-align:middle}#add_payment_method table.cart td.actions .coupon .input-text,.woocommerce-cart table.cart td.actions .coupon .input-text,.woocommerce-checkout table.cart td.actions .coupon .input-text{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #d3ced2;padding:6px 6px 5px;margin:0 4px 0 0;outline:0;line-height:1}#add_payment_method table.cart input,.woocommerce-cart table.cart input,.woocommerce-checkout table.cart input{margin:0;vertical-align:middle;line-height:1}#add_payment_method .wc-proceed-to-checkout,.woocommerce-cart .wc-proceed-to-checkout,.woocommerce-checkout .wc-proceed-to-checkout{padding:1em 0}#add_payment_method .wc-proceed-to-checkout::after,#add_payment_method .wc-proceed-to-checkout::before,.woocommerce-cart .wc-proceed-to-checkout::after,.woocommerce-cart .wc-proceed-to-checkout::before,.woocommerce-checkout .wc-proceed-to-checkout::after,.woocommerce-checkout .wc-proceed-to-checkout::before{content:' ';display:table}#add_payment_method .wc-proceed-to-checkout a.checkout-button,.woocommerce-cart .wc-proceed-to-checkout a.checkout-button,.woocommerce-checkout .wc-proceed-to-checkout a.checkout-button{display:block;text-align:center;margin-bottom:1em;font-size:1.25em;padding:1em}#add_payment_method .cart-collaterals .shipping_calculator .button,.woocommerce-cart .cart-collaterals .shipping_calculator .button,.woocommerce-checkout .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}#add_payment_method .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-cart .cart-collaterals .shipping_calculator .shipping-calculator-button::after,.woocommerce-checkout .cart-collaterals .shipping_calculator .shipping-calculator-button::after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:.618em;content:"";text-decoration:none}#add_payment_method #payment ul.payment_methods li::after,#add_payment_method #payment ul.payment_methods li::before,#add_payment_method #payment ul.payment_methods::after,#add_payment_method #payment ul.payment_methods::before,.woocommerce-cart #payment ul.payment_methods li::after,.woocommerce-cart #payment ul.payment_methods li::before,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart #payment ul.payment_methods::before,.woocommerce-checkout #payment ul.payment_methods li::after,.woocommerce-checkout #payment ul.payment_methods li::before,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout #payment ul.payment_methods::before{content:' ';display:table}#add_payment_method .cart-collaterals .cart_totals p small,.woocommerce-cart .cart-collaterals .cart_totals p small,.woocommerce-checkout .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}#add_payment_method .cart-collaterals .cart_totals table,.woocommerce-cart .cart-collaterals .cart_totals table,.woocommerce-checkout .cart-collaterals .cart_totals table{border-collapse:separate;margin:0 0 6px;padding:0}#add_payment_method .cart-collaterals .cart_totals table tr:first-child td,#add_payment_method .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-cart .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-checkout .cart-collaterals .cart_totals table tr:first-child th{border-top:0}#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table th{width:40%}#add_payment_method .cart-collaterals .cart_totals table td,#add_payment_method .cart-collaterals .cart_totals table th,.woocommerce-cart .cart-collaterals .cart_totals table td,.woocommerce-cart .cart-collaterals .cart_totals table th,.woocommerce-checkout .cart-collaterals .cart_totals table td,.woocommerce-checkout .cart-collaterals .cart_totals table th{vertical-align:top;border-left:0;border-right:0;line-height:1.5em}#add_payment_method .cart-collaterals .cart_totals table small,.woocommerce-cart .cart-collaterals .cart_totals table small,.woocommerce-checkout .cart-collaterals .cart_totals table small{color:#777}#add_payment_method .cart-collaterals .cart_totals table select,.woocommerce-cart .cart-collaterals .cart_totals table select,.woocommerce-checkout .cart-collaterals .cart_totals table select{width:100%}#add_payment_method .cart-collaterals .cart_totals .discount td,.woocommerce-cart .cart-collaterals .cart_totals .discount td,.woocommerce-checkout .cart-collaterals .cart_totals .discount td{color:#77a464}#add_payment_method .cart-collaterals .cart_totals tr td,#add_payment_method .cart-collaterals .cart_totals tr th,.woocommerce-cart .cart-collaterals .cart_totals tr td,.woocommerce-cart .cart-collaterals .cart_totals tr th,.woocommerce-checkout .cart-collaterals .cart_totals tr td,.woocommerce-checkout .cart-collaterals .cart_totals tr th{border-top:1px solid #ebe9eb}#add_payment_method .cart-collaterals .cross-sells ul.products li.product,.woocommerce-cart .cart-collaterals .cross-sells ul.products li.product,.woocommerce-checkout .cart-collaterals .cross-sells ul.products li.product{margin-top:0}#add_payment_method .checkout .col-2 h3#ship-to-different-address,.woocommerce-cart .checkout .col-2 h3#ship-to-different-address,.woocommerce-checkout .checkout .col-2 h3#ship-to-different-address{float:left;clear:none}#add_payment_method .checkout .col-2 .form-row-first,#add_payment_method .checkout .col-2 .notes,.woocommerce-cart .checkout .col-2 .form-row-first,.woocommerce-cart .checkout .col-2 .notes,.woocommerce-checkout .checkout .col-2 .form-row-first,.woocommerce-checkout .checkout .col-2 .notes{clear:left}#add_payment_method .checkout .create-account small,.woocommerce-cart .checkout .create-account small,.woocommerce-checkout .checkout .create-account small{font-size:11px;color:#777;font-weight:400}#add_payment_method .checkout div.shipping-address,.woocommerce-cart .checkout div.shipping-address,.woocommerce-checkout .checkout div.shipping-address{padding:0;clear:left;width:100%}#add_payment_method #payment ul.payment_methods li::after,#add_payment_method #payment ul.payment_methods::after,#add_payment_method .checkout .shipping_address,.single-product .twentythirteen p.stars,.woocommerce-cart #payment ul.payment_methods li::after,.woocommerce-cart #payment ul.payment_methods::after,.woocommerce-cart .checkout .shipping_address,.woocommerce-checkout #payment ul.payment_methods li::after,.woocommerce-checkout #payment ul.payment_methods::after,.woocommerce-checkout .checkout .shipping_address{clear:both}#add_payment_method #payment,.woocommerce-cart #payment,.woocommerce-checkout #payment{background:#ebe9eb;border-radius:5px}#add_payment_method #payment ul.payment_methods,.woocommerce-cart #payment ul.payment_methods,.woocommerce-checkout #payment ul.payment_methods{text-align:left;padding:1em;border-bottom:1px solid #d3ced2;margin:0;list-style:none}#add_payment_method #payment ul.payment_methods li,.woocommerce-cart #payment ul.payment_methods li,.woocommerce-checkout #payment ul.payment_methods li{line-height:2;text-align:left;margin:0;font-weight:400}#add_payment_method #payment ul.payment_methods li input,.woocommerce-cart #payment ul.payment_methods li input,.woocommerce-checkout #payment ul.payment_methods li input{margin:0 1em 0 0}#add_payment_method #payment ul.payment_methods li img,.woocommerce-cart #payment ul.payment_methods li img,.woocommerce-checkout #payment ul.payment_methods li img{vertical-align:middle;margin:-2px 0 0 .5em;padding:0;position:relative;box-shadow:none}#add_payment_method #payment ul.payment_methods li img+img,.woocommerce-cart #payment ul.payment_methods li img+img,.woocommerce-checkout #payment ul.payment_methods li img+img{margin-left:2px}#add_payment_method #payment div.form-row,.woocommerce-cart #payment div.form-row,.woocommerce-checkout #payment div.form-row{padding:1em}#add_payment_method #payment div.payment_box,.woocommerce-cart #payment div.payment_box,.woocommerce-checkout #payment div.payment_box{position:relative;box-sizing:border-box;width:100%;padding:1em;margin:1em 0;font-size:.92em;border-radius:2px;line-height:1.5;background-color:#dfdcde;color:#515151}#add_payment_method #payment div.payment_box input.input-text,#add_payment_method #payment div.payment_box textarea,.woocommerce-cart #payment div.payment_box input.input-text,.woocommerce-cart #payment div.payment_box textarea,.woocommerce-checkout #payment div.payment_box input.input-text,.woocommerce-checkout #payment div.payment_box textarea{border-color:#bbb3b9 #c7c1c6 #c7c1c6}#add_payment_method #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-cart #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-checkout #payment div.payment_box ::-webkit-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-moz-placeholder,.woocommerce-cart #payment div.payment_box :-moz-placeholder,.woocommerce-checkout #payment div.payment_box :-moz-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box :-ms-input-placeholder,.woocommerce-cart #payment div.payment_box :-ms-input-placeholder,.woocommerce-checkout #payment div.payment_box :-ms-input-placeholder{color:#bbb3b9}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods{list-style:none;margin:0}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token{margin:0 0 .5em}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-new label,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-token label{cursor:pointer}#add_payment_method #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-cart #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput,.woocommerce-checkout #payment div.payment_box .woocommerce-SavedPaymentMethods .woocommerce-SavedPaymentMethods-tokenInput{vertical-align:middle;margin:-3px 1em 0 0;position:relative}#add_payment_method #payment div.payment_box .wc-credit-card-form,.woocommerce-cart #payment div.payment_box .wc-credit-card-form,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form{border:0;padding:0;margin:1em 0 0}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:right .618em center;background-size:32px 20px}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.visa,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.laser,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.amex,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.svg)}#add_payment_method #payment div.payment_box .wc-credit-card-form-card-cvc.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-expiry.discover,#add_payment_method #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-cart #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-checkout #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.svg)}#add_payment_method #payment div.payment_box span.help,.woocommerce-cart #payment div.payment_box span.help,.woocommerce-checkout #payment div.payment_box span.help{font-size:.857em;color:#777;font-weight:400}#add_payment_method #payment div.payment_box .form-row,.woocommerce-cart #payment div.payment_box .form-row,.woocommerce-checkout #payment div.payment_box .form-row{margin:0 0 1em}#add_payment_method #payment div.payment_box p:last-child,.woocommerce-cart #payment div.payment_box p:last-child,.woocommerce-checkout #payment div.payment_box p:last-child{margin-bottom:0}#add_payment_method #payment div.payment_box::before,.woocommerce-cart #payment div.payment_box::before,.woocommerce-checkout #payment div.payment_box::before{content:'';display:block;border:1em solid #dfdcde;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-.75em;left:0;margin:-1em 0 0 2em}#add_payment_method #payment .payment_method_paypal .about_paypal,.woocommerce-cart #payment .payment_method_paypal .about_paypal,.woocommerce-checkout #payment .payment_method_paypal .about_paypal{float:right;line-height:52px;font-size:.83em}#add_payment_method #payment .payment_method_paypal img,.woocommerce-cart #payment .payment_method_paypal img,.woocommerce-checkout #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce-password-strength{text-align:center;font-weight:600;padding:3px .5em;font-size:1em}.woocommerce-password-strength.strong{background-color:#c1e1b9;border-color:#83c373}.woocommerce-password-strength.short{background-color:#f1adad;border-color:#e35b5b}.woocommerce-password-strength.bad{background-color:#fbc5a9;border-color:#f78b53}.woocommerce-password-strength.good{background-color:#ffe399;border-color:#ffc733}.woocommerce-password-hint{margin:.5em 0 0;display:block}.product.has-default-attributes.has-children>.images{opacity:0}#content.twentyeleven .woocommerce-pagination a{font-size:1em;line-height:1}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}body:not(.search-results) .twentysixteen .entry-summary{color:inherit;font-size:inherit;line-height:inherit}.twentysixteen .price ins{background:inherit;color:inherit} \ No newline at end of file From eec9ce5b416df0a35af89457dc73a5176128dbab Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 16:41:06 +0100 Subject: [PATCH 20/81] Revert addition of _delete_extra_meta_data This essentially removes the ability to delete meta which is not great. @justinshreve you added this in https://github.com/woothemes/woocommerce/commit/e3b1f6dbc9558bae606fa76e 6941175582a301b7 - can you tell me what problems it was causing you so we can add a different fix if needed? --- includes/abstracts/abstract-wc-data.php | 21 ++++++--------------- tests/unit-tests/cart/cart.php | 14 +++++++------- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index 3b2548ffe1a..f2cbc3c7088 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -55,13 +55,6 @@ abstract class WC_Data { */ protected $_internal_meta_keys = array(); - /** - * Should meta objects not present in the keys - * array be purged when updating/saving meta? - * @var boolean - */ - protected $_delete_extra_meta_data = false; - /** * Returns the unique ID for this object. * @return int @@ -244,7 +237,7 @@ abstract class WC_Data { return; } - if ( ! empty ( $this->_cache_group ) ) { + if ( ! empty( $this->_cache_group ) ) { $cache_key = WC_Cache_Helper::get_cache_prefix( $this->_cache_group ) . $this->get_id(); $cached_meta = wp_cache_get( $cache_key, $this->_cache_group ); @@ -274,7 +267,7 @@ abstract class WC_Data { ); } - if ( ! empty ( $this->_cache_group ) ) { + if ( ! empty( $this->_cache_group ) ) { wp_cache_set( $cache_key, $this->_meta_data, $this->_cache_group ); } } @@ -306,14 +299,12 @@ abstract class WC_Data { } // Delete no longer set meta data - if ( $this->_delete_extra_meta_data ) { - $delete_meta_ids = array_diff( $all_meta_ids, $set_meta_ids ); - foreach ( $delete_meta_ids as $meta_id ) { - delete_metadata_by_mid( $this->_meta_type, $meta_id ); - } + $delete_meta_ids = array_diff( $all_meta_ids, $set_meta_ids ); + foreach ( $delete_meta_ids as $meta_id ) { + delete_metadata_by_mid( $this->_meta_type, $meta_id ); } - if ( ! empty ( $this->_cache_group ) ) { + if ( ! empty( $this->_cache_group ) ) { WC_Cache_Helper::incr_cache_prefix( $this->_cache_group ); } $this->read_meta_data(); diff --git a/tests/unit-tests/cart/cart.php b/tests/unit-tests/cart/cart.php index 7b760920274..d8ddc0f080e 100644 --- a/tests/unit-tests/cart/cart.php +++ b/tests/unit-tests/cart/cart.php @@ -28,7 +28,7 @@ class WC_Tests_Cart extends WC_Unit_Test_Case { $coupon = WC_Helper_Coupon::create_coupon(); // Add coupon - WC()->cart->add_discount( $coupon->code ); + WC()->cart->add_discount( $coupon->get_code() ); // Create dummy product - price will be 10 $product = WC_Helper_Product::create_simple_product(); @@ -58,8 +58,8 @@ class WC_Tests_Cart extends WC_Unit_Test_Case { # Test case 2 #10573 update_post_meta( $product->id, '_regular_price', '29.95' ); update_post_meta( $product->id, '_price', '29.95' ); - update_post_meta( $coupon->id, 'discount_type', 'percent' ); - update_post_meta( $coupon->id, 'coupon_amount', '10' ); + update_post_meta( $coupon->get_id(), 'discount_type', 'percent' ); + update_post_meta( $coupon->get_id(), 'coupon_amount', '10' ); update_option( 'woocommerce_prices_include_tax', 'yes' ); update_option( 'woocommerce_calc_taxes', 'yes' ); $tax_rate = array( @@ -77,7 +77,7 @@ class WC_Tests_Cart extends WC_Unit_Test_Case { $product = wc_get_product( $product->id ); WC()->cart->add_to_cart( $product->id, 1 ); - WC()->cart->add_discount( $coupon->code ); + WC()->cart->add_discount( $coupon->get_code() ); WC()->cart->calculate_totals(); $cart_item = current( WC()->cart->get_cart() ); @@ -92,8 +92,8 @@ class WC_Tests_Cart extends WC_Unit_Test_Case { # Test case 3 #11626 - update_post_meta( $coupon->id, 'discount_type', 'percent' ); - update_post_meta( $coupon->id, 'coupon_amount', '50' ); + update_post_meta( $coupon->get_id(), 'discount_type', 'percent' ); + update_post_meta( $coupon->get_id(), 'coupon_amount', '50' ); update_option( 'woocommerce_prices_include_tax', 'yes' ); update_option( 'woocommerce_calc_taxes', 'yes' ); @@ -122,7 +122,7 @@ class WC_Tests_Cart extends WC_Unit_Test_Case { WC()->cart->add_to_cart( $loop_product->id, 1 ); } - WC()->cart->add_discount( $coupon->code ); + WC()->cart->add_discount( $coupon->get_code() ); WC()->cart->calculate_totals(); $cart_item = current( WC()->cart->get_cart() ); $this->assertEquals( '16.55', WC()->cart->total ); From 7796fe9cf1543e229fd179204cfa22932cfeb5f5 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 12 Aug 2016 16:48:48 +0100 Subject: [PATCH 21/81] Clean item/group cache when remove_order_items is used. --- includes/abstracts/abstract-wc-order.php | 43 +++++++++++++++++------- 1 file changed, 30 insertions(+), 13 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index 553e4bf2d03..f4b7ad03afe 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -821,36 +821,53 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { if ( ! empty( $type ) ) { $wpdb->query( $wpdb->prepare( "DELETE FROM itemmeta USING {$wpdb->prefix}woocommerce_order_itemmeta itemmeta INNER JOIN {$wpdb->prefix}woocommerce_order_items items WHERE itemmeta.order_item_id = items.order_item_id AND items.order_id = %d AND items.order_item_type = %s", $this->get_id(), $type ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d AND order_item_type = %s", $this->get_id(), $type ) ); + if ( $group = $this->type_to_group( $type ) ) { + $this->_items[ $group ] = null; + } } else { $wpdb->query( $wpdb->prepare( "DELETE FROM itemmeta USING {$wpdb->prefix}woocommerce_order_itemmeta itemmeta INNER JOIN {$wpdb->prefix}woocommerce_order_items items WHERE itemmeta.order_item_id = items.order_item_id and items.order_id = %d", $this->get_id() ) ); $wpdb->query( $wpdb->prepare( "DELETE FROM {$wpdb->prefix}woocommerce_order_items WHERE order_id = %d", $this->get_id() ) ); + $this->_items = array( + 'line_items' => null, + 'coupon_lines' => null, + 'shipping_lines' => null, + 'fee_lines' => null, + 'tax_lines' => null, + ); } } + /** + * Convert a type to a types group. + * @param string $type + * @return string group + */ + protected function type_to_group( $type ) { + $type_to_group = array( + 'line_item' => 'line_items', + 'tax' => 'tax_lines', + 'shipping' => 'shipping_lines', + 'fee' => 'fee_lines', + 'coupon' => 'coupon_lines', + ); + return isset( $type_to_group[ $type ] ) ? $type_to_group[ $type ] : ''; + } + /** * Return an array of items/products within this order. * @param string|array $types Types of line items to get (array or string). * @return Array of WC_Order_item */ public function get_items( $types = 'line_item' ) { - $type_to_group = array( - 'line_item' => 'line_items', - 'tax' => 'tax_lines', - 'shipping' => 'shipping_lines', - 'fee' => 'fee_lines', - 'coupon' => 'coupon_lines', - ); - $items = array(); $types = array_filter( (array) $types ); foreach ( $types as $type ) { - if ( isset( $type_to_group[ $type ] ) ) { - if ( is_null( $this->_items[ $type_to_group[ $type ] ] ) ) { - $this->_items[ $type_to_group[ $type ] ] = $this->get_items_from_db( $type ); + if ( $group = $this->type_to_group( $type ) ) { + if ( is_null( $this->_items[ $group ] ) ) { + $this->_items[ $group ] = $this->get_items_from_db( $type ); } - - $items = array_merge( $items, $this->_items[ $type_to_group[ $type ] ] ); + $items = array_merge( $items, $this->_items[ $group ] ); } } From 0dd41179aac2f44da7bded76c69c06852a276445 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 11:02:25 +0100 Subject: [PATCH 22/81] Prefix item ids and revert some changes to add_products method for ease of use. --- includes/abstracts/abstract-wc-order.php | 143 +++++++++-------------- 1 file changed, 55 insertions(+), 88 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index f4b7ad03afe..aa17cea388f 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -812,6 +812,15 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { | */ + /** + * Prefixes an item key with a string so arrays are associative rather than numeric. + * @param int $id + * @return string + */ + protected function prefix_item_id( $id ) { + return 'item-' . $id; + } + /** * Remove all line items (products, coupons, shipping, taxes) from the order. * @param string $type Order item type. Default null. @@ -886,7 +895,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { $items = $wpdb->get_results( $get_items_sql ); if ( ! empty( $items ) ) { - $items = array_map( array( $this, 'get_item' ), array_combine( wp_list_pluck( $items, 'order_item_id' ), $items ) ); + $items = array_map( array( $this, 'get_item' ), array_combine( array_map( array( $this, 'prefix_item_id' ), wp_list_pluck( $items, 'order_item_id' ) ), $items ) ); } else { $items = array(); } @@ -1001,38 +1010,30 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { } // Append new row with generated temporary ID - $this->_items[ $items_key ][ 'new:' . md5( json_encode( $item ) ) ] = $item; + if ( $item->get_id() ) { + $this->_items[ $items_key ][ $this->prefix_item_id( $item->get_id() ) ] = $item; + } else { + $this->_items[ $items_key ][ 'new:' . md5( json_encode( $item ) ) ] = $item; + } } /** * Add a product line item to the order. - * Order must be saved prior to adding items. - * @param \WC_Product $product - * @param array $args - * @param array $deprecated qty was passed as arg 2 prior to 2.7.0 + * @param \WC_Product $product + * @param int $qty + * @param array $args * @return int order item ID */ - public function add_product( $product, $args = array(), $deprecated = array() ) { - if ( ! is_array( $args ) ) { - _deprecated_argument( 'qty', '2.7', 'Pass only product and args' ); - $qty = $args; - $args = $deprecated; - $args['qty'] = $qty; - } - - if ( empty( $args['qty'] ) ) { - $args['qty'] = 1; - } - + public function add_product( $product, $qty = 1, $args = array() ) { $args = wp_parse_args( $args, array( - 'qty' => 1, + 'qty' => $qty, 'name' => $product ? $product->get_title() : '', 'tax_class' => $product ? $product->get_tax_class() : '', 'product_id' => $product ? $product->get_id() : '', 'variation_id' => $product && isset( $product->variation_id ) ? $product->variation_id : 0, 'variation' => $product && isset( $product->variation_id ) ? $product->get_variation_attributes() : array(), - 'subtotal' => $product ? $product->get_price_excluding_tax( $args['qty'] ) : '', - 'total' => $product ? $product->get_price_excluding_tax( $args['qty'] ) : '', + 'subtotal' => $product ? $product->get_price_excluding_tax( $qty ) : '', + 'total' => $product ? $product->get_price_excluding_tax( $qty ) : '', 'subtotal_tax' => 0, 'total_tax' => 0, 'taxes' => array( @@ -1055,63 +1056,36 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { } $item = new WC_Order_Item_Product( $args ); - - // Handle backorders - if ( $product->backorders_require_notification() && $product->is_on_backorder( $args['qty'] ) ) { - $item->add_meta_data( apply_filters( 'woocommerce_backordered_item_meta_name', __( 'Backordered', 'woocommerce' ) ), $args['qty'] - max( 0, $product->get_total_stock() ), true ); - } - - $item->set_order_id( $this->get_id() ? $this->get_id() : $this->save() ); + $item->set_backorder_meta(); + $item->set_order_id( $this->get_id() ); $item->save(); - - if ( has_action( 'woocommerce_order_add_product' ) ) { - _deprecated_function( 'Action: woocommerce_order_add_product', '2.7', 'Use woocommerce_new_order_item action instead.' ); - do_action( 'woocommerce_order_add_product', $this->get_id(), $item->get_id(), $product, $qty, $args ); - } - + $this->add_item( $item ); + wc_do_deprecated_action( 'woocommerce_order_add_product', array( $this->get_id(), $item->get_id(), $product, $qty, $args ), '2.7', 'Use woocommerce_new_order_item action instead.' ); return $item->get_id(); } /** * Add coupon code to the order. - * Order must be saved prior to adding items. - * @param array $args - * @param int $deprecated1 2.7.0 code, discount, tax were passed. - * @param int $deprecated2 2.7.0 code, discount, tax were passed. + * @param string $code + * @param int $discount tax amount. + * @param int $discount_tax amount. * @return int order item ID */ - public function add_coupon( $args = array(), $deprecated1 = 0, $deprecated2 = 0 ) { - if ( ! is_array( $args ) ) { - _deprecated_argument( 'code', '2.7', 'Pass only an array of args' ); - $args = array( - 'code' => $args, - 'discount' => $deprecated1, - 'discount_tax' => $deprecated2, - ); - } - - $args = wp_parse_args( $args, array( - 'code' => '', - 'discount' => 0, - 'discount_tax' => 0, + public function add_coupon( $code = array(), $discount = 0, $discount_tax = 0 ) { + $item = new WC_Order_Item_Coupon( array( + 'code' => $code, + 'discount' => $discount, + 'discount_tax' => $discount_tax, ) ); - - $item = new WC_Order_Item_Coupon( $args ); - $item->set_order_id( $this->get_id() ? $this->get_id() : $this->save() ); + $item->set_order_id( $this->get_id() ); $item->save(); - - if ( has_action( 'woocommerce_order_add_coupon' ) ) { - _deprecated_function( 'Action: woocommerce_order_add_coupon', '2.7', 'Use woocommerce_new_order_item action instead.' ); - do_action( 'woocommerce_order_add_coupon', $this->get_id(), $item->get_id(), $args['code'], $args['discount'], $args['discount_tax'] ); - } - + $this->add_item( $item ); + wc_do_deprecated_action( 'woocommerce_order_add_coupon', array( $this->get_id(), $item->get_id(), $code, $discount, $discount_tax ), '2.7', 'Use woocommerce_new_order_item action instead.' ); return $item->get_id(); } /** * Add a tax row to the order. - * Order must be saved prior to adding items. - * @since 2.2 * @param array $args * @param int $deprecated1 2.7.0 tax_rate_id, amount, shipping amount. * @param int $deprecated2 2.7.0 tax_rate_id, amount, shipping amount. @@ -1126,7 +1100,6 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { 'shipping_tax_total' => $deprecated2, ); } - $args = wp_parse_args( $args, array( 'rate_id' => '', 'tax_total' => 0, @@ -1135,22 +1108,16 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { 'label' => isset( $args['rate_id'] ) ? WC_Tax::get_rate_label( $args['rate_id'] ) : '', 'compound' => isset( $args['rate_id'] ) ? WC_Tax::is_compound( $args['rate_id'] ) : '', ) ); - $item = new WC_Order_Item_Tax( $args ); - $item->set_order_id( $this->get_id() ? $this->get_id() : $this->save() ); + $item->set_order_id( $this->get_id() ); $item->save(); - - if ( has_action( 'woocommerce_order_add_tax' ) ) { - _deprecated_function( 'Action: woocommerce_order_add_tax', '2.7', 'Use woocommerce_new_order_item action instead.' ); - do_action( 'woocommerce_order_add_tax', $this->get_id(), $item->get_id(), $args['rate_id'], $args['tax_total'], $args['shipping_tax_total'] ); - } - + $this->add_item( $item ); + wc_do_deprecated_action( 'woocommerce_order_add_tax', array( $this->get_id(), $item->get_id(), $args['rate_id'], $args['tax_total'], $args['shipping_tax_total'] ), '2.7', 'Use woocommerce_new_order_item action instead.' ); return $item->get_id(); } /** * Add a shipping row to the order. - * Order must be saved prior to adding items. * @param WC_Shipping_Rate shipping_rate * @return int order item ID */ @@ -1162,14 +1129,10 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { 'taxes' => $shipping_rate->taxes, 'meta_data' => $shipping_rate->get_meta_data(), ) ); - $item->set_order_id( $this->get_id() ? $this->get_id() : $this->save() ); + $item->set_order_id( $this->get_id() ); $item->save(); - - if ( has_action( 'woocommerce_order_add_shipping' ) ) { - _deprecated_function( 'Action: woocommerce_order_add_shipping', '2.7', 'Use woocommerce_new_order_item action instead.' ); - do_action( 'woocommerce_order_add_shipping', $this->get_id(), $item->get_id(), $shipping_rate ); - } - + $this->add_item( $item ); + wc_do_deprecated_action( 'woocommerce_order_add_shipping', array( $this->get_id(), $item->get_id(), $shipping_rate ), '2.7', 'Use woocommerce_new_order_item action instead.' ); return $item->get_id(); } @@ -1189,18 +1152,22 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { 'total' => $fee->tax_data, ), ) ); - - $item->set_order_id( $this->get_id() ? $this->get_id() : $this->save() ); + $item->set_order_id( $this->get_id() ); $item->save(); - - if ( has_action( 'woocommerce_order_add_fee' ) ) { - _deprecated_function( 'Action: woocommerce_order_add_fee', '2.7', 'Use woocommerce_new_order_item action instead.' ); - do_action( 'woocommerce_order_add_fee', $this->get_id(), $item->get_id(), $fee ); - } - + $this->add_item( $item ); + wc_do_deprecated_action( 'woocommerce_order_add_fee', array( $this->get_id(), $item->get_id(), $fee ), '2.7', 'Use woocommerce_new_order_item action instead.' ); return $item->get_id(); } + /* + |-------------------------------------------------------------------------- + | Payment Token Handling + |-------------------------------------------------------------------------- + | + | Payment tokens are hashes used to take payments by certain gateways. + | + */ + /** * Add a payment token to an order * From 6090e3cd000e1ef106f38b34773b146f77dbb08e Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 11:02:38 +0100 Subject: [PATCH 23/81] set_backorder_meta helper --- includes/class-wc-checkout.php | 6 +----- includes/class-wc-order-item-product.php | 9 +++++++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/includes/class-wc-checkout.php b/includes/class-wc-checkout.php index 89173458679..1401abdeb77 100644 --- a/includes/class-wc-checkout.php +++ b/includes/class-wc-checkout.php @@ -244,11 +244,7 @@ class WC_Checkout { 'taxes' => $values['line_tax_data'], ) ); - // Handle backorders @todo improve how these are handled/stored - if ( $product->backorders_require_notification() && $product->is_on_backorder( $args['qty'] ) ) { - $item->add_meta_data( apply_filters( 'woocommerce_backordered_item_meta_name', __( 'Backordered', 'woocommerce' ) ), $values['quantity'] - max( 0, $product->get_total_stock() ), true ); - } - + $item->set_backorder_meta(); // Set this to pass to legacy actions @todo remove in future release $item->legacy_values = $values; $item->legacy_cart_item_key = $cart_item_key; diff --git a/includes/class-wc-order-item-product.php b/includes/class-wc-order-item-product.php index 8dfed21c2f1..34a86d0fab6 100644 --- a/includes/class-wc-order-item-product.php +++ b/includes/class-wc-order-item-product.php @@ -213,6 +213,15 @@ class WC_Order_Item_Product extends WC_Order_Item { return $product ? $product->get_tax_status() : 'taxable'; } + /** + * Set meta data for backordered products. + */ + public function set_backorder_meta() { + if ( $this->get_product()->backorders_require_notification() && $this->get_product()->is_on_backorder( $this->get_qty() ) ) { + $this->add_meta_data( apply_filters( 'woocommerce_backordered_item_meta_name', __( 'Backordered', 'woocommerce' ) ), $this->get_qty() - max( 0, $this->get_product()->get_total_stock() ), true ); + } + } + /* |-------------------------------------------------------------------------- | Setters From 46793622df9999e851cb1b51b6edb544e5e01650 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 11:02:49 +0100 Subject: [PATCH 24/81] wc_do_deprecated_action helper --- includes/wc-core-functions.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/includes/wc-core-functions.php b/includes/wc-core-functions.php index e02449058c6..bf47cd324d0 100644 --- a/includes/wc-core-functions.php +++ b/includes/wc-core-functions.php @@ -1416,3 +1416,18 @@ function wc_get_logger() { $class = apply_filters( 'woocommerce_logging_class', 'WC_Logger' ); return new $class; } + +/** + * Runs a deprecated action with notice only if used. + * @since 2.7.0 + * @param string $action + * @param array $args + * @param string $deprecated_in + * @param string $replacement + */ +function wc_do_deprecated_action( $action, $args, $deprecated_in, $replacement ) { + if ( has_action( $action ) ) { + _deprecated_function( 'Action: ' . $action, $deprecated_in, $replacement ); + do_action_ref_array( $action, $args ); + } +} From f03d439259cc7916cc4e9b4c435e21a9e51830fc Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 11:02:55 +0100 Subject: [PATCH 25/81] Unit test fixes --- .../helpers/class-wc-helper-order.php | 2 +- tests/unit-tests/crud/orders.php | 40 +++++++------------ 2 files changed, 15 insertions(+), 27 deletions(-) diff --git a/tests/framework/helpers/class-wc-helper-order.php b/tests/framework/helpers/class-wc-helper-order.php index 43fb2eb3e54..87cd5a9ca7b 100644 --- a/tests/framework/helpers/class-wc-helper-order.php +++ b/tests/framework/helpers/class-wc-helper-order.php @@ -51,7 +51,7 @@ class WC_Helper_Order { $order = wc_create_order( $order_data ); // Add order products - $item_id = $order->add_product( $product, array( 'qty' => 4 ) ); + $item_id = $order->add_product( $product, 4 ); // Set billing address $billing_address = array( diff --git a/tests/unit-tests/crud/orders.php b/tests/unit-tests/crud/orders.php index 76b1e493d64..c2a21a7db31 100644 --- a/tests/unit-tests/crud/orders.php +++ b/tests/unit-tests/crud/orders.php @@ -242,8 +242,8 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { $product = WC_Helper_Product::create_simple_product(); $object = new WC_Order(); $object->save(); - $item_id = $object->add_product( $product, array( 'qty' => 4 ) ); - $item_id = $object->add_product( $product, array( 'qty' => 2 ) ); + $item_id = $object->add_product( $product, 4 ); + $item_id = $object->add_product( $product, 2 ); $this->assertCount( 2, $object->get_items() ); $object->remove_order_items(); $this->assertCount( 0, $object->get_items() ); @@ -255,8 +255,8 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { function test_get_items() { $object = new WC_Order(); $object->save(); - $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 4 ) ); - $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 2 ) ); + $object->add_product( WC_Helper_Product::create_simple_product(), 4 ); + $object->add_product( WC_Helper_Product::create_simple_product(), 2 ); $this->assertCount( 2, $object->get_items() ); } @@ -299,7 +299,7 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { $object = new WC_Order(); $object->save(); - $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 4 ) ); + $object->add_product( WC_Helper_Product::create_simple_product(), 4 ); $object->calculate_totals(); $this->assertCount( 1, $object->get_taxes() ); @@ -347,13 +347,7 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { function test_get_used_coupons() { $object = new WC_Order(); $object->save(); - $object->add_coupon( - array( - 'code' => '12345', - 'discount' => '10', - 'discount_tax' => '5', - ) - ); + $object->add_coupon( '12345', '10', '5' ); $this->assertCount( 1, $object->get_used_coupons() ); } @@ -363,8 +357,8 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { function test_get_item_count() { $object = new WC_Order(); $object->save(); - $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 4 ) ); - $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 2 ) ); + $object->add_product( WC_Helper_Product::create_simple_product(), 4 ); + $object->add_product( WC_Helper_Product::create_simple_product(), 2 ); $this->assertEquals( 6, $object->get_item_count() ); } @@ -375,16 +369,10 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { $object = new WC_Order(); $object->save(); - $item_id = $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 4 ) ); + $item_id = $object->add_product( WC_Helper_Product::create_simple_product(), 4 ); $this->assertTrue( $object->get_item( $item_id ) instanceOf WC_Order_Item_Product ); - $item_id = $object->add_coupon( - array( - 'code' => '12345', - 'discount' => '10', - 'discount_tax' => '5', - ) - ); + $item_id = $object->add_coupon( '12345', '10', '5' ); $this->assertTrue( $object->get_item( $item_id ) instanceOf WC_Order_Item_Coupon ); } @@ -449,7 +437,7 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { $object = new WC_Order(); $object->save(); - $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 4 ) ); + $object->add_product( WC_Helper_Product::create_simple_product(), 4 ); $object->add_shipping( new WC_Shipping_Rate( 'flat_rate_shipping', 'Flat rate shipping', '10', array(), 'flat_rate' ) ); $object->calculate_taxes(); $this->assertEquals( 5, $object->get_total_tax() ); @@ -481,7 +469,7 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { $object = new WC_Order(); $object->save(); - $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 4 ) ); + $object->add_product( WC_Helper_Product::create_simple_product(), 4 ); $object->add_shipping( new WC_Shipping_Rate( 'flat_rate_shipping', 'Flat rate shipping', '10', array(), 'flat_rate' ) ); $object->calculate_totals(); $this->assertEquals( 55, $object->get_total() ); @@ -531,12 +519,12 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { function test_has_free_item() { $object = new WC_Order(); $object->save(); - $object->add_product( WC_Helper_Product::create_simple_product(), array( 'qty' => 4 ) ); + $object->add_product( WC_Helper_Product::create_simple_product(), 4 ); $this->assertFalse( $object->has_free_item() ); $free_product = WC_Helper_Product::create_simple_product(); $free_product->set_price( 0 ); - $object->add_product( $free_product, array( 'qty' => 4 ) ); + $object->add_product( $free_product, 4 ); $this->assertTrue( $object->has_free_item() ); } From 0113dbd7c5a2c45e485081237933491e858dcb02 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 11:08:36 +0100 Subject: [PATCH 26/81] Use wc_do_deprecated_action --- includes/abstracts/abstract-wc-order.php | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index aa17cea388f..feee8bcbd46 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -309,21 +309,18 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { // Legacy action handler switch ( $item_group ) { case 'fee_lines' : - if ( has_action( 'woocommerce_add_order_fee_meta' ) && isset( $item->legacy_fee, $item->legacy_fee_key ) ) { - _deprecated_function( 'Action: woocommerce_add_order_fee_meta', '2.7', 'Use woocommerce_new_order_item action instead.' ); - do_action( 'woocommerce_add_order_fee_meta', $this->get_id(), $item_id, $item->legacy_fee, $item->legacy_fee_key ); + if ( isset( $item->legacy_fee, $item->legacy_fee_key ) ) { + wc_do_deprecated_action( 'woocommerce_add_order_fee_meta', array( $this->get_id(), $item_id, $item->legacy_fee, $item->legacy_fee_key ), '2.7', 'Use woocommerce_new_order_item action instead.' ); } break; case 'shipping_lines' : - if ( has_action( 'woocommerce_add_shipping_order_item' ) && isset( $item->legacy_package_key ) ) { - _deprecated_function( 'Action: woocommerce_add_shipping_order_item', '2.7', 'Use woocommerce_new_order_item action instead.' ); - do_action( 'woocommerce_add_shipping_order_item', $item_id, $item->legacy_package_key ); + if ( isset( $item->legacy_package_key ) ) { + wc_do_deprecated_action( 'woocommerce_add_shipping_order_item', array( $item_id, $item->legacy_package_key ), '2.7', 'Use woocommerce_new_order_item action instead.' ); } break; case 'line_items' : - if ( has_action( 'woocommerce_add_order_item_meta' ) && isset( $item->legacy_values, $item->legacy_cart_item_key ) ) { - _deprecated_function( 'Action: woocommerce_add_order_item_meta', '2.7', 'Use woocommerce_new_order_item action instead.' ); - do_action( 'woocommerce_add_order_item_meta', $item_id, $item->legacy_values, $item->legacy_cart_item_key ); + if ( isset( $item->legacy_values, $item->legacy_cart_item_key ) ) { + wc_do_deprecated_action( 'woocommerce_add_order_item_meta', array( $item_id, $item->legacy_values, $item->legacy_cart_item_key ), '2.7', 'Use woocommerce_new_order_item action instead.' ); } break; } From fc386f054b44dac40c1a04326cee554b4561a48b Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 11:15:03 +0100 Subject: [PATCH 27/81] Delete order after running test --- tests/framework/helpers/class-wc-helper-order.php | 3 ++- tests/unit-tests/customer/crud.php | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/framework/helpers/class-wc-helper-order.php b/tests/framework/helpers/class-wc-helper-order.php index 87cd5a9ca7b..ec5d47200ae 100644 --- a/tests/framework/helpers/class-wc-helper-order.php +++ b/tests/framework/helpers/class-wc-helper-order.php @@ -84,7 +84,8 @@ class WC_Helper_Order { $order->set_cart_tax( 0 ); $order->set_shipping_tax( 0 ); $order->set_total( 40 ); // 4 x $10 simple helper product + $order->save(); - return wc_get_order( $order->get_id() ); + return $order; } } diff --git a/tests/unit-tests/customer/crud.php b/tests/unit-tests/customer/crud.php index e196d03df86..d710d760306 100644 --- a/tests/unit-tests/customer/crud.php +++ b/tests/unit-tests/customer/crud.php @@ -197,8 +197,9 @@ class CustomerCRUD extends \WC_Unit_Test_Case { $customer_id = $customer->get_id(); $order = \WC_Helper_Order::create_order( $customer_id ); $customer->read( $customer_id ); - $this->assertEquals( $order->id, $customer->get_last_order_id() ); - $this->assertEquals( strtotime( $order->order_date ), $customer->get_last_order_date() ); + $this->assertEquals( $order->get_id(), $customer->get_last_order_id() ); + $this->assertEquals( $order->get_date_created(), $customer->get_last_order_date() ); + $order->delete(); } /** @@ -228,6 +229,7 @@ class CustomerCRUD extends \WC_Unit_Test_Case { $order->update_status( 'wc-completed' ); $customer->read( $customer_id ); $this->assertEquals( 40, $customer->get_total_spent() ); + $order->delete(); } /** From 23e13fbfa6c6d35be6c1dd0c3902046b765d2009 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 11:29:29 +0100 Subject: [PATCH 28/81] created_via --- includes/api/class-wc-rest-orders-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index c6c323d43c4..9c3c48a8262 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -150,7 +150,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'transaction_id' => $order->get_transaction_id(), 'customer_ip_address' => $order->get_customer_ip_address(), 'customer_user_agent' => $order->get_customer_user_agent(), - 'created_via' => $order->created_via, + 'created_via' => $order->get_created_via(), 'customer_note' => $order->get_customer_note(), 'date_completed' => wc_rest_prepare_date_response( $order->completed_date ), 'date_paid' => $order->get_date_paid(), From e1318d9175403a177fe8d4ab05251e01c42b08e4 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 13:17:43 +0100 Subject: [PATCH 29/81] Stop WP core meta data being removed for customers @justinshreve --- includes/abstracts/abstract-wc-data.php | 22 ++-- includes/class-wc-checkout.php | 3 - includes/class-wc-customer.php | 163 ++++++++++-------------- woocommerce.php | 3 +- 4 files changed, 81 insertions(+), 110 deletions(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index f2cbc3c7088..beed5f3ef5f 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -254,17 +254,20 @@ abstract class WC_Data { SELECT " . $db_info['meta_id_field'] . ", meta_key, meta_value FROM " . $db_info['table'] . " WHERE " . $db_info['object_id_field'] . " = %d ORDER BY " . $db_info['meta_id_field'] . " + AND meta_key NOT LIKE 'wp_%' ", $this->get_id() ) ); - foreach ( $raw_meta_data as $meta ) { - if ( in_array( $meta->meta_key, $this->get_internal_meta_keys() ) ) { - continue; + if ( $raw_meta_data ) { + foreach ( $raw_meta_data as $meta ) { + if ( in_array( $meta->meta_key, $this->get_internal_meta_keys() ) ) { + continue; + } + $this->_meta_data[] = (object) array( + 'key' => $meta->meta_key, + 'value' => $meta->meta_value, + 'meta_id' => $meta->{ $db_info['meta_id_field'] }, + ); } - $this->_meta_data[] = (object) array( - 'key' => $meta->meta_key, - 'value' => $meta->meta_value, - 'meta_id' => $meta->{ $db_info['meta_id_field'] }, - ); } if ( ! empty( $this->_cache_group ) ) { @@ -283,7 +286,8 @@ abstract class WC_Data { $all_meta_ids = array_map( 'absint', $wpdb->get_col( $wpdb->prepare( " SELECT " . $db_info['meta_id_field'] . " FROM " . $db_info['table'] . " WHERE " . $db_info['object_id_field'] . " = %d", $this->get_id() ) . " - AND meta_key NOT IN ('" . implode( "','", array_map( 'esc_sql', $this->get_internal_meta_keys() ) ) . "'); + AND meta_key NOT IN ('" . implode( "','", array_map( 'esc_sql', $this->get_internal_meta_keys() ) ) . "') + AND meta_key NOT LIKE 'wp_%'; " ) ); $set_meta_ids = array(); diff --git a/includes/class-wc-checkout.php b/includes/class-wc-checkout.php index 1401abdeb77..f1886198f91 100644 --- a/includes/class-wc-checkout.php +++ b/includes/class-wc-checkout.php @@ -317,8 +317,6 @@ class WC_Checkout { // Save the order $order_id = $order->save(); - $customer = new WC_Customer( $this->customer_id ); - // Update user meta $this->update_customer_data(); @@ -818,7 +816,6 @@ class WC_Checkout { return $current_user->user_email; } } - } switch ( $input ) { diff --git a/includes/class-wc-customer.php b/includes/class-wc-customer.php index 3435a04760a..897452904d6 100644 --- a/includes/class-wc-customer.php +++ b/includes/class-wc-customer.php @@ -70,7 +70,9 @@ class WC_Customer extends WC_Legacy_Customer { 'billing_postcode', 'billing_city', 'billing_address_1', 'billing_address_2', 'billing_state', 'billing_country', 'shipping_postcode', 'shipping_city', 'shipping_address_1', 'shipping_address_2', 'shipping_state', 'shipping_country', 'paying_customer', - 'last_update', 'first_name', 'last_name', + 'last_update', 'first_name', 'last_name', 'show_admin_bar_front', + 'use_ssl', 'admin_color', 'rich_editing', 'comment_shortcuts', 'dismissed_wp_pointers', 'show_welcome_panel', + '_woocommerce_persistent_cart', 'session_tokens', ); /** @@ -86,37 +88,27 @@ class WC_Customer extends WC_Legacy_Customer { protected $_changed = false; /** - * If some of the customer information is loaded by session (instead of just from the DB). + * If this is the customer session, this is true. When true, guest accounts will not be saved to the DB. * @var boolean */ - protected $_from_session = false; - - /** - * WC_Customer can also return an object for a logged out user (session). - * $_is_user will be false in this case. It will be true for all other cases - * (logged in users or getting a WC_Customer for another object) - * @var boolean - */ - protected $_is_user = false; + protected $_is_session = false; /** * Load customer data based on how WC_Customer is called. - * @param mixed $customer WC_Customer object or customer ID is accepted. - * if $customer is 'new', you can build a new WC_Customer object. If it's empty, some + * + * If $customer is 'new', you can build a new WC_Customer object. If it's empty, some * data will be pulled from the session for the current user/customer. + * + * @param int $customer_id Customer ID + * @param bool $is_session True if this is the customer session */ - public function __construct( $customer = '' ) { - if ( $customer instanceof WC_Customer ) { - $this->_is_user = true; - $this->read( absint( $customer->get_id() ) ); - } elseif ( is_numeric( $customer ) ) { - $this->_is_user = true; - $this->read( $customer ); - } elseif ( empty( $customer ) ) { - $this->_is_user = true; // unless load_session gets called after. + public function __construct( $customer_id = 0, $is_session = false ) { + if ( $customer_id > 0 ) { + $this->read( $customer_id ); } - - if ( $this->_from_session ) { + if ( $is_session ) { + $this->_is_session = true; + $this->load_session(); add_action( 'shutdown', array( $this, 'save_session_if_changed' ), 10 ); } } @@ -126,7 +118,7 @@ class WC_Customer extends WC_Legacy_Customer { * @since 2.7.0 */ public function save_session_if_changed() { - if ( $this->_changed ) { + if ( $this->_is_session && $this->_changed ) { $this->save_to_session(); } } @@ -135,13 +127,42 @@ class WC_Customer extends WC_Legacy_Customer { * Loads a WC session into the customer class. */ public function load_session() { - $this->_from_session = true; - if ( is_user_logged_in() ) { - $this->_is_user = true; - $this->read( get_current_user_id() ); - } else { - $this->_is_user = false; - $this->read( WC()->session->get_customer_id() ); + $data = (array) WC()->session->get( 'customer' ); + if ( ! empty( $data ) ) { + foreach ( $this->_session_keys as $session_key ) { + $function_key = $session_key; + if ( 'billing_' === substr( $session_key, 0, 8 ) ) { + $session_key = str_replace( 'billing_', '', $session_key ); + } + if ( ! empty( $data[ $session_key ] ) && is_callable( array( $this, "set_{$function_key}" ) ) ) { + $this->{"set_{$function_key}"}( $data[ $session_key ] ); + } + } + } + $this->load_defaults(); + } + + /** + * Load default values if props are unset. + */ + protected function load_defaults() { + $default = wc_get_customer_default_location(); + + // Set some defaults if some of our values are still not set. + if ( empty( $this->get_billing_country() ) ) { + $this->set_billing_country( $default['country'] ); + } + + if ( empty( $this->get_shipping_country() ) ) { + $this->set_shipping_country( $this->get_billing_country() ); + } + + if ( empty( $this->get_billing_state() ) ) { + $this->set_billing_state( $default['state'] ); + } + + if ( empty( $this->get_shipping_state() ) ) { + $this->set_shipping_state( $this->get_billing_state() ); } } @@ -153,9 +174,9 @@ class WC_Customer extends WC_Legacy_Customer { */ /** - * Return a customer's user ID. If the current customer is logged out, this will be a session key. + * Return a customer's user ID. Logged out users have ID 0. * @since 2.7.0 - * @return mixed + * @return int */ public function get_id() { return $this->_data['id']; @@ -445,7 +466,7 @@ class WC_Customer extends WC_Legacy_Customer { */ public function get_downloadable_products() { $downloads = array(); - if ( $this->_is_user ) { + if ( $this->get_id() ) { $downloads = wc_get_customer_available_downloads( $this->get_id() ); } return apply_filters( 'woocommerce_customer_get_downloadable_products', $downloads ); @@ -823,14 +844,14 @@ class WC_Customer extends WC_Legacy_Customer { update_user_meta( $this->get_id(), 'shipping_state', $this->get_shipping_state() ); update_user_meta( $this->get_id(), 'shipping_country', $this->get_shipping_country() ); update_user_meta( $this->get_id(), 'paying_customer', $this->get_is_paying_customer() ); - $this->set_date_modified( time() ); update_user_meta( $this->get_id(), 'last_update', $this->get_date_modified() ); update_user_meta( $this->get_id(), 'first_name', $this->get_first_name() ); update_user_meta( $this->get_id(), 'last_name', $this->get_last_name() ); + $this->set_date_modified( time() ); wp_update_user( array( 'ID' => $this->get_id(), 'role' => $this->get_role() ) ); $wp_user = new WP_User( $this->get_id() ); $this->set_date_created( strtotime( $wp_user->user_registered ) ); - $this->save_meta_data(); + $this->read_meta_data(); } } @@ -841,41 +862,19 @@ class WC_Customer extends WC_Legacy_Customer { */ public function read( $id ) { global $wpdb; - $pull_from_db = true; - $data = array(); - if ( $this->_from_session ) { - $data = (array) WC()->session->get( 'customer' ); - if ( ! empty( $data ) ) { - $pull_from_db = false; - foreach ( $this->_session_keys as $session_key ) { - $function_key = $session_key; - if ( 'billing_' === substr( $session_key, 0, 8 ) ) { - $session_key = str_replace( 'billing_', '', $session_key ); - } - if ( ! empty( $data[ $session_key ] ) && is_callable( array( $this, "set_{$function_key}" ) ) ) { - $this->{"set_{$function_key}"}( $data[ $session_key ] ); - } - } - } - } - - if ( $this->_is_user ) { + if ( $id ) { // Only continue reading if the customer exists. $user_object = get_userdata( $id ); - if ( empty( $user_object ) || empty ( $user_object->ID ) ) { + + if ( empty( $user_object ) || empty( $user_object->ID ) ) { $this->_data['id'] = 0; return; } - foreach ( array_keys( $this->_data ) as $key ) { - if ( 'billing_' === substr( $key, 0, 8 ) ) { - $session_key = str_replace( 'billing_', '', $key ); - } - if ( ! $pull_from_db && ! empty( $data[ $session_key ] ) ) { - continue; - } + $this->_data['id'] = $id; + foreach ( array_keys( $this->_data ) as $key ) { $meta_value = get_user_meta( $id, $key, true ); if ( $meta_value && is_callable( array( $this, "set_{$key}" ) ) ) { $this->{"set_{$key}"}( $meta_value ); @@ -935,31 +934,9 @@ class WC_Customer extends WC_Legacy_Customer { $this->set_orders_count( $count ); $this->set_total_spent( $spent ); - $this->read_meta_data(); } - $this->_data['id'] = $id; - - $default = wc_get_customer_default_location(); - - // Set some defaults if some of our values are still not set. - if ( empty( $this->get_billing_country() ) ) { - $this->set_billing_country( $default['country'] ); - } - - if ( empty( $this->get_shipping_country() ) ) { - $this->set_shipping_country( $this->get_billing_country() ); - } - - if ( empty( $this->get_billing_state() ) ) { - $this->set_billing_state( $default['state'] ); - } - - if ( empty( $this->get_shipping_state() ) ) { - $this->set_shipping_state( $this->get_billing_state() ); - } - unset( $this->_data['password'] ); // password is write only, never ever read it } @@ -1016,18 +993,12 @@ class WC_Customer extends WC_Legacy_Customer { * @since 2.7.0 */ public function save() { - if ( $this->_from_session && ! $this->_is_user ) { + if ( $this->_is_session ) { $this->save_session_if_changed(); - return; - } - if ( ! $this->_is_user ) { + } elseif ( ! $this->get_id() ) { $this->create(); } else { - if ( ! $this->get_id() ) { - $this->create(); - } else { - $this->update(); - } + $this->update(); } } @@ -1036,7 +1007,7 @@ class WC_Customer extends WC_Legacy_Customer { * @since 2.7.0 */ public function save_to_session() { - if ( ! $this->_from_session ) { + if ( ! $this->_is_session ) { return; } $data = array(); diff --git a/woocommerce.php b/woocommerce.php index 1c54735fa1e..830aa3aa9a6 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -334,8 +334,7 @@ final class WooCommerce { // Classes/actions loaded for the frontend and for ajax requests. if ( $this->is_request( 'frontend' ) ) { $this->cart = new WC_Cart(); // Cart class, stores the cart contents - $this->customer = new WC_Customer(); // Customer class, handles data such as customer location - $this->customer->load_session(); + $this->customer = new WC_Customer( get_current_user_id(), true ); // Customer class, handles data such as customer location } $this->load_webhooks(); From 14b40ea3402ed1d19f63cd67e43083c0a5ecf058 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 14:13:20 +0100 Subject: [PATCH 30/81] Handle first and last name fields @justinshreve --- includes/class-wc-customer.php | 160 ++++++++++++++++++++++++++++++++- 1 file changed, 158 insertions(+), 2 deletions(-) diff --git a/includes/class-wc-customer.php b/includes/class-wc-customer.php index 897452904d6..0baa51c7477 100644 --- a/includes/class-wc-customer.php +++ b/includes/class-wc-customer.php @@ -34,12 +34,20 @@ class WC_Customer extends WC_Legacy_Customer { 'password' => '', // write only 'date_created' => '', // read only 'date_modified' => '', // read only - 'billing_postcode' => '', - 'billing_city' => '', + 'billing_first_name' => '', + 'billing_last_name' => '', + 'billing_company' => '', + 'billing_phone' => '', + 'billing_email' => '', 'billing_address_1' => '', 'billing_address_2' => '', 'billing_state' => '', + 'billing_postcode' => '', + 'billing_city' => '', 'billing_country' => '', + 'shipping_first_name' => '', + 'shipping_last_name' => '', + 'shipping_company' => '', 'shipping_postcode' => '', 'shipping_city' => '', 'shipping_address_1' => '', @@ -59,6 +67,8 @@ class WC_Customer extends WC_Legacy_Customer { 'billing_postcode', 'billing_city', 'billing_address_1', 'billing_address', 'billing_address_2', 'billing_state', 'billing_country', 'shipping_postcode', 'shipping_city', 'shipping_address_1', 'shipping_address', 'shipping_address_2', 'shipping_state', 'shipping_country', 'is_vat_exempt', 'calculated_shipping', + 'billing_first_name', 'billing_last_name', 'billing_company', 'billing_phone', 'billing_email', + 'shipping_first_name', 'shipping_last_name', 'shipping_company', ); /** @@ -73,6 +83,8 @@ class WC_Customer extends WC_Legacy_Customer { 'last_update', 'first_name', 'last_name', 'show_admin_bar_front', 'use_ssl', 'admin_color', 'rich_editing', 'comment_shortcuts', 'dismissed_wp_pointers', 'show_welcome_panel', '_woocommerce_persistent_cart', 'session_tokens', + 'billing_first_name', 'billing_last_name', 'billing_company', 'billing_phone', 'billing_email', + 'shipping_first_name', 'shipping_last_name', 'shipping_company', ); /** @@ -299,6 +311,46 @@ class WC_Customer extends WC_Legacy_Customer { return absint( $this->_data['date_modified'] ); } + /** + * Gets billing first name. + * @return string + */ + public function get_billing_first_name() { + return $this->_data['billing_first_name']; + } + + /** + * Gets billing last name. + * @return string + */ + public function get_billing_last_name() { + return $this->_data['billing_last_name']; + } + + /** + * Gets billing company. + * @return string + */ + public function get_billing_company() { + return $this->_data['billing_company']; + } + + /** + * Gets billing phone. + * @return string + */ + public function get_billing_phone() { + return $this->_data['billing_phone']; + } + + /** + * Gets billing email. + * @return string + */ + public function get_billing_email() { + return $this->_data['billing_email']; + } + /** * Gets customer postcode. * @return string @@ -355,6 +407,30 @@ class WC_Customer extends WC_Legacy_Customer { return $this->_data['billing_country']; } + /** + * Gets shipping first name. + * @return string + */ + public function get_shipping_first_name() { + return $this->_data['shipping_first_name']; + } + + /** + * Gets shipping last name. + * @return string + */ + public function get_shipping_last_name() { + return $this->_data['shipping_last_name']; + } + + /** + * Gets shipping company. + * @return string + */ + public function get_shipping_company() { + return $this->_data['shipping_company']; + } + /** * Get customer's shipping state. * @return string @@ -650,6 +726,46 @@ class WC_Customer extends WC_Legacy_Customer { $this->_data['billing_city'] = $city; } + /** + * Set billing first name. + * @return string + */ + public function set_billing_first_name( $value ) { + $this->_data['billing_first_name'] = $value; + } + + /** + * Set billing last name. + * @return string + */ + public function set_billing_last_name( $value ) { + $this->_data['billing_last_name'] = $value; + } + + /** + * Set billing company. + * @return string + */ + public function set_billing_company( $value ) { + $this->_data['billing_company'] = $value; + } + + /** + * Set billing phone. + * @return string + */ + public function set_billing_phone( $value ) { + $this->_data['billing_phone'] = $value; + } + + /** + * Set billing email. + * @return string + */ + public function set_billing_email( $email ) { + $this->_data['billing_email'] = sanitize_email( $email ); + } + /** * Set customer country. * @param mixed $country @@ -706,6 +822,30 @@ class WC_Customer extends WC_Legacy_Customer { $this->_data['billing_address_2'] = $address; } + /** + * Set shipping first name. + * @return string + */ + public function set_shipping_first_name( $value ) { + $this->_data['shipping_first_name'] = $value; + } + + /** + * Set shipping last name. + * @return string + */ + public function set_shipping_last_name( $value ) { + $this->_data['shipping_last_name'] = $value; + } + + /** + * Set shipping company. + * @return string + */ + public function set_shipping_company( $value ) { + $this->_data['shipping_company'] = $value; + } + /** * Set shipping country. * @param string $country @@ -831,12 +971,20 @@ class WC_Customer extends WC_Legacy_Customer { unset( $this->_data['password'] ); if ( $customer_id ) { $this->_data['id'] = $customer_id; + update_user_meta( $this->get_id(), 'billing_first_name', $this->get_billing_first_name() ); + update_user_meta( $this->get_id(), 'billing_last_name', $this->get_billing_last_name() ); + update_user_meta( $this->get_id(), 'billing_company', $this->get_billing_company() ); + update_user_meta( $this->get_id(), 'billing_phone', $this->get_billing_phone() ); + update_user_meta( $this->get_id(), 'billing_email', $this->get_billing_email() ); update_user_meta( $this->get_id(), 'billing_postcode', $this->get_billing_postcode() ); update_user_meta( $this->get_id(), 'billing_city', $this->get_billing_city() ); update_user_meta( $this->get_id(), 'billing_address_1', $this->get_billing_address() ); update_user_meta( $this->get_id(), 'billing_address_2', $this->get_billing_address_2() ); update_user_meta( $this->get_id(), 'billing_state', $this->get_billing_state() ); update_user_meta( $this->get_id(), 'billing_country', $this->get_billing_country() ); + update_user_meta( $this->get_id(), 'shipping_first_name', $this->get_shipping_first_name() ); + update_user_meta( $this->get_id(), 'shipping_last_name', $this->get_shipping_last_name() ); + update_user_meta( $this->get_id(), 'shipping_company', $this->get_shipping_company() ); update_user_meta( $this->get_id(), 'shipping_postcode', $this->get_shipping_postcode() ); update_user_meta( $this->get_id(), 'shipping_city', $this->get_shipping_city() ); update_user_meta( $this->get_id(), 'shipping_address_1', $this->get_shipping_address() ); @@ -954,11 +1102,19 @@ class WC_Customer extends WC_Legacy_Customer { unset( $this->_data['password'] ); } + update_user_meta( $this->get_id(), 'billing_first_name', $this->get_billing_first_name() ); + update_user_meta( $this->get_id(), 'billing_last_name', $this->get_billing_last_name() ); + update_user_meta( $this->get_id(), 'billing_company', $this->get_billing_company() ); + update_user_meta( $this->get_id(), 'billing_phone', $this->get_billing_phone() ); + update_user_meta( $this->get_id(), 'billing_email', $this->get_billing_email() ); update_user_meta( $this->get_id(), 'billing_postcode', $this->get_billing_postcode() ); update_user_meta( $this->get_id(), 'billing_city', $this->get_billing_city() ); update_user_meta( $this->get_id(), 'billing_address_1', $this->get_billing_address() ); update_user_meta( $this->get_id(), 'billing_address_2', $this->get_billing_address_2() ); update_user_meta( $this->get_id(), 'billing_state', $this->get_billing_state() ); + update_user_meta( $this->get_id(), 'shipping_first_name', $this->get_shipping_first_name() ); + update_user_meta( $this->get_id(), 'shipping_last_name', $this->get_shipping_last_name() ); + update_user_meta( $this->get_id(), 'shipping_company', $this->get_shipping_company() ); update_user_meta( $this->get_id(), 'billing_country', $this->get_billing_country() ); update_user_meta( $this->get_id(), 'shipping_postcode', $this->get_shipping_postcode() ); update_user_meta( $this->get_id(), 'shipping_city', $this->get_shipping_city() ); From 83dca89d0c99a48b2c2f1f24fc417482cf33b1ad Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 16:53:48 +0100 Subject: [PATCH 31/81] Correct customer escaping and tests --- includes/abstracts/abstract-wc-data.php | 4 ++-- includes/class-wc-customer.php | 9 +++------ tests/unit-tests/customer/crud.php | 8 +++----- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index beed5f3ef5f..e7409a3b0a5 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -254,7 +254,7 @@ abstract class WC_Data { SELECT " . $db_info['meta_id_field'] . ", meta_key, meta_value FROM " . $db_info['table'] . " WHERE " . $db_info['object_id_field'] . " = %d ORDER BY " . $db_info['meta_id_field'] . " - AND meta_key NOT LIKE 'wp_%' + AND meta_key NOT LIKE 'wp\_%%' ", $this->get_id() ) ); if ( $raw_meta_data ) { @@ -287,7 +287,7 @@ abstract class WC_Data { SELECT " . $db_info['meta_id_field'] . " FROM " . $db_info['table'] . " WHERE " . $db_info['object_id_field'] . " = %d", $this->get_id() ) . " AND meta_key NOT IN ('" . implode( "','", array_map( 'esc_sql', $this->get_internal_meta_keys() ) ) . "') - AND meta_key NOT LIKE 'wp_%'; + AND meta_key NOT LIKE 'wp\_%%'; " ) ); $set_meta_ids = array(); diff --git a/includes/class-wc-customer.php b/includes/class-wc-customer.php index 0baa51c7477..6ffb677f738 100644 --- a/includes/class-wc-customer.php +++ b/includes/class-wc-customer.php @@ -130,7 +130,7 @@ class WC_Customer extends WC_Legacy_Customer { * @since 2.7.0 */ public function save_session_if_changed() { - if ( $this->_is_session && $this->_changed ) { + if ( $this->_changed ) { $this->save_to_session(); } } @@ -968,8 +968,8 @@ class WC_Customer extends WC_Legacy_Customer { */ public function create() { $customer_id = wc_create_new_customer( $this->get_email(), $this->get_username(), $this->_data['password'] ); - unset( $this->_data['password'] ); - if ( $customer_id ) { + + if ( ! is_wp_error( $customer_id ) ) { $this->_data['id'] = $customer_id; update_user_meta( $this->get_id(), 'billing_first_name', $this->get_billing_first_name() ); update_user_meta( $this->get_id(), 'billing_last_name', $this->get_billing_last_name() ); @@ -1163,9 +1163,6 @@ class WC_Customer extends WC_Legacy_Customer { * @since 2.7.0 */ public function save_to_session() { - if ( ! $this->_is_session ) { - return; - } $data = array(); foreach ( $this->_session_keys as $session_key ) { $function_key = $session_key; diff --git a/tests/unit-tests/customer/crud.php b/tests/unit-tests/customer/crud.php index d710d760306..5e981a528d7 100644 --- a/tests/unit-tests/customer/crud.php +++ b/tests/unit-tests/customer/crud.php @@ -406,8 +406,6 @@ class CustomerCRUD extends \WC_Unit_Test_Case { $customer = \WC_Helper_Customer::create_customer(); $session = \WC_Helper_Customer::create_mock_customer(); // set into session.... - $this->assertNotEmpty( $session->get_id() ); - $this->assertFalse( is_numeric( $session->get_id() ) ); $this->assertEquals( '19123', $session->get_billing_postcode() ); $this->assertEquals( '123 South Street', $session->get_billing_address() ); $this->assertEquals( 'Philadelphia', $session->get_billing_city() ); @@ -415,17 +413,17 @@ class CustomerCRUD extends \WC_Unit_Test_Case { $session->set_billing_address( '124 South Street' ); $session->save_to_session(); - $session = new \WC_Customer(); + $session = new \WC_Customer( 0, true ); $session->load_session(); $this->assertEquals( '124 South Street', $session->get_billing_address() ); - $session = new \WC_Customer(); + $session = new \WC_Customer( 0, true ); $session->load_session(); $session->set_billing_postcode( '32191' ); $session->save(); // should still be session ID, not a created row, since we are working with guests/sessions - $this->assertFalse( is_numeric( $session->get_id() ) ); + $this->assertFalse( $session->get_id() > 0 ); $this->assertEquals( '32191' , $session->get_billing_postcode() ); } From 9138d8a9e11df10a41855a0a991808cf0ed2480a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 16:56:55 +0100 Subject: [PATCH 32/81] order api notices --- .../api/class-wc-rest-orders-controller.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 9c3c48a8262..346d960c1c4 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -126,18 +126,18 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $data = array( 'id' => $order->get_id(), - 'parent_id' => $post->post_parent, + 'parent_id' => $order->get_parent_id(), 'status' => $order->get_status(), 'order_key' => $order->get_order_key(), 'number' => $order->get_order_number(), 'currency' => $order->get_currency(), - 'version' => $order->order_version, - 'prices_include_tax' => $order->prices_include_tax, - 'date_created' => wc_rest_prepare_date_response( $post->post_date_gmt ), - 'date_modified' => wc_rest_prepare_date_response( $post->post_modified_gmt ), + 'version' => $order->get_version(), + 'prices_include_tax' => $order->get_prices_include_tax(), + 'date_created' => wc_rest_prepare_date_response( get_gmt_from_date( date( 'Y-m-d H:i:s', $order->get_date_created() ) ) ), + 'date_modified' => wc_rest_prepare_date_response( get_gmt_from_date( date( 'Y-m-d H:i:s', $order->get_date_modified() ) ) ), 'customer_id' => $order->get_user_id(), 'discount_total' => wc_format_decimal( $order->get_total_discount(), $dp ), - 'discount_tax' => wc_format_decimal( $order->cart_discount_tax, $dp ), + 'discount_tax' => wc_format_decimal( $order->get_discount_tax(), $dp ), 'shipping_total' => wc_format_decimal( $order->get_total_shipping(), $dp ), 'shipping_tax' => wc_format_decimal( $order->get_shipping_tax(), $dp ), 'cart_tax' => wc_format_decimal( $order->get_cart_tax(), $dp ), @@ -152,7 +152,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'customer_user_agent' => $order->get_customer_user_agent(), 'created_via' => $order->get_created_via(), 'customer_note' => $order->get_customer_note(), - 'date_completed' => wc_rest_prepare_date_response( $order->completed_date ), + 'date_completed' => wc_rest_prepare_date_response( get_gmt_from_date( date( 'Y-m-d H:i:s', $order->get_date_completed() ) ) ), 'date_paid' => $order->get_date_paid(), 'cart_hash' => $order->get_cart_hash(), 'line_items' => array(), @@ -377,9 +377,9 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { ); } - if ( 0 !== (int) $order->post->post_parent ) { + if ( 0 !== (int) $order->get_parent_id() ) { $links['up'] = array( - 'href' => rest_url( sprintf( '/%s/orders/%d', $this->namespace, $order->post->post_parent ) ), + 'href' => rest_url( sprintf( '/%s/orders/%d', $this->namespace, $order->get_parent_id() ) ), ); } From 3f08d116d8846aa395a2528bd54852121e7cb3bd Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 17:27:33 +0100 Subject: [PATCH 33/81] Start using crud for order requests --- includes/abstracts/abstract-wc-order.php | 1 + .../api/class-wc-rest-orders-controller.php | 137 ++++++++++-------- 2 files changed, 78 insertions(+), 60 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index feee8bcbd46..cabe5b2f5dd 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -348,6 +348,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { return array_merge( $this->_data, array( + 'number' => $this->get_order_number(), 'meta_data' => $this->get_meta_data(), 'line_items' => $this->get_items( 'line_item' ), 'tax_lines' => $this->get_items( 'tax' ), diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 346d960c1c4..c2d9ae62785 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -43,6 +43,13 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { */ protected $post_type = 'shop_order'; + /** + * DP for rounding. + * + * @var int + */ + protected $dp = '2'; + /** * Initialize orders actions. */ @@ -111,6 +118,24 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { ) ); } + /** + * Expands an order item to get its data. + * @return array + */ + protected function get_order_item_data( $item ) { + $data = $item->get_data(); + $format_decimal = array( 'subtotal', 'subtotal_tax', 'total', 'total_tax', 'tax_total', 'shipping_tax_total' ); + + // Format decimal values + foreach ( $format_decimal as $key ) { + if ( isset( $data[ $key ] ) ) { + $data[ $key ] = wc_format_decimal( $data[ $key ], $this->dp ); + } + } + + return $data; + } + /** * Prepare a single order output for response. * @@ -121,47 +146,35 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { public function prepare_item_for_response( $post, $request ) { global $wpdb; - $order = wc_get_order( $post ); - $dp = $request['dp']; + $this->dp = $request['dp']; + $format_decimal = array( 'discount_total', 'discount_tax', 'shipping_total', 'shipping_tax', 'shipping_total', 'shipping_tax', 'cart_tax', 'total', 'total_tax' ); + $format_date = array( 'date_created', 'date_modified', 'date_completed' ); + $format_line_items = array( 'line_items', 'tax_lines', 'shipping_lines', 'fee_lines', 'coupon_lines' ); + $statuses = wc_get_order_statuses(); + $order = wc_get_order( $post ); + $data = $order->get_data(); - $data = array( - 'id' => $order->get_id(), - 'parent_id' => $order->get_parent_id(), - 'status' => $order->get_status(), - 'order_key' => $order->get_order_key(), - 'number' => $order->get_order_number(), - 'currency' => $order->get_currency(), - 'version' => $order->get_version(), - 'prices_include_tax' => $order->get_prices_include_tax(), - 'date_created' => wc_rest_prepare_date_response( get_gmt_from_date( date( 'Y-m-d H:i:s', $order->get_date_created() ) ) ), - 'date_modified' => wc_rest_prepare_date_response( get_gmt_from_date( date( 'Y-m-d H:i:s', $order->get_date_modified() ) ) ), - 'customer_id' => $order->get_user_id(), - 'discount_total' => wc_format_decimal( $order->get_total_discount(), $dp ), - 'discount_tax' => wc_format_decimal( $order->get_discount_tax(), $dp ), - 'shipping_total' => wc_format_decimal( $order->get_total_shipping(), $dp ), - 'shipping_tax' => wc_format_decimal( $order->get_shipping_tax(), $dp ), - 'cart_tax' => wc_format_decimal( $order->get_cart_tax(), $dp ), - 'total' => wc_format_decimal( $order->get_total(), $dp ), - 'total_tax' => wc_format_decimal( $order->get_total_tax(), $dp ), - 'billing' => array(), - 'shipping' => array(), - 'payment_method' => $order->get_payment_method(), - 'payment_method_title' => $order->get_payment_method_title(), - 'transaction_id' => $order->get_transaction_id(), - 'customer_ip_address' => $order->get_customer_ip_address(), - 'customer_user_agent' => $order->get_customer_user_agent(), - 'created_via' => $order->get_created_via(), - 'customer_note' => $order->get_customer_note(), - 'date_completed' => wc_rest_prepare_date_response( get_gmt_from_date( date( 'Y-m-d H:i:s', $order->get_date_completed() ) ) ), - 'date_paid' => $order->get_date_paid(), - 'cart_hash' => $order->get_cart_hash(), - 'line_items' => array(), - 'tax_lines' => array(), - 'shipping_lines' => array(), - 'fee_lines' => array(), - 'coupon_lines' => array(), - 'refunds' => array(), - ); + // Format decimal values + foreach ( $format_decimal as $key ) { + $data[ $key ] = wc_format_decimal( $data[ $key ], $this->dp ); + } + + // Format date values + foreach ( $format_date as $key ) { + $data[ $key ] = $data[ $key ] ? wc_rest_prepare_date_response( get_gmt_from_date( date( 'Y-m-d H:i:s', $data[ $key ] ) ) ) : false; + } + + // Format the order status + $data['status'] = 'wc-' === substr( $data['status'], 0, 3 ) ? substr( $data['status'], 3 ) : $data['status']; + + // Format line items + foreach ( $format_line_items as $key ) { + $data[ $key ] = array_map( array( $this, 'get_order_item_data' ), $data[ $key ] ); + } + + // refunds + +/* // Add addresses. $data['billing'] = $order->get_address( 'billing' ); @@ -203,11 +216,11 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'variation_id' => (int) $variation_id, 'quantity' => wc_stock_amount( $item['qty'] ), 'tax_class' => ! empty( $item['tax_class'] ) ? $item['tax_class'] : '', - 'price' => wc_format_decimal( $order->get_item_total( $item, false, false ), $dp ), - 'subtotal' => wc_format_decimal( $order->get_line_subtotal( $item, false, false ), $dp ), - 'subtotal_tax' => wc_format_decimal( $item['line_subtotal_tax'], $dp ), - 'total' => wc_format_decimal( $order->get_line_total( $item, false, false ), $dp ), - 'total_tax' => wc_format_decimal( $item['line_tax'], $dp ), + 'price' => wc_format_decimal( $order->get_item_total( $item, false, false ), $this->dp ), + 'subtotal' => wc_format_decimal( $order->get_line_subtotal( $item, false, false ), $this->dp ), + 'subtotal_tax' => wc_format_decimal( $item['line_subtotal_tax'], $this->dp ), + 'total' => wc_format_decimal( $order->get_line_total( $item, false, false ), $this->dp ), + 'total_tax' => wc_format_decimal( $item['line_tax'], $this->dp ), 'taxes' => array(), 'meta' => $item_meta, ); @@ -242,8 +255,8 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'rate_id' => $tax['rate_id'], 'label' => isset( $tax['label'] ) ? $tax['label'] : $tax['name'], 'compound' => (bool) $tax['compound'], - 'tax_total' => wc_format_decimal( $tax['tax_amount'], $dp ), - 'shipping_tax_total' => wc_format_decimal( $tax['shipping_tax_amount'], $dp ), + 'tax_total' => wc_format_decimal( $tax['tax_amount'], $this->dp ), + 'shipping_tax_total' => wc_format_decimal( $tax['shipping_tax_amount'], $this->dp ), ); $data['tax_lines'][] = $tax_line; @@ -255,15 +268,15 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'id' => $shipping_item_id, 'method_title' => $shipping_item['name'], 'method_id' => $shipping_item['method_id'], - 'total' => wc_format_decimal( $shipping_item['cost'], $dp ), - 'total_tax' => wc_format_decimal( '', $dp ), + 'total' => wc_format_decimal( $shipping_item['cost'], $this->dp ), + 'total_tax' => wc_format_decimal( '', $this->dp ), 'taxes' => array(), ); $shipping_taxes = maybe_unserialize( $shipping_item['taxes'] ); if ( ! empty( $shipping_taxes ) ) { - $shipping_line['total_tax'] = wc_format_decimal( array_sum( $shipping_taxes ), $dp ); + $shipping_line['total_tax'] = wc_format_decimal( array_sum( $shipping_taxes ), $this->dp ); foreach ( $shipping_taxes as $tax_rate_id => $tax ) { $shipping_line['taxes'][] = array( @@ -283,8 +296,8 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'name' => $fee_item['name'], 'tax_class' => ! empty( $fee_item['tax_class'] ) ? $fee_item['tax_class'] : '', 'tax_status' => 'taxable', - 'total' => wc_format_decimal( $order->get_line_total( $fee_item ), $dp ), - 'total_tax' => wc_format_decimal( $order->get_line_tax( $fee_item ), $dp ), + 'total' => wc_format_decimal( $order->get_line_total( $fee_item ), $this->dp ), + 'total_tax' => wc_format_decimal( $order->get_line_tax( $fee_item ), $this->dp ), 'taxes' => array(), ); @@ -317,8 +330,8 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $coupon_line = array( 'id' => $coupon_item_id, 'code' => $coupon_item['name'], - 'discount' => wc_format_decimal( $coupon_item['discount_amount'], $dp ), - 'discount_tax' => wc_format_decimal( $coupon_item['discount_amount_tax'], $dp ), + 'discount' => wc_format_decimal( $coupon_item['discount_amount'], $this->dp ), + 'discount_tax' => wc_format_decimal( $coupon_item['discount_amount_tax'], $this->dp ), ); $data['coupon_lines'][] = $coupon_line; @@ -329,17 +342,21 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $data['refunds'][] = array( 'id' => $refund->id, 'refund' => $refund->get_refund_reason() ? $refund->get_refund_reason() : '', - 'total' => '-' . wc_format_decimal( $refund->get_refund_amount(), $dp ), + 'total' => '-' . wc_format_decimal( $refund->get_refund_amount(), $this->dp ), ); } +*/ - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; - $data = $this->add_additional_fields_to_object( $data, $request ); - $data = $this->filter_response_by_context( $data, $context ); - // Wrap the data in a response object. + + + + + + $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; + $data = $this->add_additional_fields_to_object( $data, $request ); + $data = $this->filter_response_by_context( $data, $context ); $response = rest_ensure_response( $data ); - $response->add_links( $this->prepare_links( $order ) ); /** From c7ae2c31ea8a2dee244c97a2e2ad3f22f97141ce Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 17:37:18 +0100 Subject: [PATCH 34/81] leave wp meta alone and handle serialisation --- includes/abstracts/abstract-wc-data.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index e7409a3b0a5..15742c8650c 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -253,8 +253,7 @@ abstract class WC_Data { $raw_meta_data = $wpdb->get_results( $wpdb->prepare( " SELECT " . $db_info['meta_id_field'] . ", meta_key, meta_value FROM " . $db_info['table'] . " - WHERE " . $db_info['object_id_field'] . " = %d ORDER BY " . $db_info['meta_id_field'] . " - AND meta_key NOT LIKE 'wp\_%%' + WHERE " . $db_info['object_id_field'] . "=%d AND meta_key NOT LIKE 'wp\_%%' ORDER BY " . $db_info['meta_id_field'] . " ", $this->get_id() ) ); if ( $raw_meta_data ) { @@ -264,7 +263,7 @@ abstract class WC_Data { } $this->_meta_data[] = (object) array( 'key' => $meta->meta_key, - 'value' => $meta->meta_value, + 'value' => maybe_unserialize( $meta->meta_value ), 'meta_id' => $meta->{ $db_info['meta_id_field'] }, ); } From 77edd79eef7c621f643bfdbe1414f3a04252350f Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 17:44:37 +0100 Subject: [PATCH 35/81] Tested up to 4.6 --- readme.txt | 2 +- woocommerce.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.txt b/readme.txt index d6c69a6106e..39c2d7b7263 100644 --- a/readme.txt +++ b/readme.txt @@ -2,7 +2,7 @@ Contributors: automattic, mikejolley, jameskoster, claudiosanches, jshreve, coderkevin, woothemes, BFTrick, iCaleb Tags: ecommerce, e-commerce, store, sales, sell, shop, cart, checkout, downloadable, downloads, paypal, storefront Requires at least: 4.4 -Tested up to: 4.5 +Tested up to: 4.6 Stable tag: 2.6.3 License: GPLv3 License URI: https://www.gnu.org/licenses/gpl-3.0.html diff --git a/woocommerce.php b/woocommerce.php index 830aa3aa9a6..a781e05c3fc 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -7,7 +7,7 @@ * Author: WooThemes * Author URI: https://woothemes.com * Requires at least: 4.4 - * Tested up to: 4.5 + * Tested up to: 4.6 * * Text Domain: woocommerce * Domain Path: /i18n/languages/ From 5afac69f103f34a8c9718119a622055c94a6a851 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Mon, 15 Aug 2016 17:50:02 +0100 Subject: [PATCH 36/81] Fix write context errors --- includes/admin/class-wc-admin-post-types.php | 2 +- includes/admin/meta-boxes/class-wc-meta-box-order-data.php | 6 +++--- includes/class-wc-form-handler.php | 2 +- includes/wc-user-functions.php | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/includes/admin/class-wc-admin-post-types.php b/includes/admin/class-wc-admin-post-types.php index 0805f9ffc55..19819f3a82b 100644 --- a/includes/admin/class-wc-admin-post-types.php +++ b/includes/admin/class-wc-admin-post-types.php @@ -2203,7 +2203,7 @@ class WC_Admin_Post_Types { foreach ( $existing_permissions as $existing_permission ) { $order = wc_get_order( $existing_permission->order_id ); - if ( ! empty( $order->get_id() ) ) { + if ( $order->get_id() ) { // Remove permissions if ( ! empty( $removed_download_ids ) ) { foreach ( $removed_download_ids as $download_id ) { diff --git a/includes/admin/meta-boxes/class-wc-meta-box-order-data.php b/includes/admin/meta-boxes/class-wc-meta-box-order-data.php index 3a367b98daf..55587935333 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-order-data.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-order-data.php @@ -153,7 +153,7 @@ class WC_Meta_Box_Order_Data { $payment_gateways = array(); } - $payment_method = ! empty( $order->get_payment_method() ) ? $order->get_payment_method() : ''; + $payment_method = $order->get_payment_method() ? $order->get_payment_method() : ''; $order_type_object = get_post_type_object( $post->post_type ); wp_nonce_field( 'woocommerce_save_data', 'woocommerce_meta_nonce' ); @@ -219,7 +219,7 @@ class WC_Meta_Box_Order_Data {

+

name; From e99798f16e9bcb94c27eb14c7359fcf5ca741a50 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 11:57:25 +0100 Subject: [PATCH 45/81] Date modified is read only and set by WP after update --- includes/class-wc-customer.php | 5 ++--- tests/unit-tests/customer/crud.php | 4 ---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/includes/class-wc-customer.php b/includes/class-wc-customer.php index 62dc0de0b5d..11ac3d21544 100644 --- a/includes/class-wc-customer.php +++ b/includes/class-wc-customer.php @@ -991,10 +991,10 @@ class WC_Customer extends WC_Legacy_Customer { update_user_meta( $this->get_id(), 'last_update', $this->get_date_modified() ); update_user_meta( $this->get_id(), 'first_name', $this->get_first_name() ); update_user_meta( $this->get_id(), 'last_name', $this->get_last_name() ); - $this->set_date_modified( time() ); wp_update_user( array( 'ID' => $this->get_id(), 'role' => $this->get_role() ) ); $wp_user = new WP_User( $this->get_id() ); $this->set_date_created( strtotime( $wp_user->user_registered ) ); + $this->set_date_modified( get_user_meta( $this->get_id(), 'last_update', true ) ); $this->read_meta_data(); } } @@ -1074,11 +1074,10 @@ class WC_Customer extends WC_Legacy_Customer { update_user_meta( $this->get_id(), 'shipping_state', $this->get_shipping_state() ); update_user_meta( $this->get_id(), 'shipping_country', $this->get_shipping_country() ); update_user_meta( $this->get_id(), 'paying_customer', $this->get_is_paying_customer() ); - $this->set_date_modified( time() ); - update_user_meta( $this->get_id(), 'last_update', $this->get_date_modified() ); update_user_meta( $this->get_id(), 'first_name', $this->get_first_name() ); update_user_meta( $this->get_id(), 'last_name', $this->get_last_name() ); wp_update_user( array( 'ID' => $this->get_id(), 'role' => $this->get_role() ) ); + $this->set_date_modified( get_user_meta( $this->get_id(), 'last_update', true ) ); $this->save_meta_data(); } diff --git a/tests/unit-tests/customer/crud.php b/tests/unit-tests/customer/crud.php index a27d4d93388..9dedb3bf0de 100644 --- a/tests/unit-tests/customer/crud.php +++ b/tests/unit-tests/customer/crud.php @@ -80,10 +80,6 @@ class WC_Tests_CustomerCRUD extends WC_Unit_Test_Case { $customer_id = $customer->get_id(); $this->assertNotEquals( 0, $customer->get_id() ); $customer->delete(); - - $user_object = get_user_by( 'id', $customer_id ); - $this->assertFalse( $user_object ); - $customer->read( $customer_id ); $this->assertEquals( 0, $customer->get_id() ); } From 71ce5f77d01733108a2ec5f543b386a77cfa8bb2 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 12:27:00 +0100 Subject: [PATCH 46/81] Replace order_item_id with just id --- includes/class-wc-order-item.php | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/includes/class-wc-order-item.php b/includes/class-wc-order-item.php index 879e6abb2b5..5102ca9626c 100644 --- a/includes/class-wc-order-item.php +++ b/includes/class-wc-order-item.php @@ -22,10 +22,10 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { * @var array */ protected $_data = array( - 'order_id' => 0, - 'order_item_id' => 0, - 'name' => '', - 'type' => '', + 'order_id' => 0, + 'id' => 0, // order_item_id + 'name' => '', + 'type' => '', ); /** @@ -118,7 +118,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { * @return int */ public function get_id() { - return $this->get_order_item_id(); + return absint( $this->_data['id'] ); } /** @@ -129,14 +129,6 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { return absint( $this->_data['order_id'] ); } - /** - * Get order item ID this meta belongs to. - * @return int - */ - protected function get_order_item_id() { - return absint( $this->_data['order_item_id'] ); - } - /** * Get order item name. * @return string @@ -164,7 +156,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { * @param int $value */ public function set_id( $value ) { - $this->set_order_item_id( $value ); + $this->_data['id'] = absint( $value ); } /** @@ -175,14 +167,6 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { $this->_data['order_id'] = absint( $value ); } - /** - * Set order item ID. - * @param int $value - */ - protected function set_order_item_id( $value ) { - $this->_data['order_item_id'] = absint( $value ); - } - /** * Set order item name. * @param string $value @@ -251,7 +235,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { if ( is_numeric( $item ) && ! empty( $item ) ) { $data = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item ) ); - } elseif ( ! empty( $item->order_item_id ) ) { + } elseif ( ! empty( $item->id ) ) { $data = $item; } else { $data = false; From 1baef123950bb412ddb3414c53d0417899543e8a Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 12:36:38 +0100 Subject: [PATCH 47/81] qty -> quantity --- includes/abstracts/abstract-wc-order.php | 12 +++---- includes/class-wc-order-item-coupon.php | 10 +++--- includes/class-wc-order-item-fee.php | 16 ++++----- includes/class-wc-order-item-product.php | 44 +++++++++++------------ includes/class-wc-order-item-shipping.php | 14 ++++---- includes/class-wc-order-item-tax.php | 2 +- includes/class-wc-order-item.php | 4 +-- includes/class-wc-order.php | 6 ++-- 8 files changed, 54 insertions(+), 54 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index cabe5b2f5dd..aa2782f2388 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -962,7 +962,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { $count = 0; foreach ( $items as $item ) { - $count += $item->get_qty(); + $count += $item->get_quantity(); } return apply_filters( 'woocommerce_get_item_count', $count, $item_type, $this ); @@ -1433,9 +1433,9 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { if ( is_callable( array( $item, 'get_subtotal' ) ) ) { if ( $inc_tax ) { - $subtotal = ( $item->get_subtotal() + $item->get_subtotal_tax() ) / max( 1, $item->get_qty() ); + $subtotal = ( $item->get_subtotal() + $item->get_subtotal_tax() ) / max( 1, $item->get_quantity() ); } else { - $subtotal = ( $item->get_subtotal() / max( 1, $item->get_qty() ) ); + $subtotal = ( $item->get_subtotal() / max( 1, $item->get_quantity() ) ); } $subtotal = $round ? number_format( (float) $subtotal, wc_get_price_decimals(), '.', '' ) : $subtotal; @@ -1481,9 +1481,9 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { if ( is_callable( array( $item, 'get_total' ) ) ) { if ( $inc_tax ) { - $total = ( $item->get_total() + $item->get_total_tax() ) / max( 1, $item->get_qty() ); + $total = ( $item->get_total() + $item->get_total_tax() ) / max( 1, $item->get_quantity() ); } else { - $total = $item->get_total() / max( 1, $item->get_qty() ); + $total = $item->get_total() / max( 1, $item->get_quantity() ); } $total = $round ? round( $total, wc_get_price_decimals() ) : $total; @@ -1525,7 +1525,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { $tax = 0; if ( is_callable( array( $item, 'get_total_tax' ) ) ) { - $tax = $item->get_total_tax() / max( 1, $item->get_qty() ); + $tax = $item->get_total_tax() / max( 1, $item->get_quantity() ); $tax = $round ? wc_round_tax_total( $tax ) : $tax; } diff --git a/includes/class-wc-order-item-coupon.php b/includes/class-wc-order-item-coupon.php index 8229ed18dde..df7ac2b1c9e 100644 --- a/includes/class-wc-order-item-coupon.php +++ b/includes/class-wc-order-item-coupon.php @@ -19,11 +19,11 @@ class WC_Order_Item_Coupon extends WC_Order_Item { * @var array */ protected $_data = array( - 'order_id' => 0, - 'order_item_id' => 0, - 'code' => '', - 'discount' => 0, - 'discount_tax' => 0, + 'order_id' => 0, + 'id' => 0, + 'code' => '', + 'discount' => 0, + 'discount_tax' => 0, ); /** diff --git a/includes/class-wc-order-item-fee.php b/includes/class-wc-order-item-fee.php index 47332d6b64f..57817b6843e 100644 --- a/includes/class-wc-order-item-fee.php +++ b/includes/class-wc-order-item-fee.php @@ -19,14 +19,14 @@ class WC_Order_Item_Fee extends WC_Order_Item { * @var array */ protected $_data = array( - 'order_id' => 0, - 'order_item_id' => 0, - 'name' => '', - 'tax_class' => '', - 'tax_status' => 'taxable', - 'total' => '', - 'total_tax' => '', - 'taxes' => array( + 'order_id' => 0, + 'id' => 0, + 'name' => '', + 'tax_class' => '', + 'tax_status' => 'taxable', + 'total' => '', + 'total_tax' => '', + 'taxes' => array( 'total' => array() ) ); diff --git a/includes/class-wc-order-item-product.php b/includes/class-wc-order-item-product.php index 34a86d0fab6..82949d88c47 100644 --- a/includes/class-wc-order-item-product.php +++ b/includes/class-wc-order-item-product.php @@ -19,18 +19,18 @@ class WC_Order_Item_Product extends WC_Order_Item { * @var array */ protected $_data = array( - 'order_id' => 0, - 'order_item_id' => 0, - 'name' => '', - 'product_id' => 0, - 'variation_id' => 0, - 'qty' => 0, - 'tax_class' => '', - 'subtotal' => 0, - 'subtotal_tax' => 0, - 'total' => 0, - 'total_tax' => 0, - 'taxes' => array( + 'order_id' => 0, + 'id' => 0, + 'name' => '', + 'product_id' => 0, + 'variation_id' => 0, + 'quantity' => 0, + 'tax_class' => '', + 'subtotal' => 0, + 'subtotal_tax' => 0, + 'total' => 0, + 'total_tax' => 0, + 'taxes' => array( 'subtotal' => array(), 'total' => array() ), @@ -98,7 +98,7 @@ class WC_Order_Item_Product extends WC_Order_Item { if ( $this->get_id() ) { $this->set_product_id( get_metadata( 'order_item', $this->get_id(), '_product_id', true ) ); $this->set_variation_id( get_metadata( 'order_item', $this->get_id(), '_variation_id', true ) ); - $this->set_qty( get_metadata( 'order_item', $this->get_id(), '_qty', true ) ); + $this->set_quantity( get_metadata( 'order_item', $this->get_id(), '_qty', true ) ); $this->set_tax_class( get_metadata( 'order_item', $this->get_id(), '_tax_class', true ) ); $this->set_subtotal( get_metadata( 'order_item', $this->get_id(), '_line_subtotal', true ) ); $this->set_subtotal_tax( get_metadata( 'order_item', $this->get_id(), '_line_subtotal_tax', true ) ); @@ -117,7 +117,7 @@ class WC_Order_Item_Product extends WC_Order_Item { if ( $this->get_id() ) { wc_update_order_item_meta( $this->get_id(), '_product_id', $this->get_product_id() ); wc_update_order_item_meta( $this->get_id(), '_variation_id', $this->get_variation_id() ); - wc_update_order_item_meta( $this->get_id(), '_qty', $this->get_qty() ); + wc_update_order_item_meta( $this->get_id(), '_qty', $this->get_quantity() ); wc_update_order_item_meta( $this->get_id(), '_tax_class', $this->get_tax_class() ); wc_update_order_item_meta( $this->get_id(), '_line_subtotal', $this->get_subtotal() ); wc_update_order_item_meta( $this->get_id(), '_line_subtotal_tax', $this->get_subtotal_tax() ); @@ -217,8 +217,8 @@ class WC_Order_Item_Product extends WC_Order_Item { * Set meta data for backordered products. */ public function set_backorder_meta() { - if ( $this->get_product()->backorders_require_notification() && $this->get_product()->is_on_backorder( $this->get_qty() ) ) { - $this->add_meta_data( apply_filters( 'woocommerce_backordered_item_meta_name', __( 'Backordered', 'woocommerce' ) ), $this->get_qty() - max( 0, $this->get_product()->get_total_stock() ), true ); + if ( $this->get_product()->backorders_require_notification() && $this->get_product()->is_on_backorder( $this->get_quantity() ) ) { + $this->add_meta_data( apply_filters( 'woocommerce_backordered_item_meta_name', __( 'Backordered', 'woocommerce' ) ), $this->get_quantity() - max( 0, $this->get_product()->get_total_stock() ), true ); } } @@ -229,11 +229,11 @@ class WC_Order_Item_Product extends WC_Order_Item { */ /** - * Set qty. + * Set quantity. * @param int $value */ - public function set_qty( $value ) { - $this->_data['qty'] = wc_stock_amount( $value ); + public function set_quantity( $value ) { + $this->_data['quantity'] = wc_stock_amount( $value ); } /** @@ -364,11 +364,11 @@ class WC_Order_Item_Product extends WC_Order_Item { } /** - * Get qty. + * Get quantity. * @return int */ - public function get_qty() { - return wc_stock_amount( $this->_data['qty'] ); + public function get_quantity() { + return wc_stock_amount( $this->_data['quantity'] ); } /** diff --git a/includes/class-wc-order-item-shipping.php b/includes/class-wc-order-item-shipping.php index ba51826e5cf..f9445051469 100644 --- a/includes/class-wc-order-item-shipping.php +++ b/includes/class-wc-order-item-shipping.php @@ -19,13 +19,13 @@ class WC_Order_Item_Shipping extends WC_Order_Item { * @var array */ protected $_data = array( - 'order_id' => 0, - 'order_item_id' => 0, - 'method_title' => '', - 'method_id' => '', - 'total' => 0, - 'total_tax' => 0, - 'taxes' => array( + 'order_id' => 0, + 'id' => 0, + 'method_title' => '', + 'method_id' => '', + 'total' => 0, + 'total_tax' => 0, + 'taxes' => array( 'total' => array() ), ); diff --git a/includes/class-wc-order-item-tax.php b/includes/class-wc-order-item-tax.php index 5a3cc70a442..bb3c3bffb33 100644 --- a/includes/class-wc-order-item-tax.php +++ b/includes/class-wc-order-item-tax.php @@ -20,7 +20,7 @@ class WC_Order_Item_Tax extends WC_Order_Item { */ protected $_data = array( 'order_id' => 0, - 'order_item_id' => 0, + 'id' => 0, 'rate_code' => '', 'rate_id' => 0, 'label' => '', diff --git a/includes/class-wc-order-item.php b/includes/class-wc-order-item.php index 5102ca9626c..1db542369d3 100644 --- a/includes/class-wc-order-item.php +++ b/includes/class-wc-order-item.php @@ -89,10 +89,10 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { } /** - * Get qty. + * Get quantity. * @return int */ - public function get_qty() { + public function get_quantity() { return 1; } diff --git a/includes/class-wc-order.php b/includes/class-wc-order.php index df383a3dba9..89b5b6dc591 100644 --- a/includes/class-wc-order.php +++ b/includes/class-wc-order.php @@ -1365,7 +1365,7 @@ class WC_Order extends WC_Abstract_Order { foreach ( $this->get_refunds() as $refund ) { foreach ( $refund->get_items( $item_type ) as $refunded_item ) { - $count += $refunded_item->get_qty(); + $count += $refunded_item->get_quantity(); } } @@ -1383,7 +1383,7 @@ class WC_Order extends WC_Abstract_Order { $qty = 0; foreach ( $this->get_refunds() as $refund ) { foreach ( $refund->get_items( $item_type ) as $refunded_item ) { - $qty += $refunded_item->get_qty(); + $qty += $refunded_item->get_quantity(); } } return $qty; @@ -1401,7 +1401,7 @@ class WC_Order extends WC_Abstract_Order { foreach ( $this->get_refunds() as $refund ) { foreach ( $refund->get_items( $item_type ) as $refunded_item ) { if ( absint( $refunded_item->get_meta( '_refunded_item_id' ) ) === $item_id ) { - $qty += $refunded_item->get_qty(); + $qty += $refunded_item->get_quantity(); } } } From b70a979fcedbba82166e89f110a55cb2133102d4 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 13:01:38 +0100 Subject: [PATCH 48/81] Get product item data --- includes/class-wc-order-item-product.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/includes/class-wc-order-item-product.php b/includes/class-wc-order-item-product.php index 82949d88c47..fa6affe7e1b 100644 --- a/includes/class-wc-order-item-product.php +++ b/includes/class-wc-order-item-product.php @@ -222,6 +222,25 @@ class WC_Order_Item_Product extends WC_Order_Item { } } + /** + * Get all class data in array format. + * @since 2.7.0 + * @return array + */ + public function get_data() { + return array_merge( + $this->_data, + array( + // Return SKU for convenience + 'sku' => $this->get_product() ? $this->get_product()->get_sku(): null, + + // Return item price for convenience + 'price' => $this->get_total() / max( 1, $this->get_quantity() ), + 'meta_data' => $this->get_meta_data(), + ) + ); + } + /* |-------------------------------------------------------------------------- | Setters From 99be0167b467425c93747993d275a7aae1ba8165 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 13:02:22 +0100 Subject: [PATCH 49/81] Order type doesn't appear to be used anywhere, and I'd expect other plugins extending orders to have their own classes anyway making this a bit pointless. @thenbrent --- includes/abstracts/abstract-wc-order.php | 18 ------------------ tests/unit-tests/crud/orders.php | 9 --------- 2 files changed, 27 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index aa2782f2388..270116805ca 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -34,7 +34,6 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { 'id' => 0, 'parent_id' => 0, 'status' => '', - 'type' => 'shop_order', 'order_key' => '', 'currency' => '', 'version' => '', @@ -195,7 +194,6 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { $this->set_date_created( $post_object->post_date ); $this->set_date_modified( $post_object->post_modified ); $this->set_status( $post_object->post_status ); - $this->set_order_type( $post_object->post_type ); $this->set_customer_id( get_post_meta( $this->get_id(), '_customer_user', true ) ); $this->set_order_key( get_post_meta( $this->get_id(), '_order_key', true ) ); $this->set_currency( get_post_meta( $this->get_id(), '_order_currency', true ) ); @@ -421,14 +419,6 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { return $this->_data['prices_include_tax']; } - /** - * Get Order Type - * @return string - */ - public function get_order_type() { - return $this->_data['type']; - } - /** * Get date_created * @return int @@ -673,14 +663,6 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { ); } - /** - * Set Order Type - * @param string $value - */ - public function set_order_type( $value ) { - $this->_data['type'] = $value; - } - /** * Set order_key. * @param string $value Max length 20 chars. diff --git a/tests/unit-tests/crud/orders.php b/tests/unit-tests/crud/orders.php index c2a21a7db31..8f458814395 100644 --- a/tests/unit-tests/crud/orders.php +++ b/tests/unit-tests/crud/orders.php @@ -14,15 +14,6 @@ class WC_Tests_CRUD_Orders extends WC_Unit_Test_Case { $this->assertEquals( 'shop_order', $object->get_type() ); } - /** - * Test: get_type - */ - function test_get_order_type() { - $object = new WC_Order(); - $id = $object->save(); - $this->assertEquals( 'shop_order', $object->get_order_type() ); - } - /** * Test: get_data */ From b64c55de49d73803305e6ca43f70600502abe0de Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 13:55:10 +0100 Subject: [PATCH 50/81] Format item meta --- .../api/class-wc-rest-orders-controller.php | 54 ++++++++++++++++++- includes/class-wc-order-item.php | 4 +- 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index c2d9ae62785..26ab949044b 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -50,6 +50,12 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { */ protected $dp = '2'; + /** + * Stores the request. + * @var array + */ + protected $request = array(); + /** * Initialize orders actions. */ @@ -133,6 +139,20 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } } + // Remove order id + unset( $data['order_id'] ); + + // Format meta data + $hideprefix = 'true' === $this->request['all_item_meta'] ? null : '_'; + $item_meta = $item->get_formatted_meta_data( $hideprefix ); + + foreach ( $item_meta as $key => $values ) { + // Label was used in previous version of API - set it here + $item_meta[ $key ]->label = $values->display_key; + } + + $data['meta'] = $item_meta; + return $data; } @@ -146,7 +166,8 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { public function prepare_item_for_response( $post, $request ) { global $wpdb; - $this->dp = $request['dp']; + $this->request = $request; + $this->dp = $request['dp']; $format_decimal = array( 'discount_total', 'discount_tax', 'shipping_total', 'shipping_tax', 'shipping_total', 'shipping_tax', 'cart_tax', 'total', 'total_tax' ); $format_date = array( 'date_created', 'date_modified', 'date_completed' ); $format_line_items = array( 'line_items', 'tax_lines', 'shipping_lines', 'fee_lines', 'coupon_lines' ); @@ -167,13 +188,23 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { // Format the order status $data['status'] = 'wc-' === substr( $data['status'], 0, 3 ) ? substr( $data['status'], 3 ) : $data['status']; + // Format meta data + $data['meta'] = $data['meta_data']; + unset( $data['meta_data'] ); + // Format line items foreach ( $format_line_items as $key ) { $data[ $key ] = array_map( array( $this, 'get_order_item_data' ), $data[ $key ] ); } // refunds - + foreach ( $order->get_refunds() as $refund ) { + $data['refunds'][] = array( + 'id' => $refund->id, + 'refund' => $refund->get_refund_reason() ? $refund->get_refund_reason() : '', + 'total' => '-' . wc_format_decimal( $refund->get_refund_amount(), $this->dp ), + ); + } /* // Add addresses. @@ -225,6 +256,25 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'meta' => $item_meta, ); + sku + price + + + + "product_id": 0, + "variation_id": 0, + "qty": 0, + "tax_class": "", + "subtotal": "0.00", + "subtotal_tax": "0.00", + "total": "0.00", + "total_tax": "0.00", + "taxes": { + "subtotal": [], + "total": [] + }, + "meta_data": + $item_line_taxes = maybe_unserialize( $item['line_tax_data'] ); if ( isset( $item_line_taxes['total'] ) ) { $line_tax = array(); diff --git a/includes/class-wc-order-item.php b/includes/class-wc-order-item.php index 1db542369d3..58da7b0eb54 100644 --- a/includes/class-wc-order-item.php +++ b/includes/class-wc-order-item.php @@ -73,8 +73,6 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { foreach ( $data as $key => $value ) { if ( is_callable( array( $this, "set_$key" ) ) ) { $this->{"set_$key"}( $value ); - } else { - $this->_data[ $key ] = $value; } } } @@ -235,7 +233,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { if ( is_numeric( $item ) && ! empty( $item ) ) { $data = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d LIMIT 1;", $item ) ); - } elseif ( ! empty( $item->id ) ) { + } elseif ( ! empty( $item->order_item_id ) ) { $data = $item; } else { $data = false; From 3e88ec1f209d019cbe74c76e127b19c1181a0347 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 14:49:30 +0100 Subject: [PATCH 51/81] Product formatting --- .../api/class-wc-rest-orders-controller.php | 84 ++++--------------- 1 file changed, 16 insertions(+), 68 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 26ab949044b..55d78424efd 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -153,6 +153,20 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $data['meta'] = $item_meta; + // Format taxes + if ( ! empty( $data['taxes']['total'] ) ) { + $taxes = array(); + + foreach ( $data['taxes']['total'] as $tax_rate_id => $tax ) { + $taxes[] = array( + 'id' => $tax_rate_id, + 'total' => $tax, + 'subtotal' => isset( $data['taxes']['subtotal'][ $tax_rate_id ] ) ? $data['taxes']['subtotal'][ $tax_rate_id ] : '', + ); + } + $data['taxes'] = $taxes; + } + return $data; } @@ -194,10 +208,10 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { // Format line items foreach ( $format_line_items as $key ) { - $data[ $key ] = array_map( array( $this, 'get_order_item_data' ), $data[ $key ] ); + $data[ $key ] = array_values( array_map( array( $this, 'get_order_item_data' ), $data[ $key ] ) ); } - // refunds + // Refunds foreach ( $order->get_refunds() as $refund ) { $data['refunds'][] = array( 'id' => $refund->id, @@ -207,73 +221,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } /* - // Add addresses. - $data['billing'] = $order->get_address( 'billing' ); - $data['shipping'] = $order->get_address( 'shipping' ); - // Add line items. - foreach ( $order->get_items() as $item_id => $item ) { - $product = $order->get_product_from_item( $item ); - $product_id = 0; - $variation_id = 0; - $product_sku = null; - - // Check if the product exists. - if ( is_object( $product ) ) { - $product_id = $product->id; - $variation_id = $product->variation_id; - $product_sku = $product->get_sku(); - } - - $meta = new WC_Order_Item_Meta( $item, $product ); - - $item_meta = array(); - - $hideprefix = 'true' === $request['all_item_meta'] ? null : '_'; - - foreach ( $meta->get_formatted( $hideprefix ) as $meta_key => $formatted_meta ) { - $item_meta[] = array( - 'key' => $formatted_meta['key'], - 'label' => $formatted_meta['label'], - 'value' => $formatted_meta['value'], - ); - } - - $line_item = array( - 'id' => $item_id, - 'name' => $item['name'], - 'sku' => $product_sku, - 'product_id' => (int) $product_id, - 'variation_id' => (int) $variation_id, - 'quantity' => wc_stock_amount( $item['qty'] ), - 'tax_class' => ! empty( $item['tax_class'] ) ? $item['tax_class'] : '', - 'price' => wc_format_decimal( $order->get_item_total( $item, false, false ), $this->dp ), - 'subtotal' => wc_format_decimal( $order->get_line_subtotal( $item, false, false ), $this->dp ), - 'subtotal_tax' => wc_format_decimal( $item['line_subtotal_tax'], $this->dp ), - 'total' => wc_format_decimal( $order->get_line_total( $item, false, false ), $this->dp ), - 'total_tax' => wc_format_decimal( $item['line_tax'], $this->dp ), - 'taxes' => array(), - 'meta' => $item_meta, - ); - - sku - price - - - - "product_id": 0, - "variation_id": 0, - "qty": 0, - "tax_class": "", - "subtotal": "0.00", - "subtotal_tax": "0.00", - "total": "0.00", - "total_tax": "0.00", - "taxes": { - "subtotal": [], - "total": [] - }, - "meta_data": $item_line_taxes = maybe_unserialize( $item['line_tax_data'] ); if ( isset( $item_line_taxes['total'] ) ) { From 92ebb933b4333d0a2571d7325adc05dbee5af2b5 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Tue, 16 Aug 2016 15:18:16 +0100 Subject: [PATCH 52/81] Finish order get --- .../api/class-wc-rest-orders-controller.php | 162 ++---------------- 1 file changed, 14 insertions(+), 148 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 55d78424efd..c9fed5afc3c 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -135,13 +135,10 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { // Format decimal values foreach ( $format_decimal as $key ) { if ( isset( $data[ $key ] ) ) { - $data[ $key ] = wc_format_decimal( $data[ $key ], $this->dp ); + $data[ $key ] = wc_format_decimal( $data[ $key ], $this->request['dp'] ); } } - // Remove order id - unset( $data['order_id'] ); - // Format meta data $hideprefix = 'true' === $this->request['all_item_meta'] ? null : '_'; $item_meta = $item->get_formatted_meta_data( $hideprefix ); @@ -151,7 +148,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $item_meta[ $key ]->label = $values->display_key; } - $data['meta'] = $item_meta; + $data['meta'] = array_values( $item_meta ); // Format taxes if ( ! empty( $data['taxes']['total'] ) ) { @@ -165,8 +162,15 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { ); } $data['taxes'] = $taxes; + } else { + $data['taxes'] = array(); } + // Remove props we don't want to expose. + unset( $data['order_id'] ); + unset( $data['type'] ); + unset( $data['meta_data'] ); + return $data; } @@ -178,20 +182,17 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { * @return WP_REST_Response $data */ public function prepare_item_for_response( $post, $request ) { - global $wpdb; - $this->request = $request; - $this->dp = $request['dp']; - $format_decimal = array( 'discount_total', 'discount_tax', 'shipping_total', 'shipping_tax', 'shipping_total', 'shipping_tax', 'cart_tax', 'total', 'total_tax' ); - $format_date = array( 'date_created', 'date_modified', 'date_completed' ); - $format_line_items = array( 'line_items', 'tax_lines', 'shipping_lines', 'fee_lines', 'coupon_lines' ); $statuses = wc_get_order_statuses(); $order = wc_get_order( $post ); $data = $order->get_data(); + $format_decimal = array( 'discount_total', 'discount_tax', 'shipping_total', 'shipping_tax', 'shipping_total', 'shipping_tax', 'cart_tax', 'total', 'total_tax' ); + $format_date = array( 'date_created', 'date_modified', 'date_completed' ); + $format_line_items = array( 'line_items', 'tax_lines', 'shipping_lines', 'fee_lines', 'coupon_lines' ); // Format decimal values foreach ( $format_decimal as $key ) { - $data[ $key ] = wc_format_decimal( $data[ $key ], $this->dp ); + $data[ $key ] = wc_format_decimal( $data[ $key ], $this->request['dp'] ); } // Format date values @@ -202,10 +203,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { // Format the order status $data['status'] = 'wc-' === substr( $data['status'], 0, 3 ) ? substr( $data['status'], 3 ) : $data['status']; - // Format meta data - $data['meta'] = $data['meta_data']; - unset( $data['meta_data'] ); - // Format line items foreach ( $format_line_items as $key ) { $data[ $key ] = array_values( array_map( array( $this, 'get_order_item_data' ), $data[ $key ] ) ); @@ -216,140 +213,9 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $data['refunds'][] = array( 'id' => $refund->id, 'refund' => $refund->get_refund_reason() ? $refund->get_refund_reason() : '', - 'total' => '-' . wc_format_decimal( $refund->get_refund_amount(), $this->dp ), + 'total' => '-' . wc_format_decimal( $refund->get_refund_amount(), $this->request['dp'] ), ); } -/* - - - - $item_line_taxes = maybe_unserialize( $item['line_tax_data'] ); - if ( isset( $item_line_taxes['total'] ) ) { - $line_tax = array(); - - foreach ( $item_line_taxes['total'] as $tax_rate_id => $tax ) { - $line_tax[ $tax_rate_id ] = array( - 'id' => $tax_rate_id, - 'total' => $tax, - 'subtotal' => '', - ); - } - - foreach ( $item_line_taxes['subtotal'] as $tax_rate_id => $tax ) { - $line_tax[ $tax_rate_id ]['subtotal'] = $tax; - } - - $line_item['taxes'] = array_values( $line_tax ); - } - - $data['line_items'][] = $line_item; - } - - // Add taxes. - foreach ( $order->get_items( 'tax' ) as $key => $tax ) { - $tax_line = array( - 'id' => $key, - 'rate_code' => $tax['name'], - 'rate_id' => $tax['rate_id'], - 'label' => isset( $tax['label'] ) ? $tax['label'] : $tax['name'], - 'compound' => (bool) $tax['compound'], - 'tax_total' => wc_format_decimal( $tax['tax_amount'], $this->dp ), - 'shipping_tax_total' => wc_format_decimal( $tax['shipping_tax_amount'], $this->dp ), - ); - - $data['tax_lines'][] = $tax_line; - } - - // Add shipping. - foreach ( $order->get_shipping_methods() as $shipping_item_id => $shipping_item ) { - $shipping_line = array( - 'id' => $shipping_item_id, - 'method_title' => $shipping_item['name'], - 'method_id' => $shipping_item['method_id'], - 'total' => wc_format_decimal( $shipping_item['cost'], $this->dp ), - 'total_tax' => wc_format_decimal( '', $this->dp ), - 'taxes' => array(), - ); - - $shipping_taxes = maybe_unserialize( $shipping_item['taxes'] ); - - if ( ! empty( $shipping_taxes ) ) { - $shipping_line['total_tax'] = wc_format_decimal( array_sum( $shipping_taxes ), $this->dp ); - - foreach ( $shipping_taxes as $tax_rate_id => $tax ) { - $shipping_line['taxes'][] = array( - 'id' => $tax_rate_id, - 'total' => $tax, - ); - } - } - - $data['shipping_lines'][] = $shipping_line; - } - - // Add fees. - foreach ( $order->get_fees() as $fee_item_id => $fee_item ) { - $fee_line = array( - 'id' => $fee_item_id, - 'name' => $fee_item['name'], - 'tax_class' => ! empty( $fee_item['tax_class'] ) ? $fee_item['tax_class'] : '', - 'tax_status' => 'taxable', - 'total' => wc_format_decimal( $order->get_line_total( $fee_item ), $this->dp ), - 'total_tax' => wc_format_decimal( $order->get_line_tax( $fee_item ), $this->dp ), - 'taxes' => array(), - ); - - $fee_line_taxes = maybe_unserialize( $fee_item['line_tax_data'] ); - if ( isset( $fee_line_taxes['total'] ) ) { - $fee_tax = array(); - - foreach ( $fee_line_taxes['total'] as $tax_rate_id => $tax ) { - $fee_tax[ $tax_rate_id ] = array( - 'id' => $tax_rate_id, - 'total' => $tax, - 'subtotal' => '', - ); - } - - if ( isset( $fee_line_taxes['subtotal'] ) ) { - foreach ( $fee_line_taxes['subtotal'] as $tax_rate_id => $tax ) { - $fee_tax[ $tax_rate_id ]['subtotal'] = $tax; - } - } - - $fee_line['taxes'] = array_values( $fee_tax ); - } - - $data['fee_lines'][] = $fee_line; - } - - // Add coupons. - foreach ( $order->get_items( 'coupon' ) as $coupon_item_id => $coupon_item ) { - $coupon_line = array( - 'id' => $coupon_item_id, - 'code' => $coupon_item['name'], - 'discount' => wc_format_decimal( $coupon_item['discount_amount'], $this->dp ), - 'discount_tax' => wc_format_decimal( $coupon_item['discount_amount_tax'], $this->dp ), - ); - - $data['coupon_lines'][] = $coupon_line; - } - - // Add refunds. - foreach ( $order->get_refunds() as $refund ) { - $data['refunds'][] = array( - 'id' => $refund->id, - 'refund' => $refund->get_refund_reason() ? $refund->get_refund_reason() : '', - 'total' => '-' . wc_format_decimal( $refund->get_refund_amount(), $this->dp ), - ); - } -*/ - - - - - - $context = ! empty( $request['context'] ) ? $request['context'] : 'view'; $data = $this->add_additional_fields_to_object( $data, $request ); From 5a0f0cf5b4dfe8f4d6e608c122d79c843eea76b1 Mon Sep 17 00:00:00 2001 From: JLuis Freitas Date: Tue, 16 Aug 2016 17:10:09 +0100 Subject: [PATCH 53/81] add PT (Portugal) address format add $postcode_before_city format to portuguese addresses --- includes/class-wc-countries.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/class-wc-countries.php b/includes/class-wc-countries.php index f0798302b8a..5733e478539 100644 --- a/includes/class-wc-countries.php +++ b/includes/class-wc-countries.php @@ -434,6 +434,7 @@ class WC_Countries { 'NZ' => "{name}\n{company}\n{address_1}\n{address_2}\n{city} {postcode}\n{country}", 'NO' => $postcode_before_city, 'PL' => $postcode_before_city, + 'PT' => $postcode_before_city, 'SK' => $postcode_before_city, 'SI' => $postcode_before_city, 'ES' => "{name}\n{company}\n{address_1}\n{address_2}\n{postcode} {city}\n{state}\n{country}", From 8bd29fa06e8908b0129a9632b8b02a415f6c1623 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 16 Aug 2016 16:06:14 -0300 Subject: [PATCH 54/81] Include REST API classes in apigen cc @mikejolley --- apigen.neon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apigen.neon b/apigen.neon index 40c74fe34cb..98dc528246e 100644 --- a/apigen.neon +++ b/apigen.neon @@ -10,7 +10,7 @@ extensions: [php] # directories and files matching this file mask will not be parsed exclude: - includes/libraries/ - - includes/api/ + - includes/api/legacy/ - i18n/ - node_modules/ - wc-apidocs/ From 3cf8058f9b50d6b56a9d6a2b78af552e4dd4cbe5 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 16 Aug 2016 16:55:26 -0300 Subject: [PATCH 55/81] DRY #11614 --- includes/wc-formatting-functions.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/includes/wc-formatting-functions.php b/includes/wc-formatting-functions.php index d1f50f0dd3d..6ebcd912140 100644 --- a/includes/wc-formatting-functions.php +++ b/includes/wc-formatting-functions.php @@ -663,14 +663,12 @@ function wc_format_postcode( $postcode, $country ) { $postcode = trim( substr_replace( $postcode, ' ', -3, 0 ) ); break; case 'BR' : + case 'PL' : $postcode = trim( substr_replace( $postcode, '-', -3, 0 ) ); break; case 'JP' : $postcode = trim( substr_replace( $postcode, '-', 3, 0 ) ); break; - case 'PL' : - $postcode = trim( substr_replace( $postcode, '-', -3, 0 ) ); - break; case 'PT' : $postcode = trim( substr_replace( $postcode, '-', 4, 0 ) ); break; From 49b7dd6dfa38b81f3e3dce553a2c595e57b31006 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 16 Aug 2016 17:43:09 -0300 Subject: [PATCH 56/81] Removed custom hooks introduced in #11668 --- includes/class-wc-api.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/includes/class-wc-api.php b/includes/class-wc-api.php index c360d490a18..ff27619de7a 100644 --- a/includes/class-wc-api.php +++ b/includes/class-wc-api.php @@ -174,8 +174,6 @@ class WC_API extends WC_Legacy_API { include_once( dirname( __FILE__ ) . '/api/class-wc-rest-webhooks-controller.php' ); include_once( dirname( __FILE__ ) . '/api/class-wc-rest-system-status-controller.php' ); include_once( dirname( __FILE__ ) . '/api/class-wc-rest-system-status-tools-controller.php' ); - - do_action( 'woocommerce_api_includes' ); } /** @@ -186,7 +184,7 @@ class WC_API extends WC_Legacy_API { // Register settings to the REST API. $this->register_wp_admin_settings(); - $controllers = apply_filters( 'woocommerce_api_controllers', array( + $controllers = array( 'WC_REST_Coupons_Controller', 'WC_REST_Customer_Downloads_Controller', 'WC_REST_Customers_Controller', @@ -214,7 +212,7 @@ class WC_API extends WC_Legacy_API { 'WC_REST_Webhooks_Controller', 'WC_REST_System_Status_Controller', 'WC_REST_System_Status_Tools_Controller', - ) ); + ); foreach ( $controllers as $controller ) { $this->$controller = new $controller(); From 525b11a2a22e628fa630468a00835f17e3cd6b1e Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 16 Aug 2016 17:44:32 -0300 Subject: [PATCH 57/81] Defined a priority for the REST API init method --- includes/class-wc-api.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-api.php b/includes/class-wc-api.php index ff27619de7a..61756f651f2 100644 --- a/includes/class-wc-api.php +++ b/includes/class-wc-api.php @@ -118,7 +118,7 @@ class WC_API extends WC_Legacy_API { $this->rest_api_includes(); // Init REST API routes. - add_action( 'rest_api_init', array( $this, 'register_rest_routes' ) ); + add_action( 'rest_api_init', array( $this, 'register_rest_routes' ), 10 ); } /** From 7b44b8954e74709c81e277f5c310f1419e35cce6 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 16 Aug 2016 17:56:26 -0300 Subject: [PATCH 58/81] Removed confuse min WP requirement --- readme.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/readme.txt b/readme.txt index 39c2d7b7263..bcc7f847ed1 100644 --- a/readme.txt +++ b/readme.txt @@ -88,7 +88,6 @@ And, finally, consider joining or spearheading a WooCommerce Meetup locally, mor = Minimum Requirements = -* WordPress 3.8 or greater * PHP version 5.2.4 or greater (PHP 5.6 or greater is recommended) * MySQL version 5.0 or greater (MySQL 5.6 or greater is recommended) * Some payment gateways require fsockopen support (for IPN access) From b6cc54f3a1ebbb3934f0b9c66ab776d1ddea4d95 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Tue, 16 Aug 2016 18:26:42 -0300 Subject: [PATCH 59/81] Always apply stylelint #11658 --- Gruntfile.js | 1 + 1 file changed, 1 insertion(+) diff --git a/Gruntfile.js b/Gruntfile.js index 467a7fcbbf1..4ed8cf0f34d 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -255,6 +255,7 @@ module.exports = function( grunt ) { ]); grunt.registerTask( 'css', [ + 'stylelint', 'sass', 'cssmin' ]); From b4599d92541e57f2cb2d0a7ab9dbcb4231ab2360 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 17 Aug 2016 11:44:39 +0100 Subject: [PATCH 60/81] Schema update --- .../api/class-wc-rest-orders-controller.php | 328 ++++++++++++++---- 1 file changed, 262 insertions(+), 66 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index c9fed5afc3c..c6d21c172e3 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -139,17 +139,27 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } } - // Format meta data - $hideprefix = 'true' === $this->request['all_item_meta'] ? null : '_'; - $item_meta = $item->get_formatted_meta_data( $hideprefix ); + // Add meta, SKU and PRICE to products + if ( is_callable( array( $item, 'get_product' ) ) ) { + $data['sku'] = $item->get_product() ? $item->get_product()->get_sku(): null; + $data['price'] = $item->get_total() / max( 1, $item->get_quantity() ); - foreach ( $item_meta as $key => $values ) { - // Label was used in previous version of API - set it here - $item_meta[ $key ]->label = $values->display_key; + // Format meta data + if ( isset( $data['meta_data'] ) ) { + $hideprefix = 'true' === $this->request['all_item_meta'] ? null : '_'; + $item_meta = $item->get_formatted_meta_data( $hideprefix ); + + foreach ( $item_meta as $key => $values ) { + // Label was used in previous version of API - set it here + $item_meta[ $key ]->label = $values->display_key; + unset( $item_meta[ $key ]->display_key ); + unset( $item_meta[ $key ]->display_value ); + } + + $data['meta'] = array_values( $item_meta ); + } } - $data['meta'] = array_values( $item_meta ); - // Format taxes if ( ! empty( $data['taxes']['total'] ) ) { $taxes = array(); @@ -162,14 +172,13 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { ); } $data['taxes'] = $taxes; - } else { + } elseif ( isset( $data['taxes'] ) ) { $data['taxes'] = array(); } // Remove props we don't want to expose. unset( $data['order_id'] ); unset( $data['type'] ); - unset( $data['meta_data'] ); return $data; } @@ -251,19 +260,16 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'href' => rest_url( sprintf( '/%s/%s', $this->namespace, $this->rest_base ) ), ), ); - if ( 0 !== (int) $order->get_user_id() ) { $links['customer'] = array( 'href' => rest_url( sprintf( '/%s/customers/%d', $this->namespace, $order->get_user_id() ) ), ); } - if ( 0 !== (int) $order->get_parent_id() ) { $links['up'] = array( 'href' => rest_url( sprintf( '/%s/orders/%d', $this->namespace, $order->get_parent_id() ) ), ); } - return $links; } @@ -353,7 +359,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { /** * Create base WC Order object. - * * @param array $data * @return WC_Order */ @@ -371,6 +376,19 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { wc_transaction_query( 'start' ); try { + // Make sure request data matching schema naming and only includes non-read only props. + + //$request['parent_id'] + + + + + + + + + + // Make sure customer exists. if ( 0 !== $request['customer_id'] && false === get_user_by( 'id', $request['customer_id'] ) ) { throw new WC_REST_Exception( 'woocommerce_rest_invalid_customer_id',__( 'Customer ID is invalid.', 'woocommerce' ), 400 ); @@ -381,7 +399,46 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { return $data; } - $data->created_via = 'rest-api'; + + $order = new WC_Order(); + $order->set_created_via( 'rest-api' ); + $order->set_currency( $request['currency'] ); + + if ( ! empty( $request['payment_method'] ) ) { + $order->set_payment_method( $request['payment_method'] ); + } + + if ( ! empty( $request['payment_method_title'] ) ) { + $order->set_payment_method_title( $request['payment_method_title'] ); + } + + + + + $order->set_cart_hash( $cart_hash ); + $order->set_customer_id( $request['customer_id'] ); + + $order->set_prices_include_tax( 'yes' === get_option( 'woocommerce_prices_include_tax' ) ); + $order->set_customer_ip_address( WC_Geolocation::get_ip_address() ); + $order->set_customer_user_agent( wc_get_user_agent() ); + $order->set_customer_note( $request['customer_note'] ); + + $order->set_shipping_total( WC()->cart->shipping_total ); + $order->set_discount_total( WC()->cart->get_cart_discount_total() ); + $order->set_discount_tax( WC()->cart->get_cart_discount_tax_total() ); + $order->set_cart_tax( WC()->cart->tax_total ); + $order->set_shipping_tax( WC()->cart->shipping_tax_total ); + $order->set_total( WC()->cart->total ); + + + + + + + + + + $order = $this->create_base_order( (array) $data ); @@ -397,8 +454,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $this->update_address( $order, $request['shipping'], 'shipping' ); } - // Set currency. - update_post_meta( $order->get_id(), '_order_currency', $request['currency'] ); // Set lines. $lines = array( @@ -420,28 +475,23 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { // Calculate totals and set them. $order->calculate_totals(); - // Set payment method. - if ( ! empty( $request['payment_method'] ) ) { - update_post_meta( $order->get_id(), '_payment_method', $request['payment_method'] ); - } - if ( ! empty( $request['payment_method_title'] ) ) { - update_post_meta( $order->get_id(), '_payment_method_title', $request['payment_method_title'] ); - } - if ( true === $request['set_paid'] ) { - $order->payment_complete( $request['transaction_id'] ); - } + // Set meta data. if ( ! empty( $request['meta_data'] ) && is_array( $request['meta_data'] ) ) { $this->update_meta_data( $order->get_id(), $request['meta_data'] ); } + $order->save(); + + if ( true === $request['set_paid'] ) { + $order->payment_complete( $request['transaction_id'] ); + } + wc_transaction_query( 'commit' ); - return $order->get_id(); - } catch ( WC_REST_Exception $e ) { + } catch ( Exception $e ) { wc_transaction_query( 'rollback' ); - return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); } } @@ -991,8 +1041,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } /** - * Get order statuses. - * + * Get order statuses without prefixes. * @return array */ protected function get_order_statuses() { @@ -1005,6 +1054,23 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { return $order_statuses; } + + + + + + + + + + + + + + + + + /** * Get the Order's schema, conforming to JSON Schema. * @@ -1040,12 +1106,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), 'readonly' => true, ), - 'number' => array( - 'description' => __( 'Order number.', 'woocommerce' ), - 'type' => 'string', - 'context' => array( 'view', 'edit' ), - 'readonly' => true, - ), 'currency' => array( 'description' => __( 'Currency the order was created with, in ISO format.', 'woocommerce' ), 'type' => 'string', @@ -1060,7 +1120,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'readonly' => true, ), 'prices_include_tax' => array( - 'description' => __( 'Shows if the prices included tax during checkout.', 'woocommerce' ), + 'description' => __( 'True the prices included tax during checkout.', 'woocommerce' ), 'type' => 'boolean', 'context' => array( 'view', 'edit' ), 'readonly' => true, @@ -1069,7 +1129,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( "The date the order was created, in the site's timezone.", 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), - 'readonly' => true, ), 'date_modified' => array( 'description' => __( "The date the order was last modified, in the site's timezone.", 'woocommerce' ), @@ -1250,12 +1309,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'type' => 'string', 'context' => array( 'view', 'edit' ), ), - 'set_paid' => array( - 'description' => __( 'Define if the order is paid. It will set the status to processing and reduce stock items.', 'woocommerce' ), - 'type' => 'boolean', - 'default' => false, - 'context' => array( 'edit' ), - ), 'transaction_id' => array( 'description' => __( 'Unique transaction ID.', 'woocommerce' ), 'type' => 'string', @@ -1288,13 +1341,11 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( "The date the order was completed, in the site's timezone.", 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), - 'readonly' => true, ), 'date_paid' => array( 'description' => __( "The date the order has been paid, in the site's timezone.", 'woocommerce' ), 'type' => 'date-time', 'context' => array( 'view', 'edit' ), - 'readonly' => true, ), 'cart_hash' => array( 'description' => __( 'MD5 hash of cart items to ensure orders are not modified.', 'woocommerce' ), @@ -1302,6 +1353,35 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'number' => array( + 'description' => __( 'Order number.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'meta_data' => array( + 'description' => __( 'Order meta data.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'key' => array( + 'description' => __( 'Meta key.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'value' => array( + 'description' => __( 'Meta value.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'meta_id' => array( + 'description' => __( 'Meta ID.', 'woocommerce' ), + 'type' => 'int', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ), 'line_items' => array( 'description' => __( 'Line items data.', 'woocommerce' ), 'type' => 'array', @@ -1317,13 +1397,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( 'Product name.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), - 'readonly' => true, - ), - 'sku' => array( - 'description' => __( 'Product SKU.', 'woocommerce' ), - 'type' => 'string', - 'context' => array( 'view', 'edit' ), - 'readonly' => true, ), 'product_id' => array( 'description' => __( 'Product ID.', 'woocommerce' ), @@ -1344,13 +1417,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( 'Tax class of product.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), - 'readonly' => true, - ), - 'price' => array( - 'description' => __( 'Product price.', 'woocommerce' ), - 'type' => 'string', - 'context' => array( 'view', 'edit' ), - 'readonly' => true, ), 'subtotal' => array( 'description' => __( 'Line subtotal (before discounts).', 'woocommerce' ), @@ -1376,30 +1442,61 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( 'Line taxes.', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), - 'readonly' => true, 'properties' => array( 'id' => array( 'description' => __( 'Tax rate ID.', 'woocommerce' ), 'type' => 'integer', 'context' => array( 'view', 'edit' ), - 'readonly' => true, ), 'total' => array( 'description' => __( 'Tax total.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), - 'readonly' => true, ), 'subtotal' => array( 'description' => __( 'Tax subtotal.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + ), + ), + ), + 'meta_data' => array( + 'description' => __( 'Order item meta data.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'key' => array( + 'description' => __( 'Meta key.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'value' => array( + 'description' => __( 'Meta value.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'meta_id' => array( + 'description' => __( 'Meta ID.', 'woocommerce' ), + 'type' => 'int', + 'context' => array( 'view', 'edit' ), 'readonly' => true, ), ), ), + 'sku' => array( + 'description' => __( 'Product SKU.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + 'price' => array( + 'description' => __( 'Product price.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), 'meta' => array( - 'description' => __( 'Line item meta data.', 'woocommerce' ), + 'description' => __( 'Order item meta data (formatted).', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), 'readonly' => true, @@ -1474,6 +1571,29 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'meta_data' => array( + 'description' => __( 'Order item meta data.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'key' => array( + 'description' => __( 'Meta key.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'value' => array( + 'description' => __( 'Meta value.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'meta_id' => array( + 'description' => __( 'Meta ID.', 'woocommerce' ), + 'type' => 'int', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ), ), ), 'shipping_lines' => array( @@ -1528,6 +1648,29 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { ), ), ), + 'meta_data' => array( + 'description' => __( 'Order item meta data.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'key' => array( + 'description' => __( 'Meta key.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'value' => array( + 'description' => __( 'Meta value.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'meta_id' => array( + 'description' => __( 'Meta ID.', 'woocommerce' ), + 'type' => 'int', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ), ), ), 'fee_lines' => array( @@ -1565,6 +1708,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( 'Line total tax (after discounts).', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'taxes' => array( 'description' => __( 'Line taxes.', 'woocommerce' ), @@ -1592,6 +1736,29 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { ), ), ), + 'meta_data' => array( + 'description' => __( 'Order item meta data.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'key' => array( + 'description' => __( 'Meta key.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'value' => array( + 'description' => __( 'Meta value.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'meta_id' => array( + 'description' => __( 'Meta ID.', 'woocommerce' ), + 'type' => 'int', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ), ), ), 'coupon_lines' => array( @@ -1621,6 +1788,29 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'context' => array( 'view', 'edit' ), 'readonly' => true, ), + 'meta_data' => array( + 'description' => __( 'Order item meta data.', 'woocommerce' ), + 'type' => 'array', + 'context' => array( 'view', 'edit' ), + 'properties' => array( + 'key' => array( + 'description' => __( 'Meta key.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'value' => array( + 'description' => __( 'Meta value.', 'woocommerce' ), + 'type' => 'string', + 'context' => array( 'view', 'edit' ), + ), + 'meta_id' => array( + 'description' => __( 'Meta ID.', 'woocommerce' ), + 'type' => 'int', + 'context' => array( 'view', 'edit' ), + 'readonly' => true, + ), + ), + ), ), ), 'refunds' => array( @@ -1649,6 +1839,12 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { ), ), ), + 'set_paid' => array( + 'description' => __( 'Define if the order is paid. It will set the status to processing and reduce stock items.', 'woocommerce' ), + 'type' => 'boolean', + 'default' => false, + 'context' => array( 'edit' ), + ), ), ); From 0b9a5998cc84867f94e33141ebd411750c36e66c Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 17 Aug 2016 11:44:56 +0100 Subject: [PATCH 61/81] Exception class --- includes/abstracts/abstract-wc-data.php | 6 +++ includes/abstracts/abstract-wc-order.php | 5 ++- includes/class-wc-data-exception.php | 48 ++++++++++++++++++++++++ woocommerce.php | 3 +- 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 includes/class-wc-data-exception.php diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index 15742c8650c..893c39f73f8 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -348,4 +348,10 @@ abstract class WC_Data { ); } + /** + * Throw an exception due to invalid data. + */ + protected function throw_exception( $id, $message = '', $code = 400 ) { + throw new WC_Data_Exception( $id, $message, $code ); + } } diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index 270116805ca..df02ed6462b 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -684,6 +684,9 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { * @param string $value */ public function set_currency( $value ) { + if ( $value && ! in_array( $value, array_keys( get_woocommerce_currencies() ) ) ) { + $this->throw_exception( 'invalid_currency', 'Invalid currency code' ); + } $this->_data['currency'] = $value; } @@ -1006,7 +1009,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { */ public function add_product( $product, $qty = 1, $args = array() ) { $args = wp_parse_args( $args, array( - 'qty' => $qty, + 'quantity' => $qty, 'name' => $product ? $product->get_title() : '', 'tax_class' => $product ? $product->get_tax_class() : '', 'product_id' => $product ? $product->get_id() : '', diff --git a/includes/class-wc-data-exception.php b/includes/class-wc-data-exception.php new file mode 100644 index 00000000000..37d2220d363 --- /dev/null +++ b/includes/class-wc-data-exception.php @@ -0,0 +1,48 @@ +error_code = $error_code; + parent::__construct( $error_message, $http_status_code ); + } + + /** + * Returns the error code + * @return string + */ + public function getErrorCode() { + return $this->error_code; + } +} diff --git a/woocommerce.php b/woocommerce.php index a781e05c3fc..25eadd8b6ce 100644 --- a/woocommerce.php +++ b/woocommerce.php @@ -237,7 +237,8 @@ final class WooCommerce { include_once( WC_ABSPATH . 'includes/class-wc-post-data.php' ); include_once( WC_ABSPATH . 'includes/class-wc-ajax.php' ); - include_once( 'includes/abstracts/abstract-wc-data.php' ); // WC_Data for CRUD + include_once( WC_ABSPATH . 'includes/abstracts/abstract-wc-data.php' ); // WC_Data for CRUD + include_once( WC_ABSPATH . 'includes/class-wc-data-exception.php' ); if ( $this->is_request( 'admin' ) ) { include_once( WC_ABSPATH . 'includes/admin/class-wc-admin.php' ); From 3755049d86e69d7bb7a8a463e811ff6da8f6d675 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 17 Aug 2016 11:45:07 +0100 Subject: [PATCH 62/81] Fix item data --- includes/class-wc-checkout.php | 2 +- includes/class-wc-order-item-fee.php | 8 ++++++++ includes/class-wc-order-item-product.php | 19 ------------------- 3 files changed, 9 insertions(+), 20 deletions(-) diff --git a/includes/class-wc-checkout.php b/includes/class-wc-checkout.php index f1886198f91..077a5ab7f13 100644 --- a/includes/class-wc-checkout.php +++ b/includes/class-wc-checkout.php @@ -231,7 +231,7 @@ class WC_Checkout { foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) { $product = $values['data']; $item = new WC_Order_Item_Product( array( - 'qty' => $values['quantity'], + 'quantity' => $values['quantity'], 'name' => $product ? $product->get_title() : '', 'tax_class' => $product ? $product->get_tax_class() : '', 'product_id' => $product ? $product->get_id() : '', diff --git a/includes/class-wc-order-item-fee.php b/includes/class-wc-order-item-fee.php index 57817b6843e..924de9ecf7b 100644 --- a/includes/class-wc-order-item-fee.php +++ b/includes/class-wc-order-item-fee.php @@ -108,6 +108,14 @@ class WC_Order_Item_Fee extends WC_Order_Item { return $this->get_id(); } + /** + * Internal meta keys we don't want exposed as part of meta_data. + * @return array() + */ + protected function get_internal_meta_keys() { + return array( '_tax_class', '_tax_status', '_line_subtotal', '_line_subtotal_tax', '_line_total', '_line_tax', '_line_tax_data' ); + } + /* |-------------------------------------------------------------------------- | Setters diff --git a/includes/class-wc-order-item-product.php b/includes/class-wc-order-item-product.php index fa6affe7e1b..82949d88c47 100644 --- a/includes/class-wc-order-item-product.php +++ b/includes/class-wc-order-item-product.php @@ -222,25 +222,6 @@ class WC_Order_Item_Product extends WC_Order_Item { } } - /** - * Get all class data in array format. - * @since 2.7.0 - * @return array - */ - public function get_data() { - return array_merge( - $this->_data, - array( - // Return SKU for convenience - 'sku' => $this->get_product() ? $this->get_product()->get_sku(): null, - - // Return item price for convenience - 'price' => $this->get_total() / max( 1, $this->get_quantity() ), - 'meta_data' => $this->get_meta_data(), - ) - ); - } - /* |-------------------------------------------------------------------------- | Setters From 709dec9ef1cf3f843b31dcab23d1535b6c51df05 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 17 Aug 2016 16:53:01 +0100 Subject: [PATCH 63/81] Create and update handling --- includes/abstracts/abstract-wc-order.php | 72 +- .../api/class-wc-rest-orders-controller.php | 796 ++++++------------ includes/class-wc-order-item-fee.php | 3 + includes/class-wc-order-item-product.php | 19 +- 4 files changed, 327 insertions(+), 563 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index df02ed6462b..32c5d0d5345 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -75,6 +75,13 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { 'tax_lines' => null, ); + /** + * Order items that need deleting are stored here. + * @since 2.7.0 + * @var array + */ + protected $_items_to_delete = array(); + /** * Internal meta type used to store order data. * @var string @@ -293,6 +300,14 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { * Save all order items which are part of this order. */ protected function save_items() { + // remove items + foreach ( $this->_items_to_delete as $item ) { + $item->delete(); + } + + $this->_items_to_delete = array(); + + // Add/save items foreach ( $this->_items as $item_group => $items ) { if ( is_array( $items ) ) { foreach ( $items as $item_key => $item ) { @@ -963,33 +978,56 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { return WC_Order_Factory::get_order_item( $item_id ); } + /** + * Get key for where a certain item type is stored in _items. + * @since 2.7.0 + * @param $item object Order item (product, shipping, fee, coupon, tax) + * @return string + */ + protected function get_items_key( $item ) { + if ( is_a( $item, 'WC_Order_Item_Product' ) ) { + return 'line_items'; + } elseif ( is_a( $item, 'WC_Order_Item_Fee' ) ) { + return 'fee_lines'; + } elseif ( is_a( $item, 'WC_Order_Item_Shipping' ) ) { + return 'shipping_lines'; + } elseif ( is_a( $item, 'WC_Order_Item_Tax' ) ) { + return 'tax_lines'; + } elseif ( is_a( $item, 'WC_Order_Item_Coupon' ) ) { + return 'coupon_lines'; + } else { + return ''; + } + } + + /** + * Remove item from the order. + * @param int $item_id + */ + public function remove_item( $item_id ) { + $item = $this->get_item( $item_id ); + + if ( ! $item || ! ( $items_key = $this->get_items_key( $item ) ) ) { + return false; + } + + // Unset and remove later + $this->_items_to_delete[] = $item; + unset( $this->_items[ $items_key ][ $this->prefix_item_id( $item->get_id() ) ] ); + } + /** * Adds an order item to this order. The order item will not persist until save. * @param object Order item (product, shipping, fee, coupon, tax) */ public function add_item( $item ) { - if ( is_a( $item, 'WC_Order_Item_Product' ) ) { - $item_type = 'line_item'; - $items_key = 'line_items'; - } elseif ( is_a( $item, 'WC_Order_Item_Fee' ) ) { - $item_type = 'fee'; - $items_key = 'fee_lines'; - } elseif ( is_a( $item, 'WC_Order_Item_Shipping' ) ) { - $item_type = 'shipping'; - $items_key = 'shipping_lines'; - } elseif ( is_a( $item, 'WC_Order_Item_Tax' ) ) { - $item_type = 'tax'; - $items_key = 'tax_lines'; - } elseif ( is_a( $item, 'WC_Order_Item_Coupon' ) ) { - $item_type = 'coupon'; - $items_key = 'coupon_lines'; - } else { + if ( ! $items_key = $this->get_items_key( $item ) ) { return false; } // Make sure existing items are loaded so we can append this new one. if ( is_null( $this->_items[ $items_key ] ) ) { - $this->_items[ $items_key ] = $this->get_items( $item_type ); + $this->_items[ $items_key ] = $this->get_items( $item->get_type() ); } // Append new row with generated temporary ID diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index c6d21c172e3..536e991b56f 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -333,32 +333,63 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { /** * Prepare a single order for create. * - * @param WP_REST_Request $request Request object. - * @return WP_Error|stdClass $data Object. + * @param WP_REST_Request $request Request object. + * @return WP_Error|WC_Order $data Object. */ protected function prepare_item_for_database( $request ) { - $data = new stdClass; + $id = isset( $request['id'] ) ? absint( $request['id'] ) : 0; + $order = new WC_Order( $id ); + $schema = $this->get_item_schema(); + $data_keys = array_keys( array_filter( $schema['properties'], array( $this, 'filter_writable_props' ) ) ); - // Set default order args. - $data->status = $request['status']; - $data->customer_id = $request['customer_id']; - $data->customer_note = $request['customer_note']; + // Handle all writable props + foreach ( $data_keys as $key ) { + $value = $request->get_param( $key ); - /** - * Filter the query_vars used in `get_items` for the constructed query. - * - * The dynamic portion of the hook name, $this->post_type, refers to post_type of the post being - * prepared for insertion. - * - * @param stdClass $data An object representing a single item prepared - * for inserting the database. - * @param WP_REST_Request $request Request object. - */ - return apply_filters( "woocommerce_rest_pre_insert_{$this->post_type}", $data, $request ); + if ( ! is_null( $value ) ) { + switch ( $key ) { + case 'billing' : + $this->update_address( $order, $value, 'billing' ); + break; + case 'shipping' : + $this->update_address( $order, $value, 'shipping' ); + break; + case 'line_items' : + case 'shipping_lines' : + case 'fee_lines' : + case 'coupon_lines' : + if ( is_array( $value ) ) { + foreach ( $value as $item ) { + if ( $this->item_is_null( $item ) || ( isset( $item['quantity'] ) && 0 === $item['quantity'] ) ) { + $order->remove_item( $item['id'] ); + } else { + $this->set_item( $order, $key, $item ); + } + } + } + break; + case 'meta_data' : + if ( is_array( $value ) ) { + foreach ( $value as $meta ) { + $order->update_meta_data( $meta['key'], $meta['value'], $meta['meta_id'] ); + } + } + break; + default : + if ( is_callable( array( $order, "set_{$key}" ) ) ) { + $order->{"set_{$key}"}( $value ); + } + break; + } + } + } + + return apply_filters( "woocommerce_rest_pre_insert_{$this->post_type}", $order, $request ); } /** * Create base WC Order object. + * @deprecated 2.7.0 * @param array $data * @return WC_Order */ @@ -366,6 +397,15 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { return wc_create_order( $data ); } + /** + * Only reutrn writeable props from schema. + * @param array $schema + * @return bool + */ + protected function filter_writable_props( $schema ) { + return empty( $schema['readonly'] ); + } + /** * Create order. * @@ -373,125 +413,54 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { * @return int|WP_Error */ protected function create_order( $request ) { - wc_transaction_query( 'start' ); - try { - // Make sure request data matching schema naming and only includes non-read only props. - - //$request['parent_id'] - - - - - - - - - - // Make sure customer exists. - if ( 0 !== $request['customer_id'] && false === get_user_by( 'id', $request['customer_id'] ) ) { + if ( 0 !== $request->get_param( 'customer_id' ) && false === get_user_by( 'id', $request->get_param( 'customer_id' ) ) ) { throw new WC_REST_Exception( 'woocommerce_rest_invalid_customer_id',__( 'Customer ID is invalid.', 'woocommerce' ), 400 ); } - $data = $this->prepare_item_for_database( $request ); - if ( is_wp_error( $data ) ) { - return $data; - } - - - $order = new WC_Order(); + $order = $this->prepare_item_for_database( $request ); $order->set_created_via( 'rest-api' ); - $order->set_currency( $request['currency'] ); - - if ( ! empty( $request['payment_method'] ) ) { - $order->set_payment_method( $request['payment_method'] ); - } - - if ( ! empty( $request['payment_method_title'] ) ) { - $order->set_payment_method_title( $request['payment_method_title'] ); - } - - - - - $order->set_cart_hash( $cart_hash ); - $order->set_customer_id( $request['customer_id'] ); - $order->set_prices_include_tax( 'yes' === get_option( 'woocommerce_prices_include_tax' ) ); $order->set_customer_ip_address( WC_Geolocation::get_ip_address() ); $order->set_customer_user_agent( wc_get_user_agent() ); - $order->set_customer_note( $request['customer_note'] ); - - $order->set_shipping_total( WC()->cart->shipping_total ); - $order->set_discount_total( WC()->cart->get_cart_discount_total() ); - $order->set_discount_tax( WC()->cart->get_cart_discount_tax_total() ); - $order->set_cart_tax( WC()->cart->tax_total ); - $order->set_shipping_tax( WC()->cart->shipping_tax_total ); - $order->set_total( WC()->cart->total ); - - - - - - - - - - - - $order = $this->create_base_order( (array) $data ); - - if ( is_wp_error( $order ) ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_create_order', sprintf( __( 'Cannot create order: %s.', 'woocommerce' ), implode( ', ', $order->get_error_messages() ) ), 400 ); - } - - // Set addresses. - if ( is_array( $request['billing'] ) ) { - $this->update_address( $order, $request['billing'], 'billing' ); - } - if ( is_array( $request['shipping'] ) ) { - $this->update_address( $order, $request['shipping'], 'shipping' ); - } - - - // Set lines. - $lines = array( - 'line_item' => 'line_items', - 'shipping' => 'shipping_lines', - 'fee' => 'fee_lines', - 'coupon' => 'coupon_lines', - ); - - foreach ( $lines as $line_type => $line ) { - if ( is_array( $request[ $line ] ) ) { - foreach ( $request[ $line ] as $item ) { - $set_item = 'set_' . $line_type; - $this->$set_item( $order, $item, 'create' ); - } - } - } - - // Calculate totals and set them. $order->calculate_totals(); - - - - // Set meta data. - if ( ! empty( $request['meta_data'] ) && is_array( $request['meta_data'] ) ) { - $this->update_meta_data( $order->get_id(), $request['meta_data'] ); - } - $order->save(); - if ( true === $request['set_paid'] ) { - $order->payment_complete( $request['transaction_id'] ); + // Handle set paid + if ( true === $request->get_param( 'set_paid' ) ) { + $order->payment_complete( $request->get_param( 'transaction_id' ) ); } - wc_transaction_query( 'commit' ); return $order->get_id(); } catch ( Exception $e ) { - wc_transaction_query( 'rollback' ); + return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); + } + } + + /** + * Update order. + * + * @param WP_REST_Request $request Full details about the request. + * @return int|WP_Error + */ + protected function update_order( $request ) { + try { + $order = $this->prepare_item_for_database( $request ); + $order->save(); + + // Handle set paid + if ( $order->needs_payment() && true === $request->get_param( 'set_paid' ) ) { + $order->payment_complete( $request->get_param( 'transaction_id' ) ); + } + + // If items have changed, recalculate order totals. + if ( isset( $request[ 'billing' ], $request[ 'shipping' ], $request[ 'line_items' ], $request[ 'shipping' ], $request[ 'fee' ], $request[ 'coupon' ] ) ) { + $order->calculate_totals(); + } + + return $order->get_id(); + } catch ( WC_REST_Exception $e ) { return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); } } @@ -504,21 +473,9 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { * @param string $type */ protected function update_address( $order, $posted, $type = 'billing' ) { - $fields = $order->get_address( $type ); - - foreach ( array_keys( $fields ) as $field ) { - if ( isset( $posted[ $field ] ) ) { - $fields[ $field ] = $posted[ $field ]; - } - } - - // Set address. - $order->set_address( $fields, $type ); - - // Update user meta. - if ( $order->get_user_id() ) { - foreach ( $fields as $key => $value ) { - update_user_meta( $order->get_user_id(), $type . '_' . $key, $value ); + foreach ( $posted as $key => $value ) { + if ( is_callable( array( $order, "set_{$type}_{$key}" ) ) ) { + $order->{"set_{$type}_{$key}"}( $value ); } } } @@ -526,322 +483,152 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { /** * Create or update a line item. * - * @param WC_Order $order Order data. - * @param array $item Line item data. + * @param array $posted Line item data. * @param string $action 'create' to add line item or 'update' to update it. * @throws WC_REST_Exception Invalid data, server error. */ - protected function set_line_item( $order, $item, $action = 'create' ) { - $creating = 'create' === $action; - $item_args = array(); - + protected function prepare_line_items( $posted, $action = 'create' ) { // Product is always required. - if ( empty( $item['product_id'] ) && empty( $item['sku'] ) && empty( $item['variation_id'] ) ) { + if ( empty( $posted['product_id'] ) && empty( $posted['sku'] ) && empty( $posted['variation_id'] ) ) { throw new WC_REST_Exception( 'woocommerce_rest_required_product_reference', __( 'Product ID or SKU is required.', 'woocommerce' ), 400 ); } - if ( ! empty( $item['sku'] ) ) { - $product_id = (int) wc_get_product_id_by_sku( $item['sku'] ); - } elseif ( ! empty( $item['product_id'] ) && empty( $item['variation_id'] ) ) { - $product_id = (int) $item['product_id']; - } elseif ( ! empty( $item['variation_id'] ) ) { - $product_id = (int) $item['variation_id']; - } - - // When updating, ensure product ID provided matches. - if ( 'update' === $action && ! empty( $item['id'] ) ) { - $item_product_id = (int) wc_get_order_item_meta( $item['id'], '_product_id' ); - $item_variation_id = (int) wc_get_order_item_meta( $item['id'], '_variation_id' ); - - if ( $product_id !== $item_product_id && $product_id !== $item_variation_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_required_product_reference', __( 'Product ID or variation ID provided does not match this line item.', 'woocommerce' ), 400 ); - } + // Get product from ID or sku + if ( ! empty( $posted['sku'] ) ) { + $product_id = (int) wc_get_product_id_by_sku( $posted['sku'] ); + } elseif ( ! empty( $posted['product_id'] ) && empty( $posted['variation_id'] ) ) { + $product_id = (int) $posted['product_id']; + } elseif ( ! empty( $posted['variation_id'] ) ) { + $product_id = (int) $posted['variation_id']; } + $item = new WC_Order_Item_Product( ! empty( $posted['id'] ) ? $posted['id'] : '' ); $product = wc_get_product( $product_id ); - // Must be a valid WC_Product. - if ( ! is_object( $product ) ) { - throw new WC_REST_Exception( 'woocommerce_rest_invalid_product', __( 'Product is invalid.', 'woocommerce' ), 400 ); - } + if ( $product !== $item->get_product() ) { + $item->set_product( $product ); - // Quantity must be positive float. - if ( isset( $item['quantity'] ) && 0 >= floatval( $item['quantity'] ) ) { - throw new WC_REST_Exception( 'woocommerce_rest_invalid_product_quantity', __( 'Product quantity must be a positive float.', 'woocommerce' ), 400 ); - } - - // Quantity is required when creating. - if ( $creating && ! isset( $item['quantity'] ) ) { - throw new WC_REST_Exception( 'woocommerce_rest_invalid_product_quantity', __( 'Product quantity is required.', 'woocommerce' ), 400 ); - } - - // Get variation attributes. - if ( method_exists( $product, 'get_variation_attributes' ) ) { - $item_args['variation'] = $product->get_variation_attributes(); - } - - // Quantity. - if ( isset( $item['quantity'] ) ) { - $item_args['qty'] = $item['quantity']; - } - - // Total. - if ( isset( $item['total'] ) ) { - $item_args['totals']['total'] = floatval( $item['total'] ); - } - - // Total tax. - if ( isset( $item['total_tax'] ) ) { - $item_args['totals']['tax'] = floatval( $item['total_tax'] ); - } - - // Subtotal. - if ( isset( $item['subtotal'] ) ) { - $item_args['totals']['subtotal'] = floatval( $item['subtotal'] ); - } - - // Subtotal tax. - if ( isset( $item['subtotal_tax'] ) ) { - $item_args['totals']['subtotal_tax'] = floatval( $item['subtotal_tax'] ); - } - - if ( $creating ) { - $item_id = $order->add_product( $product, $item_args['qty'], $item_args ); - if ( ! $item_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_create_line_item', __( 'Cannot create line item, try again.', 'woocommerce' ), 500 ); - } - } else { - $item_id = $order->update_product( $item['id'], $product, $item_args ); - if ( ! $item_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_update_line_item', __( 'Cannot update line item, try again.', 'woocommerce' ), 500 ); + if ( 'create' === $action ) { + $qty = isset( $posted['quantity'] ) ? $posted['quantity'] : 1; + $item->set_total( $product->get_price() * $qty ); + $item->set_subtotal( $product->get_price() * $qty ); } } + + if ( isset( $posted['name'] ) ) { + $item->set_name( $posted['name'] ); + } + + if ( isset( $posted['quantity'] ) ) { + $item->set_quantity( $posted['quantity'] ); + } + + if ( isset( $posted['total'] ) ) { + $item->set_total( floatval( $posted['total'] ) ); + } + + if ( isset( $posted['subtotal'] ) ) { + $item->set_subtotal( floatval( $posted['subtotal'] ) ); + } + + if ( isset( $posted['tax_class'] ) ) { + $item->set_tax_class( $posted['tax_class'] ); + } + + return $item; } /** * Create or update an order shipping method. * - * @param WC_Order $order Order data. - * @param array $shipping Item data. + * @param $posted $shipping Item data. * @param string $action 'create' to add shipping or 'update' to update it. * @throws WC_REST_Exception Invalid data, server error. */ - protected function set_shipping( $order, $shipping, $action ) { - // Total must be a positive float. - if ( ! empty( $shipping['total'] ) && 0 > floatval( $shipping['total'] ) ) { - throw new WC_REST_Exception( 'woocommerce_rest_invalid_shipping_total', __( 'Shipping total must be a positive amount.', 'woocommerce' ), 400 ); - } + protected function prepare_shipping_lines( $posted, $action ) { + $item = new WC_Order_Item_Shipping( ! empty( $posted['id'] ) ? $posted['id'] : '' ); if ( 'create' === $action ) { - // Method ID is required. - if ( empty( $shipping['method_id'] ) ) { + if ( empty( $posted['method_id'] ) ) { throw new WC_REST_Exception( 'woocommerce_rest_invalid_shipping_item', __( 'Shipping method ID is required.', 'woocommerce' ), 400 ); } - - $rate = new WC_Shipping_Rate( $shipping['method_id'], isset( $shipping['method_title'] ) ? $shipping['method_title'] : '', isset( $shipping['total'] ) ? floatval( $shipping['total'] ) : 0, array(), $shipping['method_id'] ); - - $shipping_id = $order->add_shipping( $rate ); - - if ( ! $shipping_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_create_shipping', __( 'Cannot create shipping method, try again.', 'woocommerce' ), 500 ); - } - - } else { - $shipping_args = array(); - - if ( isset( $shipping['method_id'] ) ) { - $shipping_args['method_id'] = $shipping['method_id']; - } - - if ( isset( $shipping['method_title'] ) ) { - $shipping_args['method_title'] = $shipping['method_title']; - } - - if ( isset( $shipping['total'] ) ) { - $shipping_args['cost'] = floatval( $shipping['total'] ); - } - - $shipping_id = $order->update_shipping( $shipping['id'], $shipping_args ); - - if ( ! $shipping_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_update_shipping', __( 'Cannot update shipping method, try again.', 'woocommerce' ), 500 ); - } } + + if ( isset( $posted['method_id'] ) ) { + $item->set_method_id( $posted['method_id'] ); + } + + if ( isset( $posted['method_title'] ) ) { + $item->set_method_title( $posted['method_title'] ); + } + + if ( isset( $posted['total'] ) ) { + $item->set_total( floatval( $posted['total'] ) ); + } + + return $item; } /** * Create or update an order fee. * - * @param WC_Order $order Order data. - * @param array $fee Item data. + * @param array $posted Item data. * @param string $action 'create' to add fee or 'update' to update it. * @throws WC_REST_Exception Invalid data, server error. */ - protected function set_fee( $order, $fee, $action ) { - if ( 'create' === $action ) { + protected function prepare_fee_lines( $posted, $action ) { + $item = new WC_Order_Item_Fee( ! empty( $posted['id'] ) ? $posted['id'] : '' ); - // Fee name is required. - if ( empty( $fee['name'] ) ) { + if ( 'create' === $action ) { + if ( empty( $posted['name'] ) ) { throw new WC_REST_Exception( 'woocommerce_rest_invalid_fee_item', __( 'Fee name is required.', 'woocommerce' ), 400 ); } - - $fee_data = new stdClass(); - $fee_data->id = sanitize_title( $fee['name'] ); - $fee_data->name = $fee['name']; - $fee_data->amount = isset( $fee['total'] ) ? floatval( $fee['total'] ) : 0; - $fee_data->taxable = false; - $fee_data->tax = 0; - $fee_data->tax_data = array(); - $fee_data->tax_class = ''; - - // If taxable, tax class and total are required. - if ( isset( $fee['tax_status'] ) && 'taxable' === $fee['tax_status'] ) { - - if ( ! isset( $fee['tax_class'] ) ) { - throw new WC_REST_Exception( 'woocommerce_rest_invalid_fee_item', __( 'Fee tax class is required when fee is taxable.', 'woocommerce' ), 400 ); - } - - $fee_data->taxable = true; - $fee_data->tax_class = $fee['tax_class']; - - if ( isset( $fee['total_tax'] ) ) { - $fee_data->tax = isset( $fee['total_tax'] ) ? wc_format_refund_total( $fee['total_tax'] ) : 0; - } - } - - $fee_id = $order->add_fee( $fee_data ); - - if ( ! $fee_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_create_fee', __( 'Cannot create fee, try again.', 'woocommerce' ), 500 ); - } - - } else { - $fee_args = array(); - - if ( isset( $fee['name'] ) ) { - $fee_args['name'] = $fee['name']; - } - - if ( isset( $fee['tax_class'] ) ) { - $fee_args['tax_class'] = $fee['tax_class']; - } - - if ( isset( $fee['total'] ) ) { - $fee_args['line_total'] = floatval( $fee['total'] ); - } - - if ( isset( $fee['total_tax'] ) ) { - $fee_args['line_tax'] = floatval( $fee['total_tax'] ); - } - - $fee_id = $order->update_fee( $fee['id'], $fee_args ); - - if ( ! $fee_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_update_fee', __( 'Cannot update fee, try again.', 'woocommerce' ), 500 ); - } } + + if ( isset( $posted['name'] ) ) { + $item->set_name( $posted['name'] ); + } + + if ( isset( $posted['tax_class'] ) ) { + $item->set_tax_class( $posted['tax_class'] ); + } + + if ( isset( $posted['tax_status'] ) ) { + $item->set_tax_status( $posted['tax_status'] ); + } + + if ( isset( $posted['total'] ) ) { + $item->set_total( floatval( $posted['total'] ) ); + } + + return $item; } /** * Create or update an order coupon. * - * @param WC_Order $order Order data. - * @param array $coupon Item data. + * @param array $posted Item data. * @param string $action 'create' to add coupon or 'update' to update it. * @throws WC_REST_Exception Invalid data, server error. */ - protected function set_coupon( $order, $coupon, $action ) { - // Coupon discount must be positive float. - if ( isset( $coupon['discount'] ) && 0 > floatval( $coupon['discount'] ) ) { - throw new WC_REST_Exception( 'woocommerce_rest_invalid_coupon_total', __( 'Coupon discount must be a positive amount.', 'woocommerce' ), 400 ); - } + protected function prepare_coupon_lines( $posted, $action ) { + $item = new WC_Order_Item_Coupon( ! empty( $posted['id'] ) ? $posted['id'] : '' ); if ( 'create' === $action ) { - // Coupon code is required. - if ( empty( $coupon['code'] ) ) { + if ( empty( $posted['code'] ) ) { throw new WC_REST_Exception( 'woocommerce_rest_invalid_coupon_coupon', __( 'Coupon code is required.', 'woocommerce' ), 400 ); } - - $coupon_id = $order->add_coupon( $coupon['code'], floatval( $coupon['discount'] ) ); - - if ( ! $coupon_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_create_order_coupon', __( 'Cannot create coupon, try again.', 'woocommerce' ), 500 ); - } - - } else { - $coupon_args = array(); - - if ( isset( $coupon['code'] ) ) { - $coupon_args['code'] = $coupon['code']; - } - - if ( isset( $coupon['discount'] ) ) { - $coupon_args['discount_amount'] = floatval( $coupon['discount'] ); - } - - $coupon_id = $order->update_coupon( $coupon['id'], $coupon_args ); - - if ( ! $coupon_id ) { - throw new WC_REST_Exception( 'woocommerce_rest_cannot_update_order_coupon', __( 'Cannot update coupon, try again.', 'woocommerce' ), 500 ); - } - } - } - - /** - * Helper method to add/update meta data, with two restrictions: - * - * 1) Only non-protected meta (no leading underscore) can be set - * 2) Meta values must be scalar (int, string, bool) - * - * @param int $order_id Order ID. - * @param array $meta_data Meta data in array( 'meta_key' => 'meta_value' ) format. - */ - protected function update_meta_data( $order_id, $meta_data ) { - foreach ( $meta_data as $meta_key => $meta_value ) { - if ( is_string( $meta_key ) && ! is_protected_meta( $meta_key ) && is_scalar( $meta_value ) ) { - update_post_meta( $order_id, $meta_key, $meta_value ); - } - } - } - - /** - * Create a single item. - * - * @param WP_REST_Request $request Full details about the request. - * @return WP_Error|WP_REST_Response - */ - public function create_item( $request ) { - if ( ! empty( $request['id'] ) ) { - return new WP_Error( "woocommerce_rest_{$this->post_type}_exists", sprintf( __( 'Cannot create existing %s.', 'woocommerce' ), $this->post_type ), array( 'status' => 400 ) ); } - $order_id = $this->create_order( $request ); - if ( is_wp_error( $order_id ) ) { - return $order_id; + if ( isset( $posted['code'] ) ) { + $item->set_code( $posted['code'] ); } - // Clear transients. - wc_delete_shop_order_transients( $order_id ); + if ( isset( $posted['discount'] ) ) { + $item->set_discount( floatval( $posted['discount'] ) ); + } - $post = get_post( $order_id ); - $this->update_additional_fields_for_object( $post, $request ); - - /** - * Fires after a single item is created or updated via the REST API. - * - * @param object $post Inserted object (not a WP_Post object). - * @param WP_REST_Request $request Request object. - * @param boolean $creating True when creating item, false when updating. - */ - do_action( "woocommerce_rest_insert_{$this->post_type}", $post, $request, true ); - - $request->set_param( 'context', 'edit' ); - $response = $this->prepare_item_for_response( $post, $request ); - $response = rest_ensure_response( $response ); - $response->set_status( 201 ); - $response->header( 'Location', rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $post->ID ) ) ); - - return $response; + return $item; } /** @@ -851,29 +638,41 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { * * @param WC_Order $order order * @param string $item_type - * @param array $item item provided in the request body - * @param string $action either 'create' or 'update' + * @param array $posted item provided in the request body * @throws WC_REST_Exception If item ID is not associated with order */ - protected function set_item( $order, $item_type, $item, $action ) { + protected function set_item( $order, $item_type, $posted ) { global $wpdb; - $set_method = 'set_' . $item_type; + if ( ! empty( $posted['id'] ) ) { + $action = 'update'; + } else { + $action = 'create'; + } + + $method = 'prepare_' . $item_type; // Verify provided line item ID is associated with order. if ( 'update' === $action ) { $result = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}woocommerce_order_items WHERE order_item_id = %d AND order_id = %d", - absint( $item['id'] ), + absint( $posted['id'] ), absint( $order->get_id() ) ) ); - if ( is_null( $result ) ) { throw new WC_REST_Exception( 'woocommerce_rest_invalid_item_id', __( 'Order item ID provided is not associated with order.', 'woocommerce' ), 400 ); } } - $this->$set_method( $order, $item, $action ); + // Prepare item data + $item = $this->$method( $posted, $action ); + + // Save or add to order + if ( 'create' === $action ) { + $order->add_item( $item ); + } else { + $item->save(); + } } /** @@ -896,133 +695,21 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } /** - * Update order. - * - * @param WP_REST_Request $request Full details about the request. - * @param WP_Post $post Post data. - * @return int|WP_Error - */ - protected function update_order( $request, $post ) { - try { - $update_totals = false; - $order = wc_get_order( $post ); - $order_args = array( 'order_id' => $order->get_id() ); - - // Customer note. - if ( isset( $request['customer_note'] ) ) { - $order_args['customer_note'] = $request['customer_note']; - } - - // Customer ID. - if ( isset( $request['customer_id'] ) && $request['customer_id'] != $order->get_user_id() ) { - // Make sure customer exists. - if ( false === get_user_by( 'id', $request['customer_id'] ) ) { - throw new WC_REST_Exception( 'woocommerce_rest_invalid_customer_id', __( 'Customer ID is invalid.', 'woocommerce' ), 400 ); - } - - update_post_meta( $order->get_id(), '_customer_user', $request['customer_id'] ); - } - - // Update addresses. - if ( is_array( $request['billing'] ) ) { - $this->update_address( $order, $request['billing'], 'billing' ); - } - if ( is_array( $request['shipping'] ) ) { - $this->update_address( $order, $request['shipping'], 'shipping' ); - } - - $lines = array( - 'line_item' => 'line_items', - 'shipping' => 'shipping_lines', - 'fee' => 'fee_lines', - 'coupon' => 'coupon_lines', - ); - - foreach ( $lines as $line_type => $line ) { - if ( isset( $request[ $line ] ) && is_array( $request[ $line ] ) ) { - $update_totals = true; - foreach ( $request[ $line ] as $item ) { - // Item ID is always required. - if ( ! array_key_exists( 'id', $item ) ) { - $item['id'] = null; - } - - // Create item. - if ( is_null( $item['id'] ) ) { - $this->set_item( $order, $line_type, $item, 'create' ); - } elseif ( $this->item_is_null( $item ) || 0 === $item['quantity'] ) { - // Delete item. - wc_delete_order_item( $item['id'] ); - } else { - // Update item. - $this->set_item( $order, $line_type, $item, 'update' ); - } - } - } - } - - // Set payment method. - if ( ! empty( $request['payment_method'] ) ) { - update_post_meta( $order->get_id(), '_payment_method', $request['payment_method'] ); - } - if ( ! empty( $request['payment_method_title'] ) ) { - update_post_meta( $order->get_id(), '_payment_method_title', $request['payment_method'] ); - } - if ( $order->needs_payment() && isset( $request['set_paid'] ) && true === $request['set_paid'] ) { - $order->payment_complete( ! empty( $request['transaction_id'] ) ? $request['transaction_id'] : '' ); - } - - // Set order currency. - if ( isset( $request['currency'] ) ) { - update_post_meta( $order->get_id(), '_order_currency', $request['currency'] ); - } - - // If items have changed, recalculate order totals. - if ( $update_totals ) { - $order->calculate_totals(); - } - - // Update meta data. - if ( ! empty( $request['meta_data'] ) && is_array( $request['meta_data'] ) ) { - $this->update_meta_data( $order->get_id(), $request['meta_data'] ); - } - - // Update the order post to set customer note/modified date. - wc_update_order( $order_args ); - - // Order status. - if ( ! empty( $request['status'] ) ) { - $order->update_status( $request['status'], isset( $request['status_note'] ) ? $request['status_note'] : '' ); - } - - return $order->get_id(); - } catch ( WC_REST_Exception $e ) { - return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); - } - } - - /** - * Update a single order. + * Create a single item. * * @param WP_REST_Request $request Full details about the request. * @return WP_Error|WP_REST_Response */ - public function update_item( $request ) { - $id = (int) $request['id']; - $post = get_post( $id ); - - if ( empty( $id ) || empty( $post->ID ) || $this->post_type !== $post->post_type ) { - return new WP_Error( "woocommerce_rest_{$this->post_type}_invalid_id", __( 'ID is invalid.', 'woocommerce' ), array( 'status' => 400 ) ); + public function create_item( $request ) { + if ( ! empty( $request['id'] ) ) { + return new WP_Error( "woocommerce_rest_{$this->post_type}_exists", sprintf( __( 'Cannot create existing %s.', 'woocommerce' ), $this->post_type ), array( 'status' => 400 ) ); } - $order_id = $this->update_order( $request, $post ); + $order_id = $this->create_order( $request ); if ( is_wp_error( $order_id ) ) { return $order_id; } - // Clear transients. - wc_delete_shop_order_transients( $order_id ); - $post = get_post( $order_id ); $this->update_additional_fields_for_object( $post, $request ); @@ -1033,11 +720,53 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { * @param WP_REST_Request $request Request object. * @param boolean $creating True when creating item, false when updating. */ - do_action( "woocommerce_rest_insert_{$this->post_type}", $post, $request, false ); - + do_action( "woocommerce_rest_insert_{$this->post_type}", $post, $request, true ); $request->set_param( 'context', 'edit' ); $response = $this->prepare_item_for_response( $post, $request ); - return rest_ensure_response( $response ); + $response = rest_ensure_response( $response ); + $response->set_status( 201 ); + $response->header( 'Location', rest_url( sprintf( '/%s/%s/%d', $this->namespace, $this->rest_base, $post->ID ) ) ); + + return $response; + } + + /** + * Update a single order. + * + * @param WP_REST_Request $request Full details about the request. + * @return WP_Error|WP_REST_Response + */ + public function update_item( $request ) { + try { + $post_id = (int) $request['id']; + + if ( empty( $post_id ) || $this->post_type !== get_post_type( $post_id ) ) { + return new WP_Error( "woocommerce_rest_{$this->post_type}_invalid_id", __( 'ID is invalid.', 'woocommerce' ), array( 'status' => 400 ) ); + } + + $order_id = $this->create_order( $request ); + if ( is_wp_error( $order_id ) ) { + return $order_id; + } + + $post = get_post( $order_id ); + $this->update_additional_fields_for_object( $post, $request ); + + /** + * Fires after a single item is created or updated via the REST API. + * + * @param object $post Inserted object (not a WP_Post object). + * @param WP_REST_Request $request Request object. + * @param boolean $creating True when creating item, false when updating. + */ + do_action( "woocommerce_rest_insert_{$this->post_type}", $post, $request, false ); + $request->set_param( 'context', 'edit' ); + $response = $this->prepare_item_for_response( $post, $request ); + return rest_ensure_response( $response ); + + } catch ( Exception $e ) { + return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); + } } /** @@ -1054,23 +783,6 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { return $order_statuses; } - - - - - - - - - - - - - - - - - /** * Get the Order's schema, conforming to JSON Schema. * @@ -1427,6 +1139,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( 'Line subtotal tax (before discounts).', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'total' => array( 'description' => __( 'Line total (after discounts).', 'woocommerce' ), @@ -1437,11 +1150,13 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( 'Line total tax (after discounts).', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'readonly' => true, ), 'taxes' => array( 'description' => __( 'Line taxes.', 'woocommerce' ), 'type' => 'array', 'context' => array( 'view', 'edit' ), + 'readonly' => true, 'properties' => array( 'id' => array( 'description' => __( 'Tax rate ID.', 'woocommerce' ), @@ -1698,6 +1413,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { 'description' => __( 'Tax status of fee.', 'woocommerce' ), 'type' => 'string', 'context' => array( 'view', 'edit' ), + 'enum' => array( 'taxable', 'none' ), ), 'total' => array( 'description' => __( 'Line total (after discounts).', 'woocommerce' ), diff --git a/includes/class-wc-order-item-fee.php b/includes/class-wc-order-item-fee.php index 924de9ecf7b..a27fa238b70 100644 --- a/includes/class-wc-order-item-fee.php +++ b/includes/class-wc-order-item-fee.php @@ -127,6 +127,9 @@ class WC_Order_Item_Fee extends WC_Order_Item { * @param string $value */ public function set_tax_class( $value ) { + if ( $value && ! in_array( $value, WC_Tax::get_tax_classes() ) ) { + $this->throw_exception( __METHOD__, 'Invalid tax class' ); + } $this->_data['tax_class'] = $value; } diff --git a/includes/class-wc-order-item-product.php b/includes/class-wc-order-item-product.php index 82949d88c47..b1924bbb1b1 100644 --- a/includes/class-wc-order-item-product.php +++ b/includes/class-wc-order-item-product.php @@ -233,6 +233,9 @@ class WC_Order_Item_Product extends WC_Order_Item { * @param int $value */ public function set_quantity( $value ) { + if ( 0 >= $value ) { + $this->throw_exception( __METHOD__, 'Quantity must be positive' ); + } $this->_data['quantity'] = wc_stock_amount( $value ); } @@ -241,6 +244,9 @@ class WC_Order_Item_Product extends WC_Order_Item { * @param string $value */ public function set_tax_class( $value ) { + if ( $value && ! in_array( $value, WC_Tax::get_tax_classes() ) ) { + $this->throw_exception( __METHOD__, 'Invalid tax class' ); + } $this->_data['tax_class'] = $value; } @@ -324,13 +330,14 @@ class WC_Order_Item_Product extends WC_Order_Item { * @param WC_Product $product */ public function set_product( $product ) { - if ( $product ) { - $this->set_product_id( $product->get_id() ); - $this->set_name( $product->get_title() ); - $this->set_tax_class( $product->get_tax_class() ); - $this->set_variation_id( is_callable( array( $product, 'get_variation_id' ) ) ? $product->get_variation_id() : 0 ); - $this->set_variation( is_callable( array( $product, 'get_variation_attributes' ) ) ? $product->get_variation_attributes() : array() ); + if ( ! is_a( $product, 'WC_Product' ) ) { + $this->throw_exception( __METHOD__, 'Invalid product' ); } + $this->set_product_id( $product->get_id() ); + $this->set_name( $product->get_title() ); + $this->set_tax_class( $product->get_tax_class() ); + $this->set_variation_id( is_callable( array( $product, 'get_variation_id' ) ) ? $product->get_variation_id() : 0 ); + $this->set_variation( is_callable( array( $product, 'get_variation_attributes' ) ) ? $product->get_variation_attributes() : array() ); } /* From 594bceedf248986bea768afb7a52807f317d7b23 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 17 Aug 2016 17:07:30 +0100 Subject: [PATCH 64/81] Comment out exception code - see #11715 --- includes/abstracts/abstract-wc-order.php | 2 +- includes/class-wc-order-item-fee.php | 2 +- includes/class-wc-order-item-product.php | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index 32c5d0d5345..21677bf5d6b 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -700,7 +700,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { */ public function set_currency( $value ) { if ( $value && ! in_array( $value, array_keys( get_woocommerce_currencies() ) ) ) { - $this->throw_exception( 'invalid_currency', 'Invalid currency code' ); + //$this->throw_exception( 'invalid_currency', 'Invalid currency code' ); } $this->_data['currency'] = $value; } diff --git a/includes/class-wc-order-item-fee.php b/includes/class-wc-order-item-fee.php index a27fa238b70..d4afbd38570 100644 --- a/includes/class-wc-order-item-fee.php +++ b/includes/class-wc-order-item-fee.php @@ -128,7 +128,7 @@ class WC_Order_Item_Fee extends WC_Order_Item { */ public function set_tax_class( $value ) { if ( $value && ! in_array( $value, WC_Tax::get_tax_classes() ) ) { - $this->throw_exception( __METHOD__, 'Invalid tax class' ); + //$this->throw_exception( __METHOD__, 'Invalid tax class' ); } $this->_data['tax_class'] = $value; } diff --git a/includes/class-wc-order-item-product.php b/includes/class-wc-order-item-product.php index b1924bbb1b1..b5c5876ec3b 100644 --- a/includes/class-wc-order-item-product.php +++ b/includes/class-wc-order-item-product.php @@ -234,7 +234,7 @@ class WC_Order_Item_Product extends WC_Order_Item { */ public function set_quantity( $value ) { if ( 0 >= $value ) { - $this->throw_exception( __METHOD__, 'Quantity must be positive' ); + //$this->throw_exception( __METHOD__, 'Quantity must be positive' ); } $this->_data['quantity'] = wc_stock_amount( $value ); } @@ -245,7 +245,7 @@ class WC_Order_Item_Product extends WC_Order_Item { */ public function set_tax_class( $value ) { if ( $value && ! in_array( $value, WC_Tax::get_tax_classes() ) ) { - $this->throw_exception( __METHOD__, 'Invalid tax class' ); + //$this->throw_exception( __METHOD__, 'Invalid tax class' ); } $this->_data['tax_class'] = $value; } @@ -331,7 +331,7 @@ class WC_Order_Item_Product extends WC_Order_Item { */ public function set_product( $product ) { if ( ! is_a( $product, 'WC_Product' ) ) { - $this->throw_exception( __METHOD__, 'Invalid product' ); + //$this->throw_exception( __METHOD__, 'Invalid product' ); } $this->set_product_id( $product->get_id() ); $this->set_name( $product->get_title() ); From 7852eecb06306ede28dcda509bb8f424d2e5bcef Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Wed, 17 Aug 2016 17:25:29 +0100 Subject: [PATCH 65/81] Fix get param usage --- includes/api/class-wc-rest-orders-controller.php | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 536e991b56f..5956a239254 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -344,15 +344,13 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { // Handle all writable props foreach ( $data_keys as $key ) { - $value = $request->get_param( $key ); + $value = $request[ $key ]; if ( ! is_null( $value ) ) { switch ( $key ) { case 'billing' : - $this->update_address( $order, $value, 'billing' ); - break; case 'shipping' : - $this->update_address( $order, $value, 'shipping' ); + $this->update_address( $order, $value, $key ); break; case 'line_items' : case 'shipping_lines' : @@ -415,7 +413,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { protected function create_order( $request ) { try { // Make sure customer exists. - if ( 0 !== $request->get_param( 'customer_id' ) && false === get_user_by( 'id', $request->get_param( 'customer_id' ) ) ) { + if ( ! is_null( $request['customer_id'] ) && 0 !== $request['customer_id'] && false === get_user_by( 'id', $request['customer_id'] ) ) { throw new WC_REST_Exception( 'woocommerce_rest_invalid_customer_id',__( 'Customer ID is invalid.', 'woocommerce' ), 400 ); } @@ -428,7 +426,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $order->save(); // Handle set paid - if ( true === $request->get_param( 'set_paid' ) ) { + if ( true === $request['set_paid'] ) { $order->payment_complete( $request->get_param( 'transaction_id' ) ); } @@ -450,7 +448,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $order->save(); // Handle set paid - if ( $order->needs_payment() && true === $request->get_param( 'set_paid' ) ) { + if ( $order->needs_payment() && true === $request['set_paid'] ) { $order->payment_complete( $request->get_param( 'transaction_id' ) ); } @@ -744,7 +742,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { return new WP_Error( "woocommerce_rest_{$this->post_type}_invalid_id", __( 'ID is invalid.', 'woocommerce' ), array( 'status' => 400 ) ); } - $order_id = $this->create_order( $request ); + $order_id = $this->update_order( $request ); if ( is_wp_error( $order_id ) ) { return $order_id; } From 74484c70093bb59f71dbc13c3247080341f5ec32 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 18 Aug 2016 00:41:46 -0300 Subject: [PATCH 66/81] [2.6] [REST API] Fixed undefined order ID, closes #11707 --- includes/api/class-wc-rest-order-refunds-controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/api/class-wc-rest-order-refunds-controller.php b/includes/api/class-wc-rest-order-refunds-controller.php index 74716c1e730..42e76a7664b 100644 --- a/includes/api/class-wc-rest-order-refunds-controller.php +++ b/includes/api/class-wc-rest-order-refunds-controller.php @@ -300,7 +300,7 @@ class WC_REST_Order_Refunds_Controller extends WC_REST_Posts_Controller { $order = wc_get_order( $order_data ); if ( isset( $payment_gateways[ $order->get_payment_method() ] ) && $payment_gateways[ $order->get_payment_method() ]->supports( 'refunds' ) ) { - $result = $payment_gateways[ $order->get_payment_method() ]->process_refund( $order_id, $refund->get_refund_amount(), $refund->get_refund_reason() ); + $result = $payment_gateways[ $order->get_payment_method() ]->process_refund( $order->id, $refund->get_refund_amount(), $refund->get_refund_reason() ); if ( is_wp_error( $result ) ) { return $result; From 838f3737ea4c3ea1b17fee05e3734dee495227c4 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 18 Aug 2016 00:53:27 -0300 Subject: [PATCH 67/81] [2.6] Fixed downloadable variable product URL, closes #11699 --- includes/wc-user-functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/wc-user-functions.php b/includes/wc-user-functions.php index 236c101c989..57f8d16e49a 100644 --- a/includes/wc-user-functions.php +++ b/includes/wc-user-functions.php @@ -453,7 +453,7 @@ function wc_get_customer_available_downloads( $customer_id ) { home_url( '/' ) ), 'download_id' => $result->download_id, - 'product_id' => $product_id, + 'product_id' => $_product->id, 'download_name' => $download_name, 'order_id' => $order->get_id(), 'order_key' => $order->get_order_key(), From eab72bd48ef647eee8e06dd9cda24aaa42d7a8ca Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 18 Aug 2016 11:10:16 +0100 Subject: [PATCH 68/81] Sync rating after clear_transients so meta exists #11711 --- includes/class-wc-comments.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/class-wc-comments.php b/includes/class-wc-comments.php index a265d348a77..8249c3f3504 100644 --- a/includes/class-wc-comments.php +++ b/includes/class-wc-comments.php @@ -239,6 +239,7 @@ class WC_Comments { delete_post_meta( $post_id, '_wc_average_rating' ); delete_post_meta( $post_id, '_wc_rating_count' ); delete_post_meta( $post_id, '_wc_review_count' ); + WC_Product::sync_average_rating( $post_id ); } /** From 747c48c13b4e8199dca1de299f786780469cbde9 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 18 Aug 2016 11:33:19 +0100 Subject: [PATCH 69/81] Sort by rating with meta Closes #11711 --- includes/class-wc-query.php | 11 ++++++++--- readme.txt | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/includes/class-wc-query.php b/includes/class-wc-query.php index 17b0b60e9dd..ea48f00d089 100644 --- a/includes/class-wc-query.php +++ b/includes/class-wc-query.php @@ -468,8 +468,11 @@ class WC_Query { add_filter( 'posts_clauses', array( $this, 'order_by_popularity_post_clauses' ) ); break; case 'rating' : - // Sorting handled later though a hook - add_filter( 'posts_clauses', array( $this, 'order_by_rating_post_clauses' ) ); + $args['meta_key'] = '_wc_average_rating'; + $args['orderby'] = array( + 'meta_value_num' => 'DESC', + 'ID' => 'ASC', + ); break; case 'title' : $args['orderby'] = 'title'; @@ -498,13 +501,15 @@ class WC_Query { /** * Order by rating post clauses. * - * @access public + * @deprecated 2.7.0 * @param array $args * @return array */ public function order_by_rating_post_clauses( $args ) { global $wpdb; + _deprecated_function( 'order_by_rating_post_clauses', '2.7', '' ); + $args['fields'] .= ", AVG( $wpdb->commentmeta.meta_value ) as average_rating "; $args['where'] .= " AND ( $wpdb->commentmeta.meta_key = 'rating' OR $wpdb->commentmeta.meta_key IS null ) "; $args['join'] .= " diff --git a/readme.txt b/readme.txt index bcc7f847ed1..65fafb4bb68 100644 --- a/readme.txt +++ b/readme.txt @@ -171,6 +171,7 @@ Yes you can! Join in on our [GitHub repository](http://github.com/woothemes/wooc * Show variable weights/dimensions even when parent values are not set. * Automatically sort tax rates rather than allow clunky manual sorting. * Made WC_Logger pluggable via wc_get_logger function. +* Use 'average rating' post meta for 'rating' product sorting option. [See changelog for all versions](https://raw.githubusercontent.com/woothemes/woocommerce/master/CHANGELOG.txt). From fb585e963324e00faa43d90155e642248133f0f0 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 18 Aug 2016 13:19:57 +0100 Subject: [PATCH 70/81] Add transient caching to product_loop Closes #11708 --- includes/class-wc-shortcodes.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/includes/class-wc-shortcodes.php b/includes/class-wc-shortcodes.php index ed45cc3665a..c4f926c091b 100644 --- a/includes/class-wc-shortcodes.php +++ b/includes/class-wc-shortcodes.php @@ -84,10 +84,16 @@ class WC_Shortcodes { private static function product_loop( $query_args, $atts, $loop_name ) { global $woocommerce_loop; - $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $query_args, $atts, $loop_name ) ); $columns = absint( $atts['columns'] ); $woocommerce_loop['columns'] = $columns; $woocommerce_loop['name'] = $loop_name; + $transient_name = 'wc_loop_' . $loop_name . '_' . WC_Cache_Helper::get_transient_version( 'product_query' ); + $products = get_transient( $transient_name ); + + if ( false === $products || ! is_a( $products, 'WP_Query' ) ) { + $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $query_args, $atts, $loop_name ) ); + set_transient( $transient_name, $products, DAY_IN_SECONDS * 30 ); + } ob_start(); From f1e517130a8ac086cc8099d107706acc13b66f54 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 18 Aug 2016 13:30:10 +0100 Subject: [PATCH 71/81] Feedback from @claudiosmweb --- .../api/class-wc-rest-orders-controller.php | 36 +++++++++++-------- includes/class-wc-order-item.php | 4 +-- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 5956a239254..260ccf754d1 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -126,31 +126,32 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { /** * Expands an order item to get its data. + * @param WC_Order_item $item * @return array */ protected function get_order_item_data( $item ) { $data = $item->get_data(); $format_decimal = array( 'subtotal', 'subtotal_tax', 'total', 'total_tax', 'tax_total', 'shipping_tax_total' ); - // Format decimal values + // Format decimal values. foreach ( $format_decimal as $key ) { if ( isset( $data[ $key ] ) ) { $data[ $key ] = wc_format_decimal( $data[ $key ], $this->request['dp'] ); } } - // Add meta, SKU and PRICE to products + // Add meta, SKU and PRICE to products. if ( is_callable( array( $item, 'get_product' ) ) ) { $data['sku'] = $item->get_product() ? $item->get_product()->get_sku(): null; $data['price'] = $item->get_total() / max( 1, $item->get_quantity() ); - // Format meta data + // Format meta data. if ( isset( $data['meta_data'] ) ) { $hideprefix = 'true' === $this->request['all_item_meta'] ? null : '_'; $item_meta = $item->get_formatted_meta_data( $hideprefix ); foreach ( $item_meta as $key => $values ) { - // Label was used in previous version of API - set it here + // Label was used in previous version of API - set it here. $item_meta[ $key ]->label = $values->display_key; unset( $item_meta[ $key ]->display_key ); unset( $item_meta[ $key ]->display_value ); @@ -160,7 +161,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } } - // Format taxes + // Format taxes. if ( ! empty( $data['taxes']['total'] ) ) { $taxes = array(); @@ -199,25 +200,25 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $format_date = array( 'date_created', 'date_modified', 'date_completed' ); $format_line_items = array( 'line_items', 'tax_lines', 'shipping_lines', 'fee_lines', 'coupon_lines' ); - // Format decimal values + // Format decimal values. foreach ( $format_decimal as $key ) { $data[ $key ] = wc_format_decimal( $data[ $key ], $this->request['dp'] ); } - // Format date values + // Format date values. foreach ( $format_date as $key ) { $data[ $key ] = $data[ $key ] ? wc_rest_prepare_date_response( get_gmt_from_date( date( 'Y-m-d H:i:s', $data[ $key ] ) ) ) : false; } - // Format the order status + // Format the order status. $data['status'] = 'wc-' === substr( $data['status'], 0, 3 ) ? substr( $data['status'], 3 ) : $data['status']; - // Format line items + // Format line items. foreach ( $format_line_items as $key ) { $data[ $key ] = array_values( array_map( array( $this, 'get_order_item_data' ), $data[ $key ] ) ); } - // Refunds + // Refunds. foreach ( $order->get_refunds() as $refund ) { $data['refunds'][] = array( 'id' => $refund->id, @@ -382,6 +383,15 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } } + /** + * Filter the data for the insert. + * + * The dynamic portion of the hook name, $this->post_type, refers to post_type of the post being + * prepared for the response. + * + * @param WC_Order $order The prder object. + * @param WP_REST_Request $request Request object. + */ return apply_filters( "woocommerce_rest_pre_insert_{$this->post_type}", $order, $request ); } @@ -420,14 +430,12 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { $order = $this->prepare_item_for_database( $request ); $order->set_created_via( 'rest-api' ); $order->set_prices_include_tax( 'yes' === get_option( 'woocommerce_prices_include_tax' ) ); - $order->set_customer_ip_address( WC_Geolocation::get_ip_address() ); - $order->set_customer_user_agent( wc_get_user_agent() ); $order->calculate_totals(); $order->save(); // Handle set paid if ( true === $request['set_paid'] ) { - $order->payment_complete( $request->get_param( 'transaction_id' ) ); + $order->payment_complete( $request['transaction_id'] ); } return $order->get_id(); @@ -449,7 +457,7 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { // Handle set paid if ( $order->needs_payment() && true === $request['set_paid'] ) { - $order->payment_complete( $request->get_param( 'transaction_id' ) ); + $order->payment_complete( $request['transaction_id'] ); } // If items have changed, recalculate order totals. diff --git a/includes/class-wc-order-item.php b/includes/class-wc-order-item.php index 58da7b0eb54..092f791e34f 100644 --- a/includes/class-wc-order-item.php +++ b/includes/class-wc-order-item.php @@ -116,7 +116,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { * @return int */ public function get_id() { - return absint( $this->_data['id'] ); + return $this->_data['id']; } /** @@ -124,7 +124,7 @@ class WC_Order_Item extends WC_Data implements ArrayAccess { * @return int */ public function get_order_id() { - return absint( $this->_data['order_id'] ); + return $this->_data['order_id']; } /** From 9da3f79f41148f5e97e2b4e58beb7ee6ab097b90 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 18 Aug 2016 13:22:13 -0300 Subject: [PATCH 72/81] Introduces the woocommerce_webhook_order_payload_filters filter --- includes/class-wc-webhook.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/includes/class-wc-webhook.php b/includes/class-wc-webhook.php index 2efd9e32a9d..39ce0b745da 100644 --- a/includes/class-wc-webhook.php +++ b/includes/class-wc-webhook.php @@ -269,7 +269,7 @@ class WC_Webhook { break; case 'order': - $payload = WC()->api->WC_API_Orders->get_order( $resource_id ); + $payload = WC()->api->WC_API_Orders->get_order( $resource_id, null, apply_filters( 'woocommerce_webhook_order_payload_filters', array() ) ); break; case 'product': From 03110e755f78e2467cff3a42ca4f14557e8290ee Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Thu, 18 Aug 2016 17:24:44 +0100 Subject: [PATCH 73/81] Unit tests --- .../api/class-wc-rest-orders-controller.php | 16 +- tests/unit-tests/api/orders.php | 427 +++++++++++++++++- tests/unit-tests/api/product-reviews.php | 6 +- .../{crud/orders.php => order/crud.php} | 0 4 files changed, 425 insertions(+), 24 deletions(-) rename tests/unit-tests/{crud/orders.php => order/crud.php} (100%) diff --git a/includes/api/class-wc-rest-orders-controller.php b/includes/api/class-wc-rest-orders-controller.php index 260ccf754d1..d87882f60d4 100644 --- a/includes/api/class-wc-rest-orders-controller.php +++ b/includes/api/class-wc-rest-orders-controller.php @@ -359,10 +359,12 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { case 'coupon_lines' : if ( is_array( $value ) ) { foreach ( $value as $item ) { - if ( $this->item_is_null( $item ) || ( isset( $item['quantity'] ) && 0 === $item['quantity'] ) ) { - $order->remove_item( $item['id'] ); - } else { - $this->set_item( $order, $key, $item ); + if ( is_array( $item ) ) { + if ( $this->item_is_null( $item ) || ( isset( $item['quantity'] ) && 0 === $item['quantity'] ) ) { + $order->remove_item( $item['id'] ); + } else { + $this->set_item( $order, $key, $item ); + } } } } @@ -439,7 +441,9 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } return $order->get_id(); - } catch ( Exception $e ) { + } catch ( WC_Data_Exception $e ) { + return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); + } catch ( WC_REST_Exception $e ) { return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); } } @@ -466,6 +470,8 @@ class WC_REST_Orders_Controller extends WC_REST_Posts_Controller { } return $order->get_id(); + } catch ( WC_Data_Exception $e ) { + return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); } catch ( WC_REST_Exception $e ) { return new WP_Error( $e->getErrorCode(), $e->getMessage(), array( 'status' => $e->getCode() ) ); } diff --git a/tests/unit-tests/api/orders.php b/tests/unit-tests/api/orders.php index 38ae4612f48..193dd9ebe29 100644 --- a/tests/unit-tests/api/orders.php +++ b/tests/unit-tests/api/orders.php @@ -1,28 +1,423 @@ api->WC_API_Orders; - - $variation_id = $orders_api->get_variation_id( $product, array( 'size' => 'small' ) ); - $this->assertSame( ( $product->id + 1 ), $variation_id ); - - $variation_id = $orders_api->get_variation_id( $product, array( 'size' => 'large' ) ); - $this->assertSame( ( $product->id + 2 ), $variation_id ); + $this->endpoint = new WC_REST_Orders_Controller(); + $this->user = $this->factory->user->create( array( + 'role' => 'administrator', + ) ); } + /** + * Test route registration. + * @since 2.7.0 + */ + public function test_register_routes() { + $routes = $this->server->get_routes(); + $this->assertArrayHasKey( '/wc/v1/orders', $routes ); + $this->assertArrayHasKey( '/wc/v1/orders/batch', $routes ); + $this->assertArrayHasKey( '/wc/v1/orders/(?P[\d]+)', $routes ); + } + + /** + * Cleanup. + */ + public function stoppit_and_tidyup() { + foreach ( $this->orders as $order ) { + wp_delete_post( $order->get_id(), true ); + } + $this->orders = array(); + } + + /** + * Test getting all orders. + * @since 2.7.0 + */ + public function test_get_items() { + wp_set_current_user( $this->user ); + + // Create 10 orders. + for ( $i = 0; $i < 10; $i++ ) { + $this->orders[] = WC_Helper_Order::create_order( $this->user ); + } + + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/orders' ) ); + $orders = $response->get_data(); + + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( 10, count( $orders ) ); + $this->stoppit_and_tidyup(); + } + + /** + * Tests to make sure orders cannot be viewed without valid permissions. + * + * @since 2.7.0 + */ + public function test_get_items_without_permission() { + wp_set_current_user( 0 ); + $this->orders[] = WC_Helper_Order::create_order(); + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/orders' ) ); + $this->assertEquals( 401, $response->get_status() ); + $this->stoppit_and_tidyup(); + } + + /** + * Tests getting a single order. + * @since 2.7.0 + */ + public function test_get_item() { + wp_set_current_user( $this->user ); + $order = WC_Helper_Order::create_order(); + $this->orders[] = $order; + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/orders/' . $order->get_id() ) ); + $data = $response->get_data(); + + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( $order->get_id(), $data['id'] ); + $this->stoppit_and_tidyup(); + } + + /** + * Tests getting a single order without the correct permissions. + * @since 2.7.0 + */ + public function test_get_item_without_permission() { + wp_set_current_user( 0 ); + $order = WC_Helper_Order::create_order(); + $this->orders[] = $order; + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/orders/' . $order->get_id() ) ); + $this->assertEquals( 401, $response->get_status() ); + $this->stoppit_and_tidyup(); + } + + /** + * Tests getting an order with an invalid ID. + * @since 2.7.0 + */ + public function test_get_item_invalid_id() { + wp_set_current_user( $this->user ); + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/orders/99999999' ) ); + $this->assertEquals( 404, $response->get_status() ); + } + + /** + * Tests creating an order. + * @since 2.7.0 + */ + public function test_create_order() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + $request = new WP_REST_Request( 'POST', '/wc/v1/orders' ); + $request->set_body_params( array( + "payment_method" => "bacs", + "payment_method_title" => "Direct Bank Transfer", + "set_paid" => true, + "billing" => array( + "first_name" => "John", + "last_name" => "Doe", + "address_1" => "969 Market", + "address_2" => "", + "city" => "San Francisco", + "state" => "CA", + "postcode" => "94103", + "country" => "US", + "email" => "john.doe@example.com", + "phone" => "(555) 555-5555" + ), + "shipping" => array( + "first_name" => "John", + "last_name" => "Doe", + "address_1" => "969 Market", + "address_2" => "", + "city" => "San Francisco", + "state" => "CA", + "postcode" => "94103", + "country" => "US", + ), + "line_items" => array( + array( + "product_id" => $product->get_id(), + "quantity" => 2 + ), + ), + "shipping_lines" => array( + array( + "method_id" => "flat_rate", + "method_title" => "Flat Rate", + "total" => 10 + ), + ), + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + $order = wc_get_order( $data['id'] ); + $this->assertEquals( 201, $response->get_status() ); + $this->assertEquals( $order->get_payment_method(), $data['payment_method'] ); + $this->assertEquals( $order->get_payment_method_title(), $data['payment_method_title'] ); + $this->assertEquals( $order->get_billing_first_name(), $data['billing']['first_name'] ); + $this->assertEquals( $order->get_billing_last_name(), $data['billing']['last_name'] ); + $this->assertEquals( '', $data['billing']['company'] ); + $this->assertEquals( $order->get_billing_address_1(), $data['billing']['address_1'] ); + $this->assertEquals( $order->get_billing_address_2(), $data['billing']['address_2'] ); + $this->assertEquals( $order->get_billing_city(), $data['billing']['city'] ); + $this->assertEquals( $order->get_billing_state(), $data['billing']['state'] ); + $this->assertEquals( $order->get_billing_postcode(), $data['billing']['postcode'] ); + $this->assertEquals( $order->get_billing_country(), $data['billing']['country'] ); + $this->assertEquals( $order->get_billing_email(), $data['billing']['email'] ); + $this->assertEquals( $order->get_billing_phone(), $data['billing']['phone'] ); + $this->assertEquals( $order->get_shipping_first_name(), $data['shipping']['first_name'] ); + $this->assertEquals( $order->get_shipping_last_name(), $data['shipping']['last_name'] ); + $this->assertEquals( '', $data['shipping']['company'] ); + $this->assertEquals( $order->get_shipping_address_1(), $data['shipping']['address_1'] ); + $this->assertEquals( $order->get_shipping_address_2(), $data['shipping']['address_2'] ); + $this->assertEquals( $order->get_shipping_city(), $data['shipping']['city'] ); + $this->assertEquals( $order->get_shipping_state(), $data['shipping']['state'] ); + $this->assertEquals( $order->get_shipping_postcode(), $data['shipping']['postcode'] ); + $this->assertEquals( $order->get_shipping_country(), $data['shipping']['country'] ); + $this->assertEquals( 1, count( $data['line_items'] ) ); + $this->assertEquals( 1, count( $data['shipping_lines'] ) ); + + wp_delete_post( $product->get_id(), true ); + wp_delete_post( $data['id'], true ); + } + + /** + * Tests creating an order without required fields. + * @since 2.7.0 + */ + public function test_create_order_invalid_fields() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + + // non-existant customer + $request = new WP_REST_Request( 'POST', '/wc/v1/orders' ); + $request->set_body_params( array( + "payment_method" => "bacs", + "payment_method_title" => "Direct Bank Transfer", + "set_paid" => true, + "customer_id" => 99999, + "billing" => array( + "first_name" => "John", + "last_name" => "Doe", + "address_1" => "969 Market", + "address_2" => "", + "city" => "San Francisco", + "state" => "CA", + "postcode" => "94103", + "country" => "US", + "email" => "john.doe@example.com", + "phone" => "(555) 555-5555" + ), + "shipping" => array( + "first_name" => "John", + "last_name" => "Doe", + "address_1" => "969 Market", + "address_2" => "", + "city" => "San Francisco", + "state" => "CA", + "postcode" => "94103", + "country" => "US", + ), + "line_items" => array( + array( + "product_id" => $product->get_id(), + "quantity" => 2 + ), + ), + "shipping_lines" => array( + array( + "method_id" => "flat_rate", + "method_title" => "Flat Rate", + "total" => 10 + ), + ), + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + $this->assertEquals( 400, $response->get_status() ); + wp_delete_post( $product->get_id(), true ); + } + + /** + * Tests updating an order. + * @since 2.7.0 + */ + public function test_update_order() { + wp_set_current_user( $this->user ); + $order = WC_Helper_Order::create_order(); + $request = new WP_REST_Request( 'POST', '/wc/v1/orders/' . $order->get_id() ); + $request->set_body_params( array( + "payment_method" => "test-update", + "billing" => array( + "first_name" => "Fish", + "last_name" => "Face", + ), + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( "test-update", $data['payment_method'] ); + $this->assertEquals( 'Fish', $data['billing']['first_name'] ); + $this->assertEquals( 'Face', $data['billing']['last_name'] ); + + wp_delete_post( $order->get_id(), true ); + } + + /** + * Tests updating an order without the correct permissions. + * @since 2.7.0 + */ + public function test_update_order_without_permission() { + wp_set_current_user( 0 ); + $order = WC_Helper_Order::create_order(); + $request = new WP_REST_Request( 'POST', '/wc/v1/orders/' . $order->get_id() ); + $request->set_body_params( array( + "payment_method" => "test-update", + "billing" => array( + "first_name" => "Fish", + "last_name" => "Face", + ), + ) ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 401, $response->get_status() ); + } + + /** + * Tests that updating an order with an invalid id fails. + * @since 2.7.0 + */ + public function test_update_order_invalid_id() { + wp_set_current_user( $this->user ); + $request = new WP_REST_Request( 'POST', '/wc/v1/orders/999999' ); + $request->set_body_params( array( + "payment_method" => "test-update", + "billing" => array( + "first_name" => "Fish", + "last_name" => "Face", + ), + ) ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 400, $response->get_status() ); + } + + /** + * Test deleting an order. + * @since 2.7.0 + */ + public function test_delete_order() { + wp_set_current_user( $this->user ); + $order = WC_Helper_Order::create_order(); + $request = new WP_REST_Request( 'DELETE', '/wc/v1/orders/' . $order->get_id() ); + $request->set_param( 'force', true ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( null, get_post( $order->get_id() ) ); + } + + /** + * Test deleting an order without permission/creds. + * @since 2.7.0 + */ + public function test_delete_order_without_permission() { + wp_set_current_user( 0 ); + $order = WC_Helper_Order::create_order(); + $request = new WP_REST_Request( 'DELETE', '/wc/v1/orders/' . $order->get_id() ); + $request->set_param( 'force', true ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 401, $response->get_status() ); + wp_delete_post( $order->get_id(), true ); + } + + /** + * Test deleting an order with an invalid id. + * + * @since 2.7.0 + */ + public function test_delete_order_invalid_id() { + wp_set_current_user( $this->user ); + $request = new WP_REST_Request( 'DELETE', '/wc/v1/orders/9999999' ); + $request->set_param( 'force', true ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 404, $response->get_status() ); + } + + /** + * Test batch managing product reviews. + */ + public function test_orders_batch() { + wp_set_current_user( $this->user ); + + $order1 = WC_Helper_Order::create_order(); + $order2 = WC_Helper_Order::create_order(); + $order3 = WC_Helper_Order::create_order(); + + $request = new WP_REST_Request( 'POST', '/wc/v1/orders/batch' ); + $request->set_body_params( array( + 'update' => array( + array( + 'id' => $order1->get_id(), + 'payment_method' => 'updated', + ), + ), + 'delete' => array( + array( + 'id' => $order2->get_id(), + ), + array( + 'id' => $order3->get_id(), + ), + ), + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + + $this->assertEquals( 'updated', $data['update'][0]['payment_method'] ); + $this->assertEquals( $order2->get_id(), $data['delete'][0]['id'] ); + $this->assertEquals( $order3->get_id(), $data['delete'][1]['id'] ); + + $request = new WP_REST_Request( 'GET', '/wc/v1/orders' ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + $this->assertEquals( 3, count( $data ) ); + + wp_delete_post( $order1->get_id(), true ); + wp_delete_post( $order2->get_id(), true ); + wp_delete_post( $order3->get_id(), true ); + } + + /** + * Test the order schema. + * @since 2.7.0 + */ + public function test_order_schema() { + wp_set_current_user( $this->user ); + $order = WC_Helper_Order::create_order(); + $request = new WP_REST_Request( 'OPTIONS', '/wc/v1/orders/' . $order->get_id() ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + $properties = $data['schema']['properties']; + + $this->assertEquals( 38, count( $properties ) ); + $this->assertArrayHasKey( 'id', $properties ); + wp_delete_post( $order->get_id(), true ); + } } diff --git a/tests/unit-tests/api/product-reviews.php b/tests/unit-tests/api/product-reviews.php index 88aa0e30a2e..90e0cb5292c 100644 --- a/tests/unit-tests/api/product-reviews.php +++ b/tests/unit-tests/api/product-reviews.php @@ -40,7 +40,7 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $product = WC_Helper_Product::create_simple_product(); // Create 10 products reviews for the product for ( $i = 0; $i < 10; $i++ ) { - WC_Helper_Product::create_product_review( $product->id ); + $review_id = WC_Helper_Product::create_product_review( $product->id ); } $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews' ) ); @@ -49,7 +49,7 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $this->assertEquals( 200, $response->get_status() ); $this->assertEquals( 10, count( $product_reviews ) ); $this->assertContains( array( - 'id' => 2, + 'id' => $review_id, 'date_created' => '2016-01-01T11:11:11', 'review' => 'Review content here', 'rating' => 0, @@ -59,7 +59,7 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { '_links' => array( 'self' => array( array( - 'href' => rest_url( '/wc/v1/products/' . $product->id . '/reviews/2' ), + 'href' => rest_url( '/wc/v1/products/' . $product->id . '/reviews/' . $review_id ), ), ), 'collection' => array( diff --git a/tests/unit-tests/crud/orders.php b/tests/unit-tests/order/crud.php similarity index 100% rename from tests/unit-tests/crud/orders.php rename to tests/unit-tests/order/crud.php From acd8a70a3060509455808079d78673cf3d0c0d29 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Thu, 18 Aug 2016 15:20:52 -0300 Subject: [PATCH 74/81] [2.6] [REST API] Allow save refund reason, closes #11718 --- includes/api/class-wc-rest-order-refunds-controller.php | 1 + 1 file changed, 1 insertion(+) diff --git a/includes/api/class-wc-rest-order-refunds-controller.php b/includes/api/class-wc-rest-order-refunds-controller.php index 42e76a7664b..c8055299254 100644 --- a/includes/api/class-wc-rest-order-refunds-controller.php +++ b/includes/api/class-wc-rest-order-refunds-controller.php @@ -281,6 +281,7 @@ class WC_REST_Order_Refunds_Controller extends WC_REST_Posts_Controller { $data = array( 'order_id' => $order_data->ID, 'amount' => $request['amount'], + 'reason' => empty( $request['reason'] ) ? null : $request['reason'], 'line_items' => $request['line_items'], ); From 5da47e532f789bb219b0f958d8089d0770949552 Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 19 Aug 2016 01:51:25 -0300 Subject: [PATCH 75/81] Fixed unit tests and standards --- tests/unit-tests/api/orders.php | 158 ++++++++++++++++---------------- 1 file changed, 77 insertions(+), 81 deletions(-) diff --git a/tests/unit-tests/api/orders.php b/tests/unit-tests/api/orders.php index 193dd9ebe29..6120e26cd57 100644 --- a/tests/unit-tests/api/orders.php +++ b/tests/unit-tests/api/orders.php @@ -126,42 +126,42 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { $product = WC_Helper_Product::create_simple_product(); $request = new WP_REST_Request( 'POST', '/wc/v1/orders' ); $request->set_body_params( array( - "payment_method" => "bacs", - "payment_method_title" => "Direct Bank Transfer", - "set_paid" => true, - "billing" => array( - "first_name" => "John", - "last_name" => "Doe", - "address_1" => "969 Market", - "address_2" => "", - "city" => "San Francisco", - "state" => "CA", - "postcode" => "94103", - "country" => "US", - "email" => "john.doe@example.com", - "phone" => "(555) 555-5555" + 'payment_method' => 'bacs', + 'payment_method_title' => 'Direct Bank Transfer', + 'set_paid' => true, + 'billing' => array( + 'first_name' => 'John', + 'last_name' => 'Doe', + 'address_1' => '969 Market', + 'address_2' => '', + 'city' => 'San Francisco', + 'state' => 'CA', + 'postcode' => '94103', + 'country' => 'US', + 'email' => 'john.doe@example.com', + 'phone' => '(555) 555-5555' ), - "shipping" => array( - "first_name" => "John", - "last_name" => "Doe", - "address_1" => "969 Market", - "address_2" => "", - "city" => "San Francisco", - "state" => "CA", - "postcode" => "94103", - "country" => "US", + 'shipping' => array( + 'first_name' => 'John', + 'last_name' => 'Doe', + 'address_1' => '969 Market', + 'address_2' => '', + 'city' => 'San Francisco', + 'state' => 'CA', + 'postcode' => '94103', + 'country' => 'US', ), - "line_items" => array( + 'line_items' => array( array( - "product_id" => $product->get_id(), - "quantity" => 2 + 'product_id' => $product->get_id(), + 'quantity' => 2 ), ), - "shipping_lines" => array( + 'shipping_lines' => array( array( - "method_id" => "flat_rate", - "method_title" => "Flat Rate", - "total" => 10 + 'method_id' => 'flat_rate', + 'method_title' => 'Flat Rate', + 'total' => 10 ), ), ) ); @@ -209,43 +209,43 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { // non-existant customer $request = new WP_REST_Request( 'POST', '/wc/v1/orders' ); $request->set_body_params( array( - "payment_method" => "bacs", - "payment_method_title" => "Direct Bank Transfer", - "set_paid" => true, - "customer_id" => 99999, - "billing" => array( - "first_name" => "John", - "last_name" => "Doe", - "address_1" => "969 Market", - "address_2" => "", - "city" => "San Francisco", - "state" => "CA", - "postcode" => "94103", - "country" => "US", - "email" => "john.doe@example.com", - "phone" => "(555) 555-5555" + 'payment_method' => 'bacs', + 'payment_method_title' => 'Direct Bank Transfer', + 'set_paid' => true, + 'customer_id' => 99999, + 'billing' => array( + 'first_name' => 'John', + 'last_name' => 'Doe', + 'address_1' => '969 Market', + 'address_2' => '', + 'city' => 'San Francisco', + 'state' => 'CA', + 'postcode' => '94103', + 'country' => 'US', + 'email' => 'john.doe@example.com', + 'phone' => '(555) 555-5555' ), - "shipping" => array( - "first_name" => "John", - "last_name" => "Doe", - "address_1" => "969 Market", - "address_2" => "", - "city" => "San Francisco", - "state" => "CA", - "postcode" => "94103", - "country" => "US", + 'shipping' => array( + 'first_name' => 'John', + 'last_name' => 'Doe', + 'address_1' => '969 Market', + 'address_2' => '', + 'city' => 'San Francisco', + 'state' => 'CA', + 'postcode' => '94103', + 'country' => 'US', ), - "line_items" => array( + 'line_items' => array( array( - "product_id" => $product->get_id(), - "quantity" => 2 + 'product_id' => $product->get_id(), + 'quantity' => 2 ), ), - "shipping_lines" => array( + 'shipping_lines' => array( array( - "method_id" => "flat_rate", - "method_title" => "Flat Rate", - "total" => 10 + 'method_id' => 'flat_rate', + 'method_title' => 'Flat Rate', + 'total' => 10 ), ), ) ); @@ -264,17 +264,17 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { $order = WC_Helper_Order::create_order(); $request = new WP_REST_Request( 'POST', '/wc/v1/orders/' . $order->get_id() ); $request->set_body_params( array( - "payment_method" => "test-update", - "billing" => array( - "first_name" => "Fish", - "last_name" => "Face", + 'payment_method' => 'test-update', + 'billing' => array( + 'first_name' => 'Fish', + 'last_name' => 'Face', ), ) ); $response = $this->server->dispatch( $request ); $data = $response->get_data(); $this->assertEquals( 200, $response->get_status() ); - $this->assertEquals( "test-update", $data['payment_method'] ); + $this->assertEquals( 'test-update', $data['payment_method'] ); $this->assertEquals( 'Fish', $data['billing']['first_name'] ); $this->assertEquals( 'Face', $data['billing']['last_name'] ); @@ -290,10 +290,10 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { $order = WC_Helper_Order::create_order(); $request = new WP_REST_Request( 'POST', '/wc/v1/orders/' . $order->get_id() ); $request->set_body_params( array( - "payment_method" => "test-update", - "billing" => array( - "first_name" => "Fish", - "last_name" => "Face", + 'payment_method' => 'test-update', + 'billing' => array( + 'first_name' => 'Fish', + 'last_name' => 'Face', ), ) ); $response = $this->server->dispatch( $request ); @@ -308,10 +308,10 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { wp_set_current_user( $this->user ); $request = new WP_REST_Request( 'POST', '/wc/v1/orders/999999' ); $request->set_body_params( array( - "payment_method" => "test-update", - "billing" => array( - "first_name" => "Fish", - "last_name" => "Face", + 'payment_method' => 'test-update', + 'billing' => array( + 'first_name' => 'Fish', + 'last_name' => 'Face', ), ) ); $response = $this->server->dispatch( $request ); @@ -378,12 +378,8 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { ), ), 'delete' => array( - array( - 'id' => $order2->get_id(), - ), - array( - 'id' => $order3->get_id(), - ), + $order2->get_id(), + $order3->get_id(), ), ) ); $response = $this->server->dispatch( $request ); @@ -396,7 +392,7 @@ class WC_Tests_API_Orders extends WC_REST_Unit_Test_Case { $request = new WP_REST_Request( 'GET', '/wc/v1/orders' ); $response = $this->server->dispatch( $request ); $data = $response->get_data(); - $this->assertEquals( 3, count( $data ) ); + $this->assertEquals( 1, count( $data ) ); wp_delete_post( $order1->get_id(), true ); wp_delete_post( $order2->get_id(), true ); From 33f155b971a49043fa5e8a39bb8be0c8eaeb0cfd Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Fri, 19 Aug 2016 01:53:50 -0300 Subject: [PATCH 76/81] Fixed indentation --- tests/unit-tests/api/product-reviews.php | 624 +++++++++++------------ 1 file changed, 312 insertions(+), 312 deletions(-) diff --git a/tests/unit-tests/api/product-reviews.php b/tests/unit-tests/api/product-reviews.php index 88aa0e30a2e..3f949fae970 100644 --- a/tests/unit-tests/api/product-reviews.php +++ b/tests/unit-tests/api/product-reviews.php @@ -14,15 +14,15 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { public function setUp() { parent::setUp(); $this->endpoint = new WC_REST_Product_Reviews_Controller(); - $this->user = $this->factory->user->create( array( - 'role' => 'administrator', - ) ); + $this->user = $this->factory->user->create( array( + 'role' => 'administrator', + ) ); } /** * Test route registration. - * - * @since 2.7.0 + * + * @since 2.7.0 */ public function test_register_routes() { $routes = $this->server->get_routes(); @@ -30,311 +30,311 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $this->assertArrayHasKey( '/wc/v1/products/(?P[\d]+)/reviews/(?P[\d]+)', $routes ); } - /** - * Test getting all product reviews. - * - * @since 2.7.0 - */ - public function test_get_product_reviews() { - wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - // Create 10 products reviews for the product - for ( $i = 0; $i < 10; $i++ ) { - WC_Helper_Product::create_product_review( $product->id ); - } + /** + * Test getting all product reviews. + * + * @since 2.7.0 + */ + public function test_get_product_reviews() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + // Create 10 products reviews for the product + for ( $i = 0; $i < 10; $i++ ) { + WC_Helper_Product::create_product_review( $product->id ); + } - $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews' ) ); - $product_reviews = $response->get_data(); + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews' ) ); + $product_reviews = $response->get_data(); - $this->assertEquals( 200, $response->get_status() ); - $this->assertEquals( 10, count( $product_reviews ) ); - $this->assertContains( array( - 'id' => 2, - 'date_created' => '2016-01-01T11:11:11', - 'review' => 'Review content here', - 'rating' => 0, - 'name' => 'admin', - 'email' => 'woo@woo.local', - 'verified' => false, - '_links' => array( - 'self' => array( - array( - 'href' => rest_url( '/wc/v1/products/' . $product->id . '/reviews/2' ), - ), - ), - 'collection' => array( - array( - 'href' => rest_url( '/wc/v1/products/' . $product->id . '/reviews' ), - ), - ), - 'up' => array( - array( - 'href' => rest_url( '/wc/v1/products/' . $product->id ), - ), - ), - ), - ), $product_reviews ); - } + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( 10, count( $product_reviews ) ); + $this->assertContains( array( + 'id' => 2, + 'date_created' => '2016-01-01T11:11:11', + 'review' => 'Review content here', + 'rating' => 0, + 'name' => 'admin', + 'email' => 'woo@woo.local', + 'verified' => false, + '_links' => array( + 'self' => array( + array( + 'href' => rest_url( '/wc/v1/products/' . $product->id . '/reviews/2' ), + ), + ), + 'collection' => array( + array( + 'href' => rest_url( '/wc/v1/products/' . $product->id . '/reviews' ), + ), + ), + 'up' => array( + array( + 'href' => rest_url( '/wc/v1/products/' . $product->id ), + ), + ), + ), + ), $product_reviews ); + } - /** - * Tests to make sure product reviews cannot be viewed without valid permissions. - * - * @since 2.7.0 - */ - public function test_get_product_reviews_without_permission() { - wp_set_current_user( 0 ); - $product = WC_Helper_Product::create_simple_product(); + /** + * Tests to make sure product reviews cannot be viewed without valid permissions. + * + * @since 2.7.0 + */ + public function test_get_product_reviews_without_permission() { + wp_set_current_user( 0 ); + $product = WC_Helper_Product::create_simple_product(); $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews' ) ); $this->assertEquals( 401, $response->get_status() ); - } + } - /** - * Tests to make sure an error is returned when an invalid product is loaded. - * - * @since 2.7.0 - */ - public function test_get_product_reviews_invalid_product() { - wp_set_current_user( $this->user ); - $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/0/reviews' ) ); - $this->assertEquals( 404, $response->get_status() ); - } + /** + * Tests to make sure an error is returned when an invalid product is loaded. + * + * @since 2.7.0 + */ + public function test_get_product_reviews_invalid_product() { + wp_set_current_user( $this->user ); + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/0/reviews' ) ); + $this->assertEquals( 404, $response->get_status() ); + } - /** - * Tests getting a single product review. - * - * @since 2.7.0 - */ - public function test_get_product_review() { - wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - $product_review_id = WC_Helper_Product::create_product_review( $product->id ); + /** + * Tests getting a single product review. + * + * @since 2.7.0 + */ + public function test_get_product_review() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + $product_review_id = WC_Helper_Product::create_product_review( $product->id ); - $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ) ); - $data = $response->get_data(); + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ) ); + $data = $response->get_data(); - $this->assertEquals( 200, $response->get_status() ); - $this->assertEquals( array( - 'id' => $product_review_id , - 'date_created' => '2016-01-01T11:11:11', - 'review' => 'Review content here', - 'rating' => 0, - 'name' => 'admin', - 'email' => 'woo@woo.local', - 'verified' => false, - ), $data ); - } + $this->assertEquals( 200, $response->get_status() ); + $this->assertEquals( array( + 'id' => $product_review_id , + 'date_created' => '2016-01-01T11:11:11', + 'review' => 'Review content here', + 'rating' => 0, + 'name' => 'admin', + 'email' => 'woo@woo.local', + 'verified' => false, + ), $data ); + } - /** - * Tests getting a single product review without the correct permissions. - * - * @since 2.7.0 - */ - public function test_get_product_review_without_permission() { - wp_set_current_user( 0 ); - $product = WC_Helper_Product::create_simple_product(); - $product_review_id = WC_Helper_Product::create_product_review( $product->id ); + /** + * Tests getting a single product review without the correct permissions. + * + * @since 2.7.0 + */ + public function test_get_product_review_without_permission() { + wp_set_current_user( 0 ); + $product = WC_Helper_Product::create_simple_product(); + $product_review_id = WC_Helper_Product::create_product_review( $product->id ); $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ) ); $this->assertEquals( 401, $response->get_status() ); - } + } - /** - * Tests getting a product review with an invalid ID. - * - * @since 2.7.0 - */ - public function test_get_product_review_invalid_id() { - wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews/0' ) ); - $this->assertEquals( 404, $response->get_status() ); - } - - /** - * Tests creating a product review. - * - * @since 2.7.0 - */ - public function test_create_product_review() { - wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - $request = new WP_REST_Request( 'POST', '/wc/v1/products/' . $product->id . '/reviews' ); - $request->set_body_params( array( - 'review' => 'Hello world.', - 'name' => 'Admin', - 'email' => 'woo@woo.local', - 'rating' => '5', - ) ); - $response = $this->server->dispatch( $request ); - $data = $response->get_data(); - - $this->assertEquals( 201, $response->get_status() ); - $this->assertEquals( array( - 'id' => $data['id'], - 'date_created' => $data['date_created'], - 'review' => 'Hello world.', - 'rating' => 5, - 'name' => 'Admin', - 'email' => 'woo@woo.local', - 'verified' => false, - ), $data ); - } - - /** - * Tests creating a product review without required fields. - * - * @since 2.7.0 - */ - public function test_create_product_review_invalid_fields() { - wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - - // missing review - $request = new WP_REST_Request( 'POST', '/wc/v1/products/' . $product->id . '/reviews' ); - $request->set_body_params( array( - 'name' => 'Admin', - 'email' => 'woo@woo.local', - ) ); - $response = $this->server->dispatch( $request ); - $data = $response->get_data(); - - $this->assertEquals( 400, $response->get_status() ); - - // missing name - $request = new WP_REST_Request( 'POST', '/wc/v1/products/' . $product->id . '/reviews' ); - $request->set_body_params( array( - 'review' => 'Hello world.', - 'email' => 'woo@woo.local', - ) ); - $response = $this->server->dispatch( $request ); - $data = $response->get_data(); - - $this->assertEquals( 400, $response->get_status() ); - - // missing email - $request = new WP_REST_Request( 'POST', '/wc/v1/products/' . $product->id . '/reviews' ); - $request->set_body_params( array( - 'review' => 'Hello world.', - 'name' => 'Admin', - ) ); - $response = $this->server->dispatch( $request ); - $data = $response->get_data(); - - $this->assertEquals( 400, $response->get_status() ); - } - - /** - * Tests updating a product review. - * - * @since 2.7.0 - */ - public function test_update_product_review() { - wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - $product_review_id = WC_Helper_Product::create_product_review( $product->id ); - - $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ) ); - $data = $response->get_data(); - $this->assertEquals( 'Review content here', $data['review'] ); - $this->assertEquals( 'admin', $data['name'] ); - $this->assertEquals( 'woo@woo.local', $data['email'] ); - $this->assertEquals( 0, $data['rating'] ); - - $request = new WP_REST_Request( 'PUT', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ); - $request->set_body_params( array( - 'review' => 'Hello world - updated.', - 'name' => 'Justin', - 'email' => 'woo2@woo.local', - 'rating' => 3, - ) ); - $response = $this->server->dispatch( $request ); - $data = $response->get_data(); - $this->assertEquals( 'Hello world - updated.', $data['review'] ); - $this->assertEquals( 'Justin', $data['name'] ); - $this->assertEquals( 'woo2@woo.local', $data['email'] ); - $this->assertEquals( 3, $data['rating'] ); - } - - /** - * Tests updating a product review without the correct permissions. - * - * @since 2.7.0 - */ - public function test_update_product_review_without_permission() { - wp_set_current_user( 0 ); - $product = WC_Helper_Product::create_simple_product(); - $product_review_id = WC_Helper_Product::create_product_review( $product->id ); - - $request = new WP_REST_Request( 'PUT', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ); - $request->set_body_params( array( - 'review' => 'Hello world.', - 'name' => 'Admin', - 'email' => 'woo@woo.dev', - ) ); - $response = $this->server->dispatch( $request ); - $data = $response->get_data(); - - $this->assertEquals( 401, $response->get_status() ); - } - - /** - * Tests that updating a product review with an invalid id fails. - * - * @since 2.7.0 - */ - public function test_update_product_review_invalid_id() { - wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - - $request = new WP_REST_Request( 'PUT', '/wc/v1/products/' . $product->id . '/reviews/0' ); - $request->set_body_params( array( - 'review' => 'Hello world.', - 'name' => 'Admin', - 'email' => 'woo@woo.dev', - ) ); - $response = $this->server->dispatch( $request ); - $data = $response->get_data(); - - $this->assertEquals( 404, $response->get_status() ); - } - - /** - * Test deleting a product review. - * - * @since 2.7.0 - */ - public function test_delete_product_review() { + /** + * Tests getting a product review with an invalid ID. + * + * @since 2.7.0 + */ + public function test_get_product_review_invalid_id() { wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - $product_review_id = WC_Helper_Product::create_product_review( $product->id ); + $product = WC_Helper_Product::create_simple_product(); + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews/0' ) ); + $this->assertEquals( 404, $response->get_status() ); + } - $request = new WP_REST_Request( 'DELETE', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ); - $request->set_param( 'force', true ); - $response = $this->server->dispatch( $request ); - $this->assertEquals( 200, $response->get_status() ); - } + /** + * Tests creating a product review. + * + * @since 2.7.0 + */ + public function test_create_product_review() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + $request = new WP_REST_Request( 'POST', '/wc/v1/products/' . $product->id . '/reviews' ); + $request->set_body_params( array( + 'review' => 'Hello world.', + 'name' => 'Admin', + 'email' => 'woo@woo.local', + 'rating' => '5', + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); - /** - * Test deleting a product review without permission/creds. - * - * @since 2.7.0 - */ - public function test_delete_product_without_permission() { + $this->assertEquals( 201, $response->get_status() ); + $this->assertEquals( array( + 'id' => $data['id'], + 'date_created' => $data['date_created'], + 'review' => 'Hello world.', + 'rating' => 5, + 'name' => 'Admin', + 'email' => 'woo@woo.local', + 'verified' => false, + ), $data ); + } + + /** + * Tests creating a product review without required fields. + * + * @since 2.7.0 + */ + public function test_create_product_review_invalid_fields() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + + // missing review + $request = new WP_REST_Request( 'POST', '/wc/v1/products/' . $product->id . '/reviews' ); + $request->set_body_params( array( + 'name' => 'Admin', + 'email' => 'woo@woo.local', + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + + $this->assertEquals( 400, $response->get_status() ); + + // missing name + $request = new WP_REST_Request( 'POST', '/wc/v1/products/' . $product->id . '/reviews' ); + $request->set_body_params( array( + 'review' => 'Hello world.', + 'email' => 'woo@woo.local', + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + + $this->assertEquals( 400, $response->get_status() ); + + // missing email + $request = new WP_REST_Request( 'POST', '/wc/v1/products/' . $product->id . '/reviews' ); + $request->set_body_params( array( + 'review' => 'Hello world.', + 'name' => 'Admin', + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + + $this->assertEquals( 400, $response->get_status() ); + } + + /** + * Tests updating a product review. + * + * @since 2.7.0 + */ + public function test_update_product_review() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + $product_review_id = WC_Helper_Product::create_product_review( $product->id ); + + $response = $this->server->dispatch( new WP_REST_Request( 'GET', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ) ); + $data = $response->get_data(); + $this->assertEquals( 'Review content here', $data['review'] ); + $this->assertEquals( 'admin', $data['name'] ); + $this->assertEquals( 'woo@woo.local', $data['email'] ); + $this->assertEquals( 0, $data['rating'] ); + + $request = new WP_REST_Request( 'PUT', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ); + $request->set_body_params( array( + 'review' => 'Hello world - updated.', + 'name' => 'Justin', + 'email' => 'woo2@woo.local', + 'rating' => 3, + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + $this->assertEquals( 'Hello world - updated.', $data['review'] ); + $this->assertEquals( 'Justin', $data['name'] ); + $this->assertEquals( 'woo2@woo.local', $data['email'] ); + $this->assertEquals( 3, $data['rating'] ); + } + + /** + * Tests updating a product review without the correct permissions. + * + * @since 2.7.0 + */ + public function test_update_product_review_without_permission() { wp_set_current_user( 0 ); - $product = WC_Helper_Product::create_simple_product(); - $product_review_id = WC_Helper_Product::create_product_review( $product->id ); + $product = WC_Helper_Product::create_simple_product(); + $product_review_id = WC_Helper_Product::create_product_review( $product->id ); - $request = new WP_REST_Request( 'DELETE', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ); - $response = $this->server->dispatch( $request ); + $request = new WP_REST_Request( 'PUT', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ); + $request->set_body_params( array( + 'review' => 'Hello world.', + 'name' => 'Admin', + 'email' => 'woo@woo.dev', + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); - $this->assertEquals( 401, $response->get_status() ); - } + $this->assertEquals( 401, $response->get_status() ); + } - /** - * Test deleting a product review with an invalid id. - * - * @since 2.7.0 - */ - public function test_delete_product_review_invalid_id() { + /** + * Tests that updating a product review with an invalid id fails. + * + * @since 2.7.0 + */ + public function test_update_product_review_invalid_id() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + + $request = new WP_REST_Request( 'PUT', '/wc/v1/products/' . $product->id . '/reviews/0' ); + $request->set_body_params( array( + 'review' => 'Hello world.', + 'name' => 'Admin', + 'email' => 'woo@woo.dev', + ) ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + + $this->assertEquals( 404, $response->get_status() ); + } + + /** + * Test deleting a product review. + * + * @since 2.7.0 + */ + public function test_delete_product_review() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + $product_review_id = WC_Helper_Product::create_product_review( $product->id ); + + $request = new WP_REST_Request( 'DELETE', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ); + $request->set_param( 'force', true ); + $response = $this->server->dispatch( $request ); + $this->assertEquals( 200, $response->get_status() ); + } + + /** + * Test deleting a product review without permission/creds. + * + * @since 2.7.0 + */ + public function test_delete_product_without_permission() { + wp_set_current_user( 0 ); + $product = WC_Helper_Product::create_simple_product(); + $product_review_id = WC_Helper_Product::create_product_review( $product->id ); + + $request = new WP_REST_Request( 'DELETE', '/wc/v1/products/' . $product->id . '/reviews/' . $product_review_id ); + $response = $this->server->dispatch( $request ); + + $this->assertEquals( 401, $response->get_status() ); + } + + /** + * Test deleting a product review with an invalid id. + * + * @since 2.7.0 + */ + public function test_delete_product_review_invalid_id() { wp_set_current_user( $this->user ); $product = WC_Helper_Product::create_simple_product(); $product_review_id = WC_Helper_Product::create_product_review( $product->id ); @@ -344,7 +344,7 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $response = $this->server->dispatch( $request ); $this->assertEquals( 404, $response->get_status() ); - } + } /** * Test batch managing product reviews. @@ -397,27 +397,27 @@ class Product_Reviews extends WC_REST_Unit_Test_Case { $this->assertEquals( 3, count( $data ) ); } - /** - * Test the product review schema. - * - * @since 2.7.0 - */ - public function test_product_review_schema() { - wp_set_current_user( $this->user ); - $product = WC_Helper_Product::create_simple_product(); - $request = new WP_REST_Request( 'OPTIONS', '/wc/v1/products/' . $product->id . '/reviews' ); - $response = $this->server->dispatch( $request ); - $data = $response->get_data(); - $properties = $data['schema']['properties']; + /** + * Test the product review schema. + * + * @since 2.7.0 + */ + public function test_product_review_schema() { + wp_set_current_user( $this->user ); + $product = WC_Helper_Product::create_simple_product(); + $request = new WP_REST_Request( 'OPTIONS', '/wc/v1/products/' . $product->id . '/reviews' ); + $response = $this->server->dispatch( $request ); + $data = $response->get_data(); + $properties = $data['schema']['properties']; - $this->assertEquals( 7, count( $properties ) ); - $this->assertArrayHasKey( 'id', $properties ); - $this->assertArrayHasKey( 'review', $properties ); - $this->assertArrayHasKey( 'date_created', $properties ); - $this->assertArrayHasKey( 'rating', $properties ); - $this->assertArrayHasKey( 'name', $properties ); - $this->assertArrayHasKey( 'email', $properties ); - $this->assertArrayHasKey( 'verified', $properties ); - } + $this->assertEquals( 7, count( $properties ) ); + $this->assertArrayHasKey( 'id', $properties ); + $this->assertArrayHasKey( 'review', $properties ); + $this->assertArrayHasKey( 'date_created', $properties ); + $this->assertArrayHasKey( 'rating', $properties ); + $this->assertArrayHasKey( 'name', $properties ); + $this->assertArrayHasKey( 'email', $properties ); + $this->assertArrayHasKey( 'verified', $properties ); + } } From 21ad196297612b9ac94c1c871c0bd043dbed4004 Mon Sep 17 00:00:00 2001 From: Mike Jolley Date: Fri, 19 Aug 2016 13:43:33 +0100 Subject: [PATCH 77/81] Use CRUD in wc_save_order_items --- assets/js/admin/meta-boxes-order.js | 48 +--- assets/js/admin/meta-boxes-order.min.js | 2 +- includes/abstracts/abstract-wc-data.php | 10 + includes/abstracts/abstract-wc-order.php | 26 +-- .../admin/meta-boxes/views/html-order-fee.php | 2 +- .../meta-boxes/views/html-order-item-meta.php | 4 +- .../meta-boxes/views/html-order-item.php | 9 +- .../meta-boxes/views/html-order-shipping.php | 6 +- includes/admin/wc-admin-functions.php | 218 ++++-------------- includes/class-wc-ajax.php | 38 --- includes/class-wc-order-factory.php | 4 +- 11 files changed, 90 insertions(+), 277 deletions(-) diff --git a/assets/js/admin/meta-boxes-order.js b/assets/js/admin/meta-boxes-order.js index 0e138bdc5bd..8b2ff1a8ae5 100644 --- a/assets/js/admin/meta-boxes-order.js +++ b/assets/js/admin/meta-boxes-order.js @@ -809,24 +809,16 @@ jQuery( function ( $ ) { add: function() { var $button = $( this ); var $item = $button.closest( 'tr.item, tr.shipping' ); - - var data = { - order_item_id: $item.attr( 'data-order_item_id' ), - action: 'woocommerce_add_order_item_meta', - security: woocommerce_admin_meta_boxes.order_item_nonce - }; - - wc_meta_boxes_order_items.block(); - - $.ajax({ - url: woocommerce_admin_meta_boxes.ajax_url, - data: data, - type: 'POST', - success: function( response ) { - $item.find('tbody.meta_items').append( response ); - wc_meta_boxes_order_items.unblock(); - } - }); + var $items = $item.find('tbody.meta_items'); + var index = $items.find('tr').length + 1; + var $row = '' + + '' + + '' + + '' + + '' + + '' + + ''; + $items.append( $row ); return false; }, @@ -834,24 +826,8 @@ jQuery( function ( $ ) { remove: function() { if ( window.confirm( woocommerce_admin_meta_boxes.remove_item_meta ) ) { var $row = $( this ).closest( 'tr' ); - - var data = { - meta_id: $row.attr( 'data-meta_id' ), - action: 'woocommerce_remove_order_item_meta', - security: woocommerce_admin_meta_boxes.order_item_nonce - }; - - wc_meta_boxes_order_items.block(); - - $.ajax({ - url: woocommerce_admin_meta_boxes.ajax_url, - data: data, - type: 'POST', - success: function() { - $row.remove(); - wc_meta_boxes_order_items.unblock(); - } - }); + $row.find( ':input' ).val( '' ); + $row.hide(); } return false; } diff --git a/assets/js/admin/meta-boxes-order.min.js b/assets/js/admin/meta-boxes-order.min.js index 013b8cfa989..093775a5f2d 100644 --- a/assets/js/admin/meta-boxes-order.min.js +++ b/assets/js/admin/meta-boxes-order.min.js @@ -1 +1 @@ -jQuery(function(a){var b={states:null,init:function(){"undefined"!=typeof woocommerce_admin_meta_boxes_order&&"undefined"!=typeof woocommerce_admin_meta_boxes_order.countries&&(this.states=a.parseJSON(woocommerce_admin_meta_boxes_order.countries.replace(/"/g,'"'))),a(".js_field-country").select2().change(this.change_country),a(".js_field-country").trigger("change",[!0]),a(document.body).on("change","select.js_field-state",this.change_state),a("#woocommerce-order-actions input, #woocommerce-order-actions a").click(function(){window.onbeforeunload=""}),a("a.edit_address").click(this.edit_address),a("a.billing-same-as-shipping").on("click",this.copy_billing_to_shipping),a("a.load_customer_billing").on("click",this.load_billing),a("a.load_customer_shipping").on("click",this.load_shipping),a("#customer_user").on("change",this.change_customer_user)},change_country:function(c,d){if("undefined"==typeof d&&(d=!1),null!==b.states){var e=a(this),f=e.val(),g=e.parents("div.edit_address").find(":input.js_field-state"),h=g.parent(),i=g.attr("name"),j=g.attr("id"),k=e.data("woocommerce.stickState-"+f)?e.data("woocommerce.stickState-"+f):g.val(),l=g.attr("placeholder");if(d&&e.data("woocommerce.stickState-"+f,k),h.show().find(".select2-container").remove(),a.isEmptyObject(b.states[f]))g.replaceWith('');else{var m=a(''),n=b.states[f];m.append(a('")),a.each(n,function(b){m.append(a('"))}),m.val(k),g.replaceWith(m),m.show().select2().hide().change()}a(document.body).trigger("contry-change.woocommerce",[f,a(this).closest("div")]),a(document.body).trigger("country-change.woocommerce",[f,a(this).closest("div")])}},change_state:function(){var b=a(this),c=b.val(),d=b.parents("div.edit_address").find(":input.js_field-country"),e=d.val();d.data("woocommerce.stickState-"+e,c)},init_tiptip:function(){a("#tiptip_holder").removeAttr("style"),a("#tiptip_arrow").removeAttr("style"),a(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200})},edit_address:function(b){b.preventDefault(),a(this).hide(),a(this).parent().find("a:not(.edit_address)").show(),a(this).closest(".order_data_column").find("div.address").hide(),a(this).closest(".order_data_column").find("div.edit_address").show()},change_customer_user:function(){a("#_billing_country").val()||(a("a.edit_address").click(),b.load_billing(!0),b.load_shipping(!0))},load_billing:function(b){if(!0===b||window.confirm(woocommerce_admin_meta_boxes.load_billing)){var c=a("#customer_user").val();if(!c)return window.alert(woocommerce_admin_meta_boxes.no_customer_selected),!1;var d={user_id:c,type_to_load:"billing",action:"woocommerce_get_customer_details",security:woocommerce_admin_meta_boxes.get_customer_details_nonce};a(this).closest("div.edit_address").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:d,type:"POST",success:function(b){b&&a.each(b,function(b,c){a(":input#_"+b).val(c).change()}),a("div.edit_address").unblock()}})}return!1},load_shipping:function(b){if(!0===b||window.confirm(woocommerce_admin_meta_boxes.load_shipping)){var c=a("#customer_user").val();if(!c)return window.alert(woocommerce_admin_meta_boxes.no_customer_selected),!1;var d={user_id:c,type_to_load:"shipping",action:"woocommerce_get_customer_details",security:woocommerce_admin_meta_boxes.get_customer_details_nonce};a(this).closest("div.edit_address").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:d,type:"POST",success:function(b){b&&a.each(b,function(b,c){a(":input#_"+b).val(c).change()}),a("div.edit_address").unblock()}})}return!1},copy_billing_to_shipping:function(){return window.confirm(woocommerce_admin_meta_boxes.copy_billing)&&a('.order_data_column :input[name^="_billing_"]').each(function(){var b=a(this).attr("name");b=b.replace("_billing_","_shipping_"),a(":input#"+b).val(a(this).val()).change()}),!1}},c={init:function(){this.stupidtable.init(),a("#woocommerce-order-items").on("click","button.add-line-item",this.add_line_item).on("click","button.refund-items",this.refund_items).on("click",".cancel-action",this.cancel).on("click","button.add-order-item",this.add_item).on("click","button.add-order-fee",this.add_fee).on("click","button.add-order-shipping",this.add_shipping).on("click","button.add-order-tax",this.add_tax).on("click","button.calculate-action",this.calculate_totals).on("click","button.save-action",this.save_line_items).on("click","a.delete-order-tax",this.delete_tax).on("click","button.calculate-tax-action",this.calculate_tax).on("click","a.edit-order-item",this.edit_item).on("click","a.delete-order-item",this.delete_item).on("click","tr.item, tr.fee, tr.shipping, tr.refund",this.select_row).on("click","tr.item :input, tr.fee :input, tr.shipping :input, tr.refund :input, tr.item a, tr.fee a, tr.shipping a, tr.refund a",this.select_row_child).on("click","button.bulk-delete-items",this.bulk_actions.do_delete).on("click","button.bulk-increase-stock",this.bulk_actions.do_increase_stock).on("click","button.bulk-decrease-stock",this.bulk_actions.do_reduce_stock).on("click",".delete_refund",this.refunds.delete_refund).on("click","button.do-api-refund, button.do-manual-refund",this.refunds.do_refund).on("change",".refund input.refund_line_total, .refund input.refund_line_tax",this.refunds.input_changed).on("change keyup",".wc-order-refund-items #refund_amount",this.refunds.amount_changed).on("change","input.refund_order_item_qty",this.refunds.refund_quantity_changed).on("change","input.quantity",this.quantity_changed).on("keyup change",".split-input :input",function(){var b=a(this).parent().prev().find(":input");b&&(""===b.val()||b.is(".match-total"))&&b.val(a(this).val()).addClass("match-total")}).on("keyup",".split-input :input",function(){a(this).removeClass("match-total")}).on("click","button.add_order_item_meta",this.item_meta.add).on("click","button.remove_order_item_meta",this.item_meta.remove),a(document.body).on("wc_backbone_modal_loaded",this.backbone.init).on("wc_backbone_modal_response",this.backbone.response)},block:function(){a("#woocommerce-order-items").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},unblock:function(){a("#woocommerce-order-items").unblock()},reload_items:function(){var d={order_id:woocommerce_admin_meta_boxes.post_id,action:"woocommerce_load_order_items",security:woocommerce_admin_meta_boxes.order_item_nonce};c.block(),a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:d,type:"POST",success:function(d){a("#woocommerce-order-items").find(".inside").empty(),a("#woocommerce-order-items").find(".inside").append(d),b.init_tiptip(),c.unblock(),c.stupidtable.init()}})},quantity_changed:function(){var b=a(this).closest("tr.item"),c=a(this).val(),d=a(this).attr("data-qty"),e=a("input.line_total",b),f=a("input.line_subtotal",b),g=accounting.unformat(e.attr("data-total"),woocommerce_admin.mon_decimal_point)/d;e.val(parseFloat(accounting.formatNumber(g*c,woocommerce_admin_meta_boxes.rounding_precision,"")).toString().replace(".",woocommerce_admin.mon_decimal_point));var h=accounting.unformat(f.attr("data-subtotal"),woocommerce_admin.mon_decimal_point)/d;f.val(parseFloat(accounting.formatNumber(h*c,woocommerce_admin_meta_boxes.rounding_precision,"")).toString().replace(".",woocommerce_admin.mon_decimal_point)),a("input.line_tax",b).each(function(){var e=a(this),f=e.data("tax_id"),g=accounting.unformat(e.attr("data-total_tax"),woocommerce_admin.mon_decimal_point)/d,h=a('input.line_subtotal_tax[data-tax_id="'+f+'"]',b),i=accounting.unformat(h.attr("data-subtotal_tax"),woocommerce_admin.mon_decimal_point)/d;00?a("#restock_refunded_items").closest("tr").show():(a("#restock_refunded_items").closest("tr").hide(),a(".woocommerce_order_items input.refund_order_item_qty").each(function(){a(this).val()>0&&a("#restock_refunded_items").closest("tr").show()})),a(this).trigger("refund_quantity_changed")}},item_meta:{add:function(){var b=a(this),d=b.closest("tr.item, tr.shipping"),e={order_item_id:d.attr("data-order_item_id"),action:"woocommerce_add_order_item_meta",security:woocommerce_admin_meta_boxes.order_item_nonce};return c.block(),a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:e,type:"POST",success:function(a){d.find("tbody.meta_items").append(a),c.unblock()}}),!1},remove:function(){if(window.confirm(woocommerce_admin_meta_boxes.remove_item_meta)){var b=a(this).closest("tr"),d={meta_id:b.attr("data-meta_id"),action:"woocommerce_remove_order_item_meta",security:woocommerce_admin_meta_boxes.order_item_nonce};c.block(),a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:d,type:"POST",success:function(){b.remove(),c.unblock()}})}return!1}},select_row:function(){var b=!1;b=a(this).is("tr")?a(this):a(this).closest("tr");var c=a(this).closest("table");b.is(".selected")?b.removeClass("selected"):b.addClass("selected");var d=c.find("tr.selected");if(d.length){a("div.wc-order-item-bulk-edit").slideDown();var e=!1;d.each(function(){a(this).is("tr.item")&&(e=!0)}),e?a(".bulk-increase-stock, .bulk-decrease-stock").show():a(".bulk-increase-stock, .bulk-decrease-stock").hide()}else a("div.wc-order-item-bulk-edit").slideUp()},select_row_child:function(a){a.stopPropagation()},bulk_actions:{do_delete:function(b){b.preventDefault();var d=a("table.woocommerce_order_items"),e=d.find("tr.selected");if(e.length&&window.confirm(woocommerce_admin_meta_boxes.remove_item_notice)){c.block();var f=[],g=[],h=[];a.map(e,function(b){var c=a(b);c.is(".refund")?g.push(parseInt(a(c).data("order_refund_id"),10)):f.push(parseInt(a(c).data("order_item_id"),10))}),f.length&&h.push(a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:{order_item_ids:f,action:"woocommerce_remove_order_item",security:woocommerce_admin_meta_boxes.order_item_nonce},type:"POST"})),g.length&&h.push(a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:{action:"woocommerce_delete_refund",refund_id:g,security:woocommerce_admin_meta_boxes.order_item_nonce},type:"POST"})),h?a.when.apply(a,h).done(function(){c.reload_items(),c.unblock()}):c.unblock()}},do_increase_stock:function(b){b.preventDefault(),c.block();var d=a("table.woocommerce_order_items"),e=d.find("tr.selected"),f={},g=a.map(e,function(b){return parseInt(a(b).data("order_item_id"),10)});e.each(function(){a(this).find("input.quantity").length&&(f[a(this).attr("data-order_item_id")]=a(this).find("input.quantity").val())});var h={order_id:woocommerce_admin_meta_boxes.post_id,order_item_ids:g,order_item_qty:f,action:"woocommerce_increase_order_item_stock",security:woocommerce_admin_meta_boxes.order_item_nonce};a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:h,type:"POST",success:function(a){window.alert(a),c.unblock()}})},do_reduce_stock:function(b){b.preventDefault(),c.block();var d=a("table.woocommerce_order_items"),e=d.find("tr.selected"),f={},g=a.map(e,function(b){return parseInt(a(b).data("order_item_id"),10)});e.each(function(){a(this).find("input.quantity").length&&(f[a(this).attr("data-order_item_id")]=a(this).find("input.quantity").val())});var h={order_id:woocommerce_admin_meta_boxes.post_id,order_item_ids:g,order_item_qty:f,action:"woocommerce_reduce_order_item_stock",security:woocommerce_admin_meta_boxes.order_item_nonce};a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:h,type:"POST",success:function(a){window.alert(a),c.unblock()}})}},backbone:{init:function(b,c){"wc-modal-add-products"===c&&a(document.body).trigger("wc-enhanced-select-init")},response:function(a,b,d){if("wc-modal-add-tax"===b){var e=d.add_order_tax,f="";d.manual_tax_rate_id&&(f=d.manual_tax_rate_id),c.backbone.add_tax(e,f)}"wc-modal-add-products"===b&&c.backbone.add_item(d.add_order_items)},add_item:function(d){if(d=d.split(",")){var e=d.length;c.block(),a.each(d,function(d,f){var g={action:"woocommerce_add_order_item",item_to_add:f,order_id:woocommerce_admin_meta_boxes.post_id,security:woocommerce_admin_meta_boxes.order_item_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,g,function(d){a("table.woocommerce_order_items tbody#order_line_items").append(d),--e||(b.init_tiptip(),c.unblock())})})}},add_tax:function(d,e){if(e&&(d=e),!d)return!1;var f=a(".order-tax-id").map(function(){return a(this).val()}).get();if(-1===a.inArray(d,f)){c.block();var g={action:"woocommerce_add_order_tax",rate_id:d,order_id:woocommerce_admin_meta_boxes.post_id,security:woocommerce_admin_meta_boxes.order_item_nonce};a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:g,type:"POST",success:function(d){a("#woocommerce-order-items").find(".inside").empty(),a("#woocommerce-order-items").find(".inside").append(d),b.init_tiptip(),c.unblock(),c.stupidtable.init()}})}else window.alert(woocommerce_admin_meta_boxes.i18n_tax_rate_already_exists)}},stupidtable:{init:function(){a(".woocommerce_order_items").stupidtable(),a(".woocommerce_order_items").on("aftertablesort",this.add_arrows)},add_arrows:function(b,c){var d=a(this).find("th"),e="asc"===c.direction?"↑":"↓",f=c.column;d.find(".wc-arrow").remove(),d.eq(f).append(''+e+"")}}},d={init:function(){a("#woocommerce-order-notes").on("click","a.add_note",this.add_order_note).on("click","a.delete_note",this.delete_order_note)},add_order_note:function(){if(a("textarea#add_order_note").val()){a("#woocommerce-order-notes").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var b={action:"woocommerce_add_order_note",post_id:woocommerce_admin_meta_boxes.post_id,note:a("textarea#add_order_note").val(),note_type:a("select#order_note_type").val(),security:woocommerce_admin_meta_boxes.add_order_note_nonce};return a.post(woocommerce_admin_meta_boxes.ajax_url,b,function(b){a("ul.order_notes").prepend(b),a("#woocommerce-order-notes").unblock(),a("#add_order_note").val("")}),!1}},delete_order_note:function(){if(window.confirm(woocommerce_admin_meta_boxes.i18n_delete_note)){var b=a(this).closest("li.note");a(b).block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var c={action:"woocommerce_delete_order_note",note_id:a(b).attr("rel"),security:woocommerce_admin_meta_boxes.delete_order_note_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,c,function(){a(b).remove()})}return!1}},e={init:function(){a(".order_download_permissions").on("click","button.grant_access",this.grant_access).on("click","button.revoke_access",this.revoke_access)},grant_access:function(){var b=a("#grant_access_id").val();if(b){a(".order_download_permissions").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var c={action:"woocommerce_grant_access_to_download",product_ids:b,loop:a(".order_download_permissions .wc-metabox").length,order_id:woocommerce_admin_meta_boxes.post_id,security:woocommerce_admin_meta_boxes.grant_access_nonce};return a.post(woocommerce_admin_meta_boxes.ajax_url,c,function(b){b?a(".order_download_permissions .wc-metaboxes").append(b):window.alert(woocommerce_admin_meta_boxes.i18n_download_permission_fail),a(document.body).trigger("wc-init-datepickers"),a("#grant_access_id").val("").change(),a(".order_download_permissions").unblock()}),!1}},revoke_access:function(){if(window.confirm(woocommerce_admin_meta_boxes.i18n_permission_revoke)){var b=a(this).parent().parent(),c=a(this).attr("rel").split(",")[0],d=a(this).attr("rel").split(",")[1],e=a(this).data("permission_id");if(c>0){a(b).block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var f={action:"woocommerce_revoke_access_to_download",product_id:c,download_id:d,permission_id:e,order_id:woocommerce_admin_meta_boxes.post_id,security:woocommerce_admin_meta_boxes.revoke_access_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,f,function(){a(b).fadeOut("300",function(){a(b).remove()})})}else a(b).fadeOut("300",function(){a(b).remove()})}return!1}};b.init(),c.init(),d.init(),e.init()}); \ No newline at end of file +jQuery(function(a){var b={states:null,init:function(){"undefined"!=typeof woocommerce_admin_meta_boxes_order&&"undefined"!=typeof woocommerce_admin_meta_boxes_order.countries&&(this.states=a.parseJSON(woocommerce_admin_meta_boxes_order.countries.replace(/"/g,'"'))),a(".js_field-country").select2().change(this.change_country),a(".js_field-country").trigger("change",[!0]),a(document.body).on("change","select.js_field-state",this.change_state),a("#woocommerce-order-actions input, #woocommerce-order-actions a").click(function(){window.onbeforeunload=""}),a("a.edit_address").click(this.edit_address),a("a.billing-same-as-shipping").on("click",this.copy_billing_to_shipping),a("a.load_customer_billing").on("click",this.load_billing),a("a.load_customer_shipping").on("click",this.load_shipping),a("#customer_user").on("change",this.change_customer_user)},change_country:function(c,d){if("undefined"==typeof d&&(d=!1),null!==b.states){var e=a(this),f=e.val(),g=e.parents("div.edit_address").find(":input.js_field-state"),h=g.parent(),i=g.attr("name"),j=g.attr("id"),k=e.data("woocommerce.stickState-"+f)?e.data("woocommerce.stickState-"+f):g.val(),l=g.attr("placeholder");if(d&&e.data("woocommerce.stickState-"+f,k),h.show().find(".select2-container").remove(),a.isEmptyObject(b.states[f]))g.replaceWith('');else{var m=a(''),n=b.states[f];m.append(a('")),a.each(n,function(b){m.append(a('"))}),m.val(k),g.replaceWith(m),m.show().select2().hide().change()}a(document.body).trigger("contry-change.woocommerce",[f,a(this).closest("div")]),a(document.body).trigger("country-change.woocommerce",[f,a(this).closest("div")])}},change_state:function(){var b=a(this),c=b.val(),d=b.parents("div.edit_address").find(":input.js_field-country"),e=d.val();d.data("woocommerce.stickState-"+e,c)},init_tiptip:function(){a("#tiptip_holder").removeAttr("style"),a("#tiptip_arrow").removeAttr("style"),a(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50,delay:200})},edit_address:function(b){b.preventDefault(),a(this).hide(),a(this).parent().find("a:not(.edit_address)").show(),a(this).closest(".order_data_column").find("div.address").hide(),a(this).closest(".order_data_column").find("div.edit_address").show()},change_customer_user:function(){a("#_billing_country").val()||(a("a.edit_address").click(),b.load_billing(!0),b.load_shipping(!0))},load_billing:function(b){if(!0===b||window.confirm(woocommerce_admin_meta_boxes.load_billing)){var c=a("#customer_user").val();if(!c)return window.alert(woocommerce_admin_meta_boxes.no_customer_selected),!1;var d={user_id:c,type_to_load:"billing",action:"woocommerce_get_customer_details",security:woocommerce_admin_meta_boxes.get_customer_details_nonce};a(this).closest("div.edit_address").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:d,type:"POST",success:function(b){b&&a.each(b,function(b,c){a(":input#_"+b).val(c).change()}),a("div.edit_address").unblock()}})}return!1},load_shipping:function(b){if(!0===b||window.confirm(woocommerce_admin_meta_boxes.load_shipping)){var c=a("#customer_user").val();if(!c)return window.alert(woocommerce_admin_meta_boxes.no_customer_selected),!1;var d={user_id:c,type_to_load:"shipping",action:"woocommerce_get_customer_details",security:woocommerce_admin_meta_boxes.get_customer_details_nonce};a(this).closest("div.edit_address").block({message:null,overlayCSS:{background:"#fff",opacity:.6}}),a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:d,type:"POST",success:function(b){b&&a.each(b,function(b,c){a(":input#_"+b).val(c).change()}),a("div.edit_address").unblock()}})}return!1},copy_billing_to_shipping:function(){return window.confirm(woocommerce_admin_meta_boxes.copy_billing)&&a('.order_data_column :input[name^="_billing_"]').each(function(){var b=a(this).attr("name");b=b.replace("_billing_","_shipping_"),a(":input#"+b).val(a(this).val()).change()}),!1}},c={init:function(){this.stupidtable.init(),a("#woocommerce-order-items").on("click","button.add-line-item",this.add_line_item).on("click","button.refund-items",this.refund_items).on("click",".cancel-action",this.cancel).on("click","button.add-order-item",this.add_item).on("click","button.add-order-fee",this.add_fee).on("click","button.add-order-shipping",this.add_shipping).on("click","button.add-order-tax",this.add_tax).on("click","button.calculate-action",this.calculate_totals).on("click","button.save-action",this.save_line_items).on("click","a.delete-order-tax",this.delete_tax).on("click","button.calculate-tax-action",this.calculate_tax).on("click","a.edit-order-item",this.edit_item).on("click","a.delete-order-item",this.delete_item).on("click","tr.item, tr.fee, tr.shipping, tr.refund",this.select_row).on("click","tr.item :input, tr.fee :input, tr.shipping :input, tr.refund :input, tr.item a, tr.fee a, tr.shipping a, tr.refund a",this.select_row_child).on("click","button.bulk-delete-items",this.bulk_actions.do_delete).on("click","button.bulk-increase-stock",this.bulk_actions.do_increase_stock).on("click","button.bulk-decrease-stock",this.bulk_actions.do_reduce_stock).on("click",".delete_refund",this.refunds.delete_refund).on("click","button.do-api-refund, button.do-manual-refund",this.refunds.do_refund).on("change",".refund input.refund_line_total, .refund input.refund_line_tax",this.refunds.input_changed).on("change keyup",".wc-order-refund-items #refund_amount",this.refunds.amount_changed).on("change","input.refund_order_item_qty",this.refunds.refund_quantity_changed).on("change","input.quantity",this.quantity_changed).on("keyup change",".split-input :input",function(){var b=a(this).parent().prev().find(":input");b&&(""===b.val()||b.is(".match-total"))&&b.val(a(this).val()).addClass("match-total")}).on("keyup",".split-input :input",function(){a(this).removeClass("match-total")}).on("click","button.add_order_item_meta",this.item_meta.add).on("click","button.remove_order_item_meta",this.item_meta.remove),a(document.body).on("wc_backbone_modal_loaded",this.backbone.init).on("wc_backbone_modal_response",this.backbone.response)},block:function(){a("#woocommerce-order-items").block({message:null,overlayCSS:{background:"#fff",opacity:.6}})},unblock:function(){a("#woocommerce-order-items").unblock()},reload_items:function(){var d={order_id:woocommerce_admin_meta_boxes.post_id,action:"woocommerce_load_order_items",security:woocommerce_admin_meta_boxes.order_item_nonce};c.block(),a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:d,type:"POST",success:function(d){a("#woocommerce-order-items").find(".inside").empty(),a("#woocommerce-order-items").find(".inside").append(d),b.init_tiptip(),c.unblock(),c.stupidtable.init()}})},quantity_changed:function(){var b=a(this).closest("tr.item"),c=a(this).val(),d=a(this).attr("data-qty"),e=a("input.line_total",b),f=a("input.line_subtotal",b),g=accounting.unformat(e.attr("data-total"),woocommerce_admin.mon_decimal_point)/d;e.val(parseFloat(accounting.formatNumber(g*c,woocommerce_admin_meta_boxes.rounding_precision,"")).toString().replace(".",woocommerce_admin.mon_decimal_point));var h=accounting.unformat(f.attr("data-subtotal"),woocommerce_admin.mon_decimal_point)/d;f.val(parseFloat(accounting.formatNumber(h*c,woocommerce_admin_meta_boxes.rounding_precision,"")).toString().replace(".",woocommerce_admin.mon_decimal_point)),a("input.line_tax",b).each(function(){var e=a(this),f=e.data("tax_id"),g=accounting.unformat(e.attr("data-total_tax"),woocommerce_admin.mon_decimal_point)/d,h=a('input.line_subtotal_tax[data-tax_id="'+f+'"]',b),i=accounting.unformat(h.attr("data-subtotal_tax"),woocommerce_admin.mon_decimal_point)/d;00?a("#restock_refunded_items").closest("tr").show():(a("#restock_refunded_items").closest("tr").hide(),a(".woocommerce_order_items input.refund_order_item_qty").each(function(){a(this).val()>0&&a("#restock_refunded_items").closest("tr").show()})),a(this).trigger("refund_quantity_changed")}},item_meta:{add:function(){var b=a(this),c=b.closest("tr.item, tr.shipping"),d=c.find("tbody.meta_items"),e=d.find("tr").length+1,f='';return d.append(f),!1},remove:function(){if(window.confirm(woocommerce_admin_meta_boxes.remove_item_meta)){var b=a(this).closest("tr");b.find(":input").val(""),b.hide()}return!1}},select_row:function(){var b=!1;b=a(this).is("tr")?a(this):a(this).closest("tr");var c=a(this).closest("table");b.is(".selected")?b.removeClass("selected"):b.addClass("selected");var d=c.find("tr.selected");if(d.length){a("div.wc-order-item-bulk-edit").slideDown();var e=!1;d.each(function(){a(this).is("tr.item")&&(e=!0)}),e?a(".bulk-increase-stock, .bulk-decrease-stock").show():a(".bulk-increase-stock, .bulk-decrease-stock").hide()}else a("div.wc-order-item-bulk-edit").slideUp()},select_row_child:function(a){a.stopPropagation()},bulk_actions:{do_delete:function(b){b.preventDefault();var d=a("table.woocommerce_order_items"),e=d.find("tr.selected");if(e.length&&window.confirm(woocommerce_admin_meta_boxes.remove_item_notice)){c.block();var f=[],g=[],h=[];a.map(e,function(b){var c=a(b);c.is(".refund")?g.push(parseInt(a(c).data("order_refund_id"),10)):f.push(parseInt(a(c).data("order_item_id"),10))}),f.length&&h.push(a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:{order_item_ids:f,action:"woocommerce_remove_order_item",security:woocommerce_admin_meta_boxes.order_item_nonce},type:"POST"})),g.length&&h.push(a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:{action:"woocommerce_delete_refund",refund_id:g,security:woocommerce_admin_meta_boxes.order_item_nonce},type:"POST"})),h?a.when.apply(a,h).done(function(){c.reload_items(),c.unblock()}):c.unblock()}},do_increase_stock:function(b){b.preventDefault(),c.block();var d=a("table.woocommerce_order_items"),e=d.find("tr.selected"),f={},g=a.map(e,function(b){return parseInt(a(b).data("order_item_id"),10)});e.each(function(){a(this).find("input.quantity").length&&(f[a(this).attr("data-order_item_id")]=a(this).find("input.quantity").val())});var h={order_id:woocommerce_admin_meta_boxes.post_id,order_item_ids:g,order_item_qty:f,action:"woocommerce_increase_order_item_stock",security:woocommerce_admin_meta_boxes.order_item_nonce};a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:h,type:"POST",success:function(a){window.alert(a),c.unblock()}})},do_reduce_stock:function(b){b.preventDefault(),c.block();var d=a("table.woocommerce_order_items"),e=d.find("tr.selected"),f={},g=a.map(e,function(b){return parseInt(a(b).data("order_item_id"),10)});e.each(function(){a(this).find("input.quantity").length&&(f[a(this).attr("data-order_item_id")]=a(this).find("input.quantity").val())});var h={order_id:woocommerce_admin_meta_boxes.post_id,order_item_ids:g,order_item_qty:f,action:"woocommerce_reduce_order_item_stock",security:woocommerce_admin_meta_boxes.order_item_nonce};a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:h,type:"POST",success:function(a){window.alert(a),c.unblock()}})}},backbone:{init:function(b,c){"wc-modal-add-products"===c&&a(document.body).trigger("wc-enhanced-select-init")},response:function(a,b,d){if("wc-modal-add-tax"===b){var e=d.add_order_tax,f="";d.manual_tax_rate_id&&(f=d.manual_tax_rate_id),c.backbone.add_tax(e,f)}"wc-modal-add-products"===b&&c.backbone.add_item(d.add_order_items)},add_item:function(d){if(d=d.split(",")){var e=d.length;c.block(),a.each(d,function(d,f){var g={action:"woocommerce_add_order_item",item_to_add:f,order_id:woocommerce_admin_meta_boxes.post_id,security:woocommerce_admin_meta_boxes.order_item_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,g,function(d){a("table.woocommerce_order_items tbody#order_line_items").append(d),--e||(b.init_tiptip(),c.unblock())})})}},add_tax:function(d,e){if(e&&(d=e),!d)return!1;var f=a(".order-tax-id").map(function(){return a(this).val()}).get();if(-1===a.inArray(d,f)){c.block();var g={action:"woocommerce_add_order_tax",rate_id:d,order_id:woocommerce_admin_meta_boxes.post_id,security:woocommerce_admin_meta_boxes.order_item_nonce};a.ajax({url:woocommerce_admin_meta_boxes.ajax_url,data:g,type:"POST",success:function(d){a("#woocommerce-order-items").find(".inside").empty(),a("#woocommerce-order-items").find(".inside").append(d),b.init_tiptip(),c.unblock(),c.stupidtable.init()}})}else window.alert(woocommerce_admin_meta_boxes.i18n_tax_rate_already_exists)}},stupidtable:{init:function(){a(".woocommerce_order_items").stupidtable(),a(".woocommerce_order_items").on("aftertablesort",this.add_arrows)},add_arrows:function(b,c){var d=a(this).find("th"),e="asc"===c.direction?"↑":"↓",f=c.column;d.find(".wc-arrow").remove(),d.eq(f).append(''+e+"")}}},d={init:function(){a("#woocommerce-order-notes").on("click","a.add_note",this.add_order_note).on("click","a.delete_note",this.delete_order_note)},add_order_note:function(){if(a("textarea#add_order_note").val()){a("#woocommerce-order-notes").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var b={action:"woocommerce_add_order_note",post_id:woocommerce_admin_meta_boxes.post_id,note:a("textarea#add_order_note").val(),note_type:a("select#order_note_type").val(),security:woocommerce_admin_meta_boxes.add_order_note_nonce};return a.post(woocommerce_admin_meta_boxes.ajax_url,b,function(b){a("ul.order_notes").prepend(b),a("#woocommerce-order-notes").unblock(),a("#add_order_note").val("")}),!1}},delete_order_note:function(){if(window.confirm(woocommerce_admin_meta_boxes.i18n_delete_note)){var b=a(this).closest("li.note");a(b).block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var c={action:"woocommerce_delete_order_note",note_id:a(b).attr("rel"),security:woocommerce_admin_meta_boxes.delete_order_note_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,c,function(){a(b).remove()})}return!1}},e={init:function(){a(".order_download_permissions").on("click","button.grant_access",this.grant_access).on("click","button.revoke_access",this.revoke_access)},grant_access:function(){var b=a("#grant_access_id").val();if(b){a(".order_download_permissions").block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var c={action:"woocommerce_grant_access_to_download",product_ids:b,loop:a(".order_download_permissions .wc-metabox").length,order_id:woocommerce_admin_meta_boxes.post_id,security:woocommerce_admin_meta_boxes.grant_access_nonce};return a.post(woocommerce_admin_meta_boxes.ajax_url,c,function(b){b?a(".order_download_permissions .wc-metaboxes").append(b):window.alert(woocommerce_admin_meta_boxes.i18n_download_permission_fail),a(document.body).trigger("wc-init-datepickers"),a("#grant_access_id").val("").change(),a(".order_download_permissions").unblock()}),!1}},revoke_access:function(){if(window.confirm(woocommerce_admin_meta_boxes.i18n_permission_revoke)){var b=a(this).parent().parent(),c=a(this).attr("rel").split(",")[0],d=a(this).attr("rel").split(",")[1],e=a(this).data("permission_id");if(c>0){a(b).block({message:null,overlayCSS:{background:"#fff",opacity:.6}});var f={action:"woocommerce_revoke_access_to_download",product_id:c,download_id:d,permission_id:e,order_id:woocommerce_admin_meta_boxes.post_id,security:woocommerce_admin_meta_boxes.revoke_access_nonce};a.post(woocommerce_admin_meta_boxes.ajax_url,f,function(){a(b).fadeOut("300",function(){a(b).remove()})})}else a(b).fadeOut("300",function(){a(b).remove()})}return!1}};b.init(),c.init(),d.init(),e.init()}); \ No newline at end of file diff --git a/includes/abstracts/abstract-wc-data.php b/includes/abstracts/abstract-wc-data.php index 893c39f73f8..1961fefb587 100644 --- a/includes/abstracts/abstract-wc-data.php +++ b/includes/abstracts/abstract-wc-data.php @@ -225,6 +225,16 @@ abstract class WC_Data { $this->_meta_data = array_diff_key( $this->_meta_data, array_fill_keys( $array_keys, '' ) ); } + /** + * Delete meta data. + * @since 2.6.0 + * @param int $mid Meta ID + */ + public function delete_meta_data_by_mid( $mid ) { + $array_keys = array_keys( wp_list_pluck( $this->_meta_data, 'meta_id' ), $mid ); + $this->_meta_data = array_diff_key( $this->_meta_data, array_fill_keys( $array_keys, '' ) ); + } + /** * Read Meta Data from the database. Ignore any internal properties. * @since 2.6.0 diff --git a/includes/abstracts/abstract-wc-order.php b/includes/abstracts/abstract-wc-order.php index 21677bf5d6b..baa3d4a3b7e 100644 --- a/includes/abstracts/abstract-wc-order.php +++ b/includes/abstracts/abstract-wc-order.php @@ -810,15 +810,6 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { | */ - /** - * Prefixes an item key with a string so arrays are associative rather than numeric. - * @param int $id - * @return string - */ - protected function prefix_item_id( $id ) { - return 'item-' . $id; - } - /** * Remove all line items (products, coupons, shipping, taxes) from the order. * @param string $type Order item type. Default null. @@ -874,7 +865,8 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { if ( is_null( $this->_items[ $group ] ) ) { $this->_items[ $group ] = $this->get_items_from_db( $type ); } - $items = array_merge( $items, $this->_items[ $group ] ); + // Don't use array_merge here because keys are numeric + $items = $items + $this->_items[ $group ]; } } @@ -893,7 +885,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { $items = $wpdb->get_results( $get_items_sql ); if ( ! empty( $items ) ) { - $items = array_map( array( $this, 'get_item' ), array_combine( array_map( array( $this, 'prefix_item_id' ), wp_list_pluck( $items, 'order_item_id' ) ), $items ) ); + $items = array_map( array( $this, 'get_item' ), array_combine( wp_list_pluck( $items, 'order_item_id' ), $items ) ); } else { $items = array(); } @@ -1013,7 +1005,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { // Unset and remove later $this->_items_to_delete[] = $item; - unset( $this->_items[ $items_key ][ $this->prefix_item_id( $item->get_id() ) ] ); + unset( $this->_items[ $items_key ][ $item->get_id() ] ); } /** @@ -1032,7 +1024,7 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { // Append new row with generated temporary ID if ( $item->get_id() ) { - $this->_items[ $items_key ][ $this->prefix_item_id( $item->get_id() ) ] = $item; + $this->_items[ $items_key ][ $item->get_id() ] = $item; } else { $this->_items[ $items_key ][ 'new:' . md5( json_encode( $item ) ) ] = $item; } @@ -1421,10 +1413,10 @@ abstract class WC_Abstract_Order extends WC_Abstract_Legacy_Order { // line items foreach ( $this->get_items() as $item ) { - $cart_subtotal += wc_format_decimal( $item->get_subtotal() ); - $cart_total += wc_format_decimal( $item->get_total() ); - $cart_subtotal_tax += wc_format_decimal( $item->get_subtotal_tax() ); - $cart_total_tax += wc_format_decimal( $item->get_total_tax() ); + $cart_subtotal += $item->get_subtotal(); + $cart_total += $item->get_total(); + $cart_subtotal_tax += $item->get_subtotal_tax(); + $cart_total_tax += $item->get_total_tax(); } $this->calculate_shipping(); diff --git a/includes/admin/meta-boxes/views/html-order-fee.php b/includes/admin/meta-boxes/views/html-order-fee.php index 232b3170135..79dfa5d2f7e 100644 --- a/includes/admin/meta-boxes/views/html-order-fee.php +++ b/includes/admin/meta-boxes/views/html-order-fee.php @@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) { exit; } ?> - +
diff --git a/includes/admin/meta-boxes/views/html-order-item-meta.php b/includes/admin/meta-boxes/views/html-order-item-meta.php index 247fbf9f599..396ceaea6d0 100644 --- a/includes/admin/meta-boxes/views/html-order-item-meta.php +++ b/includes/admin/meta-boxes/views/html-order-item-meta.php @@ -49,8 +49,8 @@ ?> - - + + diff --git a/includes/admin/meta-boxes/views/html-order-item.php b/includes/admin/meta-boxes/views/html-order-item.php index eb878c03e8b..2b73fafb4b5 100644 --- a/includes/admin/meta-boxes/views/html-order-item.php +++ b/includes/admin/meta-boxes/views/html-order-item.php @@ -16,7 +16,7 @@ $tax_data = empty( $legacy_order ) && wc_tax_enabled() ? maybe_unserialize( $item_total = ( isset( $item['line_total'] ) ) ? esc_attr( wc_format_localized_price( $item['line_total'] ) ) : ''; $item_subtotal = ( isset( $item['line_subtotal'] ) ) ? esc_attr( wc_format_localized_price( $item['line_subtotal'] ) ) : ''; ?> - + ' . wp_kses_post( $thumbnail ) . '

'; @@ -66,7 +66,7 @@ $item_subtotal = ( isset( $item['line_subtotal'] ) ) ? esc_attr( wc_format_local
× ' . ( isset( $item['qty'] ) ? esc_html( $item['qty'] ) : '1' ); + echo '× ' . esc_html( $item->get_quantity() ); if ( $refunded_qty = $order->get_qty_refunded_for_item( $item_id ) ) { echo '' . ( $refunded_qty * -1 ) . ''; @@ -74,11 +74,10 @@ $item_subtotal = ( isset( $item['line_subtotal'] ) ) ? esc_attr( wc_format_local ?>
diff --git a/includes/admin/meta-boxes/views/html-order-shipping.php b/includes/admin/meta-boxes/views/html-order-shipping.php index e7f36e8c831..b55fdc9c0c4 100644 --- a/includes/admin/meta-boxes/views/html-order-shipping.php +++ b/includes/admin/meta-boxes/views/html-order-shipping.php @@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } ?> - +
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) { - +
$order->get_currency() ) ); - } + echo wc_price( $item->get_total(), array( 'currency' => $order->get_currency() ) ); - if ( isset( $item['line_subtotal'] ) && $item['line_subtotal'] !== $item['line_total'] ) { - echo '-' . wc_price( wc_format_decimal( $item['line_subtotal'] - $item['line_total'], '' ), array( 'currency' => $order->get_currency() ) ) . ''; + if ( $item->get_subtotal() !== $item->get_total() ) { + echo '-' . wc_price( wc_format_decimal( $item->get_subtotal() - $item->get_total(), '' ), array( 'currency' => $order->get_currency() ) ) . ''; } if ( $refunded = $order->get_total_refunded_for_item( $item_id ) ) { @@ -100,11 +90,11 @@ $item_subtotal = ( isset( $item['line_subtotal'] ) ) ? esc_attr( wc_format_local
- +
- +
@@ -114,9 +104,9 @@ $item_subtotal = ( isset( $item['line_subtotal'] ) ) ? esc_attr( wc_format_local get_taxes() ) && wc_tax_enabled() ) { foreach ( $order_taxes as $tax_item ) { - $tax_item_id = $tax_item['rate_id']; + $tax_item_id = $tax_item->get_rate_id(); $tax_item_total = isset( $tax_data['total'][ $tax_item_id ] ) ? $tax_data['total'][ $tax_item_id ] : ''; $tax_item_subtotal = isset( $tax_data['subtotal'][ $tax_item_id ] ) ? $tax_data['subtotal'][ $tax_item_id ] : ''; ?> @@ -129,7 +119,7 @@ $item_subtotal = ( isset( $item['line_subtotal'] ) ) ? esc_attr( wc_format_local echo '–'; } - if ( isset( $item['line_subtotal'] ) && $item['line_subtotal'] !== $item['line_total'] ) { + if ( $item->get_subtotal() !== $item->get_total() ) { echo '-' . wc_price( wc_round_tax_total( $tax_item_subtotal - $tax_item_total ), array( 'currency' => $order->get_currency() ) ) . ''; } @@ -158,7 +148,6 @@ $item_subtotal = ( isset( $item['line_subtotal'] ) ) ? esc_attr( wc_format_local } } ?> -
is_editable() ) : ?> diff --git a/includes/admin/meta-boxes/views/html-order-items.php b/includes/admin/meta-boxes/views/html-order-items.php index 97436f84fcd..1dadbb0db56 100644 --- a/includes/admin/meta-boxes/views/html-order-items.php +++ b/includes/admin/meta-boxes/views/html-order-items.php @@ -26,21 +26,7 @@ if ( wc_tax_enabled() ) { } } - // Older orders won't have line taxes so we need to handle them differently :( - $tax_data = ''; - if ( $line_items ) { - $check_item = current( $line_items ); - $tax_data = maybe_unserialize( isset( $check_item['line_tax_data'] ) ? $check_item['line_tax_data'] : '' ); - } elseif ( $line_items_shipping ) { - $check_item = current( $line_items_shipping ); - $tax_data = maybe_unserialize( isset( $check_item['taxes'] ) ? $check_item['taxes'] : '' ); - } elseif ( $line_items_fee ) { - $check_item = current( $line_items_fee ); - $tax_data = maybe_unserialize( isset( $check_item['line_tax_data'] ) ? $check_item['line_tax_data'] : '' ); - } - - $legacy_order = ! empty( $order_taxes ) && empty( $tax_data ) && ! is_array( $tax_data ); - $show_tax_columns = ! $legacy_order || sizeof( $order_taxes ) === 1; + $show_tax_columns = sizeof( $order_taxes ) === 1; } ?>
@@ -53,7 +39,7 @@ if ( wc_tax_enabled() ) { $tax_item ) : $tax_class = wc_get_tax_class_by_tax_id( $tax_item['rate_id'] ); $tax_class_name = isset( $classes_options[ $tax_class ] ) ? $classes_options[ $tax_class ] : __( 'Tax', 'woocommerce' ); diff --git a/includes/admin/meta-boxes/views/html-order-refund.php b/includes/admin/meta-boxes/views/html-order-refund.php index 4123cee47fc..a50977a6730 100644 --- a/includes/admin/meta-boxes/views/html-order-refund.php +++ b/includes/admin/meta-boxes/views/html-order-refund.php @@ -36,7 +36,7 @@ $who_refunded = new WP_User( $refund->post->post_author );
- + diff --git a/includes/admin/meta-boxes/views/html-order-shipping.php b/includes/admin/meta-boxes/views/html-order-shipping.php index b55fdc9c0c4..04f03e609ef 100644 --- a/includes/admin/meta-boxes/views/html-order-shipping.php +++ b/includes/admin/meta-boxes/views/html-order-shipping.php @@ -5,9 +5,8 @@ * @var object $item The item being displayed * @var int $item_id The id of the item being displayed */ - if ( ! defined( 'ABSPATH' ) ) { - exit; // Exit if accessed directly + exit; } ?> @@ -15,11 +14,11 @@ if ( ! defined( 'ABSPATH' ) ) {
- + get_name() ? $item->get_name() : __( 'Shipping', 'woocommerce' ) ); ?>