diff --git a/.editorconfig b/.editorconfig index 7407b2ecabf..52e922a644c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -27,3 +27,8 @@ trim_trailing_whitespace = false insert_final_newline = false indent_style = space indent_size = 2 + +[*.yml] +insert_final_newline = false +indent_style = space +indent_size = 2 diff --git a/.gitignore b/.gitignore index 3b55ddd9bf1..10cf661e369 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,9 @@ sftp-config.json /node_modules/ /deploy/ +# Sass +.sass-cache/ + # OS X metadata .DS_Store diff --git a/.scrutinizer.yml b/.scrutinizer.yml index fe40783e6b0..392aa6694c9 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -1,11 +1,11 @@ filter: - excluded_paths: - - tests/* - - apigen/* - - includes/api/v1/* - - includes/libraries/* + excluded_paths: + - tests/* + - apigen/* + - includes/api/v1/* + - includes/libraries/* checks: - php: - code_rating: true - duplication: true + php: + code_rating: true + duplication: true diff --git a/.travis.yml b/.travis.yml index 7b140e2a793..4030c3191a7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,10 +14,10 @@ matrix: env: WP_VERSION=latest WP_MULTISITE=0 before_script: - - bash tests/bin/install.sh woocommerce_test root '' localhost $WP_VERSION - - bash tests/bin/travis.sh before + - bash tests/bin/install.sh woocommerce_test root '' localhost $WP_VERSION + - bash tests/bin/travis.sh before script: phpunit -c phpunit.xml.dist after_script: - - bash tests/bin/travis.sh after + - bash tests/bin/travis.sh after diff --git a/Gruntfile.js b/Gruntfile.js index 883b97dcff5..a9103e69358 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -27,27 +27,6 @@ module.exports = function( grunt ) { ] }, - // Compile all .less files. - less: { - compile: { - options: { - // These paths are searched for @imports - paths: ['<%= dirs.css %>/'] - }, - files: [{ - expand: true, - cwd: '<%= dirs.css %>/', - src: [ - '*.less', - '!woocommerce-base.less', - '!mixins.less' - ], - dest: '<%= dirs.css %>/', - ext: '.css' - }] - } - }, - // Minify .js files. uglify: { options: { @@ -73,7 +52,7 @@ module.exports = function( grunt ) { '<%= dirs.js %>/admin/jquery.flot.pie.min.js': ['<%= dirs.js %>/admin/jquery.flot.pie.js'], '<%= dirs.js %>/admin/jquery.flot.resize.min.js': ['<%= dirs.js %>/admin/jquery.flot.resize.js'], '<%= dirs.js %>/admin/jquery.flot.stack.min.js': ['<%= dirs.js %>/admin/jquery.flot.stack.js'], - '<%= dirs.js %>/admin/jquery.flot.time.min.js': ['<%= dirs.js %>/admin/jquery.flot.time.js'], + '<%= dirs.js %>/admin/jquery.flot.time.min.js': ['<%= dirs.js %>/admin/jquery.flot.time.js'] } }, frontend: { @@ -87,7 +66,23 @@ module.exports = function( grunt ) { dest: '<%= dirs.js %>/frontend/', ext: '.min.js' }] - }, + } + }, + + // Compile all .scss files. + sass: { + compile: { + options: { + sourcemap: 'none' + }, + files: [{ + expand: true, + cwd: '<%= dirs.css %>/', + src: ['*.scss'], + dest: '<%= dirs.css %>/', + ext: '.css' + }] + } }, // Minify all .css files. @@ -103,9 +98,9 @@ module.exports = function( grunt ) { // Watch changes for assets. watch: { - less: { - files: ['<%= dirs.css %>/*.less'], - tasks: ['less', 'cssmin'] + css: { + files: ['<%= dirs.css %>/*.scss'], + tasks: ['sass', 'cssmin'] }, js: { files: [ @@ -197,7 +192,7 @@ module.exports = function( grunt ) { apigen: { command: [ 'cd apigen/', - 'php apigen.php --source ../ --destination ../wc-apidocs --download yes --template-config ./templates/woodocs/config.neon --title "WooCommerce" --exclude "*/mijireh/*" --exclude "*/includes/libraries/*" --exclude "*/api/*" --exclude "*/i18n/*" --exclude "*/node_modules/*" --exclude "*/deploy/*" --exclude "*/apigen/*" --exclude "*/wc-apidocs/*"', + 'php apigen.php --source ../ --destination ../wc-apidocs --download yes --template-config ./templates/woodocs/config.neon --title "WooCommerce" --exclude "*/mijireh/*" --exclude "*/includes/libraries/*" --exclude "*/api/*" --exclude "*/i18n/*" --exclude "*/node_modules/*" --exclude "*/deploy/*" --exclude "*/apigen/*" --exclude "*/wc-apidocs/*"' ].join( '&&' ) } }, @@ -238,9 +233,9 @@ module.exports = function( grunt ) { // Load NPM tasks to be used here grunt.loadNpmTasks( 'grunt-shell' ); grunt.loadNpmTasks( 'grunt-contrib-jshint' ); - grunt.loadNpmTasks( 'grunt-contrib-less' ); - grunt.loadNpmTasks( 'grunt-contrib-cssmin' ); grunt.loadNpmTasks( 'grunt-contrib-uglify' ); + grunt.loadNpmTasks( 'grunt-contrib-sass' ); + grunt.loadNpmTasks( 'grunt-contrib-cssmin' ); grunt.loadNpmTasks( 'grunt-contrib-watch' ); grunt.loadNpmTasks( 'grunt-contrib-copy' ); grunt.loadNpmTasks( 'grunt-contrib-clean' ); @@ -249,11 +244,15 @@ module.exports = function( grunt ) { // Register tasks grunt.registerTask( 'default', [ - 'less', - 'cssmin', + 'css', 'uglify' ]); + grunt.registerTask( 'css', [ + 'sass', + 'cssmin' + ]); + grunt.registerTask( 'docs', [ 'clean:apigen', 'shell:apigen' diff --git a/README.md b/README.md index 09b56617d99..0cecaa88dc1 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,11 @@ Welcome to the WooCommerce repository on GitHub. Here you can browse the source, If you are not a developer, please use the [WooCommerce plugin page](http://wordpress.org/plugins/woocommerce/) on WordPress.org. +## Documentation +* The [WooCommerce docs site](http://docs.woothemes.com/documentation/plugins/woocommerce/) +* [WooCommerce API Docs](http://docs.woothemes.com/wc-apidocs/) +* [WooCommerce REST API Docs](http://docs.woocommercev2.apiary.io/) + ## Support This repository is not suitable for support. Please don't use our issue tracker for support requests, but for core WooCommerce issues only. Support can take place in the appropriate channels: @@ -14,3 +19,5 @@ Support requests in issues on this repository will be closed on sight. ## Contributing to WooCommerce If you have a patch, or stumbled upon an issue with WooCommerce core, you can contribute this back to the code. Please read our [contributor guidelines](https://github.com/woothemes/woocommerce/blob/master/CONTRIBUTING.md) for more information how you can do this. + +If you have an idea for WooComerce, see the [Roadmap Trello board](https://trello.com/b/YgRbpuze/woocommerce-roadmap). diff --git a/assets/css/_mixins.scss b/assets/css/_mixins.scss new file mode 100644 index 00000000000..f128f65ede5 --- /dev/null +++ b/assets/css/_mixins.scss @@ -0,0 +1,200 @@ +$woocommerce: #ad74a2; +$green: #7ad03a; +$red: #a00; +$orange: #ffba00; +$blue: #2ea2cc; + +@mixin clearfix() { + *zoom: 1; + + &:before, + &:after { + content: " "; + display: table; + } + + &:after { + clear: both; + } +} + +@mixin border_radius($radius: 4px) { + -webkit-border-radius:$radius; + border-radius:$radius; +} + +@mixin border_radius_right($radius: 4px) { + -webkit-border-top-right-radius: $radius; + -webkit-border-bottom-right-radius: $radius; + border-top-right-radius: $radius; + border-bottom-right-radius: $radius; +} + +@mixin border_radius_left($radius: 4px) { + -webkit-border-top-left-radius: $radius; + -webkit-border-bottom-left-radius: $radius; + border-top-left-radius: $radius; + border-bottom-left-radius: $radius; +} + +@mixin border_radius_bottom($radius: 4px) { + -webkit-border-bottom-left-radius: $radius; + -webkit-border-bottom-right-radius: $radius; + border-bottom-left-radius: $radius; + border-bottom-right-radius: $radius; +} + +@mixin border_radius_top($radius: 4px) { + -webkit-border-top-left-radius: $radius; + -webkit-border-top-right-radius: $radius; + border-top-left-radius: $radius; + border-top-right-radius: $radius; +} + +@mixin opacity( $opacity: 0.75 ) { + filter: unquote("alpha(opacity=$opacity * 100)"); + -moz-opacity: $opacity; + -khtml-opacity: $opacity; + opacity: $opacity; +} + +@mixin box_shadow($shadow_x: 3px, $shadow_y: 3px, $shadow_rad: 3px, $shadow_in: 3px, $shadow_color: #888) { + box-shadow: $shadow_x $shadow_y $shadow_rad $shadow_in $shadow_color; + -webkit-box-shadow: $shadow_x $shadow_y $shadow_rad $shadow_in $shadow_color; +} + +@mixin inset_box_shadow($shadow_x: 3px, $shadow_y: 3px, $shadow_rad: 3px, $shadow_in: 3px, $shadow_color: #888) { + box-shadow: inset $shadow_x $shadow_y $shadow_rad $shadow_in $shadow_color; + -webkit-box-shadow: inset $shadow_x $shadow_y $shadow_rad $shadow_in $shadow_color; +} + +@mixin text_shadow($shadow_x: 3px, $shadow_y: 3px, $shadow_rad: 3px, $shadow_color: #fff) { + text-shadow: $shadow_x $shadow_y $shadow_rad $shadow_color; +} + +@mixin vertical_gradient($from: #000, $to: #fff) { + background: $from; + background: -webkit-gradient(linear, left top, left bottom, from($from), to($to)); + background: -webkit-linear-gradient($from, $to); + background: -moz-linear-gradient(center top, $from 0%, $to 100%); + background: -moz-gradient(center top, $from 0%, $to 100%); +} + +@mixin transition($selector: all, $animation: ease-in-out, $duration: .2s) { + -webkit-transition: $selector $animation $duration; + -moz-transition: $selector $animation $duration; + -o-transition: $selector $animation $duration; + transition: $selector $animation $duration; +} + +@mixin scale($ratio: 1.5) { + -webkit-transform: scale($ratio); + -moz-transform: scale($ratio); + -ms-transform: scale($ratio); + -o-transform: scale($ratio); + transform: scale($ratio); +} + +@mixin borderbox() { + -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */ + -moz-box-sizing: border-box; /* Firefox, other Gecko */ + box-sizing: border-box; /* Opera/IE 8+ */ +} + +@mixin darkorlighttextshadow($a, $opacity: .8) { + @if lightness($a) >= 65% { + @include text_shadow(0, -1px, 0, rgba(0, 0, 0, $opacity)); + } @else { + @include text_shadow(0, 1px, 0, rgba(255, 255, 255, $opacity)); + } +} + +/** + * Objects + */ +@mixin menu() { + @include clearfix(); + + li { + display: inline-block; + } +} + +@mixin mediaright() { + @include clearfix(); + + img { + float: right; + height: auto; + } +} + +@mixin medialeft() { + @include clearfix(); + + img { + float: right; + height: auto; + } +} + +@mixin ir() { + display: block; + text-indent: -9999px; + position: relative; + height: 1em; + width: 1em; +} + +@mixin icon( $glyph: "\e001" ) { + font-family: 'WooCommerce'; + speak: none; + font-weight: normal; + 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: $glyph; +} + +@mixin iconbefore( $glyph: "\e001" ) { + font-family: 'WooCommerce'; + speak: none; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + margin-right:7px; + content: $glyph; +} + +@mixin iconafter( $glyph: "\e001" ) { + font-family: 'WooCommerce'; + speak: none; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + -webkit-font-smoothing: antialiased; + margin-left: 7px; + content: $glyph; +} + +// Common styles. + +.clear { + clear: both; +} + +.nobr { + white-space: nowrap; +} diff --git a/assets/css/_woocommerce-base.scss b/assets/css/_woocommerce-base.scss new file mode 100644 index 00000000000..885ba6760a7 --- /dev/null +++ b/assets/css/_woocommerce-base.scss @@ -0,0 +1,11 @@ +$primary: #ad74a2; // Primary colour for buttons (alt) +$primarytext: desaturate(lighten($primary, 50%), 18%); // Text on primary colour bg + +$secondary: desaturate(lighten($primary, 40%), 18%); // Secondary buttons +$secondarytext: desaturate(darken($secondary, 60%), 18%); // Text on secondary colour bg + +$highlight: adjust-hue($primary, 150deg); // Prices, In stock labels, sales flash +$highlightext: desaturate(lighten($highlight, 50%), 18%); // Text on highlight colour bg + +$contentbg: #fff; // Content BG - Tabs (active state) +$subtext: #777; // small, breadcrumbs etc diff --git a/assets/css/activation.less b/assets/css/activation.scss similarity index 100% rename from assets/css/activation.less rename to assets/css/activation.scss diff --git a/assets/css/admin.css b/assets/css/admin.css index 383581fc591..17f7557e0e4 100644 --- a/assets/css/admin.css +++ b/assets/css/admin.css @@ -1 +1 @@ -.clear{clear:both}.nobr{white-space:nowrap}@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}.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 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}.woocommerce-message{position:relative;border-left-color:#cc99c2!important;overflow:hidden}.woocommerce-message a.button-primary,.woocommerce-message button.button-primary{background:#cc99c2;border-color:#b366a4;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none!important}.woocommerce-message a.button-primary:hover,.woocommerce-message button.button-primary:hover{background:#bb77ae;border-color:#aa559a;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15)}.woocommerce-message a.button-primary:active,.woocommerce-message button.button-primary:active{background:#aa559a;border-color:#aa559a}.woocommerce-message a.docs,.woocommerce-message a.skip{opacity:.5}.woocommerce-message .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}#variable_product_options #message{margin:10px}.wrap.woocommerce div.error,.wrap.woocommerce div.updated{margin-top:10px}mark.amount{background:0 0;color:inherit}.postbox input:invalid,.woocommerce input:invalid{border:1px solid #cc010b;background:#ffebe8}.simplify-commerce-banner{overflow:hidden}.simplify-commerce-banner img{float:right;padding:15px 0;margin-left:1em;width:200px}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}table.wc_status_table td:first-child{width:20%}table.wc_status_table td{padding:6px 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}#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:180%}#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{clear:left}#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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 label{clear:left}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group div.alignright,#woocommerce-fields-bulk.inline-edit-col .inline-edit-group label{clear:none;width:49%;margin:.2em 0}#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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}#woocommerce-fields-bulk.inline-edit-col .height,#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .width{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:32%}.column-coupon_code{line-height:2.25em}.column-coupon_code,ul.wc_coupon_list{margin:0;overflow:hidden;zoom:1;clear:both}.column-coupon_code li.code,ul.wc_coupon_list li.code{margin:0 6px 12px 0!important}.column-coupon_code .code a:after,.column-coupon_code .code a:before,.column-coupon_code .code span:after,.column-coupon_code .code span:before,.column-coupon_code .code:after,.column-coupon_code .code:before,ul.wc_coupon_list .code a:after,ul.wc_coupon_list .code a:before,ul.wc_coupon_list .code span:after,ul.wc_coupon_list .code span:before,ul.wc_coupon_list .code:after,ul.wc_coupon_list .code:before{content:"";display:block;position:absolute;width:8px;height:4px;background:#f7f7f7;-webkit-border-radius:2px;-moz-border-radius:2px;-o-border-radius:2px;border-radius:2px;-moz-box-shadow:0 2px 0 0 rgba(255,255,255,.3),inset 0 2px 0 0 rgba(0,0,0,.1);-webkit-box-shadow:0 2px 0 0 rgba(255,255,255,.3),inset 0 2px 0 0 rgba(0,0,0,.1);box-shadow:0 2px 0 0 rgba(255,255,255,.3),inset 0 2px 0 0 rgba(0,0,0,.1)}.column-coupon_code .code,ul.wc_coupon_list .code{overflow:hidden;vertical-align:middle;margin:0 8px 0 0;background:#ececec;color:#21759A;text-shadow:0 1px 0 #ddd;padding:2px;position:relative;float:left;line-height:1em;-moz-box-shadow:0 2px 0 0 #ddd;-webkit-box-shadow:0 2px 0 0 #ddd;box-shadow:0 2px 0 0 #ddd;font-weight:700}.column-coupon_code .code:before,ul.wc_coupon_list .code:before{bottom:5px;left:0;margin:0 0 0 -4px}.column-coupon_code .code:after,ul.wc_coupon_list .code:after{top:5px;left:0;margin:0 0 0 -4px}.column-coupon_code .code a,.column-coupon_code .code span,ul.wc_coupon_list .code a,ul.wc_coupon_list .code span{float:left;padding:0 4px;color:#21759A}.column-coupon_code .code a:before,.column-coupon_code .code span:before,ul.wc_coupon_list .code a:before,ul.wc_coupon_list .code span:before{bottom:5px;right:0;margin:0 -4px 0 0}.column-coupon_code .code a:after,.column-coupon_code .code span:after,ul.wc_coupon_list .code a:after,ul.wc_coupon_list .code span:after{content:"";top:5px;right:0;margin:0 -4px 0 0}.column-coupon_code .code a span,.column-coupon_code .code span span,ul.wc_coupon_list .code a span,ul.wc_coupon_list .code span span{border:1px dashed #ccc;padding:.5em 6px;-webkit-border-radius:2px;-moz-border-radius:2px;-o-border-radius:2px;border-radius:2px}.column-coupon_code .code a span:before,.column-coupon_code .code span span:before,ul.wc_coupon_list .code a span:before,ul.wc_coupon_list .code span span:before{top:50%;left:0;margin:-2px 0 0 -4px}.column-coupon_code .code a span:after,.column-coupon_code .code span span:after,ul.wc_coupon_list .code a span:after,ul.wc_coupon_list .code span span:after{top:50%;right:0;margin:-2px -4px 0 0}.column-coupon_code .code:hover,ul.wc_coupon_list .code:hover{background:#975e83;color:#fff;text-shadow:0 1px 0 #5a324b}.column-coupon_code .code:hover a,.column-coupon_code .code:hover span,ul.wc_coupon_list .code:hover a,ul.wc_coupon_list .code:hover span{color:#fff}.column-coupon_code .code:hover a span,.column-coupon_code .code:hover span span,ul.wc_coupon_list .code:hover a span,ul.wc_coupon_list .code:hover span span{border:1px dashed #bb82a7}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;-webkit-border-radius:100%;border-radius:100%;height:24px;width:24px!important;display:inline-block}.button.wc-reload: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:"\e031";line-height:22px}.tablenav .actions{overflow:visible}.alignleft.actions .chosen-container-single{display:inline-block;vertical-align:middle}#woocommerce-order-data .handlediv,#woocommerce-order-data h3.hndle{display:none}#woocommerce-order-data .inside{display:block!important}#order_data{padding:23px 24px 12px}#order_data h2{margin:0;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:21px;font-weight:400;line-height:1.2;text-shadow:1px 1px 1px #fff;padding:0}#order_data h4{color:#333;margin:1.33em 0 0}#order_data p{color:#777}#order_data p.order_number{margin:0;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:400;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 #order_status_chosen .chosen-search{display:none}#order_data .order_data_column .form-field .chosen-container{width:100%!important}#order_data .order_data_column .form-field .date-picker-field{width:50%}#order_data .order_data_column .form-field .hour,#order_data .order_data_column .form-field .minute{width:2.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 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{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;overflow:hidden;zoom:1;padding-right:1px}#order_data a.edit_address{opacity:.4}#order_data a.edit_address:focus,#order_data a.edit_address:hover{opacity:1}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:right}.order_actions li#actions select{width:225px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:12px;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-bulk-actions{background:#fefefe;vertical-align:top;border-top:0}#woocommerce-order-items .wc-order-bulk-actions select{vertical-align:top}#woocommerce-order-items .wc-order-bulk-actions p.bulk-actions{float:left}#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 .chosen-container{vertical-align:top}#woocommerce-order-items .wc-order-add-item .add_item_id .search-field input,#woocommerce-order-items .wc-order-add-item .chosen-container .search-field input{min-width:100px}#woocommerce-order-items .wc-order-add-item .chosen-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}#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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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{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_wrapper{margin:0;overflow:auto}.woocommerce_order_items_wrapper table.woocommerce_order_items{width:100%;background:#fff}.woocommerce_order_items_wrapper table.woocommerce_order_items thead th{background:#f8f8f8;padding:8px;font-size:11px;text-align:left}.woocommerce_order_items_wrapper table.woocommerce_order_items thead th:last-child{padding-right:12px}.woocommerce_order_items_wrapper table.woocommerce_order_items thead th:first-child{padding-left:12px}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th,.woocommerce_order_items_wrapper table.woocommerce_order_items td{padding:8px;text-align:left;line-height:26px;vertical-align:top;border-bottom:1px dotted #ececec}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,.woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{width:100%}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th select,.woocommerce_order_items_wrapper table.woocommerce_order_items td select{width:50%}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th input,.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,.woocommerce_order_items_wrapper table.woocommerce_order_items td input,.woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{font-size:14px;padding:4px;color:#555}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items td:last-child{padding-right:12px}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:first-child,.woocommerce_order_items_wrapper table.woocommerce_order_items td:first-child{padding-left:12px}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:last-child td{border-bottom:1px solid #dfdfdf}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:first-child td{border-top:8px solid #f8f8f8}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody#order_line_items tr:first-child td{border-top:none}.woocommerce_order_items_wrapper table.woocommerce_order_items td.check-column{padding:8px 8px 8px 12px;width:1%}.woocommerce_order_items_wrapper table.woocommerce_order_items .item{min-width:200px}.woocommerce_order_items_wrapper table.woocommerce_order_items .center,.woocommerce_order_items_wrapper table.woocommerce_order_items .variation-id{text-align:center}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class{text-align:right}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost label,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax label,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label{white-space:nowrap;color:#999;font-size:.833em}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label input{display:inline}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax input,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class input{width:70px;vertical-align:middle;text-align:right}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost select,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost select,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax select,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity select,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax select,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class select{width:85px;height:26px;vertical-align:middle;font-size:1em}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input{display:block;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);margin:1px;width:70px}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input input{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:0;box-shadow:none;margin:0;color:#555;background:0 0}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input input:last-child{color:#bbb;border-top:1px dashed #ddd}.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity{text-align:center}.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input{text-align:center;width:50px}.woocommerce_order_items_wrapper table.woocommerce_order_items span.subtotal{opacity:.5}.woocommerce_order_items_wrapper table.woocommerce_order_items td.tax_class,.woocommerce_order_items_wrapper table.woocommerce_order_items th.tax_class{text-align:left}.woocommerce_order_items_wrapper table.woocommerce_order_items .calculated{border-color:#ae8ca2;border-style:dotted}.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{width:100%}.woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta,.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{margin:.5em 0 0}.woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr th,.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_wrapper table.woocommerce_order_items table.display_meta tr td,.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_wrapper table.woocommerce_order_items table.display_meta tr td input,.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_wrapper table.woocommerce_order_items table.display_meta tr td textarea,.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_wrapper table.woocommerce_order_items table.display_meta tr td input:focus+textarea,.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input:focus+textarea{border-top-color:#999}.woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p,.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p{margin:0 0 .5em;line-height:1.5em}.woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p:last-child{margin:0}.woocommerce_order_items_wrapper table.woocommerce_order_items .thumb{text-align:left;width:27px}.woocommerce_order_items_wrapper table.woocommerce_order_items .thumb a{display:block}.woocommerce_order_items_wrapper table.woocommerce_order_items .thumb img{padding:1px;margin:0;border:1px solid #dfdfdf;vertical-align:middle;width:21px;height:21px}.woocommerce_order_items_wrapper table.woocommerce_order_items .refund_by{border-bottom:1px dotted #999}.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:14px;margin:6px}.woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div: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:"\e007";color:#bbb}.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:14px;margin:6px}.woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div: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:"\e014";color:#bbb}.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:14px;margin:6px}.woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div: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:"\e01a";color:#bbb}.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{white-space:nowrap}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax,.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{padding:8px 16px 8px 8px}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax,.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;font-size:12px;visibility:hidden;float:right;margin:2px -16px 0 0}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:before,.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax: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:"\e013";color:#fff;background-color:#000;-webkit-border-radius:100%;border-radius:100%;border:1px solid #000;box-shadow:0 1px 2px rgba(0,0,0,.2)}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:hover:before,.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:hover:before{border-color:#a00;background-color:#a00}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax:hover .delete-order-tax,.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax:hover .delete-order-tax{visibility:visible}.woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded{display:block;color:#a00;white-space:nowrap}.wc-order-items-editable .edit-order-item{text-indent:-9999px;position:relative;height:1em;width:1em;display:inline-block;margin:0 .5em 0 0}.wc-order-items-editable .edit-order-item: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:"\e001";content:"\e603";color:#999}.wc-order-items-editable .edit-order-item:hover:before{color:#555}.wc-order-items-editable .delete-order-item,.wc-order-items-editable .delete_refund{text-indent:-9999px;position:relative;height:1em;width:1em;display:inline-block;margin:0}.wc-order-items-editable .delete-order-item:before,.wc-order-items-editable .delete_refund: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:"\e001";content:"\e013";color:#999}.wc-order-items-editable .delete-order-item:hover:before,.wc-order-items-editable .delete_refund:hover:before{color:#a00}.wc-order-items-editable .wc-order-edit-line-item-actions{width:2.5em;text-align:right}.wc-order-items-editable .wc-order-totals .wc-order-edit-line-item-actions{width:1.5em}.wc-order-items-editable .wc-order-totals .edit-order-item{margin: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 .chosen-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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.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{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:"\e026";line-height:16px}.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{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:"\e027";line-height:16px}.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 .complete:after,.order_actions .processing:after,.order_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;line-height:1.85}.order_actions .processing:after{content:"\e00f"}.order_actions .complete:after{content:"\e017"}.order_actions .view:after{content:"\e010"}.user_actions .edit,.user_actions .link,.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 .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;line-height:1.85}.user_actions .edit:after{content:"\e603"}.user_actions .link:after{content:"\e00d"}.user_actions .view:after{content:"\e010"}.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{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:"\e01c";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 p.meta .exact-date{border-bottom:1px dotted #999}ul.order_notes li a.delete_note{color:#a00}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:#d7cad2}ul.order_notes li.customer-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 .row-actions{color:#999}table.wp-list-table td.column-thumb img{margin:0;vertical-align:middle;width:auto;height:auto;max-width:40px;max-height:40px}table.wp-list-table span.na{color:#999}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: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:"\e00c"}table.wp-list-table span.wc-featured{margin:0;cursor:pointer}table.wp-list-table span.wc-featured:before{content:"\e020"}table.wp-list-table span.wc-featured.not-featured:before{content:"\e021"}table.wp-list-table td.column-featured span.wc-featured{font-size:1.2em}table.wp-list-table span.wc-type{margin:0}table.wp-list-table span.wc-type:before{content:"\e01d"}table.wp-list-table span.product-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.2em}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:"\e006"}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.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}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 td,table.wc_tax_rates td{padding:0;border-right:1px solid #DFDFDF;border-bottom:1px solid #DFDFDF;border-top:0;background:#fff}table.wc_input_table td input[type=number],table.wc_input_table td input[type=text],table.wc_tax_rates td input[type=number],table.wc_tax_rates td input[type=text]{width:100%;padding:5px 7px;margin:0;border:0;background:0 0}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}table.wc_input_table td.sort,table.wc_tax_rates td.sort{padding:0 4px;cursor:move;background:#f9f9f9;text-align:center;vertical-align:middle}table.wc_input_table td.sort:before,table.wc_tax_rates td.sort:before{content:"\e032";font-family:WooCommerce;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_input_table td.sort:hover:before,table.wc_tax_rates 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 tfoot th,table.wc_tax_rates tfoot th{padding-left:20px;padding-right:20px}table.wc_input_table tr:last-child td,table.wc_tax_rates tr:last-child td{border-bottom:0}table.wc_gateways,table.wc_shipping{position:relative}table.wc_gateways td,table.wc_shipping td{vertical-align:middle;cursor:move;padding:7px}table.wc_gateways th,table.wc_shipping th{padding:9px 7px!important;vertical-align:middle}table.wc_gateways td.name,table.wc_shipping td.name{font-weight:700}table.wc_gateways .settings,table.wc_shipping .settings{text-align:right}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_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_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}img.help_tip{vertical-align:middle;margin:0 0 0 9px}.postbox img.help_tip{margin-top:-4px}.status-disabled,.status-enabled{font-size:1.4em;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}.status-enabled: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:"\e015";color:#ad74a2}.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,.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 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 .chosen-container{vertical-align:top;margin-bottom:3px}.woocommerce table.form-table table.widefat th{padding-right:inherit}.woocommerce table.form-table th img.help_tip{margin:0 -24px 0 0;float:right}.woocommerce table.form-table fieldset{margin-top:4px}.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 .color_box{border:1px solid #ccc;box-shadow:1px 1px 3px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.2);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.2);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding:4px 6px;float:left;width:90px;margin:0 10px 0 0}.woocommerce table.form-table .color_box strong{text-align:left;display:block;padding:0 0 2px;font-size:.92em}.woocommerce table.form-table .color_box strong img{float:right;margin:1px 0 0}.woocommerce table.form-table .color_box input.colorpick{width:100%;margin:0;font-family:monospace;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.woocommerce table.form-table .color_box .iris-picker{margin:15px 0 0 -7px}.woocommerce table.form-table .color_box_clear{display:block;clear:both;padding-bottom:10px}.woocommerce table.form-table .iris-picker{z-index:100;position:absolute;display:none;border:1px solid #ccc;box-shadow:1px 1px 3px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.2);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.2);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.woocommerce table.form-table .iris-picker .ui-slider{border:0!important;background:none!important;margin:0!important;width:auto!important;height:auto!important}.woocommerce table.form-table .iris-picker .ui-slider .ui-slider-handle{margin-bottom:0!important}.woocommerce table.form-table .image_width_settings{vertical-align:middle}.woocommerce table.form-table .image_width_settings label{margin-left:10px}.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;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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: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:"\e00c";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.view{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.view: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:"\e00c";background-color:#000;color:#fff}#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: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:"\e013";color:#fff;background-color:#000;-webkit-border-radius:100%;border-radius:100%;box-shadow:0 1px 2px rgba(0,0,0,.2)}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:hover:before{background-color:#a00}#woocommerce-product-images .inside #product_images_container ul li:hover ul.actions{display:block}#woocommerce-product-data h3.hndle{padding:10px}#woocommerce-product-data h3.hndle span{display:block;vertical-align:middle;line-height:24px}#woocommerce-product-data h3.hndle span span{display:inline;line-height:inherit;vertical-align:baseline}#woocommerce-product-data h3.hndle label{padding-right:1em;font-size:12px;vertical-align:baseline}#woocommerce-product-data h3.hndle label:first-child{margin-right:1em;border-right:1px solid #dfdfdf}#woocommerce-product-data h3.hndle input,#woocommerce-product-data h3.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;padding-left:153px}#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:right;width:100%}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-metaboxes,#woocommerce-coupon-data .wc-metaboxes-wrapper p.toolbar,#woocommerce-coupon-data .woocommerce_options_panel .wc-metaboxes,#woocommerce-coupon-data .woocommerce_options_panel p.toolbar,#woocommerce-product-data .wc-metaboxes-wrapper .wc-metaboxes,#woocommerce-product-data .wc-metaboxes-wrapper p.toolbar,#woocommerce-product-data .woocommerce_options_panel .wc-metaboxes,#woocommerce-product-data .woocommerce_options_panel p.toolbar{padding-left:12px!important;padding-right:20px!important}#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 .wc-tabs-back,#woocommerce-product-data .wc-tabs-back{position:absolute;top:0;left:0;bottom:0;background:#f5f5f5;width:145px;border-right:1px solid #DFDFDF}#woocommerce-coupon-data ul.wc-tabs,#woocommerce-product-data ul.wc-tabs,.woocommerce ul.wc-tabs{background:#f5f5f5;line-height:1em;float:left;width:145px;margin:0 0 0 -153px;position:relative;padding:0 0 10px}#woocommerce-coupon-data ul.wc-tabs li,#woocommerce-product-data ul.wc-tabs li,.woocommerce ul.wc-tabs li{display:block;padding:0;margin:0}#woocommerce-coupon-data ul.wc-tabs li a,#woocommerce-product-data ul.wc-tabs li a,.woocommerce ul.wc-tabs li a{padding:10px;line-height:18px!important;margin:0;display:block;background:#f5f5f5;text-decoration:none;border-bottom:1px solid #f5f5f5;border-top:1px solid #eaeaea}#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:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:7px;content:"\e028"}#woocommerce-coupon-data ul.wc-tabs li:first-child a,#woocommerce-product-data ul.wc-tabs li:first-child a,.woocommerce ul.wc-tabs li:first-child a{border-top:0!important}#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:"\e006"}#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:"\e02c"}#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{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:"\e00d"}#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:"\e02b"}#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{content:"\e01c"}#woocommerce-coupon-data ul.wc-tabs li.variation_options a:before,#woocommerce-product-data ul.wc-tabs li.variation_options a:before,.woocommerce ul.wc-tabs li.variation_options a:before{content:"\e003"}#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{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{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{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{border-color:#DFDFDF;position:relative;background-color:#fff;color:#555;margin:0 -1px 0 0}.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:7px;content:"\e007"}.woocommerce_page_wc-settings h4.wc-settings-sub-title{font-size:1.2em}@media only screen and (max-width:900px){#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap{padding-left:35px}#woocommerce-coupon-data .wc-tabs-back,#woocommerce-product-data .wc-tabs-back{position:absolute;top:0;left:0;bottom:0;width:28px;border-right:1px solid #DFDFDF}#woocommerce-product-data ul.product_data_tabs,.woocommerce ul.wc-tabs{width:28px;margin-left:-35px}#woocommerce-product-data ul.product_data_tabs li a,.woocommerce ul.wc-tabs li a{overflow:hidden;white-space:nowrap}}#woocommerce-coupon-data .inside,#woocommerce-order-data .inside,#woocommerce-order-downloads .inside,#woocommerce-product-data .inside,#woocommerce-product-type-options .inside{padding:0;margin:0}.panel,.woocommerce_options_panel{padding:9px;color:#555}.panel,.woocommerce_page_settings .woocommerce_options_panel{padding:0}#woocommerce-product-specs .inside,#woocommerce-product-type-options .panel{padding:9px;margin:0}#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,table.woocommerce_variable_attributes .checkbox{width:auto;vertical-align:middle;margin:7px 0}.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}.woocommerce_options_panel .downloadable_files table td,.woocommerce_variations .downloadable_files table td{vertical-align:middle!important;padding:4px 0 4px 7px;position:relative}.woocommerce_options_panel .downloadable_files table td:last-child,.woocommerce_variations .downloadable_files table td:last-child{padding-right:7px}.woocommerce_options_panel .downloadable_files table td input.input_text,.woocommerce_variations .downloadable_files table td input.input_text{width:100%;float:none;margin:1px 0}.woocommerce_options_panel .downloadable_files table td .upload_file_button,.woocommerce_variations .downloadable_files table td .upload_file_button{float:right;width:auto;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}.woocommerce_options_panel .downloadable_files table td .delete:before,.woocommerce_variations .downloadable_files table td .delete: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:"\e001";content:"\e013";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 th.sort,.woocommerce_variations .downloadable_files table th.sort{width:17px;padding:0}.woocommerce_options_panel .downloadable_files table td.sort,.woocommerce_variations .downloadable_files table td.sort{padding:0 8px;cursor:move;background:#f9f9f9;text-align:center;vertical-align:middle}.woocommerce_options_panel .downloadable_files table td.sort:before,.woocommerce_variations .downloadable_files table td.sort:before{content:"\e032";font-family:WooCommerce;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_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 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}.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{vertical-align:top;height:3.5em;line-height:1.5em}.woocommerce_options_panel input[type=email],.woocommerce_options_panel input[type=number],.woocommerce_options_panel input[type=text]{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=email].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=text].short{width:25%}.woocommerce_options_panel .sized{width:auto!important;margin-right:6px}.woocommerce_options_panel .options_group{border-top:1px solid #fff;border-bottom:1px solid #DFDFDF}.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 input{margin-right:.2%;width:8.2%}.woocommerce_options_panel .dimensions_field .wrap .last{margin-right:0}#woocommerce-product-data input.dp-applied{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 #DFDFDF;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,.wc-metaboxes-wrapper .toolbar .link_all_variations{float:right;margin-left:5px}.wc-metaboxes-wrapper p.toolbar{overflow:hidden;zoom:1}.wc-metaboxes-wrapper .fr,.wc-metaboxes-wrapper button.add_attribute,.wc-metaboxes-wrapper button.add_variable_attribute,.wc-metaboxes-wrapper select.attribute_taxonomy{float:right;margin:0 0 0 6px}.wc-metaboxes-wrapper .wc-metaboxes{border-bottom:1px solid #DFDFDF;padding:0 12px}.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:1px solid #dfdfdf;margin:9px 0!important;-moz-border-radius-topleft:3px;-moz-border-radius-topright:3px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.wc-metaboxes-wrapper .wc-metabox .handlediv:before{line-height:.5!important}.wc-metaboxes-wrapper .wc-metabox.closed{-moz-border-radius:3px;-webkit-border-radius:3px;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:6px!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}.wc-metaboxes-wrapper .wc-metabox h3 button{float:right}.wc-metaboxes-wrapper .wc-metabox h3 strong{font-weight:400;line-height:24px}.wc-metaboxes-wrapper .wc-metabox h3 select{font-family:sans-serif}.wc-metaboxes-wrapper .wc-metabox h3 .handlediv{background-position:6px 5px!important;display:none;height:24px}.wc-metaboxes-wrapper .wc-metabox h3.fixed{cursor:pointer!important}.wc-metaboxes-wrapper .wc-metabox h3:hover .handlediv{display:block}.wc-metaboxes-wrapper .wc-metabox table{width:100%;position:relative;background:#fff;padding:3px}.wc-metaboxes-wrapper .wc-metabox table td{text-align:left;padding:6px;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 .chosen-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}.wc-metaboxes-wrapper .close_all,.wc-metaboxes-wrapper .expand_all{float:right;margin-left:14px;line-height:22px;text-decoration:none}.wc-metaboxes-wrapper .close_all:before,.wc-metaboxes-wrapper .expand_all:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:7px;content:"\e036";font-size:.8em;color:#999}.wc-metaboxes-wrapper .expand_all:before{content:"\e035"}#variable_product_options .woocommerce_variation table{background:#fafafa;border-top:1px solid #eee;padding:6px}#variable_product_options .woocommerce_variation table td input{min-width:inherit!important}#variable_product_options .woocommerce_variation table td.dimensions_field input{width:32%;margin-right:2%}#variable_product_options .woocommerce_variation table td.dimensions_field .last{margin-right:0}#variable_product_options .woocommerce_variation table td.options{width:150px}#variable_product_options .woocommerce_variation table td.options label{margin-bottom:6px}#variable_product_options .woocommerce_variation table td.data{padding:0 0 0 12px}#variable_product_options .woocommerce_variation table td.data table.data_table{width:100%;padding:0 12px 6px;background:#fff;border:1px solid #dfdfdf;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#variable_product_options .woocommerce_variation table td.data table.data_table td{width:50%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#variable_product_options .woocommerce_variation table td.data table.data_table:before{content:"";display:block;position:absolute;top:33px;left:0;margin:0 0 0 -1px;border:7px solid #dfdfdf;border-color:transparent transparent transparent #dfdfdf}#variable_product_options .woocommerce_variation table td.data table.data_table:after{content:"";display:block;position:absolute;top:34px;left:0;margin:0 0 0 -1px;border:6px solid #fafafa;border-color:transparent transparent transparent #fafafa}#variable_product_options .woocommerce_variation table td.upload_image{white-space:nowrap;width:75px}#variable_product_options .woocommerce_variation table td.upload_image img{float:none;width:73px;border:1px solid #dfdfdf}#variable_product_options .woocommerce_variation table td.upload_image .button{margin:0;padding:4px 10px;width:auto;float:none;vertical-align:middle}#variable_product_options .woocommerce_variation table td.upload_image .upload_image_button{display:block;position:relative}#variable_product_options .woocommerce_variation table td.upload_image .upload_image_button .overlay{display:none;width:75px;height:75px;position:absolute;top:0;left:0;margin:0;padding:0;opacity:.5;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAXklEQVQYGW2OUQrAMAhDFy8+dnKnwiuh2I+aJulDZebDkfSie1b28Q7EXWrfvSm60RQnkQUC8ja7owpmL6d4GdDZ0cNNHyIhZEj4QYCxze6orsluAh8AnR0xKPR07weXJi8JGd3qqwAAAABJRU5ErkJggg==) center center no-repeat #eee}#variable_product_options .woocommerce_variation table td.upload_image .upload_image_button:hover .overlay{display:block}#variable_product_options .woocommerce_variation table td.upload_image .upload_image_button.remove .overlay{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAWElEQVQYGY2OUQ6AMAxCZdm9jSev65K3YKNm+6EFBlVEHDxJJ3Pi0C72xlBNyTs3jU7wEUTTIB51GCp2CL8HLpHEdaOLb/N2dfuq9NT0zOo/M9q6EaImsd/uViMLVuD4KAAAAABJRU5ErkJggg==) center center no-repeat #eee}#variable_product_options .woocommerce_variation table .cancel_sale_schedule,#variable_product_options .woocommerce_variation table .sale_schedule{float:right}#variable_product_options .woocommerce_variation table tr.sale_price_dates_fields td{padding-right:24px;position:relative}#variable_product_options .woocommerce_variation table tr.sale_price_dates_fields td img{position:absolute;right:0;bottom:0;padding:5px 0;margin:0 0 6px}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#464646}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#464646}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#464646}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#464646}#tiptip_content,.chart-tooltip,.wc_error_tip{font-size:11px;color:#fff;padding:.5em;background:#464646;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.1);box-shadow:1px 1px 3px rgba(0,0,0,.1);text-align:center;max-width:150px}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{background:#888;padding:1px}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}.wc_error_tip{background:#d82223;max-width:20em;white-space:normal;position:absolute;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 h3.stats_range,.woocommerce-reports-wrap .postbox h3.stats_range{padding:0!important;border-bottom-color:#dfdfdf}.woocommerce-reports-wide .postbox h3.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 h3.stats_range .export_csv:before,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"\e00a";margin-right:4px}.woocommerce-reports-wide .postbox h3.stats_range ul,.woocommerce-reports-wrap .postbox h3.stats_range ul{list-style:none;margin:0;padding:0;zoom:1;background:#f5f5f5}.woocommerce-reports-wide .postbox h3.stats_range ul:after,.woocommerce-reports-wide .postbox h3.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 h3.stats_range ul:after,.woocommerce-reports-wrap .postbox h3.stats_range ul:after{clear:both}.woocommerce-reports-wide .postbox h3.stats_range ul li,.woocommerce-reports-wrap .postbox h3.stats_range ul li{float:left;margin:0;padding:0;line-height:26px}.woocommerce-reports-wide .postbox h3.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 h3.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 h3.stats_range ul li.active a,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active a{color:#777}.woocommerce-reports-wide .postbox h3.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 h3.stats_range ul li.custom div,.woocommerce-reports-wide .postbox h3.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 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 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 .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:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9)) #fff;background:-webkit-linear-gradient(bottom,#ececec,#f9f9f9) #fff;background:-moz-linear-gradient(bottom,#ececec,#f9f9f9) #fff;background:-o-linear-gradient(bottom,#ececec,#f9f9f9) #fff;background:linear-gradient(to top,#ececec,#f9f9f9) #fff}.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:7px;content:"\e035";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 .chosen-container,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section .chosen-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 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.count,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.count{background:#f5f5f5}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name{padding-right:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.sparkline{vertical-align:middle}.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 table tr.active td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr.active td{background:#f5f5f5}.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: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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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: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;line-height:1.85}.woocommerce-reports-wide .column-wc_actions a.edit:after,.woocommerce-reports-wrap .column-wc_actions a.edit:after{content:"\e01c"}.woocommerce-reports-wide .column-wc_actions a.view:after,.woocommerce-reports-wrap .column-wc_actions a.view:after{content:"\e010"}.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}form.report_filters div,form.report_filters input,form.report_filters label,form.report_filters p{vertical-align:middle}.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}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}.chosen-container-single .chosen-single{margin-top:1px}.chosen-container-single .chosen-single div b{background:url(../images/chosen-sprite.png) 0 4px no-repeat!important}.chosen-container-active .chosen-single-with-drop div b{background-position:-18px 2px!important}.chosen-container-single .chosen-search input{line-height:13px;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{width:100%!important}.chosen-container-multi .chosen-choices .search-field input{height:21px!important}.woocommerce_options_panel .chosen-container-multi{width:50%!important;float:left}.woocommerce_options_panel .chosen-container-multi .search-field{min-width:50%}.woocommerce_options_panel .chosen-container-multi .search-field input{min-width:100%}@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}}@media only screen and (max-width:900px){#woocommerce-product-data .wc-tabs-back,#woocommerce-product-data ul.product_data_tabs{width:40px}#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:98%}#woocommerce-product-data ul.product_data_tabs li a{position:relative;text-indent:-999px;padding:10px}#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:40px;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}#woocommerce-product-data .checkbox{width:25px}}.woocommerce-checkout .form-row .chosen-container{width:100%!important}.woocommerce-checkout .form-row .chosen-container-single .chosen-single{height:28px;line-height:29px}.woocommerce-checkout .form-row .chosen-container-single .chosen-single div b{background:url(../images/chosen-sprite.png) 0 3px no-repeat!important}.woocommerce-checkout .form-row .chosen-container-active .chosen-single-with-drop div b{background-position:-18px 4px!important}.woocommerce-checkout .form-row .chosen-container-single .chosen-search input{line-height:13px;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.woocommerce-checkout .form-row .chosen-container .chosen-drop{width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.woocommerce-checkout .form-row .chosen-container-single .chosen-single div b{background-image:url(../images/chosen-sprite@2x.png)!important;background-position:0 5px!important;background-repeat:no-repeat!important;background-size:52px 37px!important}.woocommerce-checkout .form-row .chosen-container-active .chosen-single-with-drop div b{background-position:-18px 5px!important}}.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:26px;border:1px solid #aaa;border-radius:5px;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:26px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;right:26px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover,.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:url(../images/chosen-sprite.png) 100% -20px no-repeat #fff;background:url(../images/chosen-sprite.png) 100% -20px no-repeat,linear-gradient(#eee 1%,#fff 15%);font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:5px;height:15px;outline:0;border:0!important;background:0 0!important;box-shadow:none;color:#666;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;border:1px solid #aaa;border-radius:3px;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close,.chosen-disabled .chosen-single{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl .chosen-drop,.chosen-rtl.chosen-container-single-nosearch .chosen-search{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:url(../images/chosen-sprite.png) -30px -20px no-repeat #fff;background:url(../images/chosen-sprite.png) -30px -20px no-repeat,linear-gradient(#eee 1%,#fff 15%);direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(../images/chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}.chosen-container-single .chosen-single abbr{top:8px}.wc-backbone-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:160000}.wc-backbone-modal *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.wc-backbone-modal .wc-backbone-modal-content{position:absolute;top:50%;left:50%;width:500px;background:#fff;margin:-150px 0 0 -250px}.wc-backbone-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wc-backbone-modal-main{padding-bottom:50px}.wc-backbone-modal-main article,.wc-backbone-modal-main header{display:block;position:relative;padding:4px 16px}.wc-backbone-modal-main header{border-bottom:1px solid #ddd}.wc-backbone-modal-main article{padding:10px 16px}.wc-backbone-modal-main article .pagination{padding:10px 0 0;text-align:center}.wc-backbone-modal-main h1{font-size:22px;font-weight:200;line-height:45px;margin:0}.wc-backbone-modal-main footer{position:absolute;left:0;right:0;bottom:0;height:30px;z-index:100;padding:10px 0;border:0 solid #dfdfdf;border-width:1px 0 0;box-shadow:0 -4px 4px -4px rgba(0,0,0,.1)}.wc-backbone-modal-main footer .inner{padding:0 10px;text-align:right} \ No newline at end of file +@charset "UTF-8";.clear{clear:both}.nobr{white-space:nowrap}@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}.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 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}.woocommerce-message{position:relative;border-left-color:#cc99c2!important;overflow:hidden}.woocommerce-message a.button-primary,.woocommerce-message button.button-primary{background:#cc99c2;border-color:#b366a4;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none!important}.woocommerce-message a.button-primary:hover,.woocommerce-message button.button-primary:hover{background:#bb77ae;border-color:#aa559a;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 0 rgba(0,0,0,.15)}.woocommerce-message a.button-primary:active,.woocommerce-message button.button-primary:active{background:#aa559a;border-color:#aa559a}.woocommerce-message a.docs,.woocommerce-message a.skip{opacity:.5}.woocommerce-message .twitter-share-button{margin-top:-3px;margin-left:3px;vertical-align:middle}#variable_product_options #message{margin:10px}.wrap.woocommerce div.error,.wrap.woocommerce div.updated{margin-top:10px}mark.amount{background:0 0;color:inherit}.postbox input:invalid,.woocommerce input:invalid{border:1px solid #cc010b;background:#ffebe8}.simplify-commerce-banner{overflow:hidden}.simplify-commerce-banner img{float:right;padding:15px 0;margin-left:1em;width:200px}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}table.wc_status_table td:first-child{width:20%}table.wc_status_table td{padding:6px 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}#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:180%}#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{clear:left}#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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 label{clear:left}#woocommerce-fields-bulk.inline-edit-col .inline-edit-group div.alignright,#woocommerce-fields-bulk.inline-edit-col .inline-edit-group label{clear:none;width:49%;margin:.2em 0}#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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}#woocommerce-fields-bulk.inline-edit-col .height,#woocommerce-fields-bulk.inline-edit-col .length,#woocommerce-fields-bulk.inline-edit-col .width{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:32%}.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_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;-webkit-border-radius:100%;border-radius:100%;height:24px;width:24px!important;display:inline-block}.button.wc-reload: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:22px}.tablenav .actions{overflow:visible}.alignleft.actions .chosen-container-single{display:inline-block;vertical-align:middle}#woocommerce-order-data .handlediv,#woocommerce-order-data h3.hndle{display:none}#woocommerce-order-data .inside{display:block!important}#order_data{padding:23px 24px 12px}#order_data h2{margin:0;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;font-size:21px;font-weight:400;line-height:1.2;text-shadow:1px 1px 1px #fff;padding:0}#order_data h4{color:#333;margin:1.33em 0 0}#order_data p{color:#777}#order_data p.order_number{margin:0;font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:400;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 #order_status_chosen .chosen-search{display:none}#order_data .order_data_column .form-field .chosen-container{width:100%!important}#order_data .order_data_column .form-field .date-picker-field{width:50%}#order_data .order_data_column .form-field .hour,#order_data .order_data_column .form-field .minute{width:2.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 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{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;overflow:hidden;zoom:1;padding-right:1px}#order_data a.edit_address{opacity:.4}#order_data a.edit_address:focus,#order_data a.edit_address:hover{opacity:1}.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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;float:right}.order_actions li#actions select{width:225px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:12px;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-bulk-actions{background:#fefefe;vertical-align:top;border-top:0}#woocommerce-order-items .wc-order-bulk-actions select{vertical-align:top}#woocommerce-order-items .wc-order-bulk-actions p.bulk-actions{float:left}#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 .chosen-container{vertical-align:top}#woocommerce-order-items .wc-order-add-item .add_item_id .search-field input,#woocommerce-order-items .wc-order-add-item .chosen-container .search-field input{min-width:100px}#woocommerce-order-items .wc-order-add-item .chosen-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}#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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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{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_wrapper{margin:0;overflow:auto}.woocommerce_order_items_wrapper table.woocommerce_order_items{width:100%;background:#fff}.woocommerce_order_items_wrapper table.woocommerce_order_items thead th{background:#f8f8f8;padding:8px;font-size:11px;text-align:left}.woocommerce_order_items_wrapper table.woocommerce_order_items thead th:last-child{padding-right:12px}.woocommerce_order_items_wrapper table.woocommerce_order_items thead th:first-child{padding-left:12px}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th,.woocommerce_order_items_wrapper table.woocommerce_order_items td{padding:8px;text-align:left;line-height:26px;vertical-align:top;border-bottom:1px dotted #ececec}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,.woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{width:100%}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th select,.woocommerce_order_items_wrapper table.woocommerce_order_items td select{width:50%}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th input,.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th textarea,.woocommerce_order_items_wrapper table.woocommerce_order_items td input,.woocommerce_order_items_wrapper table.woocommerce_order_items td textarea{font-size:14px;padding:4px;color:#555}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items td:last-child{padding-right:12px}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody th:first-child,.woocommerce_order_items_wrapper table.woocommerce_order_items td:first-child{padding-left:12px}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:last-child td{border-bottom:1px solid #dfdfdf}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody tr:first-child td{border-top:8px solid #f8f8f8}.woocommerce_order_items_wrapper table.woocommerce_order_items tbody#order_line_items tr:first-child td{border-top:none}.woocommerce_order_items_wrapper table.woocommerce_order_items td.check-column{padding:8px 8px 8px 12px;width:1%}.woocommerce_order_items_wrapper table.woocommerce_order_items .item{min-width:200px}.woocommerce_order_items_wrapper table.woocommerce_order_items .center,.woocommerce_order_items_wrapper table.woocommerce_order_items .variation-id{text-align:center}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class{text-align:right}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost label,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax label,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label{white-space:nowrap;color:#999;font-size:.833em}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax label input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class label input{display:inline}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax input,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class input{width:70px;vertical-align:middle;text-align:right}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost select,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost select,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax select,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity select,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax select,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class select{width:85px;height:26px;vertical-align:middle;font-size:1em}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input{display:block;background:#fff;border:1px solid #ddd;box-shadow:inset 0 1px 2px rgba(0,0,0,.07);margin:1px;width:70px}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input input,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input input{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:0;box-shadow:none;margin:0;color:#555;background:0 0}.woocommerce_order_items_wrapper table.woocommerce_order_items .cost .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_cost .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .line_tax .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax .split-input input:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items .tax_class .split-input input:last-child{color:#bbb;border-top:1px dashed #ddd}.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity{text-align:center}.woocommerce_order_items_wrapper table.woocommerce_order_items .quantity input{text-align:center;width:50px}.woocommerce_order_items_wrapper table.woocommerce_order_items span.subtotal{opacity:.5}.woocommerce_order_items_wrapper table.woocommerce_order_items td.tax_class,.woocommerce_order_items_wrapper table.woocommerce_order_items th.tax_class{text-align:left}.woocommerce_order_items_wrapper table.woocommerce_order_items .calculated{border-color:#ae8ca2;border-style:dotted}.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{width:100%}.woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta,.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta{margin:.5em 0 0}.woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr th,.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_wrapper table.woocommerce_order_items table.display_meta tr td,.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_wrapper table.woocommerce_order_items table.display_meta tr td input,.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_wrapper table.woocommerce_order_items table.display_meta tr td textarea,.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_wrapper table.woocommerce_order_items table.display_meta tr td input:focus+textarea,.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td input:focus+textarea{border-top-color:#999}.woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p,.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p{margin:0 0 .5em;line-height:1.5em}.woocommerce_order_items_wrapper table.woocommerce_order_items table.display_meta tr td p:last-child,.woocommerce_order_items_wrapper table.woocommerce_order_items table.meta tr td p:last-child{margin:0}.woocommerce_order_items_wrapper table.woocommerce_order_items .thumb{text-align:left;width:27px}.woocommerce_order_items_wrapper table.woocommerce_order_items .thumb a{display:block}.woocommerce_order_items_wrapper table.woocommerce_order_items .thumb img{padding:1px;margin:0;border:1px solid #dfdfdf;vertical-align:middle;width:21px;height:21px}.woocommerce_order_items_wrapper table.woocommerce_order_items .refund_by{border-bottom:1px dotted #999}.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:14px;margin:6px}.woocommerce_order_items_wrapper table.woocommerce_order_items tr.fee .thumb div: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:"";color:#bbb}.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:14px;margin:6px}.woocommerce_order_items_wrapper table.woocommerce_order_items tr.refund .thumb div: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:"";color:#bbb}.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:14px;margin:6px}.woocommerce_order_items_wrapper table.woocommerce_order_items tr.shipping .thumb div: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:"";color:#bbb}.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{white-space:nowrap}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax,.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax{padding:8px 16px 8px 8px}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax,.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;font-size:12px;visibility:hidden;float:right;margin:2px -16px 0 0}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:before,.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax: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:"";color:#fff;background-color:#000;-webkit-border-radius:100%;border-radius:100%;border:1px solid #000;box-shadow:0 1px 2px rgba(0,0,0,.2)}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax .delete-order-tax:hover:before,.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax .delete-order-tax:hover:before{border-color:#a00;background-color:#a00}.woocommerce_order_items_wrapper table.woocommerce_order_items td.line_tax:hover .delete-order-tax,.woocommerce_order_items_wrapper table.woocommerce_order_items th.line_tax:hover .delete-order-tax{visibility:visible}.woocommerce_order_items_wrapper table.woocommerce_order_items small.refunded{display:block;color:#a00;white-space:nowrap}.wc-order-items-editable .edit-order-item{text-indent:-9999px;position:relative;height:1em;width:1em;display:inline-block;margin:0 .5em 0 0}.wc-order-items-editable .edit-order-item: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:"";content:"\e603";color:#999}.wc-order-items-editable .edit-order-item:hover:before{color:#555}.wc-order-items-editable .delete-order-item,.wc-order-items-editable .delete_refund{text-indent:-9999px;position:relative;height:1em;width:1em;display:inline-block;margin:0}.wc-order-items-editable .delete-order-item:before,.wc-order-items-editable .delete_refund: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:"";content:"\e013";color:#999}.wc-order-items-editable .delete-order-item:hover:before,.wc-order-items-editable .delete_refund:hover:before{color:#a00}.wc-order-items-editable .wc-order-edit-line-item-actions{width:2.5em;text-align:right}.wc-order-items-editable .wc-order-totals .wc-order-edit-line-item-actions{width:1.5em}.wc-order-items-editable .wc-order-totals .edit-order-item{margin: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 .chosen-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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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}.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{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:16px}.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{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:16px}.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 .complete:after,.order_actions .processing:after,.order_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;line-height:1.85}.order_actions .processing:after{content:"\e00f"}.order_actions .complete:after{content:"\e017"}.order_actions .view:after{content:"\e010"}.user_actions .edit,.user_actions .link,.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 .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;line-height:1.85}.user_actions .edit:after{content:"\e603"}.user_actions .link:after{content:"\e00d"}.user_actions .view:after{content:"\e010"}.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{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}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 p.meta .exact-date{border-bottom:1px dotted #999}ul.order_notes li a.delete_note{color:#a00}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:#d7cad2}ul.order_notes li.customer-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 .row-actions{color:#999}table.wp-list-table td.column-thumb img{margin:0;vertical-align:middle;width:auto;height:auto;max-width:40px;max-height:40px}table.wp-list-table span.na{color:#999}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: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.wc-featured{margin:0;cursor:pointer}table.wp-list-table span.wc-featured:before{content:"\e020"}table.wp-list-table span.wc-featured.not-featured:before{content:"\e021"}table.wp-list-table td.column-featured span.wc-featured{font-size:1.2em}table.wp-list-table span.wc-type{margin:0}table.wp-list-table span.wc-type:before{content:"\e01d"}table.wp-list-table span.product-type{display:block;text-indent:-9999px;position:relative;height:1em;width:1em;font-size:1.2em}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.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}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 td,table.wc_tax_rates td{padding:0;border-right:1px solid #DFDFDF;border-bottom:1px solid #DFDFDF;border-top:0;background:#fff}table.wc_input_table td input[type=number],table.wc_input_table td input[type=text],table.wc_tax_rates td input[type=number],table.wc_tax_rates td input[type=text]{width:100%;padding:5px 7px;margin:0;border:0;background:0 0}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}table.wc_input_table td.sort,table.wc_tax_rates td.sort{padding:0 4px;cursor:move;background:#f9f9f9;text-align:center;vertical-align:middle}table.wc_input_table td.sort:before,table.wc_tax_rates td.sort:before{content:"\e032";font-family:WooCommerce;text-align:center;line-height:1;color:#999;display:block;width:17px;float:left;height:100%}table.wc_input_table td.sort:hover:before,table.wc_tax_rates 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 tfoot th,table.wc_tax_rates tfoot th{padding-left:20px;padding-right:20px}table.wc_input_table tr:last-child td,table.wc_tax_rates tr:last-child td{border-bottom:0}table.wc_gateways,table.wc_shipping{position:relative}table.wc_gateways td,table.wc_shipping td{vertical-align:middle;cursor:move;padding:7px}table.wc_gateways th,table.wc_shipping th{padding:9px 7px!important;vertical-align:middle}table.wc_gateways td.name,table.wc_shipping td.name{font-weight:700}table.wc_gateways .settings,table.wc_shipping .settings{text-align:right}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_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_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}img.help_tip{vertical-align:middle;margin:0 0 0 9px}.postbox img.help_tip{margin-top:-4px}.status-disabled,.status-enabled{font-size:1.4em;display:block;text-indent:-9999px;position:relative;height:1em;width:1em}.status-enabled: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:"";color:#ad74a2}.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,.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 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 .chosen-container{vertical-align:top;margin-bottom:3px}.woocommerce table.form-table table.widefat th{padding-right:inherit}.woocommerce table.form-table th img.help_tip{margin:0 -24px 0 0;float:right}.woocommerce table.form-table fieldset{margin-top:4px}.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 .color_box{border:1px solid #ccc;box-shadow:1px 1px 3px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.2);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.2);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;padding:4px 6px;float:left;width:90px;margin:0 10px 0 0}.woocommerce table.form-table .color_box strong{text-align:left;display:block;padding:0 0 2px;font-size:.92em}.woocommerce table.form-table .color_box strong img{float:right;margin:1px 0 0}.woocommerce table.form-table .color_box input.colorpick{width:100%;margin:0;font-family:monospace;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.woocommerce table.form-table .color_box .iris-picker{margin:15px 0 0 -7px}.woocommerce table.form-table .color_box_clear{display:block;clear:both;padding-bottom:10px}.woocommerce table.form-table .iris-picker{z-index:100;position:absolute;display:none;border:1px solid #ccc;box-shadow:1px 1px 3px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.2);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.2);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.woocommerce table.form-table .iris-picker .ui-slider{border:0!important;background:none!important;margin:0!important;width:auto!important;height:auto!important}.woocommerce table.form-table .iris-picker .ui-slider .ui-slider-handle{margin-bottom:0!important}.woocommerce table.form-table .image_width_settings{vertical-align:middle}.woocommerce table.form-table .image_width_settings label{margin-left:10px}.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;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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: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: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.view{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.view: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:"";background-color:#000;color:#fff}#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: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:"";color:#fff;background-color:#000;-webkit-border-radius:100%;border-radius:100%;box-shadow:0 1px 2px rgba(0,0,0,.2)}#woocommerce-product-images .inside #product_images_container ul ul.actions li a.delete:hover:before{background-color:#a00}#woocommerce-product-images .inside #product_images_container ul li:hover ul.actions{display:block}#woocommerce-product-data h3.hndle{padding:10px}#woocommerce-product-data h3.hndle span{display:block;vertical-align:middle;line-height:24px}#woocommerce-product-data h3.hndle span span{display:inline;line-height:inherit;vertical-align:baseline}#woocommerce-product-data h3.hndle label{padding-right:1em;font-size:12px;vertical-align:baseline}#woocommerce-product-data h3.hndle label:first-child{margin-right:1em;border-right:1px solid #dfdfdf}#woocommerce-product-data h3.hndle input,#woocommerce-product-data h3.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;padding-left:153px}#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:right;width:100%}#woocommerce-coupon-data .wc-metaboxes-wrapper .wc-metaboxes,#woocommerce-coupon-data .wc-metaboxes-wrapper p.toolbar,#woocommerce-coupon-data .woocommerce_options_panel .wc-metaboxes,#woocommerce-coupon-data .woocommerce_options_panel p.toolbar,#woocommerce-product-data .wc-metaboxes-wrapper .wc-metaboxes,#woocommerce-product-data .wc-metaboxes-wrapper p.toolbar,#woocommerce-product-data .woocommerce_options_panel .wc-metaboxes,#woocommerce-product-data .woocommerce_options_panel p.toolbar{padding-left:12px!important;padding-right:20px!important}#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 .wc-tabs-back,#woocommerce-product-data .wc-tabs-back{position:absolute;top:0;left:0;bottom:0;background:#f5f5f5;width:145px;border-right:1px solid #DFDFDF}#woocommerce-coupon-data ul.wc-tabs,#woocommerce-product-data ul.wc-tabs,.woocommerce ul.wc-tabs{background:#f5f5f5;line-height:1em;float:left;width:145px;margin:0 0 0 -153px;position:relative;padding:0 0 10px}#woocommerce-coupon-data ul.wc-tabs li,#woocommerce-product-data ul.wc-tabs li,.woocommerce ul.wc-tabs li{display:block;padding:0;margin:0}#woocommerce-coupon-data ul.wc-tabs li a,#woocommerce-product-data ul.wc-tabs li a,.woocommerce ul.wc-tabs li a{padding:10px;line-height:18px!important;margin:0;display:block;background:#f5f5f5;text-decoration:none;border-bottom:1px solid #f5f5f5;border-top:1px solid #eaeaea}#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:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:7px;content:""}#woocommerce-coupon-data ul.wc-tabs li:first-child a,#woocommerce-product-data ul.wc-tabs li:first-child a,.woocommerce ul.wc-tabs li:first-child a{border-top:0!important}#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:"\e006"}#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:"\e02c"}#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{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:"\e00d"}#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:"\e02b"}#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{content:"\e01c"}#woocommerce-coupon-data ul.wc-tabs li.variation_options a:before,#woocommerce-product-data ul.wc-tabs li.variation_options a:before,.woocommerce ul.wc-tabs li.variation_options a:before{content:"\e003"}#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{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{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{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{border-color:#DFDFDF;position:relative;background-color:#fff;color:#555;margin:0 -1px 0 0}.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:7px;content:""}.woocommerce_page_wc-settings h4.wc-settings-sub-title{font-size:1.2em}@media only screen and (max-width:900px){#woocommerce-coupon-data .panel-wrap,#woocommerce-product-data .panel-wrap{padding-left:35px}#woocommerce-coupon-data .wc-tabs-back,#woocommerce-product-data .wc-tabs-back{position:absolute;top:0;left:0;bottom:0;width:28px;border-right:1px solid #DFDFDF}#woocommerce-product-data ul.product_data_tabs,.woocommerce ul.wc-tabs{width:28px;margin-left:-35px}#woocommerce-product-data ul.product_data_tabs li a,.woocommerce ul.wc-tabs li a{overflow:hidden;white-space:nowrap}}#woocommerce-coupon-data .inside,#woocommerce-order-data .inside,#woocommerce-order-downloads .inside,#woocommerce-product-data .inside,#woocommerce-product-type-options .inside{padding:0;margin:0}.panel,.woocommerce_options_panel{padding:9px;color:#555}.panel,.woocommerce_page_settings .woocommerce_options_panel{padding:0}#woocommerce-product-specs .inside,#woocommerce-product-type-options .panel{padding:9px;margin:0}#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,table.woocommerce_variable_attributes .checkbox{width:auto;vertical-align:middle;margin:7px 0}.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}.woocommerce_options_panel .downloadable_files table td,.woocommerce_variations .downloadable_files table td{vertical-align:middle!important;padding:4px 0 4px 7px;position:relative}.woocommerce_options_panel .downloadable_files table td:last-child,.woocommerce_variations .downloadable_files table td:last-child{padding-right:7px}.woocommerce_options_panel .downloadable_files table td input.input_text,.woocommerce_variations .downloadable_files table td input.input_text{width:100%;float:none;margin:1px 0}.woocommerce_options_panel .downloadable_files table td .upload_file_button,.woocommerce_variations .downloadable_files table td .upload_file_button{float:right;width:auto;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}.woocommerce_options_panel .downloadable_files table td .delete:before,.woocommerce_variations .downloadable_files table td .delete: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:"";content:"\e013";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 th.sort,.woocommerce_variations .downloadable_files table th.sort{width:17px;padding:0}.woocommerce_options_panel .downloadable_files table td.sort,.woocommerce_variations .downloadable_files table td.sort{padding:0 8px;cursor:move;background:#f9f9f9;text-align:center;vertical-align:middle}.woocommerce_options_panel .downloadable_files table td.sort:before,.woocommerce_variations .downloadable_files table td.sort:before{content:"\e032";font-family:WooCommerce;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_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 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}.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{vertical-align:top;height:3.5em;line-height:1.5em}.woocommerce_options_panel input[type=email],.woocommerce_options_panel input[type=number],.woocommerce_options_panel input[type=text]{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=email].short,.woocommerce_options_panel input[type=number].short,.woocommerce_options_panel input[type=text].short{width:25%}.woocommerce_options_panel .sized{width:auto!important;margin-right:6px}.woocommerce_options_panel .options_group{border-top:1px solid #fff;border-bottom:1px solid #DFDFDF}.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 input{margin-right:.2%;width:8.2%}.woocommerce_options_panel .dimensions_field .wrap .last{margin-right:0}#woocommerce-product-data input.dp-applied{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 #DFDFDF;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,.wc-metaboxes-wrapper .toolbar .link_all_variations{float:right;margin-left:5px}.wc-metaboxes-wrapper p.toolbar{overflow:hidden;zoom:1}.wc-metaboxes-wrapper .fr,.wc-metaboxes-wrapper button.add_attribute,.wc-metaboxes-wrapper button.add_variable_attribute,.wc-metaboxes-wrapper select.attribute_taxonomy{float:right;margin:0 0 0 6px}.wc-metaboxes-wrapper .wc-metaboxes{border-bottom:1px solid #DFDFDF;padding:0 12px}.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:1px solid #dfdfdf;margin:9px 0!important;-moz-border-radius-topleft:3px;-moz-border-radius-topright:3px;-webkit-border-top-left-radius:3px;-webkit-border-top-right-radius:3px;border-top-left-radius:3px;border-top-right-radius:3px}.wc-metaboxes-wrapper .wc-metabox .handlediv:before{line-height:.5!important}.wc-metaboxes-wrapper .wc-metabox.closed{-moz-border-radius:3px;-webkit-border-radius:3px;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:6px!important;font-size:1em!important;overflow:hidden;zoom:1;cursor:move}.wc-metaboxes-wrapper .wc-metabox h3 button{float:right}.wc-metaboxes-wrapper .wc-metabox h3 strong{font-weight:400;line-height:24px}.wc-metaboxes-wrapper .wc-metabox h3 select{font-family:sans-serif}.wc-metaboxes-wrapper .wc-metabox h3 .handlediv{background-position:6px 5px!important;display:none;height:24px}.wc-metaboxes-wrapper .wc-metabox h3.fixed{cursor:pointer!important}.wc-metaboxes-wrapper .wc-metabox h3:hover .handlediv{display:block}.wc-metaboxes-wrapper .wc-metabox table{width:100%;position:relative;background:#fff;padding:3px}.wc-metaboxes-wrapper .wc-metabox table td{text-align:left;padding:6px;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 .chosen-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}.wc-metaboxes-wrapper .close_all,.wc-metaboxes-wrapper .expand_all{float:right;margin-left:14px;line-height:22px;text-decoration:none}.wc-metaboxes-wrapper .close_all:before,.wc-metaboxes-wrapper .expand_all:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:7px;content:"";font-size:.8em;color:#999}.wc-metaboxes-wrapper .expand_all:before{content:"\e035"}#variable_product_options .woocommerce_variation table{background:#fafafa;border-top:1px solid #eee;padding:6px}#variable_product_options .woocommerce_variation table td input{min-width:inherit!important}#variable_product_options .woocommerce_variation table td.dimensions_field input{width:32%;margin-right:2%}#variable_product_options .woocommerce_variation table td.dimensions_field .last{margin-right:0}#variable_product_options .woocommerce_variation table td.options{width:150px}#variable_product_options .woocommerce_variation table td.options label{margin-bottom:6px}#variable_product_options .woocommerce_variation table td.data{padding:0 0 0 12px}#variable_product_options .woocommerce_variation table td.data table.data_table{width:100%;padding:0 12px 6px;background:#fff;border:1px solid #dfdfdf;-moz-border-radius:3px;-webkit-border-radius:3px;-khtml-border-radius:3px;border-radius:3px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#variable_product_options .woocommerce_variation table td.data table.data_table td{width:50%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#variable_product_options .woocommerce_variation table td.data table.data_table:before{content:"";display:block;position:absolute;top:33px;left:0;margin:0 0 0 -1px;border:7px solid #dfdfdf;border-color:transparent transparent transparent #dfdfdf}#variable_product_options .woocommerce_variation table td.data table.data_table:after{content:"";display:block;position:absolute;top:34px;left:0;margin:0 0 0 -1px;border:6px solid #fafafa;border-color:transparent transparent transparent #fafafa}#variable_product_options .woocommerce_variation table td.upload_image{white-space:nowrap;width:75px}#variable_product_options .woocommerce_variation table td.upload_image img{float:none;width:73px;border:1px solid #dfdfdf}#variable_product_options .woocommerce_variation table td.upload_image .button{margin:0;padding:4px 10px;width:auto;float:none;vertical-align:middle}#variable_product_options .woocommerce_variation table td.upload_image .upload_image_button{display:block;position:relative}#variable_product_options .woocommerce_variation table td.upload_image .upload_image_button .overlay{display:none;width:75px;height:75px;position:absolute;top:0;left:0;margin:0;padding:0;opacity:.5;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAXklEQVQYGW2OUQrAMAhDFy8+dnKnwiuh2I+aJulDZebDkfSie1b28Q7EXWrfvSm60RQnkQUC8ja7owpmL6d4GdDZ0cNNHyIhZEj4QYCxze6orsluAh8AnR0xKPR07weXJi8JGd3qqwAAAABJRU5ErkJggg==) center center no-repeat #eee}#variable_product_options .woocommerce_variation table td.upload_image .upload_image_button:hover .overlay{display:block}#variable_product_options .woocommerce_variation table td.upload_image .upload_image_button.remove .overlay{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAWElEQVQYGY2OUQ6AMAxCZdm9jSev65K3YKNm+6EFBlVEHDxJJ3Pi0C72xlBNyTs3jU7wEUTTIB51GCp2CL8HLpHEdaOLb/N2dfuq9NT0zOo/M9q6EaImsd/uViMLVuD4KAAAAABJRU5ErkJggg==) center center no-repeat #eee}#variable_product_options .woocommerce_variation table .cancel_sale_schedule,#variable_product_options .woocommerce_variation table .sale_schedule{float:right}#variable_product_options .woocommerce_variation table tr.sale_price_dates_fields td{padding-right:24px;position:relative}#variable_product_options .woocommerce_variation table tr.sale_price_dates_fields td img{position:absolute;right:0;bottom:0;padding:5px 0;margin:0 0 6px}.tips{cursor:help;text-decoration:none}img.tips{padding:5px 0 0}#tiptip_holder{display:none;position:absolute;top:0;left:0;z-index:99999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_top #tiptip_arrow_inner{margin-top:-7px;margin-left:-6px;border-top-color:#464646}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{margin-top:-5px;margin-left:-6px;border-bottom-color:#464646}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_right #tiptip_arrow_inner{margin-top:-6px;margin-left:-5px;border-right-color:#464646}#tiptip_holder.tip_left{padding-right:5px}#tiptip_holder.tip_left #tiptip_arrow_inner{margin-top:-6px;margin-left:-7px;border-left-color:#464646}#tiptip_content,.chart-tooltip,.wc_error_tip{font-size:11px;color:#fff;padding:.5em;background:#464646;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:1px 1px 3px rgba(0,0,0,.1);-moz-box-shadow:1px 1px 3px rgba(0,0,0,.1);box-shadow:1px 1px 3px rgba(0,0,0,.1);text-align:center;max-width:150px}#tiptip_content code,.chart-tooltip code,.wc_error_tip code{background:#888;padding:1px}#tiptip_arrow,#tiptip_arrow_inner{position:absolute;border-color:transparent;border-style:solid;border-width:6px;height:0;width:0}.wc_error_tip{background:#d82223;max-width:20em;white-space:normal;position:absolute;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 h3.stats_range,.woocommerce-reports-wrap .postbox h3.stats_range{padding:0!important;border-bottom-color:#dfdfdf}.woocommerce-reports-wide .postbox h3.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 h3.stats_range .export_csv:before,.woocommerce-reports-wrap .postbox h3.stats_range .export_csv:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;content:"";margin-right:4px}.woocommerce-reports-wide .postbox h3.stats_range ul,.woocommerce-reports-wrap .postbox h3.stats_range ul{list-style:none;margin:0;padding:0;zoom:1;background:#f5f5f5}.woocommerce-reports-wide .postbox h3.stats_range ul:after,.woocommerce-reports-wide .postbox h3.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 h3.stats_range ul:after,.woocommerce-reports-wrap .postbox h3.stats_range ul:after{clear:both}.woocommerce-reports-wide .postbox h3.stats_range ul li,.woocommerce-reports-wrap .postbox h3.stats_range ul li{float:left;margin:0;padding:0;line-height:26px}.woocommerce-reports-wide .postbox h3.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 h3.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 h3.stats_range ul li.active a,.woocommerce-reports-wrap .postbox h3.stats_range ul li.active a{color:#777}.woocommerce-reports-wide .postbox h3.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 h3.stats_range ul li.custom div,.woocommerce-reports-wide .postbox h3.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 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 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 .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:-webkit-gradient(linear,left bottom,left top,from(#ececec),to(#f9f9f9)) #fff;background:-webkit-linear-gradient(bottom,#ececec,#f9f9f9) #fff;background:-moz-linear-gradient(bottom,#ececec,#f9f9f9) #fff;background:-o-linear-gradient(bottom,#ececec,#f9f9f9) #fff;background:linear-gradient(to top,#ececec,#f9f9f9) #fff}.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:7px;content:"";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 .chosen-container,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget .section .chosen-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 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.count,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.count{background:#f5f5f5}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.name,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.name{padding-right:0}.woocommerce-reports-wide .postbox .chart-widgets li.chart-widget table td.sparkline,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table td.sparkline{vertical-align:middle}.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 table tr.active td,.woocommerce-reports-wrap .postbox .chart-widgets li.chart-widget table tr.active td{background:#f5f5f5}.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: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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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: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;line-height:1.85}.woocommerce-reports-wide .column-wc_actions a.edit:after,.woocommerce-reports-wrap .column-wc_actions a.edit:after{content:"\e01c"}.woocommerce-reports-wide .column-wc_actions a.view:after,.woocommerce-reports-wrap .column-wc_actions a.view:after{content:"\e010"}.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}form.report_filters div,form.report_filters input,form.report_filters label,form.report_filters p{vertical-align:middle}.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}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}.chosen-container-single .chosen-single{margin-top:1px}.chosen-container-single .chosen-single div b{background:url(../images/chosen-sprite.png) 0 4px no-repeat!important}.chosen-container-active .chosen-single-with-drop div b{background-position:-18px 2px!important}.chosen-container-single .chosen-search input{line-height:13px;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{width:100%!important}.chosen-container-multi .chosen-choices .search-field input{height:21px!important}.woocommerce_options_panel .chosen-container-multi{width:50%!important;float:left}.woocommerce_options_panel .chosen-container-multi .search-field{min-width:50%}.woocommerce_options_panel .chosen-container-multi .search-field input{min-width:100%}@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}}@media only screen and (max-width:900px){#woocommerce-product-data .wc-tabs-back,#woocommerce-product-data ul.product_data_tabs{width:40px}#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:98%}#woocommerce-product-data ul.product_data_tabs li a{position:relative;text-indent:-999px;padding:10px}#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:40px;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}#woocommerce-product-data .checkbox{width:25px}}.woocommerce-checkout .form-row .chosen-container{width:100%!important}.woocommerce-checkout .form-row .chosen-container-single .chosen-single{height:28px;line-height:29px}.woocommerce-checkout .form-row .chosen-container-single .chosen-single div b{background:url(../images/chosen-sprite.png) 0 3px no-repeat!important}.woocommerce-checkout .form-row .chosen-container-active .chosen-single-with-drop div b{background-position:-18px 4px!important}.woocommerce-checkout .form-row .chosen-container-single .chosen-search input{line-height:13px;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.woocommerce-checkout .form-row .chosen-container .chosen-drop{width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.woocommerce-checkout .form-row .chosen-container-single .chosen-single div b{background-image:url(../images/chosen-sprite@2x.png)!important;background-position:0 5px!important;background-repeat:no-repeat!important;background-size:52px 37px!important}.woocommerce-checkout .form-row .chosen-container-active .chosen-single-with-drop div b{background-position:-18px 5px!important}}.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:26px;border:1px solid #aaa;border-radius:5px;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:26px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;right:26px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover,.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:url(../images/chosen-sprite.png) 100% -20px no-repeat #fff;background:url(../images/chosen-sprite.png) 100% -20px no-repeat,linear-gradient(#eee 1%,#fff 15%);font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:5px;height:15px;outline:0;border:0!important;background:0 0!important;box-shadow:none;color:#666;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-field .default{color:#999}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 0 3px 5px;padding:3px 20px 3px 5px;border:1px solid #aaa;border-radius:3px;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(../images/chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:none;background:0 0}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#111!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close,.chosen-disabled .chosen-single{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl .chosen-drop,.chosen-rtl.chosen-container-single-nosearch .chosen-search{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:none}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:url(../images/chosen-sprite.png) -30px -20px no-repeat #fff;background:url(../images/chosen-sprite.png) -30px -20px no-repeat,linear-gradient(#eee 1%,#fff 15%);direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span,.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container-single .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-rtl .chosen-search input[type=text]{background-image:url(../images/chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}.chosen-container-single .chosen-single abbr{top:8px}.wc-backbone-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:160000}.wc-backbone-modal *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.wc-backbone-modal .wc-backbone-modal-content{position:absolute;top:50%;left:50%;width:500px;background:#fff;margin:-150px 0 0 -250px}.wc-backbone-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wc-backbone-modal-main{padding-bottom:50px}.wc-backbone-modal-main article,.wc-backbone-modal-main header{display:block;position:relative;padding:4px 16px}.wc-backbone-modal-main header{border-bottom:1px solid #ddd}.wc-backbone-modal-main article{padding:10px 16px}.wc-backbone-modal-main article .pagination{padding:10px 0 0;text-align:center}.wc-backbone-modal-main h1{font-size:22px;font-weight:200;line-height:45px;margin:0}.wc-backbone-modal-main footer{position:absolute;left:0;right:0;bottom:0;height:30px;z-index:100;padding:10px 0;border:0 solid #dfdfdf;border-width:1px 0 0;box-shadow:0 -4px 4px -4px rgba(0,0,0,.1)}.wc-backbone-modal-main footer .inner{padding:0 10px;text-align:right} \ No newline at end of file diff --git a/assets/css/admin.less b/assets/css/admin.scss similarity index 95% rename from assets/css/admin.less rename to assets/css/admin.scss index facf7a441bd..98005992b37 100644 --- a/assets/css/admin.less +++ b/assets/css/admin.scss @@ -1,6 +1,6 @@ /* =Mixins -------------------------------------------------------------- */ -@import "mixins.less"; +@import "mixins"; /* =Custom Font @@ -160,13 +160,13 @@ table.wc_status_table { background: transparent none; } mark.yes { - color: @green; + color: $green; } mark.no { color: #999; } mark.error { - color: @red; + color: $red; } ul { margin: 0; @@ -279,104 +279,6 @@ ul.wc_coupon_list, .column-coupon_code { overflow: hidden; zoom: 1; clear: both; - .code { - margin-right: 6px; - } - li.code { - margin: 0 6px 12px 0 !important; - } - .code, .code a, .code span { - &:before, &:after { - content: ""; - display: block; - position: absolute; - width: 8px; - height: 4px; - background: #f7f7f7; - -webkit-border-radius:2px; - -moz-border-radius:2px; - -o-border-radius:2px; - border-radius:2px; - -moz-box-shadow: 0 2px 0 0 rgba(255,255,255,0.3), inset 0 2px 0 0 rgba(0,0,0,0.1); - -webkit-box-shadow: 0 2px 0 0 rgba(255,255,255,0.3), inset 0 2px 0 0 rgba(0,0,0,0.1); - box-shadow: 0 2px 0 0 rgba(255,255,255,0.3), inset 0 2px 0 0 rgba(0,0,0,0.1); - } - } - .code { - overflow: hidden; - vertical-align: middle; - margin: 0 8px 0 0; - - background: #ececec; - color: #21759A; - text-shadow: 0 1px 0 #ddd; - - padding: 2px; - position: relative; - float: left; - line-height: 1em; - -moz-box-shadow: 0 2px 0 0 #dddddd; - -webkit-box-shadow: 0 2px 0 0 #dddddd; - box-shadow: 0 2px 0 0 #dddddd; - font-weight: bold; - - &:before { - bottom: 5px; - left: 0; - margin: 0 0 0 -4px; - } - &:after { - top: 5px; - left: 0; - margin: 0 0 0 -4px; - } - a, span { - float: left; - padding: 0 4px; - color: #21759A; - &:before { - bottom: 5px; - right: 0; - margin: 0 -4px 0 0; - } - &:after { - content: ""; - top: 5px; - right: 0; - margin: 0 -4px 0 0; - } - span { - border: 1px dashed #ccc; - padding: .5em 6px; - -webkit-border-radius:2px; - -moz-border-radius:2px; - -o-border-radius:2px; - border-radius:2px; - &:before { - top: 50%; - left: 0; - margin: -2px 0 0 -4px; - } - &:after { - top: 50%; - right: 0; - margin: -2px -4px 0 0; - } - } - } - - &:hover { - background: #975e83; - color: #fff; - text-shadow: 0 1px 0 #5a324b; - a, span { - color: #fff; - span { - border: 1px dashed #bb82a7; - } - } - } - } } ul.wc_coupon_list_block { margin: 0; @@ -401,7 +303,7 @@ ul.wc_coupon_list_block { /* Orders */ .button.wc-reload { - .ir; + @include ir(); padding:0; -webkit-border-radius:100%; border-radius:100%; @@ -409,7 +311,7 @@ ul.wc_coupon_list_block { width:24px !important; display: inline-block; &:after { - .icon( "\e031" ); + @include icon( "\e031" ); line-height: 22px; } } @@ -616,7 +518,7 @@ ul.wc_coupon_list_block { background: #fff; padding: 12px; background:#f8f8f8; - .clearfix; + @include clearfix(); line-height: 2em; text-align: right; p { @@ -685,7 +587,7 @@ ul.wc_coupon_list_block { } } .refunded-total { - color: @red; + color: $red; } } .refund-actions { @@ -711,6 +613,11 @@ ul.wc_coupon_list_block { .amount { white-space: nowrap; } + .add-items { + .description { + margin-right: 10px; + } + } } .woocommerce_order_items_wrapper { margin: 0; @@ -899,33 +806,33 @@ ul.wc_coupon_list_block { tr.fee { .thumb div { - .ir(); + @include ir(); font-size: 14px; margin: 6px; &:before { - .icon( "\e007" ); + @include icon( "\e007" ); color: #bbbbbb; } } } tr.refund { .thumb div { - .ir(); + @include ir(); font-size: 14px; margin: 6px; &:before { - .icon( "\e014" ); + @include icon( "\e014" ); color: #bbbbbb; } } } tr.shipping { .thumb div { - .ir(); + @include ir(); font-size: 14px; margin: 6px; &:before { - .icon( "\e01a" ); + @include icon( "\e01a" ); color: #bbbbbb; } } @@ -936,13 +843,13 @@ ul.wc_coupon_list_block { th.line_tax, td.line_tax { padding: 8px 16px 8px 8px; .delete-order-tax { - .ir; + @include ir(); font-size: 12px; visibility: hidden; float: right; margin: 2px -16px 0 0; &:before { - .icon( "\e013" ); + @include icon( "\e013" ); color:white; background-color: #000; -webkit-border-radius:100%; @@ -951,8 +858,8 @@ ul.wc_coupon_list_block { box-shadow:0 1px 2px rgba(0,0,0,0.2); } &:hover:before { - border-color: @red; - background-color: @red; + border-color: $red; + background-color: $red; } } &:hover { @@ -963,7 +870,7 @@ ul.wc_coupon_list_block { } small.refunded { display: block; - color: @red; + color: $red; white-space: nowrap; } } @@ -971,11 +878,11 @@ ul.wc_coupon_list_block { .wc-order-items-editable { .edit-order-item { - .ir; + @include ir(); display: inline-block; margin: 0 .5em 0 0; &:before { - .icon; + @include icon; content: "\e603"; color: #999; } @@ -987,17 +894,17 @@ ul.wc_coupon_list_block { } .delete-order-item, .delete_refund { - .ir; + @include ir(); display: inline-block; margin: 0; &:before { - .icon; + @include icon; content: "\e013"; color: #999; } &:hover { &:before { - color: @red; + color: $red; } } } @@ -1123,23 +1030,23 @@ ul.wc_coupon_list_block { width:45px; text-align: center; mark { - .ir; + @include ir(); background: none; font-size: 1.4em; margin: 0 auto; } mark.pending, mark.completed, mark.on-hold, mark.failed, mark.cancelled, mark.processing, mark.refunded { &:after { - .icon; + @include icon; } } mark.pending:after { content: "\e012"; - color: @orange; + color: $orange; } mark.completed:after { content: "\e015"; - color: @blue; + color: $blue; } mark.on-hold:after { content: "\e033"; @@ -1151,7 +1058,7 @@ ul.wc_coupon_list_block { } mark.cancelled:after { content: "\e013"; - color: @red; + color: $red; } mark.processing:after { content: "\e011"; @@ -1168,34 +1075,34 @@ ul.wc_coupon_list_block { } .column-customer_message { .note-on { - .ir; + @include ir(); margin:0 auto; color: #999; &:after { - .icon( "\e026" ); + @include icon( "\e026" ); line-height: 16px; } } } .column-order_notes { .note-on { - .ir; + @include ir(); margin:0 auto; color: #999; &:after { - .icon( "\e027" ); + @include icon( "\e027" ); line-height: 16px; } } } .order_actions { .processing, .complete, .view { - .ir; + @include ir(); padding:0 !important; height: 2em !important; width:2em; &:after { - .icon; + @include icon; line-height: 1.85; } } @@ -1211,12 +1118,12 @@ ul.wc_coupon_list_block { } .user_actions { .edit, .link, .view { - .ir; + @include ir(); padding:0 !important; height: 2em !important; width:2em; &:after { - .icon; + @include icon; line-height: 1.85; } } @@ -1242,12 +1149,12 @@ ul.wc_coupon_list_block { .attribute-actions { width:2em; .configure-terms { - .ir; + @include ir(); padding:0 !important; height: 2em !important; width:2em; &:after { - .icon("\e01c"); + @include icon("\e01c"); line-height: 1.85; } } @@ -1278,7 +1185,7 @@ ul.order_notes { } } a.delete_note { - color: @red + color: $red } .note_content:after { content: ""; @@ -1368,10 +1275,10 @@ table.wp-list-table { text-align: left !important; } span.wc-image, span.wc-featured, span.wc-type { - .ir; + @include ir(); margin:0 auto; &:before { - .icon( "\e00c" ); + @include icon( "\e00c" ); } } span.wc-featured { @@ -1398,10 +1305,10 @@ table.wp-list-table { } } span.product-type { - .ir; + @include ir(); font-size:1.2em; &:before { - .icon( "\e006" ); + @include icon( "\e006" ); } &.grouped:before { content: "\e002"; @@ -1421,7 +1328,7 @@ table.wp-list-table { } mark.instock { font-weight: bold; - color: @green; + color: $green; background: transparent none; line-height: 1; } @@ -1432,11 +1339,11 @@ table.wp-list-table { line-height: 1; } .order-notes_head, .notes_head, .status_head { - .ir; + @include ir(); margin:0 auto; &:after { - .icon; + @include icon; } } .order-notes_head:after { @@ -1472,7 +1379,7 @@ table.wp-list-table { /* Settings */ mark.notice { background: #fff; - color: @red; + color: $red; margin: 0 0 0 10px; } a.export_rates, a.import_rates { @@ -1484,7 +1391,7 @@ a.export_rates, a.import_rates { table.wc_tax_rates, table.wc_input_table { width: 100%; span.tips { - color: @blue; + color: $blue; } td { padding: 0; @@ -1625,12 +1532,12 @@ img.help_tip { .status-enabled, .status-disabled { font-size:1.4em; - .ir; + @include ir(); } .status-enabled { &:before { - .icon( "\e015" ); - color: @woocommerce; + @include icon( "\e015" ); + color: $woocommerce; } } @@ -1679,7 +1586,7 @@ img.help_tip { } span.help_tip { cursor: help; - color: @blue; + color: $blue; } th { position: relative; @@ -1813,7 +1720,7 @@ img.help_tip { #product_images_container { padding: 0 0 0 9px; ul { - .clearfix; + @include clearfix(); margin: 0; padding: 0; li.image, li.add, li.wc-metabox-sortable-placeholder { @@ -1840,7 +1747,7 @@ img.help_tip { border: 3px dashed #dddddd; position: relative; &:after { - .icon( "\e00c" ); + @include icon( "\e00c" ); font-size:2.618em; line-height: 72px; color: #ddd; @@ -1867,19 +1774,19 @@ img.help_tip { } } a.view { - .ir; + @include ir(); font-size:1.4em; &:before { - .icon( "\e00c" ); + @include icon( "\e00c" ); background-color: #000; color: #fff; } } a.delete { - .ir; + @include ir(); font-size:1.4em; &:before { - .icon( "\e013" ); + @include icon( "\e013" ); color:white; background-color: #000; -webkit-border-radius:100%; @@ -1887,7 +1794,7 @@ img.help_tip { box-shadow:0 1px 2px rgba(0,0,0,0.2); } &:hover:before { - background-color: @red; + background-color: $red; } } } @@ -2016,7 +1923,7 @@ img.help_tip { border-bottom: 1px solid #f5f5f5; border-top: 1px solid #eaeaea; &:before { - .iconbefore( "\e028" ); + @include iconbefore( "\e028" ); } } @@ -2110,7 +2017,7 @@ img.help_tip { } .add.button:before { - .iconbefore( "\e007" ); + @include iconbefore( "\e007" ); } } h4.wc-settings-sub-title { @@ -2209,15 +2116,15 @@ img.help_tip { cursor: pointer; } .delete { - .ir; + @include ir(); &:before { - .icon; + @include icon; content: "\e013"; color: #999; } &:hover { &:before { - color: @red; + color: $red; } } } @@ -2279,7 +2186,7 @@ img.help_tip { .req { font-weight: bold; font-style: normal; - color: @red; + color: $red; } } .description { @@ -2537,7 +2444,7 @@ img.help_tip { line-height: 22px; text-decoration: none; &:before { - .iconbefore( "\e036" ); + @include iconbefore( "\e036" ); font-size: .8em; color: #999; } @@ -2830,7 +2737,7 @@ img.ui-datepicker-trigger { vertical-align: middle; margin-top: -1px; cursor: po display: block; text-decoration: none; &:before { - .iconbefore( "\e00a" ); + @include iconbefore( "\e00a" ); margin-right:4px; } } @@ -2918,7 +2825,7 @@ img.ui-datepicker-trigger { vertical-align: middle; margin-top: -1px; cursor: po border-right-width: 0; padding: 10px; margin:0; - color: @blue; + color: $blue; 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); @@ -2926,7 +2833,7 @@ img.ui-datepicker-trigger { vertical-align: middle; margin-top: -1px; cursor: po background-image: -o-linear-gradient(bottom,#ececec,#f9f9f9); background-image: linear-gradient(to top,#ececec,#f9f9f9); &.section_title:hover { - color:@red; + color:$red; } } .section_title { @@ -2934,7 +2841,7 @@ img.ui-datepicker-trigger { vertical-align: middle; margin-top: -1px; cursor: po span { display: block; &:after { - .iconafter( "\e035" ); + @include iconafter( "\e035" ); float: right; font-size:.9em; line-height: 1.618; @@ -3032,7 +2939,7 @@ img.ui-datepicker-trigger { vertical-align: middle; margin-top: -1px; cursor: po &:hover { box-shadow: inset 0 -1px 0 0 #dfdfdf, - inset 300px 0 0 fade(#9c5d90,10%); + inset 300px 0 0 rgba(156, 93, 144, 0.1); border-right: 5px solid #9c5d90 !important; padding-left:1.5em; color: #9c5d90; @@ -3117,12 +3024,12 @@ img.ui-datepicker-trigger { vertical-align: middle; margin-top: -1px; cursor: po .column-wc_actions { a.edit, a.view { - .ir; + @include ir(); padding:0 !important; height: 2em !important; width:2em; &:after { - .icon; + @include icon; line-height: 1.85; } } @@ -3343,7 +3250,7 @@ table.bar_chart { } } -@import 'chosen.less'; +@import 'chosen'; .chosen-container-single .chosen-single { abbr { diff --git a/assets/css/chosen.less b/assets/css/chosen.scss similarity index 100% rename from assets/css/chosen.less rename to assets/css/chosen.scss diff --git a/assets/css/dashboard.css b/assets/css/dashboard.css index 1147b63fd7d..96b6b7b4df4 100644 --- a/assets/css/dashboard.css +++ b/assets/css/dashboard.css @@ -1 +1 @@ -.clear{clear:both}.nobr{white-space:nowrap}@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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}ul.woocommerce_stats li:first-child{border-left:0}ul.woocommerce_stats li:last-child{border-right:0}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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:"\e001";font-size:2em;position:relative;width:auto;line-height:1.2em;color:#464646;float:left}#woocommerce_dashboard_status .wc_status_list li:first-child{border-top:0}#woocommerce_dashboard_status .wc_status_list li.sales-this-month{width:100%}#woocommerce_dashboard_status .wc_status_list li.sales-this-month a:before{content:"\e01f"}#woocommerce_dashboard_status .wc_status_list li.best-seller-this-month{width:100%}#woocommerce_dashboard_status .wc_status_list li.best-seller-this-month a:before{content:"\e006"}#woocommerce_dashboard_status .wc_status_list li.processing-orders{border-right:1px solid #ececec}#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{border-right:1px solid #ececec}#woocommerce_dashboard_status .wc_status_list li.low-in-stock a:before{content:"\e02c";color:#ffba00}#woocommerce_dashboard_status .wc_status_list li.out-of-stock a:before{content:"\e02c";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}#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;color:#9c5d90}#dash-right-now li.product-count a:before{font-family:WooCommerce;content:"\e01d"} \ No newline at end of file +@charset "UTF-8";.clear{clear:both}.nobr{white-space:nowrap}@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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}ul.woocommerce_stats li:first-child{border-left:0}ul.woocommerce_stats li:last-child{border-right:0}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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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:first-child{border-top:0}#woocommerce_dashboard_status .wc_status_list li.sales-this-month{width:100%}#woocommerce_dashboard_status .wc_status_list li.sales-this-month a:before{content:"\e01f"}#woocommerce_dashboard_status .wc_status_list li.best-seller-this-month{width:100%}#woocommerce_dashboard_status .wc_status_list li.best-seller-this-month a:before{content:"\e006"}#woocommerce_dashboard_status .wc_status_list li.processing-orders{border-right:1px solid #ececec}#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{border-right:1px solid #ececec}#woocommerce_dashboard_status .wc_status_list li.low-in-stock a:before{content:"\e02c";color:#ffba00}#woocommerce_dashboard_status .wc_status_list li.out-of-stock a:before{content:"\e02c";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}#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;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/dashboard.less b/assets/css/dashboard.scss similarity index 96% rename from assets/css/dashboard.less rename to assets/css/dashboard.scss index 0486fcada78..658a4e93c63 100644 --- a/assets/css/dashboard.less +++ b/assets/css/dashboard.scss @@ -1,4 +1,4 @@ -@import 'mixins.less'; +@import 'mixins'; @font-face { font-family: 'WooCommerce'; @@ -99,7 +99,7 @@ ul.woocommerce_stats { } &:before { - .icon(); + @include icon(); font-size: 2em; position: relative; width: auto; @@ -132,7 +132,7 @@ ul.woocommerce_stats { border-right: 1px solid #ececec; a:before { content: "\e011"; - color: @green; + color: $green; } } li.on-hold-orders { @@ -145,13 +145,13 @@ ul.woocommerce_stats { border-right: 1px solid #ececec; a:before { content: "\e02c"; - color: @orange; + color: $orange; } } li.out-of-stock { a:before { content: "\e02c"; - color: @red; + color: $red; } } } @@ -187,7 +187,7 @@ ul.woocommerce_stats { font-family: 'WooCommerce' !important; &:before { content: "\e021\e021\e021\e021\e021"; - color: darken( #ccc, 10 ); + color: darken( #ccc, 10% ); float: left; top: 0; left: 0; @@ -218,4 +218,4 @@ ul.woocommerce_stats { #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 a6092f5f68c..305316dba42 100644 --- a/assets/css/menu.css +++ b/assets/css/menu.css @@ -1 +1 @@ -.clear{clear:both}.nobr{white-space:nowrap}@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";font-size:1.3em!important}#adminmenu #menu-posts-product .menu-icon-post div.wp-menu-image:before{font-family:WooCommerce!important;content:"\e01d";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:"\e01d";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";.clear{clear:both}.nobr{white-space:nowrap}@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";font-size:1.3em!important}#adminmenu #menu-posts-product .menu-icon-post div.wp-menu-image:before{font-family:WooCommerce!important;content:"\e01d";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/menu.less b/assets/css/menu.scss similarity index 93% rename from assets/css/menu.less rename to assets/css/menu.scss index e8dfcd56640..6a982341b4f 100644 --- a/assets/css/menu.less +++ b/assets/css/menu.scss @@ -1,6 +1,6 @@ /* =Mixins -------------------------------------------------------------- */ -@import "mixins.less"; +@import 'mixins'; /* Icon Font */ @font-face { @@ -28,16 +28,16 @@ span.mce_woocommerce_shortcodes_button { background-image: none !important; - .ir; + @include ir(); &:before { - .icon( "\e01d" ); + @include icon( "\e01d" ); font-size:.9em; line-height: 1.2; } } .wc_plugin_upgrade_notice { - font-weight: normal; + font-weight: normal; color: #fff; background: #d54d21; padding: 1em; @@ -56,4 +56,4 @@ span.mce_woocommerce_shortcodes_button { -moz-osx-font-smoothing: grayscale; vertical-align: top; } -} \ No newline at end of file +} diff --git a/assets/css/mixins.less b/assets/css/mixins.less deleted file mode 100644 index 1f78dbeddf9..00000000000 --- a/assets/css/mixins.less +++ /dev/null @@ -1,166 +0,0 @@ -@woocommerce: #ad74a2; -@green: #7ad03a; -@red: #a00; -@orange: #ffba00; -@blue: #2ea2cc; - -.clearfix() { - *zoom:1; - &:before, - &:after { - content: " "; - display: table; - } - &:after { - clear: both; - } -} -.border_radius(@radius:4px) { - -webkit-border-radius:@radius; - border-radius:@radius; -} -.border_radius_right(@radius:4px) { - -webkit-border-top-right-radius: @radius; - -webkit-border-bottom-right-radius: @radius; - border-top-right-radius: @radius; - border-bottom-right-radius: @radius; -} -.border_radius_left(@radius:4px) { - -webkit-border-top-left-radius: @radius; - -webkit-border-bottom-left-radius: @radius; - border-top-left-radius: @radius; - border-bottom-left-radius: @radius; -} -.border_radius_bottom(@radius:4px) { - -webkit-border-bottom-left-radius: @radius; - -webkit-border-bottom-right-radius: @radius; - border-bottom-left-radius: @radius; - border-bottom-right-radius: @radius; -} -.border_radius_top(@radius:4px) { - -webkit-border-top-left-radius: @radius; - -webkit-border-top-right-radius: @radius; - border-top-left-radius: @radius; - border-top-right-radius: @radius; -} -.opacity(@opacity:0.75) { - filter:~"alpha(opacity=@opacity * 100)"; - -moz-opacity:@opacity; - -khtml-opacity: @opacity; - opacity: @opacity; -} -.box_shadow(@shadow_x:3px, @shadow_y:3px, @shadow_rad:3px, @shadow_in:3px, @shadow_color:#888) { - box-shadow:@shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color; - -webkit-box-shadow:@shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color; -} -.inset_box_shadow(@shadow_x:3px, @shadow_y:3px, @shadow_rad:3px, @shadow_in:3px, @shadow_color:#888) { - box-shadow:inset @shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color; - -webkit-box-shadow:inset @shadow_x @shadow_y @shadow_rad @shadow_in @shadow_color; -} -.text_shadow(@shadow_x:3px, @shadow_y:3px, @shadow_rad:3px, @shadow_color:#fff) { - text-shadow:@shadow_x @shadow_y @shadow_rad @shadow_color; -} -.vertical_gradient(@from: #000, @to: #FFF) { - background: @from; - background: -webkit-gradient(linear, left top, left bottom, from(@from), to(@to)); - background: -webkit-linear-gradient(@from, @to); - background: -moz-linear-gradient(center top, @from 0%, @to 100%); - background: -moz-gradient(center top, @from 0%, @to 100%); -} -.transition(@selector:all, @animation:ease-in-out, @duration:.2s) { - -webkit-transition:@selector @animation @duration; - -moz-transition:@selector @animation @duration; - -o-transition:@selector @animation @duration; - transition:@selector @animation @duration; -} - -.scale(@ratio:1.5){ - -webkit-transform:scale(@ratio); - -moz-transform:scale(@ratio); - -ms-transform:scale(@ratio); - -o-transform:scale(@ratio); - transform:scale(@ratio); -} - -.borderbox () { - -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */ - -moz-box-sizing: border-box; /* Firefox, other Gecko */ - box-sizing: border-box; /* Opera/IE 8+ */ -} - -.clear { clear: both; } -.nobr { white-space: nowrap; } - -.darkorlighttextshadow ( @a, @opacity: 0.8 ) when (lightness(@a) >= 65%) { .text_shadow( 0, -1px, 0, rgba(0,0,0,@opacity) ); } -.darkorlighttextshadow ( @a, @opacity: 0.8 ) when (lightness(@a) < 65%) { .text_shadow( 0, 1px, 0, rgba(255,255,255,@opacity) ); } - -/** - * Objects - */ -.menu() { - .clearfix; - li { - display: inline-block; - } -} -.mediaright() { - .clearfix; - img { - float:right; - height:auto; - } -} -.medialeft() { - .clearfix; - img { - float:right; - height:auto; - } -} -.ir() { - display: block; - text-indent: -9999px; - position: relative; - height:1em; - width:1em; -} -.icon( @glyph: "\e001" ) { - font-family: 'WooCommerce'; - speak: none; - font-weight: normal; - 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: @glyph; -} -.iconbefore( @glyph: "\e001" ) { - font-family: 'WooCommerce'; - speak: none; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - margin-right:7px; - content: @glyph; -} -.iconafter( @glyph: "\e001" ) { - font-family: 'WooCommerce'; - speak: none; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - -webkit-font-smoothing: antialiased; - margin-left:7px; - content: @glyph; -} diff --git a/assets/css/prettyPhoto.css b/assets/css/prettyPhoto.css index e4a618a8d9c..a776258471d 100644 --- a/assets/css/prettyPhoto.css +++ b/assets/css/prettyPhoto.css @@ -1 +1 @@ -.clear{clear:both}.nobr{white-space:nowrap}@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;-webkit-border-radius:3px;border-radius:3px;box-shadow:0 1px 30px 0 rgba(0,0,0,.25);-webkit-box-shadow:0 1px 30px 0 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{background:url(../images/ajax-loader.gif) center no-repeat}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 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.2);-webkit-border-radius:2px;border-radius:2px;display:block}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{-webkit-border-radius:100%;border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#444;color:#fff!important;font-size:16px!important;line-height:1em;-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s;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{-webkit-border-radius:100%;border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#444;color:#fff!important;line-height:1em;-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s;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{-webkit-border-radius:100%;border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#444;color:#fff!important;font-size:16px!important;line-height:1em;-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s;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{-webkit-border-radius:100%;border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#444;color:#fff!important;line-height:1em;-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s;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}@media only screen and (max-width:768px){div.pp_woocommerce{left:5%!important;right:5%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:90%!important}div.pp_woocommerce .pp_contract,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 .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}div.pp_woocommerce .pp_description{display:none!important}.pp_content,div.pp_woocommerce .pp_details{width:100%!important}.pp_content 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}.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous{margin-top:7px!important}a.pp_next{display:block;float:right;height:100%;text-indent:-10000px;width:49%}a.pp_previous{display:block;float:left;height:100%;text-indent:-10000px;width:49%}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 +.clear{clear:both}.nobr{white-space:nowrap}@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;-webkit-border-radius:3px;border-radius:3px;box-shadow:0 1px 30px 0 rgba(0,0,0,.25);-webkit-box-shadow:0 1px 30px 0 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{background:url(../images/ajax-loader.gif) center no-repeat}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 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.2);-webkit-border-radius:2px;border-radius:2px;display:block}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{-webkit-border-radius:100%;border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#444;color:#fff!important;font-size:16px!important;line-height:1em;-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s;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{-webkit-border-radius:100%;border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#444;color:#fff!important;line-height:1em;-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s;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{-webkit-border-radius:100%;border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#444;color:#fff!important;font-size:16px!important;line-height:1em;-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s;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{-webkit-border-radius:100%;border-radius:100%;height:1em;width:1em;text-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#444;color:#fff!important;line-height:1em;-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s;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}@media only screen and (max-width:768px){div.pp_woocommerce{left:5%!important;right:5%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:90%!important}div.pp_woocommerce .pp_contract,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 .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}div.pp_woocommerce .pp_description{display:none!important}.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}.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous{margin-top:7px!important}a.pp_next{display:block;float:right;height:100%;text-indent:-10000px;width:49%}a.pp_previous{display:block;float:left;height:100%;text-indent:-10000px;width:49%}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/prettyPhoto.less b/assets/css/prettyPhoto.scss similarity index 93% rename from assets/css/prettyPhoto.less rename to assets/css/prettyPhoto.scss index 060a240c037..259752af5bf 100644 --- a/assets/css/prettyPhoto.less +++ b/assets/css/prettyPhoto.scss @@ -1,4 +1,4 @@ -@import 'mixins.less'; +@import 'mixins'; // Load the WooCommerce font @font-face { @@ -12,9 +12,9 @@ font-style: normal; } -// Functions -.button() { - .border_radius(100%); +// Mixins +@mixin button() { + @include border_radius(100%); height:1em; width:1em; text-shadow:0 1px 2px rgba(0,0,0,0.5); @@ -22,7 +22,7 @@ color: #fff !important; font-size:16px !important; line-height: 1em; - .transition; + @include transition(); &:hover { background-color: #000; } @@ -32,10 +32,10 @@ div.pp_woocommerce { .pp_content_container { background: #fff; - .border_radius(3px); - .box_shadow(0,1px,30px,0,rgba(0,0,0,0.25)); + @include border_radius(3px); + @include box_shadow(0,1px,30px,0,rgba(0,0,0,0.25)); padding:20px 0; - .clearfix; + @include clearfix(); } .pp_loaderIcon { background: url(../images/ajax-loader.gif) center no-repeat; @@ -49,8 +49,8 @@ div.pp_woocommerce { a { border:1px solid rgba(0,0,0,0.5); background: #fff; - .box_shadow(0,1px,2px,0,rgba(0,0,0,0.2)); - .border_radius(2px); + @include box_shadow(0,1px,2px,0,rgba(0,0,0,0.2)); + @include border_radius(2px); display: block; &:hover { border-color:#000; @@ -68,7 +68,7 @@ div.pp_woocommerce { // Next / Previous .pp_previous, .pp_next { &:before { - .button; + @include button(); font-family: 'WooCommerce'; content: "\e00b"; text-indent: 0; @@ -114,7 +114,7 @@ div.pp_woocommerce { position: relative; } .pp_close { - .button; + @include button(); top:-.5em; right:-.5em; font-size:1.618em !important; @@ -133,7 +133,7 @@ div.pp_woocommerce { } // Buttons .pp_arrow_previous, .pp_arrow_next { - .button; + @include button(); position: relative; margin-top:-1px; &:before { @@ -159,7 +159,7 @@ div.pp_woocommerce { } } a.pp_expand, a.pp_contract { - .button; + @include button(); right:auto; left:-.5em; top:-.5em; @@ -202,7 +202,7 @@ div.pp_woocommerce { div.pp_woocommerce { left: 5% !important; right:5% !important; - .borderbox; + @include borderbox(); width: 90% !important; .pp_gallery, .pp_previous, .pp_next, .pp_expand, .pp_contract { display: none !important; @@ -228,10 +228,12 @@ div.pp_woocommerce { } .pp_content { width:100% !important; - img { - width:100% !important; - height:auto !important; - } + #pp_full_res{ + & > img{ + width:100% !important; + height:auto !important; + } + } } .currentTextHolder { line-height: 3; @@ -501,4 +503,4 @@ div.pp_woocommerce { font-size: 17px; margin: 0 0 5px 15px; z-index: 9999; - } \ No newline at end of file + } diff --git a/assets/css/woocommerce-base.less b/assets/css/woocommerce-base.less deleted file mode 100644 index 407613c06b4..00000000000 --- a/assets/css/woocommerce-base.less +++ /dev/null @@ -1,11 +0,0 @@ -@primary: #ad74a2; /* Primary colour for buttons (alt) */ -@primarytext: desaturate(lighten(@primary,50%),18%); /* Text on primary colour bg */ - -@secondary: desaturate(lighten(@primary,40%),18%); /* Secondary buttons */ -@secondarytext: desaturate(darken(@secondary,60%),18%); /* Text on secondary colour bg */ - -@highlight: spin( @primary, 150 ); /* Prices, In stock labels, sales flash */ -@highlightext: desaturate(lighten(@highlight,50%),18%); /* Text on highlight colour bg */ - -@contentbg: #fff; /* Content BG - Tabs (active state) */ -@subtext: #777; /* small, breadcrumbs etc */ diff --git a/assets/css/woocommerce-layout.css b/assets/css/woocommerce-layout.css index 5554f479656..506753db243 100644 --- a/assets/css/woocommerce-layout.css +++ b/assets/css/woocommerce-layout.css @@ -1 +1 @@ -.clear{clear:both}.nobr{white-space:nowrap}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%}.woocommerce .col2-set:after,.woocommerce .col2-set:before,.woocommerce-page .col2-set:after,.woocommerce-page .col2-set:before{content:" ";display:table}.woocommerce .col2-set:after,.woocommerce-page .col2-set:after{clear:both}.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:after,.woocommerce #content div.product div.thumbnails:before,.woocommerce div.product div.thumbnails:after,.woocommerce div.product div.thumbnails:before,.woocommerce-page #content div.product div.thumbnails:after,.woocommerce-page #content div.product div.thumbnails:before,.woocommerce-page div.product div.thumbnails:after,.woocommerce-page div.product div.thumbnails:before{content:" ";display:table}.woocommerce #content div.product div.thumbnails:after,.woocommerce div.product div.thumbnails:after,.woocommerce-page #content div.product div.thumbnails:after,.woocommerce-page div.product div.thumbnails:after{clear:both}.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%}.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 a.first,.woocommerce div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails a.first{clear:both}.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,.woocommerce div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs{clear:both}.woocommerce #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce div.product .woocommerce-tabs ul.tabs:after,.woocommerce div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs:before{content:" ";display:table}.woocommerce #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs:after{clear:both}.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 div.product #reviews .comment:after,.woocommerce div.product #reviews .comment:before,.woocommerce-page #content div.product #reviews .comment:after,.woocommerce-page #content div.product #reviews .comment:before,.woocommerce-page div.product #reviews .comment:after,.woocommerce-page div.product #reviews .comment: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 #content .quantity input::-webkit-inner-spin-button,.woocommerce #content .quantity input::-webkit-outer-spin-button,.woocommerce #quantity input::-webkit-inner-spin-button,.woocommerce #quantity input::-webkit-outer-spin-button,.woocommerce-page #content .quantity input::-webkit-inner-spin-button,.woocommerce-page #content .quantity input::-webkit-outer-spin-button,.woocommerce-page #quantity input::-webkit-inner-spin-button,.woocommerce-page #quantity input::-webkit-outer-spin-button{display:none}.woocommerce .related:after,.woocommerce .related:before,.woocommerce .upsells.products:after,.woocommerce .upsells.products:before,.woocommerce-page .related:after,.woocommerce-page .related:before,.woocommerce-page .upsells.products:after,.woocommerce-page .upsells.products:before{content:" ";display:table}.woocommerce .related:after,.woocommerce .upsells.products:after,.woocommerce-page .related:after,.woocommerce-page .upsells.products:after{clear:both}.woocommerce .related ul,.woocommerce .related ul.products,.woocommerce .upsells.products ul,.woocommerce .upsells.products ul.products,.woocommerce-page .related ul,.woocommerce-page .related ul.products,.woocommerce-page .upsells.products ul,.woocommerce-page .upsells.products ul.products{float:none}.woocommerce .related ul li.product,.woocommerce .related ul.products li.product,.woocommerce .upsells.products ul li.product,.woocommerce .upsells.products ul.products li.product,.woocommerce-page .related ul li.product,.woocommerce-page .related ul.products li.product,.woocommerce-page .upsells.products ul li.product,.woocommerce-page .upsells.products ul.products li.product{width:48%}.woocommerce .related ul li.product img,.woocommerce .related ul.products li.product img,.woocommerce .upsells.products ul li.product img,.woocommerce .upsells.products ul.products li.product img,.woocommerce-page .related ul li.product img,.woocommerce-page .related ul.products li.product img,.woocommerce-page .upsells.products ul li.product img,.woocommerce-page .upsells.products ul.products li.product img{width:100%;height:auto}.woocommerce ul.products,.woocommerce-page ul.products{clear:both}.woocommerce ul.products:after,.woocommerce ul.products:before,.woocommerce-page ul.products:after,.woocommerce-page ul.products:before{content:" ";display:table}.woocommerce ul.products:after,.woocommerce-page ul.products:after{clear:both}.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.first,.woocommerce-page ul.products li.first{clear:both}.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:after,.woocommerce .woocommerce-pagination ul.page-numbers:before,.woocommerce-page .woocommerce-pagination ul.page-numbers:after,.woocommerce-page .woocommerce-pagination ul.page-numbers:before{content:" ";display:table}.woocommerce .woocommerce-pagination ul.page-numbers:after,.woocommerce-page .woocommerce-pagination ul.page-numbers:after{clear:both}.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,.woocommerce-page .cart-collaterals{width:100%}.woocommerce .cart-collaterals:after,.woocommerce .cart-collaterals:before,.woocommerce-page .cart-collaterals:after,.woocommerce-page .cart-collaterals:before{content:" ";display:table}.woocommerce .cart-collaterals:after,.woocommerce-page .cart-collaterals:after{clear:both}.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 .cart-collaterals .shipping_calculator:before,.woocommerce-page .cart-collaterals .shipping_calculator:after,.woocommerce-page .cart-collaterals .shipping_calculator:before{content:" ";display:table}.woocommerce .cart-collaterals .shipping_calculator:after,.woocommerce-page .cart-collaterals .shipping_calculator: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%;text-align:right}.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 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 ul.cart_list li:after,.woocommerce ul.product_list_widget li:after,.woocommerce-page ul.cart_list li:after,.woocommerce-page ul.product_list_widget li:after{clear:both}.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:after,.woocommerce form .form-row:before,.woocommerce-page form .form-row:after,.woocommerce-page form .form-row:before{content:" ";display:table}.woocommerce form .form-row:after,.woocommerce-page form .form-row:after{clear:both}.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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 form .form-row-wide,.woocommerce-page form .form-row-wide{clear:both}.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}.woocommerce #payment .terms,.woocommerce-page #payment .terms{text-align:right;padding:0 1em}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:right}.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}} \ No newline at end of file +.clear{clear:both}.nobr{white-space:nowrap}.woocommerce .col2-set,.woocommerce-page .col2-set{width:100%}.woocommerce .col2-set:after,.woocommerce .col2-set:before,.woocommerce-page .col2-set:after,.woocommerce-page .col2-set:before{content:" ";display:table}.woocommerce .col2-set:after,.woocommerce-page .col2-set:after{clear:both}.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:after,.woocommerce #content div.product div.thumbnails:before,.woocommerce div.product div.thumbnails:after,.woocommerce div.product div.thumbnails:before,.woocommerce-page #content div.product div.thumbnails:after,.woocommerce-page #content div.product div.thumbnails:before,.woocommerce-page div.product div.thumbnails:after,.woocommerce-page div.product div.thumbnails:before{content:" ";display:table}.woocommerce #content div.product div.thumbnails:after,.woocommerce div.product div.thumbnails:after,.woocommerce-page #content div.product div.thumbnails:after,.woocommerce-page div.product div.thumbnails:after{clear:both}.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%}.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 a.first,.woocommerce div.product div.thumbnails a.first,.woocommerce-page #content div.product div.thumbnails a.first,.woocommerce-page div.product div.thumbnails a.first{clear:both}.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,.woocommerce div.product .woocommerce-tabs,.woocommerce-page #content div.product .woocommerce-tabs,.woocommerce-page div.product .woocommerce-tabs{clear:both}.woocommerce #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce div.product .woocommerce-tabs ul.tabs:after,.woocommerce div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs:before{content:" ";display:table}.woocommerce #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs:after{clear:both}.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 div.product #reviews .comment:after,.woocommerce div.product #reviews .comment:before,.woocommerce-page #content div.product #reviews .comment:after,.woocommerce-page #content div.product #reviews .comment:before,.woocommerce-page div.product #reviews .comment:after,.woocommerce-page div.product #reviews .comment: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 #content .quantity input::-webkit-inner-spin-button,.woocommerce #content .quantity input::-webkit-outer-spin-button,.woocommerce #quantity input::-webkit-inner-spin-button,.woocommerce #quantity input::-webkit-outer-spin-button,.woocommerce-page #content .quantity input::-webkit-inner-spin-button,.woocommerce-page #content .quantity input::-webkit-outer-spin-button,.woocommerce-page #quantity input::-webkit-inner-spin-button,.woocommerce-page #quantity input::-webkit-outer-spin-button{display:none}.woocommerce .related,.woocommerce .upsells.products,.woocommerce-page .related,.woocommerce-page .upsells.products{clear:both}.woocommerce .related:after,.woocommerce .related:before,.woocommerce .upsells.products:after,.woocommerce .upsells.products:before,.woocommerce-page .related:after,.woocommerce-page .related:before,.woocommerce-page .upsells.products:after,.woocommerce-page .upsells.products:before{content:" ";display:table}.woocommerce .related:after,.woocommerce .upsells.products:after,.woocommerce-page .related:after,.woocommerce-page .upsells.products:after{clear:both}.woocommerce .related ul,.woocommerce .related ul.products,.woocommerce .upsells.products ul,.woocommerce .upsells.products ul.products,.woocommerce-page .related ul,.woocommerce-page .related ul.products,.woocommerce-page .upsells.products ul,.woocommerce-page .upsells.products ul.products{float:none}.woocommerce .related ul li.product,.woocommerce .related ul.products li.product,.woocommerce .upsells.products ul li.product,.woocommerce .upsells.products ul.products li.product,.woocommerce-page .related ul li.product,.woocommerce-page .related ul.products li.product,.woocommerce-page .upsells.products ul li.product,.woocommerce-page .upsells.products ul.products li.product{width:48%}.woocommerce .related ul li.product img,.woocommerce .related ul.products li.product img,.woocommerce .upsells.products ul li.product img,.woocommerce .upsells.products ul.products li.product img,.woocommerce-page .related ul li.product img,.woocommerce-page .related ul.products li.product img,.woocommerce-page .upsells.products ul li.product img,.woocommerce-page .upsells.products ul.products li.product img{width:100%;height:auto}.woocommerce ul.products,.woocommerce-page ul.products{clear:both}.woocommerce ul.products:after,.woocommerce ul.products:before,.woocommerce-page ul.products:after,.woocommerce-page ul.products:before{content:" ";display:table}.woocommerce ul.products:after,.woocommerce-page ul.products:after{clear:both}.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.first,.woocommerce-page ul.products li.first{clear:both}.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:after,.woocommerce .woocommerce-pagination ul.page-numbers:before,.woocommerce-page .woocommerce-pagination ul.page-numbers:after,.woocommerce-page .woocommerce-pagination ul.page-numbers:before{content:" ";display:table}.woocommerce .woocommerce-pagination ul.page-numbers:after,.woocommerce-page .woocommerce-pagination ul.page-numbers:after{clear:both}.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,.woocommerce-page .cart-collaterals{width:100%}.woocommerce .cart-collaterals:after,.woocommerce .cart-collaterals:before,.woocommerce-page .cart-collaterals:after,.woocommerce-page .cart-collaterals:before{content:" ";display:table}.woocommerce .cart-collaterals:after,.woocommerce-page .cart-collaterals:after{clear:both}.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 .cart-collaterals .shipping_calculator:before,.woocommerce-page .cart-collaterals .shipping_calculator:after,.woocommerce-page .cart-collaterals .shipping_calculator:before{content:" ";display:table}.woocommerce .cart-collaterals .shipping_calculator:after,.woocommerce-page .cart-collaterals .shipping_calculator: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%;text-align:right}.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 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 ul.cart_list li:after,.woocommerce ul.product_list_widget li:after,.woocommerce-page ul.cart_list li:after,.woocommerce-page ul.product_list_widget li:after{clear:both}.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:after,.woocommerce form .form-row:before,.woocommerce-page form .form-row:after,.woocommerce-page form .form-row:before{content:" ";display:table}.woocommerce form .form-row:after,.woocommerce-page form .form-row:after{clear:both}.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{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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 form .form-row-wide,.woocommerce-page form .form-row-wide{clear:both}.woocommerce #payment .form-row select,.woocommerce-page #payment .form-row select{width:auto}.woocommerce #payment .terms,.woocommerce-page #payment .terms{text-align:right;padding:0 1em}.woocommerce #payment #place_order,.woocommerce-page #payment #place_order{float:right}.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}} \ No newline at end of file diff --git a/assets/css/woocommerce-layout.less b/assets/css/woocommerce-layout.scss similarity index 92% rename from assets/css/woocommerce-layout.less rename to assets/css/woocommerce-layout.scss index 36556505282..d004e00132b 100644 --- a/assets/css/woocommerce-layout.less +++ b/assets/css/woocommerce-layout.scss @@ -1,5 +1,5 @@ -@import "mixins.less"; -@import "woocommerce-base.less"; /* Contains base colours like @primary */ +@import 'mixins'; +@import 'woocommerce-base'; // Contains base colours like $primary .woocommerce, .woocommerce-page { @@ -7,7 +7,7 @@ -------------------------------------------------------------- */ .col2-set { - .clearfix; + @include clearfix(); width: 100%; .col-1 { float:left; @@ -33,7 +33,7 @@ width: 48%; } div.thumbnails { - .clearfix; + @include clearfix(); a { float:left; width: 30.75%; @@ -54,12 +54,12 @@ .woocommerce-tabs { clear:both; ul.tabs { - .menu; + @include menu(); } } #reviews { .comment { - .mediaright; + @include mediaright(); } } } @@ -74,7 +74,9 @@ -------------------------------------------------------------- */ .related, .upsells.products { - .clearfix(); + @include clearfix(); + clear: both; + ul.products, ul { float:none; li.product { @@ -89,7 +91,7 @@ ul.products { clear:both; - .clearfix; + @include clearfix(); li.product { float:left; margin: 0 3.8% 2.992em 0; @@ -156,7 +158,7 @@ .woocommerce-pagination { ul.page-numbers { - .menu; + @include menu(); } } @@ -182,7 +184,7 @@ } .cart-collaterals { - .clearfix; + @include clearfix(); width: 100%; .related { width: 30.75%; @@ -203,7 +205,7 @@ } .shipping_calculator { width: 48%; - .clearfix; + @include clearfix(); clear: right; float: right; .col2-set { @@ -224,7 +226,7 @@ ul.cart_list, ul.product_list_widget { li { - .mediaright; + @include mediaright(); } } @@ -233,7 +235,7 @@ form { .form-row { - .clearfix; + @include clearfix(); label { display:block; &.checkbox { @@ -244,7 +246,7 @@ width: 100%; } .input-text { - .borderbox; + @include borderbox(); width:100%; } } diff --git a/assets/css/woocommerce-smallscreen.less b/assets/css/woocommerce-smallscreen.scss similarity index 94% rename from assets/css/woocommerce-smallscreen.less rename to assets/css/woocommerce-smallscreen.scss index 3d3757e6306..704c8b64532 100644 --- a/assets/css/woocommerce-smallscreen.less +++ b/assets/css/woocommerce-smallscreen.scss @@ -2,7 +2,7 @@ * This stylesheet optimises the default WooCommerce layout when viewed on smaller screens. */ -@import "mixins.less"; +@import 'mixins'; .woocommerce, .woocommerce-page { @@ -53,12 +53,12 @@ text-align: left; .coupon { float:none; - .clearfix; + @include clearfix(); padding-bottom:.5em; } input, .button, .input-text { width:48%; - .borderbox; + @include borderbox(); } .input-text + .button, .button.alt { float: right; @@ -93,7 +93,7 @@ #place_order { float: none; width:100%; - .borderbox; + @include borderbox(); margin-bottom:1em; } } diff --git a/assets/css/woocommerce.css b/assets/css/woocommerce.css index 0b3079e6c21..19cc75c1e0a 100644 --- a/assets/css/woocommerce.css +++ b/assets/css/woocommerce.css @@ -1 +1 @@ -.clear{clear:both}.nobr{white-space:nowrap}@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:.5em 0;text-align:center;background:#ad74a2;background:-webkit-gradient(linear,left top,left bottom,from(#ad74a2),to(#96588a));background:-webkit-linear-gradient(#ad74a2,#96588a);background:-moz-linear-gradient(center top,#ad74a2 0,#96588a 100%);background:-moz-gradient(center top,#ad74a2 0,#96588a 100%);border:1px solid #96588a;color:#fff;z-index:99998;box-shadow:inset 0 0 0 3px rgba(255,255,255,.2);-webkit-box-shadow:inset 0 0 0 3px rgba(255,255,255,.2)}.admin-bar p.demo_store{top:28px}.wc-forward a:after,.wc-forward:after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:7px;content:"\e029";font-size:.75em}.wc-backward a:before,.wc-backward:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:7px;content:"\e02f";font-size:.75em}.woocommerce .woocommerce-error,.woocommerce .woocommerce-info,.woocommerce .woocommerce-message,.woocommerce-page .woocommerce-error,.woocommerce-page .woocommerce-info,.woocommerce-page .woocommerce-message{padding:1em 1em 1em 3.5em!important;margin:0 0 2em!important;position:relative;-webkit-border-radius:4px;border-radius:4px;background:#fcfbfc;background:-webkit-gradient(linear,left top,left bottom,from(#fcfbfc),to(#f7f6f7));background:-webkit-linear-gradient(#fcfbfc,#f7f6f7);background:-moz-linear-gradient(center top,#fcfbfc 0,#f7f6f7 100%);background:-moz-gradient(center top,#fcfbfc 0,#f7f6f7 100%);color:#5e5e5e;text-shadow:0 1px 0 #fff;list-style:none!important;width:auto;-webkit-box-shadow:inset 0 -2px 6px rgba(0,0,0,.05),inset 0 -2px 30px rgba(0,0,0,.015),inset 0 1px 0 #fff,0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 -2px 6px rgba(0,0,0,.05),inset 0 -2px 30px rgba(0,0,0,.015),inset 0 1px 0 #fff,0 1px 2px rgba(0,0,0,.3)}.woocommerce .woocommerce-error:after,.woocommerce .woocommerce-error:before,.woocommerce .woocommerce-info:after,.woocommerce .woocommerce-info:before,.woocommerce .woocommerce-message:after,.woocommerce .woocommerce-message:before,.woocommerce-page .woocommerce-error:after,.woocommerce-page .woocommerce-error:before,.woocommerce-page .woocommerce-info:after,.woocommerce-page .woocommerce-info:before,.woocommerce-page .woocommerce-message:after,.woocommerce-page .woocommerce-message:before{content:" ";display:table}.woocommerce .woocommerce-error:after,.woocommerce .woocommerce-info:after,.woocommerce .woocommerce-message:after,.woocommerce-page .woocommerce-error:after,.woocommerce-page .woocommerce-info:after,.woocommerce-page .woocommerce-message:after{clear:both}.woocommerce .woocommerce-error:before,.woocommerce .woocommerce-info:before,.woocommerce .woocommerce-message:before,.woocommerce-page .woocommerce-error:before,.woocommerce-page .woocommerce-info:before,.woocommerce-page .woocommerce-message:before{content:"";height:1.5em;width:1.5em;display:block;position:absolute;top:0;left:1em;font-family:sans-serif;font-size:1em;line-height:1.5;text-align:center;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.2);padding-top:1em;-webkit-border-bottom-left-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1);-webkit-box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1)}.woocommerce .woocommerce-error .button,.woocommerce .woocommerce-info .button,.woocommerce .woocommerce-message .button,.woocommerce-page .woocommerce-error .button,.woocommerce-page .woocommerce-info .button,.woocommerce-page .woocommerce-message .button{float:right}.woocommerce .woocommerce-error li,.woocommerce .woocommerce-info li,.woocommerce .woocommerce-message li,.woocommerce-page .woocommerce-error li,.woocommerce-page .woocommerce-info li,.woocommerce-page .woocommerce-message li{list-style:none!important;padding-left:0!important;margin-left:0!important}.woocommerce .woocommerce-message,.woocommerce-page .woocommerce-message{border-top:3px solid #8fae1b}.woocommerce .woocommerce-message:before,.woocommerce-page .woocommerce-message:before{background-color:#8fae1b;content:"\2713"}.woocommerce .woocommerce-info,.woocommerce-page .woocommerce-info{border-top:3px solid #1e85be}.woocommerce .woocommerce-info:before,.woocommerce-page .woocommerce-info:before{background-color:#1e85be;content:"i";font-family:Times,Georgia,serif;font-style:italic}.woocommerce .woocommerce-error,.woocommerce-page .woocommerce-error{border-top:3px solid #b81c23}.woocommerce .woocommerce-error:before,.woocommerce-page .woocommerce-error:before{background-color:#b81c23;content:"\00d7";font-weight:700}.woocommerce small.note,.woocommerce-page small.note{display:block;color:#777;font-size:11px;line-height:21px;margin-top:10px}.woocommerce .woocommerce-breadcrumb,.woocommerce-page .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb:after,.woocommerce .woocommerce-breadcrumb:before,.woocommerce-page .woocommerce-breadcrumb:after,.woocommerce-page .woocommerce-breadcrumb:before{content:" ";display:table}.woocommerce .woocommerce-breadcrumb:after,.woocommerce-page .woocommerce-breadcrumb:after{clear:both}.woocommerce .woocommerce-breadcrumb a,.woocommerce-page .woocommerce-breadcrumb a{color:#777}.woocommerce #content div.product,.woocommerce div.product,.woocommerce-page #content div.product,.woocommerce-page div.product{margin-bottom:0;position:relative}.woocommerce #content div.product .product_title,.woocommerce div.product .product_title,.woocommerce-page #content div.product .product_title,.woocommerce-page div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #content div.product p.price,.woocommerce #content div.product span.price,.woocommerce div.product p.price,.woocommerce div.product span.price,.woocommerce-page #content div.product p.price,.woocommerce-page #content div.product span.price,.woocommerce-page div.product p.price,.woocommerce-page div.product span.price{color:#85ad74;font-size:1.25em}.woocommerce #content div.product p.price ins,.woocommerce #content div.product span.price ins,.woocommerce div.product p.price ins,.woocommerce div.product span.price ins,.woocommerce-page #content div.product p.price ins,.woocommerce-page #content div.product span.price ins,.woocommerce-page div.product p.price ins,.woocommerce-page div.product span.price ins{background:inherit}.woocommerce #content div.product p.price del,.woocommerce #content div.product span.price del,.woocommerce div.product p.price del,.woocommerce div.product span.price del,.woocommerce-page #content div.product p.price del,.woocommerce-page #content div.product span.price del,.woocommerce-page div.product p.price del,.woocommerce-page div.product span.price del{font-size:.67em;color:rgba(145,145,145,.5)}.woocommerce #content div.product p.stock,.woocommerce div.product p.stock,.woocommerce-page #content div.product p.stock,.woocommerce-page div.product p.stock{font-size:.92em}.woocommerce #content div.product .stock,.woocommerce div.product .stock,.woocommerce-page #content div.product .stock,.woocommerce-page div.product .stock{color:#85ad74}.woocommerce #content div.product .out-of-stock,.woocommerce div.product .out-of-stock,.woocommerce-page #content div.product .out-of-stock,.woocommerce-page div.product .out-of-stock{color:red}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{margin-bottom:2em}.woocommerce #content div.product div.images img,.woocommerce div.product div.images img,.woocommerce-page #content div.product div.images img,.woocommerce-page div.product div.images img{display:block;width:100%;height:auto;box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s}.woocommerce #content div.product div.images div.thumbnails,.woocommerce div.product div.images div.thumbnails,.woocommerce-page #content div.product div.images div.thumbnails,.woocommerce-page div.product div.images div.thumbnails{padding-top:1em}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{margin-bottom:2em}.woocommerce #content div.product div.social,.woocommerce div.product div.social,.woocommerce-page #content div.product div.social,.woocommerce-page div.product div.social{text-align:right;margin:0 0 1em}.woocommerce #content div.product div.social span,.woocommerce div.product div.social span,.woocommerce-page #content div.product div.social span,.woocommerce-page div.product div.social span{margin:0 0 0 2px}.woocommerce #content div.product div.social span span,.woocommerce div.product div.social span span,.woocommerce-page #content div.product div.social span span,.woocommerce-page div.product div.social span span{margin:0}.woocommerce #content div.product div.social span .stButton .chicklets,.woocommerce div.product div.social span .stButton .chicklets,.woocommerce-page #content div.product div.social span .stButton .chicklets,.woocommerce-page div.product div.social span .stButton .chicklets{padding-left:16px;width:0}.woocommerce #content div.product div.social iframe,.woocommerce div.product div.social iframe,.woocommerce-page #content div.product div.social iframe,.woocommerce-page div.product div.social iframe{float:left;margin-top:3px}.woocommerce #content div.product .woocommerce-tabs ul.tabs,.woocommerce div.product .woocommerce-tabs ul.tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 0 0 1em;margin:0 0 1.618em;overflow:hidden;position:relative}.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{border:1px solid #e0dadf;background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#e0dadf));background:-webkit-linear-gradient(#f7f6f7,#e0dadf);background:-moz-linear-gradient(center top,#f7f6f7 0,#e0dadf 100%);background:-moz-gradient(center top,#f7f6f7 0,#e0dadf 100%);display:inline-block;position:relative;z-index:0;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 3px 3px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.6);margin:0 -5px;padding:0 1em}.woocommerce #content div.product .woocommerce-tabs ul.tabs li a,.woocommerce div.product .woocommerce-tabs ul.tabs li a,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li a,.woocommerce-page div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#5e5e5e;text-shadow:0 1px 0 rgba(255,255,255,.8);text-decoration:none}.woocommerce #content div.product .woocommerce-tabs ul.tabs li a:hover,.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li a:hover,.woocommerce-page div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#777}.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active,.woocommerce div.product .woocommerce-tabs ul.tabs li.active,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active,.woocommerce-page div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active a,.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active a,.woocommerce-page div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active:before,.woocommerce div.product .woocommerce-tabs ul.tabs li.active:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs li.active:before{box-shadow:2px 2px 0 #fff}.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active:after,.woocommerce div.product .woocommerce-tabs ul.tabs li.active:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs li.active:after{box-shadow:-2px 2px 0 #fff}.woocommerce #content div.product .woocommerce-tabs ul.tabs li:after,.woocommerce #content div.product .woocommerce-tabs ul.tabs li:before,.woocommerce div.product .woocommerce-tabs ul.tabs li:after,.woocommerce div.product .woocommerce-tabs ul.tabs li:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs li:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs li:before{border:1px solid #e0dadf;position:absolute;bottom:-1px;width:5px;height:5px;content:" "}.woocommerce #content div.product .woocommerce-tabs ul.tabs li:before,.woocommerce div.product .woocommerce-tabs ul.tabs li:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:before,.woocommerce-page 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 #e0dadf}.woocommerce #content div.product .woocommerce-tabs ul.tabs li:after,.woocommerce div.product .woocommerce-tabs ul.tabs li:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:after,.woocommerce-page 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 #e0dadf}.woocommerce #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs:before{position:absolute;content:" ";width:100%;bottom:0;left:0;border-bottom:1px solid #e0dadf;z-index:1}.woocommerce #content div.product .woocommerce-tabs .panel,.woocommerce div.product .woocommerce-tabs .panel,.woocommerce-page #content div.product .woocommerce-tabs .panel,.woocommerce-page div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce #content div.product p.cart,.woocommerce div.product p.cart,.woocommerce-page #content div.product p.cart,.woocommerce-page div.product p.cart{margin-bottom:2em}.woocommerce #content div.product p.cart:after,.woocommerce #content div.product p.cart:before,.woocommerce div.product p.cart:after,.woocommerce div.product p.cart:before,.woocommerce-page #content div.product p.cart:after,.woocommerce-page #content div.product p.cart:before,.woocommerce-page div.product p.cart:after,.woocommerce-page div.product p.cart:before{content:" ";display:table}.woocommerce #content div.product p.cart:after,.woocommerce div.product p.cart:after,.woocommerce-page #content div.product p.cart:after,.woocommerce-page div.product p.cart:after{clear:both}.woocommerce #content div.product form.cart,.woocommerce div.product form.cart,.woocommerce-page #content div.product form.cart,.woocommerce-page div.product form.cart{margin-bottom:2em}.woocommerce #content div.product form.cart:after,.woocommerce #content div.product form.cart:before,.woocommerce div.product form.cart:after,.woocommerce div.product form.cart:before,.woocommerce-page #content div.product form.cart:after,.woocommerce-page #content div.product form.cart:before,.woocommerce-page div.product form.cart:after,.woocommerce-page div.product form.cart:before{content:" ";display:table}.woocommerce #content div.product form.cart:after,.woocommerce div.product form.cart:after,.woocommerce-page #content div.product form.cart:after,.woocommerce-page div.product form.cart:after{clear:both}.woocommerce #content div.product form.cart div.quantity,.woocommerce div.product form.cart div.quantity,.woocommerce-page #content div.product form.cart div.quantity,.woocommerce-page div.product form.cart div.quantity{float:left;margin:0 4px 0 0}.woocommerce #content div.product form.cart table,.woocommerce div.product form.cart table,.woocommerce-page #content div.product form.cart table,.woocommerce-page div.product form.cart table{border-width:0 0 1px}.woocommerce #content div.product form.cart table td,.woocommerce div.product form.cart table td,.woocommerce-page #content div.product form.cart table td,.woocommerce-page div.product form.cart table td{padding-left:0}.woocommerce #content div.product form.cart table div.quantity,.woocommerce div.product form.cart table div.quantity,.woocommerce-page #content div.product form.cart table div.quantity,.woocommerce-page div.product form.cart table div.quantity{float:none;margin:0}.woocommerce #content div.product form.cart table small.stock,.woocommerce div.product form.cart table small.stock,.woocommerce-page #content div.product form.cart table small.stock,.woocommerce-page div.product form.cart table small.stock{display:block;float:none}.woocommerce #content div.product form.cart .variations,.woocommerce div.product form.cart .variations,.woocommerce-page #content div.product form.cart .variations,.woocommerce-page div.product form.cart .variations{margin-bottom:1em}.woocommerce #content div.product form.cart .variations label,.woocommerce div.product form.cart .variations label,.woocommerce-page #content div.product form.cart .variations label,.woocommerce-page div.product form.cart .variations label{font-weight:700}.woocommerce #content div.product form.cart .variations select,.woocommerce div.product form.cart .variations select,.woocommerce-page #content div.product form.cart .variations select,.woocommerce-page div.product form.cart .variations select{width:100%;float:left}.woocommerce #content div.product form.cart .variations td.label,.woocommerce div.product form.cart .variations td.label,.woocommerce-page #content div.product form.cart .variations td.label,.woocommerce-page div.product form.cart .variations td.label{padding-right:1em}.woocommerce #content div.product form.cart .variations td,.woocommerce div.product form.cart .variations td,.woocommerce-page #content div.product form.cart .variations td,.woocommerce-page div.product form.cart .variations td{vertical-align:top}.woocommerce #content div.product form.cart .button,.woocommerce div.product form.cart .button,.woocommerce-page #content div.product form.cart .button,.woocommerce-page div.product form.cart .button{vertical-align:middle;float:left}.woocommerce #content div.product form.cart .group_table td.label,.woocommerce div.product form.cart .group_table td.label,.woocommerce-page #content div.product form.cart .group_table td.label,.woocommerce-page div.product form.cart .group_table td.label{padding-right:1em;padding-left:1em}.woocommerce #content div.product form.cart .group_table td,.woocommerce div.product form.cart .group_table td,.woocommerce-page #content div.product form.cart .group_table td,.woocommerce-page div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em}.woocommerce span.onsale,.woocommerce-page span.onsale{min-height:32px;min-width:32px;padding:4px;font-size:12px;font-weight:700;position:absolute;text-align:center;line-height:32px;top:6px;left:6px;margin:0;-webkit-border-radius:20px;border-radius:20px;background:#a2c094;background:-webkit-gradient(linear,left top,left bottom,from(#a2c094),to(#85ad74));background:-webkit-linear-gradient(#a2c094,#85ad74);background:-moz-linear-gradient(center top,#a2c094 0,#85ad74 100%);background:-moz-gradient(center top,#a2c094 0,#85ad74 100%);text-shadow:0 -1px 0 #85ad74;color:#fff;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.2)}.woocommerce .products ul,.woocommerce ul.products,.woocommerce-page .products ul,.woocommerce-page 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,.woocommerce-page .products ul:after,.woocommerce-page .products ul:before,.woocommerce-page ul.products:after,.woocommerce-page ul.products:before{content:" ";display:table}.woocommerce .products ul:after,.woocommerce ul.products:after,.woocommerce-page .products ul:after,.woocommerce-page ul.products:after{clear:both}.woocommerce .products ul li,.woocommerce ul.products li,.woocommerce-page .products ul li,.woocommerce-page ul.products li{list-style:none}.woocommerce ul.products li.product .onsale,.woocommerce-page ul.products li.product .onsale{top:0;right:0;left:auto;margin:-6px -6px 0 0}.woocommerce ul.products li.product h3,.woocommerce-page ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a,.woocommerce-page ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img,.woocommerce-page ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 8px;box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s}.woocommerce ul.products li.product a:hover img,.woocommerce-page ul.products li.product a:hover img{box-shadow:0 1px 3px 0 rgba(0,0,0,.4);-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.4)}.woocommerce ul.products li.product strong,.woocommerce-page ul.products li.product strong{display:block}.woocommerce ul.products li.product .price,.woocommerce-page ul.products li.product .price{color:#85ad74;display:block;font-weight:400;margin-bottom:.5em}.woocommerce ul.products li.product .price del,.woocommerce-page ul.products li.product .price del{font-size:.67em;color:rgba(145,145,145,.5);margin:-2px 0 0}.woocommerce ul.products li.product .price ins,.woocommerce-page ul.products li.product .price ins{background:0 0}.woocommerce ul.products li.product .price .from,.woocommerce-page ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(145,145,145,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-ordering,.woocommerce-page .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select,.woocommerce-page .woocommerce-ordering select{vertical-align:top}.woocommerce #content nav.woocommerce-pagination,.woocommerce nav.woocommerce-pagination,.woocommerce-page #content nav.woocommerce-pagination,.woocommerce-page nav.woocommerce-pagination{text-align:center}.woocommerce #content nav.woocommerce-pagination ul,.woocommerce nav.woocommerce-pagination ul,.woocommerce-page #content nav.woocommerce-pagination ul,.woocommerce-page nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;clear:both;border:1px solid #e0dadf;border-right:0;margin:1px}.woocommerce #content nav.woocommerce-pagination ul li,.woocommerce nav.woocommerce-pagination ul li,.woocommerce-page #content nav.woocommerce-pagination ul li,.woocommerce-page nav.woocommerce-pagination ul li{border-right:1px solid #e0dadf;padding:0;margin:0;float:left;display:inline;overflow:hidden}.woocommerce #content nav.woocommerce-pagination ul li a,.woocommerce #content nav.woocommerce-pagination ul li span,.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span,.woocommerce-page #content nav.woocommerce-pagination ul li a,.woocommerce-page #content nav.woocommerce-pagination ul li span,.woocommerce-page nav.woocommerce-pagination ul li a,.woocommerce-page nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1em;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce #content nav.woocommerce-pagination ul li a:focus,.woocommerce #content nav.woocommerce-pagination ul li a:hover,.woocommerce #content nav.woocommerce-pagination ul li span.current,.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current,.woocommerce-page #content nav.woocommerce-pagination ul li a:focus,.woocommerce-page #content nav.woocommerce-pagination ul li a:hover,.woocommerce-page #content nav.woocommerce-pagination ul li span.current,.woocommerce-page nav.woocommerce-pagination ul li a:focus,.woocommerce-page nav.woocommerce-pagination ul li a:hover,.woocommerce-page nav.woocommerce-pagination ul li span.current{background:#f7f6f7;color:#998896}.woocommerce #content input.button,.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.woocommerce-page #content input.button,.woocommerce-page #respond input#submit,.woocommerce-page a.button,.woocommerce-page button.button,.woocommerce-page input.button{font-size:100%;margin:0;line-height:1em;cursor:pointer;position:relative;font-family:inherit;overflow:visible;padding:6px 10px;text-decoration:none;font-weight:700;-webkit-border-radius:2px;border-radius:2px;left:auto;color:#5e5e5e;text-shadow:0 1px 0 rgba(255,255,255,.8);border:1px solid #c8bfc6;background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#e0dadf));background:-webkit-linear-gradient(#f7f6f7,#e0dadf);background:-moz-linear-gradient(center top,#f7f6f7 0,#e0dadf 100%);background:-moz-gradient(center top,#f7f6f7 0,#e0dadf 100%);white-space:nowrap;display:inline-block;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1)}.woocommerce #content input.button.loading,.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading,.woocommerce-page #content input.button.loading,.woocommerce-page #respond input#submit.loading,.woocommerce-page a.button.loading,.woocommerce-page button.button.loading,.woocommerce-page input.button.loading{color:#777;border:1px solid #f7f6f7}.woocommerce #content input.button.loading:before,.woocommerce #respond input#submit.loading:before,.woocommerce a.button.loading:before,.woocommerce button.button.loading:before,.woocommerce input.button.loading:before,.woocommerce-page #content input.button.loading:before,.woocommerce-page #respond input#submit.loading:before,.woocommerce-page a.button.loading:before,.woocommerce-page button.button.loading:before,.woocommerce-page input.button.loading:before{content:"";position:absolute;top:0;right:0;left:0;bottom:0;background:url(../images/ajax-loader.gif) center no-repeat rgba(255,255,255,.65)}.woocommerce #content input.button.added:before,.woocommerce #respond input#submit.added:before,.woocommerce a.button.added:before,.woocommerce button.button.added:before,.woocommerce input.button.added:before,.woocommerce-page #content input.button.added:before,.woocommerce-page #respond input#submit.added:before,.woocommerce-page a.button.added:before,.woocommerce-page button.button.added:before,.woocommerce-page input.button.added:before{position:absolute;height:16px;width:16px;top:.35em;right:-26px;text-indent:0;font-family:WooCommerce;content:"\e017"}.woocommerce #content input.button:hover,.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover,.woocommerce-page #content input.button:hover,.woocommerce-page #respond input#submit:hover,.woocommerce-page a.button:hover,.woocommerce-page button.button:hover,.woocommerce-page input.button:hover{background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#d4cdd2));background:-webkit-linear-gradient(#f7f6f7,#d4cdd2);background:-moz-linear-gradient(center top,#f7f6f7 0,#d4cdd2 100%);background:-moz-gradient(center top,#f7f6f7 0,#d4cdd2 100%);text-decoration:none}.woocommerce #content input.button:active,.woocommerce #respond input#submit:active,.woocommerce a.button:active,.woocommerce button.button:active,.woocommerce input.button:active,.woocommerce-page #content input.button:active,.woocommerce-page #respond input#submit:active,.woocommerce-page a.button:active,.woocommerce-page button.button:active,.woocommerce-page input.button:active{top:1px}.woocommerce #content input.button.alt,.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt,.woocommerce-page #content input.button.alt,.woocommerce-page #respond input#submit.alt,.woocommerce-page a.button.alt,.woocommerce-page button.button.alt,.woocommerce-page input.button.alt{background:#ad74a2;background:-webkit-gradient(linear,left top,left bottom,from(#ad74a2),to(#96588a));background:-webkit-linear-gradient(#ad74a2,#96588a);background:-moz-linear-gradient(center top,#ad74a2 0,#96588a 100%);background:-moz-gradient(center top,#ad74a2 0,#96588a 100%);border-color:#76456c;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.6)}.woocommerce #content input.button.alt:hover,.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover,.woocommerce-page #content input.button.alt:hover,.woocommerce-page #respond input#submit.alt:hover,.woocommerce-page a.button.alt:hover,.woocommerce-page button.button.alt:hover,.woocommerce-page input.button.alt:hover{background:#ad74a2;background:-webkit-gradient(linear,left top,left bottom,from(#ad74a2),to(#864f7b));background:-webkit-linear-gradient(#ad74a2,#864f7b);background:-moz-linear-gradient(center top,#ad74a2 0,#864f7b 100%);background:-moz-gradient(center top,#ad74a2 0,#864f7b 100%);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.6)}.woocommerce #content input.button.disabled,.woocommerce #content input.button:disabled,.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce-page #content input.button.disabled,.woocommerce-page #content input.button:disabled,.woocommerce-page #respond input#submit.disabled,.woocommerce-page #respond input#submit:disabled,.woocommerce-page a.button.disabled,.woocommerce-page a.button:disabled,.woocommerce-page button.button.disabled,.woocommerce-page button.button:disabled,.woocommerce-page input.button.disabled,.woocommerce-page input.button:disabled{color:#aaa;border:1px solid #e0dadf;background:#f7f6f7;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;cursor:not-allowed}.woocommerce #content input.button.disabled:active,.woocommerce #content input.button:disabled:active,.woocommerce #respond input#submit.disabled:active,.woocommerce #respond input#submit:disabled:active,.woocommerce a.button.disabled:active,.woocommerce a.button:disabled:active,.woocommerce button.button.disabled:active,.woocommerce button.button:disabled:active,.woocommerce input.button.disabled:active,.woocommerce input.button:disabled:active,.woocommerce-page #content input.button.disabled:active,.woocommerce-page #content input.button:disabled:active,.woocommerce-page #respond input#submit.disabled:active,.woocommerce-page #respond input#submit:disabled:active,.woocommerce-page a.button.disabled:active,.woocommerce-page a.button:disabled:active,.woocommerce-page button.button.disabled:active,.woocommerce-page button.button:disabled:active,.woocommerce-page input.button.disabled:active,.woocommerce-page input.button:disabled:active{top:0}.woocommerce .cart .button,.woocommerce .cart input.button,.woocommerce-page .cart .button,.woocommerce-page .cart input.button{float:none}.woocommerce a.added_to_cart,.woocommerce-page a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #content .quantity,.woocommerce .quantity,.woocommerce-page #content .quantity,.woocommerce-page .quantity{width:60px;position:relative;margin:0 auto;overflow:hidden;zoom:1}.woocommerce #content .quantity input.qty,.woocommerce .quantity input.qty,.woocommerce-page #content .quantity input.qty,.woocommerce-page .quantity input.qty{width:40px;height:28px;float:left;padding:0;margin:0;text-align:center;border:1px solid #c8bfc6;border-right:0;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px;box-shadow:inset 0 0 2px 0 #f7f6f7;-webkit-box-shadow:inset 0 0 2px 0 #f7f6f7;font-weight:700;-moz-appearance:textfield}.woocommerce #content .quantity input[type=number],.woocommerce #content .quantity noindex:-o-prefocus,.woocommerce .quantity input[type=number],.woocommerce .quantity noindex:-o-prefocus,.woocommerce-page #content .quantity input[type=number],.woocommerce-page #content .quantity noindex:-o-prefocus,.woocommerce-page .quantity input[type=number],.woocommerce-page .quantity noindex:-o-prefocus{padding-right:1.2em}.woocommerce #content .quantity .minus,.woocommerce #content .quantity .plus,.woocommerce .quantity .minus,.woocommerce .quantity .plus,.woocommerce-page #content .quantity .minus,.woocommerce-page #content .quantity .plus,.woocommerce-page .quantity .minus,.woocommerce-page .quantity .plus{display:block;padding:0;margin:0;position:absolute;text-align:center;vertical-align:text-top;width:20px;height:15px;overflow:visible;text-decoration:none;font-weight:700;cursor:pointer;line-height:13px;font-size:12px;-webkit-border-radius:2px;border-radius:2px;color:#5e5e5e;text-shadow:0 1px 0 rgba(255,255,255,.8);border:1px solid #c8bfc6;background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#e0dadf));background:-webkit-linear-gradient(#f7f6f7,#e0dadf);background:-moz-linear-gradient(center top,#f7f6f7 0,#e0dadf 100%);background:-moz-gradient(center top,#f7f6f7 0,#e0dadf 100%);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1)}.woocommerce #content .quantity .minus:hover,.woocommerce #content .quantity .plus:hover,.woocommerce .quantity .minus:hover,.woocommerce .quantity .plus:hover,.woocommerce-page #content .quantity .minus:hover,.woocommerce-page #content .quantity .plus:hover,.woocommerce-page .quantity .minus:hover,.woocommerce-page .quantity .plus:hover{background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#d4cdd2));background:-webkit-linear-gradient(#f7f6f7,#d4cdd2);background:-moz-linear-gradient(center top,#f7f6f7 0,#d4cdd2 100%);background:-moz-gradient(center top,#f7f6f7 0,#d4cdd2 100%)}.woocommerce #content .quantity .plus,.woocommerce .quantity .plus,.woocommerce-page #content .quantity .plus,.woocommerce-page .quantity .plus{top:0;right:0;border-bottom:0;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.woocommerce #content .quantity .minus,.woocommerce .quantity .minus,.woocommerce-page #content .quantity .minus,.woocommerce-page .quantity .minus{bottom:0;right:0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:0;border-top-left-radius:0;border-top-right-radius:0}.woocommerce #reviews h2 small,.woocommerce-page #reviews h2 small{float:right;color:#777;font-size:15px;line-height:21px;margin:10px 0 0}.woocommerce #reviews h2 small a,.woocommerce-page #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3,.woocommerce-page #reviews h3{margin:0}.woocommerce #reviews #respond,.woocommerce-page #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment,.woocommerce-page #reviews #comment{height:75px}.woocommerce #reviews #comments .add_review:after,.woocommerce #reviews #comments .add_review:before,.woocommerce-page #reviews #comments .add_review:after,.woocommerce-page #reviews #comments .add_review:before{content:" ";display:table}.woocommerce #reviews #comments .add_review:after,.woocommerce-page #reviews #comments .add_review:after{clear:both}.woocommerce #reviews #comments h2,.woocommerce-page #reviews #comments h2{clear:none}.woocommerce #reviews #comments ol.commentlist,.woocommerce-page #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist:after,.woocommerce #reviews #comments ol.commentlist:before,.woocommerce-page #reviews #comments ol.commentlist:after,.woocommerce-page #reviews #comments ol.commentlist:before{content:" ";display:table}.woocommerce #reviews #comments ol.commentlist:after,.woocommerce-page #reviews #comments ol.commentlist:after{clear:both}.woocommerce #reviews #comments ol.commentlist li,.woocommerce-page #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:0;border:0}.woocommerce #reviews #comments ol.commentlist li .meta,.woocommerce-page #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar,.woocommerce-page #reviews #comments ol.commentlist li img.avatar{float:left;position:absolute;top:0;left:0;padding:3px;width:32px;height:auto;background:#f7f6f7;border:1px solid #f0eef0;margin:0;line-height:1}.woocommerce #reviews #comments ol.commentlist li .comment-text,.woocommerce-page #reviews #comments ol.commentlist li .comment-text{margin:0 0 0 50px;border:1px solid #f0eef0;-webkit-border-radius:4px;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text:after,.woocommerce #reviews #comments ol.commentlist li .comment-text:before,.woocommerce-page #reviews #comments ol.commentlist li .comment-text:after,.woocommerce-page #reviews #comments ol.commentlist li .comment-text:before{content:" ";display:table}.woocommerce #reviews #comments ol.commentlist li .comment-text:after,.woocommerce-page #reviews #comments ol.commentlist li .comment-text:after{clear:both}.woocommerce #reviews #comments ol.commentlist li .comment-text p,.woocommerce-page #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta,.woocommerce-page #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children,.woocommerce-page #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 0 0 50px}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating,.woocommerce-page #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond,.woocommerce-page #reviews #comments ol.commentlist #respond{border:1px solid #f0eef0;-webkit-border-radius:4px;border-radius:4px;padding:1em 1em 0;margin:20px 0 0 50px}.woocommerce #reviews #comments .commentlist>li:before,.woocommerce-page #reviews #comments .commentlist>li:before{content:""}.woocommerce .star-rating,.woocommerce-page .star-rating{float:right;overflow:hidden;position:relative;height:1em;line-height:1em;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating:before,.woocommerce-page .star-rating:before{content:"\73\73\73\73\73";color:#e0dadf;float:left;top:0;left:0;position:absolute}.woocommerce .star-rating span,.woocommerce-page .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span:before,.woocommerce-page .star-rating span:before{content:"\53\53\53\53\53";top:0;position:absolute;left:0}.woocommerce .woocommerce-product-rating,.woocommerce-page .woocommerce-product-rating{line-height:2em;display:block}.woocommerce .woocommerce-product-rating .star-rating,.woocommerce-page .woocommerce-product-rating .star-rating{margin:.5em 4px 0 0;float:left}.woocommerce .products .star-rating,.woocommerce-page .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating,.woocommerce-page .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond,.woocommerce-page #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,.woocommerce-page #review_form #respond:after,.woocommerce-page #review_form #respond:before{content:" ";display:table}.woocommerce #review_form #respond:after,.woocommerce-page #review_form #respond:after{clear:both}.woocommerce #review_form #respond p,.woocommerce-page #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input,.woocommerce-page #review_form #respond .form-submit input{left:auto}.woocommerce #review_form #respond textarea,.woocommerce-page #review_form #respond textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}.woocommerce p.stars,.woocommerce-page p.stars{position:relative;font-size:1em}.woocommerce p.stars a,.woocommerce-page p.stars a{display:inline-block;font-weight:700;margin-right:1em;text-indent:-9999px;position:relative}.woocommerce p.stars a:last-child,.woocommerce-page p.stars a:last-child{border-right:0}.woocommerce p.stars a.star-1,.woocommerce p.stars a.star-2,.woocommerce p.stars a.star-3,.woocommerce p.stars a.star-4,.woocommerce p.stars a.star-5,.woocommerce-page p.stars a.star-1,.woocommerce-page p.stars a.star-2,.woocommerce-page p.stars a.star-3,.woocommerce-page p.stars a.star-4,.woocommerce-page p.stars a.star-5{border-right:1px solid #ccc}.woocommerce p.stars a.star-1:after,.woocommerce p.stars a.star-2:after,.woocommerce p.stars a.star-3:after,.woocommerce p.stars a.star-4:after,.woocommerce p.stars a.star-5:after,.woocommerce-page p.stars a.star-1:after,.woocommerce-page p.stars a.star-2:after,.woocommerce-page p.stars a.star-3:after,.woocommerce-page p.stars a.star-4:after,.woocommerce-page p.stars a.star-5:after{font-family:WooCommerce;text-indent:0;position:absolute;top:0;left:0}.woocommerce p.stars a.star-1,.woocommerce-page p.stars a.star-1{width:2em}.woocommerce p.stars a.star-1:after,.woocommerce-page p.stars a.star-1:after{content:"\e021"}.woocommerce p.stars a.star-1.active:after,.woocommerce p.stars a.star-1:hover:after,.woocommerce-page p.stars a.star-1.active:after,.woocommerce-page p.stars a.star-1:hover:after{content:"\e020"}.woocommerce p.stars a.star-2,.woocommerce-page p.stars a.star-2{width:3em}.woocommerce p.stars a.star-2:after,.woocommerce-page p.stars a.star-2:after{content:"\e021\e021"}.woocommerce p.stars a.star-2.active:after,.woocommerce p.stars a.star-2:hover:after,.woocommerce-page p.stars a.star-2.active:after,.woocommerce-page p.stars a.star-2:hover:after{content:"\e020\e020"}.woocommerce p.stars a.star-3,.woocommerce-page p.stars a.star-3{width:4em}.woocommerce p.stars a.star-3:after,.woocommerce-page p.stars a.star-3:after{content:"\e021\e021\e021"}.woocommerce p.stars a.star-3.active:after,.woocommerce p.stars a.star-3:hover:after,.woocommerce-page p.stars a.star-3.active:after,.woocommerce-page p.stars a.star-3:hover:after{content:"\e020\e020\e020"}.woocommerce p.stars a.star-4,.woocommerce-page p.stars a.star-4{width:5em}.woocommerce p.stars a.star-4:after,.woocommerce-page p.stars a.star-4:after{content:"\e021\e021\e021\e021"}.woocommerce p.stars a.star-4.active:after,.woocommerce p.stars a.star-4:hover:after,.woocommerce-page p.stars a.star-4.active:after,.woocommerce-page p.stars a.star-4:hover:after{content:"\e020\e020\e020\e020"}.woocommerce p.stars a.star-5,.woocommerce-page p.stars a.star-5{width:6em;border:0}.woocommerce p.stars a.star-5:after,.woocommerce-page p.stars a.star-5:after{content:"\e021\e021\e021\e021\e021"}.woocommerce p.stars a.star-5.active:after,.woocommerce p.stars a.star-5:hover:after,.woocommerce-page p.stars a.star-5.active:after,.woocommerce-page p.stars a.star-5:hover:after{content:"\e020\e020\e020\e020\e020"}.woocommerce table.shop_attributes,.woocommerce-page 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,.woocommerce-page table.shop_attributes th{width:150px;font-weight:700;padding:8px;border-top:0;border-bottom:1px dotted rgba(0,0,0,.1);margin:0;line-height:1.5em}.woocommerce table.shop_attributes td,.woocommerce-page table.shop_attributes td{font-style:italic;padding:0;border-top:0;border-bottom:1px dotted rgba(0,0,0,.1);margin:0;line-height:1.5em}.woocommerce table.shop_attributes td p,.woocommerce-page table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes .alt td,.woocommerce table.shop_attributes .alt th,.woocommerce-page table.shop_attributes .alt td,.woocommerce-page table.shop_attributes .alt th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table,.woocommerce-page table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 -1px 24px 0;text-align:left;width:100%;border-collapse:separate;-webkit-border-radius:5px;border-radius:5px}.woocommerce table.shop_table th,.woocommerce-page table.shop_table th{font-weight:700;line-height:18px;padding:9px 12px}.woocommerce table.shop_table td,.woocommerce-page 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,.woocommerce-page table.shop_table td small{font-weight:400}.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th,.woocommerce-page table.shop_table tfoot td,.woocommerce-page table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders,.woocommerce-page table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th,.woocommerce-page table.my_account_orders td,.woocommerce-page table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button,.woocommerce-page table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions,.woocommerce-page table.my_account_orders .order-actions{text-align:right}.woocommerce table.my_account_orders .order-actions .button,.woocommerce-page table.my_account_orders .order-actions .button{margin:.125em 0 .125em .25em}.woocommerce td.product-name dl.variation,.woocommerce-page td.product-name dl.variation{margin:.25em 0}.woocommerce td.product-name dl.variation:after,.woocommerce td.product-name dl.variation:before,.woocommerce-page td.product-name dl.variation:after,.woocommerce-page td.product-name dl.variation:before{content:" ";display:table}.woocommerce td.product-name dl.variation:after,.woocommerce-page td.product-name dl.variation:after{clear:both}.woocommerce td.product-name dl.variation dd,.woocommerce td.product-name dl.variation dt,.woocommerce-page td.product-name dl.variation dd,.woocommerce-page td.product-name dl.variation dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce td.product-name dl.variation dt,.woocommerce-page td.product-name dl.variation dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}.woocommerce td.product-name dl.variation dd,.woocommerce-page td.product-name dl.variation dd{padding:0 0 .25em}.woocommerce td.product-name dl.variation dd p:last-child,.woocommerce-page td.product-name dl.variation dd p:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification,.woocommerce-page td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity,.woocommerce-page td.product-quantity{min-width:80px}.woocommerce #content table.cart .product-thumbnail,.woocommerce table.cart .product-thumbnail,.woocommerce-page #content table.cart .product-thumbnail,.woocommerce-page table.cart .product-thumbnail{min-width:32px}.woocommerce #content table.cart img,.woocommerce table.cart img,.woocommerce-page #content table.cart img,.woocommerce-page table.cart img{width:32px}.woocommerce #content table.cart td,.woocommerce #content table.cart th,.woocommerce table.cart td,.woocommerce table.cart th,.woocommerce-page #content table.cart td,.woocommerce-page #content table.cart th,.woocommerce-page table.cart td,.woocommerce-page table.cart th{vertical-align:middle}.woocommerce #content table.cart a.remove,.woocommerce table.cart a.remove,.woocommerce-page #content table.cart a.remove,.woocommerce-page table.cart a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;-webkit-border-radius:100%;border-radius:100%;color:red;text-decoration:none;font-weight:700}.woocommerce #content table.cart a.remove:hover,.woocommerce table.cart a.remove:hover,.woocommerce-page #content table.cart a.remove:hover,.woocommerce-page table.cart a.remove:hover{background-color:red;color:#fff}.woocommerce #content table.cart td.actions .coupon .input-text,.woocommerce table.cart td.actions .coupon .input-text,.woocommerce-page #content table.cart td.actions .coupon .input-text,.woocommerce-page table.cart td.actions .coupon .input-text{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.1);-webkit-box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.1);border:1px solid #e0dadf;padding:6px 6px 5px;margin:0 4px 0 0;outline:0;line-height:1em}.woocommerce #content table.cart input,.woocommerce table.cart input,.woocommerce-page #content table.cart input,.woocommerce-page table.cart input{margin:0;vertical-align:middle;line-height:1em}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget,.woocommerce-page ul.cart_list,.woocommerce-page ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li,.woocommerce-page ul.cart_list li,.woocommerce-page 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,.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 ul.cart_list li:after,.woocommerce ul.product_list_widget li:after,.woocommerce-page ul.cart_list li:after,.woocommerce-page ul.product_list_widget li:after{clear:both}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a,.woocommerce-page ul.cart_list li a,.woocommerce-page ul.product_list_widget li a{display:block;font-weight:700}.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;margin-left:4px;width:32px;height:auto;box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.3)}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl,.woocommerce-page ul.cart_list li dl,.woocommerce-page 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,.woocommerce-page ul.cart_list li dl:after,.woocommerce-page ul.cart_list li dl:before,.woocommerce-page ul.product_list_widget li dl:after,.woocommerce-page ul.product_list_widget li dl:before{content:" ";display:table}.woocommerce ul.cart_list li dl:after,.woocommerce ul.product_list_widget li dl:after,.woocommerce-page ul.cart_list li dl:after,.woocommerce-page ul.product_list_widget li dl:after{clear:both}.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,.woocommerce-page ul.cart_list li dl dd,.woocommerce-page ul.cart_list li dl dt,.woocommerce-page ul.product_list_widget li dl dd,.woocommerce-page 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,.woocommerce-page ul.cart_list li dl dt,.woocommerce-page ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd,.woocommerce-page ul.cart_list li dl dd,.woocommerce-page 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,.woocommerce-page ul.cart_list li dl dd p:last-child,.woocommerce-page 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,.woocommerce-page ul.cart_list li .star-rating,.woocommerce-page ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce-page .widget_shopping_cart .total,.woocommerce-page.widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #f7f6f7;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce-page .widget_shopping_cart .total strong,.woocommerce-page.widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .buttons:after,.woocommerce .widget_shopping_cart .buttons:before,.woocommerce-page .widget_shopping_cart .buttons:after,.woocommerce-page .widget_shopping_cart .buttons:before,.woocommerce-page.widget_shopping_cart .buttons:after,.woocommerce-page.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:after,.woocommerce-page .widget_shopping_cart .buttons:after,.woocommerce-page.widget_shopping_cart .buttons:after,.woocommerce.widget_shopping_cart .buttons:after{clear:both}.woocommerce .cart-collaterals .shipping_calculator .button,.woocommerce-page .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}.woocommerce .cart-collaterals .shipping_calculator .shipping-calculator-button:after,.woocommerce-page .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:7px;content:"\e02e"}.woocommerce .cart-collaterals .cart_totals p,.woocommerce-page .cart-collaterals .cart_totals p{margin:0}.woocommerce .cart-collaterals .cart_totals p small,.woocommerce-page .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}.woocommerce .cart-collaterals .cart_totals table,.woocommerce-page .cart-collaterals .cart_totals table{border-collapse:separate;-webkit-border-radius:5px;border-radius:5px;margin:0 0 6px;padding:0}.woocommerce .cart-collaterals .cart_totals table tr:first-child td,.woocommerce .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-page .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-page .cart-collaterals .cart_totals table tr:first-child th{border-top:0}.woocommerce .cart-collaterals .cart_totals table th,.woocommerce-page .cart-collaterals .cart_totals table th{padding:6px 12px 0 0;width:25%}.woocommerce .cart-collaterals .cart_totals table td,.woocommerce-page .cart-collaterals .cart_totals table td{padding:6px 0}.woocommerce .cart-collaterals .cart_totals table td,.woocommerce .cart-collaterals .cart_totals table th,.woocommerce-page .cart-collaterals .cart_totals table td,.woocommerce-page .cart-collaterals .cart_totals table th{vertical-align:top}.woocommerce .cart-collaterals .cart_totals table small,.woocommerce-page .cart-collaterals .cart_totals table small{display:block;color:#777}.woocommerce .cart-collaterals .cart_totals table select,.woocommerce-page .cart-collaterals .cart_totals table select{width:100%}.woocommerce .cart-collaterals .cart_totals .discount td,.woocommerce-page .cart-collaterals .cart_totals .discount td{color:#85ad74}.woocommerce .cart-collaterals .cart_totals tr td,.woocommerce .cart-collaterals .cart_totals tr th,.woocommerce-page .cart-collaterals .cart_totals tr td,.woocommerce-page .cart-collaterals .cart_totals tr th{border-top:1px solid #f7f6f7}.woocommerce .cart-collaterals .cart_totals a.button.alt,.woocommerce-page .cart-collaterals .cart_totals a.button.alt{display:inline-block}.woocommerce .cart-collaterals .cross-sells ul.products li.product,.woocommerce-page .cart-collaterals .cross-sells ul.products li.product{margin-top:0}.woocommerce form .form-row,.woocommerce-page form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder,.woocommerce-page 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,.woocommerce-page form .form-row label{line-height:2em}.woocommerce form .form-row label.hidden,.woocommerce-page form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline,.woocommerce-page form .form-row label.inline{display:inline}.woocommerce form .form-row select,.woocommerce-page form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required,.woocommerce-page form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox,.woocommerce-page 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,.woocommerce-page form .form-row input.input-text,.woocommerce-page form .form-row textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1em}.woocommerce form .form-row textarea,.woocommerce-page form .form-row textarea{height:4em;line-height:1.5em;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row.validate-required.woocommerce-invalid .chosen-drop,.woocommerce form .form-row.validate-required.woocommerce-invalid .chosen-single,.woocommerce form .form-row.validate-required.woocommerce-invalid input.input-text,.woocommerce form .form-row.validate-required.woocommerce-invalid select,.woocommerce-page form .form-row.validate-required.woocommerce-invalid .chosen-drop,.woocommerce-page form .form-row.validate-required.woocommerce-invalid .chosen-single,.woocommerce-page form .form-row.validate-required.woocommerce-invalid input.input-text,.woocommerce-page form .form-row.validate-required.woocommerce-invalid select{border-color:#fb7f88}.woocommerce form .form-row ::-webkit-input-placeholder,.woocommerce-page form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder,.woocommerce-page form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder,.woocommerce-page form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register,.woocommerce-page form.checkout_coupon,.woocommerce-page form.login,.woocommerce-page form.register{border:1px solid #e0dadf;padding:20px;margin:2em 0;text-align:left;-webkit-border-radius:5px;border-radius:5px}.woocommerce ul#shipping_method,.woocommerce-page ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li,.woocommerce-page ul#shipping_method li{margin:0;padding:.25em 0 .25em 22px;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method .amount,.woocommerce-page ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents,.woocommerce-page p.woocommerce-shipping-contents{margin:0}.woocommerce .checkout .col-2 h3#ship-to-different-address,.woocommerce-page .checkout .col-2 h3#ship-to-different-address{float:left;clear:none}.woocommerce .checkout .col-2 .form-row-first,.woocommerce .checkout .col-2 .notes,.woocommerce-page .checkout .col-2 .form-row-first,.woocommerce-page .checkout .col-2 .notes{clear:left}.woocommerce .checkout .create-account small,.woocommerce-page .checkout .create-account small{font-size:11px;color:#777;line-height:13px;font-weight:400}.woocommerce .checkout div.shipping-address,.woocommerce-page .checkout div.shipping-address{padding:0;clear:left;width:100%}.woocommerce .checkout .shipping_address,.woocommerce-page .checkout .shipping_address{clear:both}.woocommerce #payment,.woocommerce-page #payment{background:#f7f6f7;-webkit-border-radius:5px;border-radius:5px}.woocommerce #payment ul.payment_methods,.woocommerce-page #payment ul.payment_methods{text-align:left;padding:1em;border-bottom:1px solid #e0dadf;margin:0;list-style:none}.woocommerce #payment ul.payment_methods:after,.woocommerce #payment ul.payment_methods:before,.woocommerce-page #payment ul.payment_methods:after,.woocommerce-page #payment ul.payment_methods:before{content:" ";display:table}.woocommerce #payment ul.payment_methods:after,.woocommerce-page #payment ul.payment_methods:after{clear:both}.woocommerce #payment ul.payment_methods li,.woocommerce-page #payment ul.payment_methods li{line-height:2em;text-align:left;margin:0;font-weight:400}.woocommerce #payment ul.payment_methods li input,.woocommerce-page #payment ul.payment_methods li input{margin:0 1em 0 0}.woocommerce #payment ul.payment_methods li img,.woocommerce-page #payment ul.payment_methods li img{vertical-align:middle;margin:-2px 0 0 .5em;padding:0;position:relative;box-shadow:none}.woocommerce #payment ul.payment_methods li img+img,.woocommerce-page #payment ul.payment_methods li img+img{margin-left:2px}.woocommerce #payment div.form-row,.woocommerce-page #payment div.form-row{padding:1em;border-top:1px solid #fff}.woocommerce #payment div.payment_box,.woocommerce-page #payment div.payment_box{position:relative;width:96%;padding:1em 2%;margin:1em 0;font-size:.92em;-webkit-border-radius:2px;border-radius:2px;line-height:1.5em;background:#ebe8eb;background:-webkit-gradient(linear,left top,left bottom,from(#ebe8eb),to(#e0dadf));background:-webkit-linear-gradient(#ebe8eb,#e0dadf);background:-moz-linear-gradient(center top,#ebe8eb 0,#e0dadf 100%);background:-moz-gradient(center top,#ebe8eb 0,#e0dadf 100%);box-shadow:0 1px 2px 0 rgba(0,0,0,.25);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.25);color:#5e5e5e;text-shadow:0 1px 0 rgba(255,255,255,.8)}.woocommerce #payment div.payment_box input.input-text,.woocommerce #payment div.payment_box textarea,.woocommerce-page #payment div.payment_box input.input-text,.woocommerce-page #payment div.payment_box textarea{border-color:#c8bfc6 #d4cdd2 #d4cdd2;box-shadow:0 1px 0 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 0 rgba(255,255,255,.4)}.woocommerce #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-page #payment div.payment_box ::-webkit-input-placeholder{color:#c8bfc6}.woocommerce #payment div.payment_box :-moz-placeholder,.woocommerce-page #payment div.payment_box :-moz-placeholder{color:#c8bfc6}.woocommerce #payment div.payment_box :-ms-input-placeholder,.woocommerce-page #payment div.payment_box :-ms-input-placeholder{color:#c8bfc6}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:right}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.png)}.woocommerce #payment div.payment_box span.help,.woocommerce-page #payment div.payment_box span.help{font-size:11px;color:#777;line-height:13px;font-weight:400}.woocommerce #payment div.payment_box .form-row,.woocommerce-page #payment div.payment_box .form-row{margin:0 0 1em}.woocommerce #payment div.payment_box p:last-child,.woocommerce-page #payment div.payment_box p:last-child{margin-bottom:0}.woocommerce #payment div.payment_box:after,.woocommerce-page #payment div.payment_box:after{content:"";display:block;border:8px solid #ebe8eb;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-3px;left:0;margin:-1em 0 0 2em}.woocommerce .order_details,.woocommerce-page .order_details{margin:0 0 1.5em;list-style:none}.woocommerce .order_details:after,.woocommerce .order_details:before,.woocommerce-page .order_details:after,.woocommerce-page .order_details:before{content:" ";display:table}.woocommerce .order_details:after,.woocommerce-page .order_details:after{clear:both}.woocommerce .order_details li,.woocommerce-page .order_details li{float:left;margin-right:2em;text-transform:uppercase;font-size:.715em;line-height:1em;border-right:1px dashed #e0dadf;padding-right:2em}.woocommerce .order_details li strong,.woocommerce-page .order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5em}.woocommerce .order_details li:last-of-type,.woocommerce-page .order_details li:last-of-type{border:none}.woocommerce .addresses .title:after,.woocommerce .addresses .title:before,.woocommerce-page .addresses .title:after,.woocommerce-page .addresses .title:before{content:" ";display:table}.woocommerce .addresses .title:after,.woocommerce-page .addresses .title:after{clear:both}.woocommerce .addresses .title h3,.woocommerce-page .addresses .title h3{float:left}.woocommerce .addresses .title .edit,.woocommerce-page .addresses .title .edit{float:right}.woocommerce ol.commentlist.notes li.note p.meta,.woocommerce-page ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce ol.commentlist.notes li.note .description p:last-child,.woocommerce-page ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce ul.digital-downloads,.woocommerce-page ul.digital-downloads{margin-left:0;padding-left:0}.woocommerce ul.digital-downloads li,.woocommerce-page ul.digital-downloads li{list-style:none;margin-left:0;padding-left:0}.woocommerce ul.digital-downloads li:before,.woocommerce-page 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:7px;content:"\e00a"}.woocommerce ul.digital-downloads li .count,.woocommerce-page ul.digital-downloads li .count{float:right}.woocommerce .widget_layered_nav ul,.woocommerce-page .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li,.woocommerce-page .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,.woocommerce-page .widget_layered_nav ul li:after,.woocommerce-page .widget_layered_nav ul li:before{content:" ";display:table}.woocommerce .widget_layered_nav ul li:after,.woocommerce-page .widget_layered_nav ul li:after{clear:both}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span,.woocommerce-page .widget_layered_nav ul li a,.woocommerce-page .widget_layered_nav ul li span{padding:1px 0;float:left}.woocommerce .widget_layered_nav ul li.chosen a,.woocommerce-page .widget_layered_nav ul li.chosen a{padding:0 6px;text-decoration:none;border:1px solid #ad74a2;background:#ad74a2;box-shadow:inset 0 1px 1px rgba(255,255,255,.5) #888;-webkit-box-shadow:inset 0 1px 1px rgba(255,255,255,.5) #888;color:#fff;-webkit-border-radius:3px;border-radius:3px}.woocommerce .widget_layered_nav ul li.chosen a:before,.woocommerce-page .widget_layered_nav 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:7px;content:"\e013"}.woocommerce .widget_layered_nav ul small.count,.woocommerce-page .widget_layered_nav ul small.count{float:right;margin-left:6px;font-size:1em;padding:1px 0;color:#777}.woocommerce .widget_layered_nav_filters ul,.woocommerce-page .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,.woocommerce-page .widget_layered_nav_filters ul li{float:left;padding:0 1px 1px 0;list-style:none}.woocommerce .widget_layered_nav_filters ul li a,.woocommerce-page .widget_layered_nav_filters ul li a{padding:0 6px;text-decoration:none;border:1px solid #ad74a2;background:#ad74a2;box-shadow:inset 0 1px 1px rgba(255,255,255,.5) #888;-webkit-box-shadow:inset 0 1px 1px rgba(255,255,255,.5) #888;color:#fff;-webkit-border-radius:3px;border-radius:3px;float:left}.woocommerce .widget_layered_nav_filters ul li a:before,.woocommerce-page .widget_layered_nav_filters ul li 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:7px;content:"\e013"}.woocommerce .widget_price_filter .price_slider,.woocommerce-page .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount,.woocommerce-page .widget_price_filter .price_slider_amount{text-align:right;line-height:2.4em;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button,.woocommerce-page .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:left}.woocommerce .widget_price_filter .ui-slider,.woocommerce-page .widget_price_filter .ui-slider{position:relative;text-align:left}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle,.woocommerce-page .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:.9em;height:.9em;-webkit-border-radius:1em;border-radius:1em;border:1px solid #150d14;cursor:pointer;background:#ad74a2;background:-webkit-gradient(linear,left top,left bottom,from(#ad74a2),to(#96588a));background:-webkit-linear-gradient(#ad74a2,#96588a);background:-moz-linear-gradient(center top,#ad74a2 0,#96588a 100%);background:-moz-gradient(center top,#ad74a2 0,#96588a 100%);outline:0;top:-.3em;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.65);-moz-box-shadow:0 1px 2px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.65);box-shadow:0 1px 2px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.65)}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle:last-child,.woocommerce-page .widget_price_filter .ui-slider .ui-slider-handle:last-child{margin-left:-1em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range,.woocommerce-page .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAFUlEQVQIHWP4//9/PRMDA8NzEPEMADLLBU76a5idAAAAAElFTkSuQmCC) top repeat-x #ad74a2;box-shadow:inset 0 0 0 1px rgba(0,0,0,.5);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.5);-webkit-border-radius:1em;border-radius:1em}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content,.woocommerce-page .widget_price_filter .price_slider_wrapper .ui-widget-content{-webkit-border-radius:1em;border-radius:1em;background:#1e1e1e;background:-webkit-gradient(linear,left top,left bottom,from(#1e1e1e),to(#6a6a6a));background:-webkit-linear-gradient(#1e1e1e,#6a6a6a);background:-moz-linear-gradient(center top,#1e1e1e 0,#6a6a6a 100%);background:-moz-gradient(center top,#1e1e1e 0,#6a6a6a 100%)}.woocommerce .widget_price_filter .ui-slider-horizontal,.woocommerce-page .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range,.woocommerce-page .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min,.woocommerce-page .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{left:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max,.woocommerce-page .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{right:-1px}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.single-product .twentythirteen p.stars{clear:both}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.woocommerce #content input.button.loading:before,.woocommerce #respond input#submit.loading:before,.woocommerce a.button.loading:before,.woocommerce button.button.loading:before,.woocommerce input.button.loading:before,.woocommerce-page #content input.button.loading:before,.woocommerce-page #respond input#submit.loading:before,.woocommerce-page a.button.loading:before,.woocommerce-page button.button.loading:before,.woocommerce-page input.button.loading:before{background-image:url(../images/ajax-loader@2x.gif);background-size:16px 16px}} \ No newline at end of file +@charset "UTF-8";.clear{clear:both}.nobr{white-space:nowrap}@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:.5em 0;text-align:center;background:#ad74a2;background:-webkit-gradient(linear,left top,left bottom,from(#ad74a2),to(#96588a));background:-webkit-linear-gradient(#ad74a2,#96588a);background:-moz-linear-gradient(center top,#ad74a2 0,#96588a 100%);background:-moz-gradient(center top,#ad74a2 0,#96588a 100%);border:1px solid #96588a;color:#fff;z-index:99998;box-shadow:inset 0 0 0 3px rgba(255,255,255,.2);-webkit-box-shadow:inset 0 0 0 3px rgba(255,255,255,.2)}.admin-bar p.demo_store{top:28px}.wc-forward a:after,.wc-forward:after{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-left:7px;content:"";font-size:.75em}.wc-backward a:before,.wc-backward:before{font-family:WooCommerce;speak:none;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;margin-right:7px;content:"";font-size:.75em}.woocommerce .woocommerce-error,.woocommerce .woocommerce-info,.woocommerce .woocommerce-message,.woocommerce-page .woocommerce-error,.woocommerce-page .woocommerce-info,.woocommerce-page .woocommerce-message{padding:1em 1em 1em 3.5em!important;margin:0 0 2em!important;position:relative;-webkit-border-radius:4px;border-radius:4px;background:#fcfbfc;background:-webkit-gradient(linear,left top,left bottom,from(#fcfbfc),to(#f7f6f7));background:-webkit-linear-gradient(#fcfbfc,#f7f6f7);background:-moz-linear-gradient(center top,#fcfbfc 0,#f7f6f7 100%);background:-moz-gradient(center top,#fcfbfc 0,#f7f6f7 100%);color:#5d5d5d;text-shadow:0 1px 0 #fff;list-style:none!important;width:auto;-webkit-box-shadow:inset 0 -2px 6px rgba(0,0,0,.05),inset 0 -2px 30px rgba(0,0,0,.015),inset 0 1px 0 #fff,0 1px 2px rgba(0,0,0,.3);box-shadow:inset 0 -2px 6px rgba(0,0,0,.05),inset 0 -2px 30px rgba(0,0,0,.015),inset 0 1px 0 #fff,0 1px 2px rgba(0,0,0,.3)}.woocommerce .woocommerce-error:after,.woocommerce .woocommerce-error:before,.woocommerce .woocommerce-info:after,.woocommerce .woocommerce-info:before,.woocommerce .woocommerce-message:after,.woocommerce .woocommerce-message:before,.woocommerce-page .woocommerce-error:after,.woocommerce-page .woocommerce-error:before,.woocommerce-page .woocommerce-info:after,.woocommerce-page .woocommerce-info:before,.woocommerce-page .woocommerce-message:after,.woocommerce-page .woocommerce-message:before{content:" ";display:table}.woocommerce .woocommerce-error:after,.woocommerce .woocommerce-info:after,.woocommerce .woocommerce-message:after,.woocommerce-page .woocommerce-error:after,.woocommerce-page .woocommerce-info:after,.woocommerce-page .woocommerce-message:after{clear:both}.woocommerce .woocommerce-error:before,.woocommerce .woocommerce-info:before,.woocommerce .woocommerce-message:before,.woocommerce-page .woocommerce-error:before,.woocommerce-page .woocommerce-info:before,.woocommerce-page .woocommerce-message:before{content:"";height:1.5em;width:1.5em;display:block;position:absolute;top:0;left:1em;font-family:sans-serif;font-size:1em;line-height:1.5;text-align:center;color:#fff;text-shadow:0 1px 0 rgba(0,0,0,.2);padding-top:1em;-webkit-border-bottom-left-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-bottom-right-radius:4px;box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1);-webkit-box-shadow:inset 0 -1px 0 0 rgba(0,0,0,.1)}.woocommerce .woocommerce-error .button,.woocommerce .woocommerce-info .button,.woocommerce .woocommerce-message .button,.woocommerce-page .woocommerce-error .button,.woocommerce-page .woocommerce-info .button,.woocommerce-page .woocommerce-message .button{float:right}.woocommerce .woocommerce-error li,.woocommerce .woocommerce-info li,.woocommerce .woocommerce-message li,.woocommerce-page .woocommerce-error li,.woocommerce-page .woocommerce-info li,.woocommerce-page .woocommerce-message li{list-style:none!important;padding-left:0!important;margin-left:0!important}.woocommerce .woocommerce-message,.woocommerce-page .woocommerce-message{border-top:3px solid #8fae1b}.woocommerce .woocommerce-message:before,.woocommerce-page .woocommerce-message:before{background-color:#8fae1b;content:"\2713"}.woocommerce .woocommerce-info,.woocommerce-page .woocommerce-info{border-top:3px solid #1e85be}.woocommerce .woocommerce-info:before,.woocommerce-page .woocommerce-info:before{background-color:#1e85be;content:"i";font-family:Times,Georgia,serif;font-style:italic}.woocommerce .woocommerce-error,.woocommerce-page .woocommerce-error{border-top:3px solid #b81c23}.woocommerce .woocommerce-error:before,.woocommerce-page .woocommerce-error:before{background-color:#b81c23;content:"\00d7";font-weight:700}.woocommerce small.note,.woocommerce-page small.note{display:block;color:#777;font-size:11px;line-height:21px;margin-top:10px}.woocommerce .woocommerce-breadcrumb,.woocommerce-page .woocommerce-breadcrumb{margin:0 0 1em;padding:0;font-size:.92em;color:#777}.woocommerce .woocommerce-breadcrumb:after,.woocommerce .woocommerce-breadcrumb:before,.woocommerce-page .woocommerce-breadcrumb:after,.woocommerce-page .woocommerce-breadcrumb:before{content:" ";display:table}.woocommerce .woocommerce-breadcrumb:after,.woocommerce-page .woocommerce-breadcrumb:after{clear:both}.woocommerce .woocommerce-breadcrumb a,.woocommerce-page .woocommerce-breadcrumb a{color:#777}.woocommerce #content div.product,.woocommerce div.product,.woocommerce-page #content div.product,.woocommerce-page div.product{margin-bottom:0;position:relative}.woocommerce #content div.product .product_title,.woocommerce div.product .product_title,.woocommerce-page #content div.product .product_title,.woocommerce-page div.product .product_title{clear:none;margin-top:0;padding:0}.woocommerce #content div.product p.price,.woocommerce #content div.product span.price,.woocommerce div.product p.price,.woocommerce div.product span.price,.woocommerce-page #content div.product p.price,.woocommerce-page #content div.product span.price,.woocommerce-page div.product p.price,.woocommerce-page div.product span.price{color:#86ad74;font-size:1.25em}.woocommerce #content div.product p.price ins,.woocommerce #content div.product span.price ins,.woocommerce div.product p.price ins,.woocommerce div.product span.price ins,.woocommerce-page #content div.product p.price ins,.woocommerce-page #content div.product span.price ins,.woocommerce-page div.product p.price ins,.woocommerce-page div.product span.price ins{background:inherit}.woocommerce #content div.product p.price del,.woocommerce #content div.product span.price del,.woocommerce div.product p.price del,.woocommerce div.product span.price del,.woocommerce-page #content div.product p.price del,.woocommerce-page #content div.product span.price del,.woocommerce-page div.product p.price del,.woocommerce-page div.product span.price del{font-size:.67em;color:rgba(145,145,145,.5)}.woocommerce #content div.product p.stock,.woocommerce div.product p.stock,.woocommerce-page #content div.product p.stock,.woocommerce-page div.product p.stock{font-size:.92em}.woocommerce #content div.product .stock,.woocommerce div.product .stock,.woocommerce-page #content div.product .stock,.woocommerce-page div.product .stock{color:#86ad74}.woocommerce #content div.product .out-of-stock,.woocommerce div.product .out-of-stock,.woocommerce-page #content div.product .out-of-stock,.woocommerce-page div.product .out-of-stock{color:red}.woocommerce #content div.product div.images,.woocommerce div.product div.images,.woocommerce-page #content div.product div.images,.woocommerce-page div.product div.images{margin-bottom:2em}.woocommerce #content div.product div.images img,.woocommerce div.product div.images img,.woocommerce-page #content div.product div.images img,.woocommerce-page div.product div.images img{display:block;width:100%;height:auto;box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s}.woocommerce #content div.product div.images div.thumbnails,.woocommerce div.product div.images div.thumbnails,.woocommerce-page #content div.product div.images div.thumbnails,.woocommerce-page div.product div.images div.thumbnails{padding-top:1em}.woocommerce #content div.product div.summary,.woocommerce div.product div.summary,.woocommerce-page #content div.product div.summary,.woocommerce-page div.product div.summary{margin-bottom:2em}.woocommerce #content div.product div.social,.woocommerce div.product div.social,.woocommerce-page #content div.product div.social,.woocommerce-page div.product div.social{text-align:right;margin:0 0 1em}.woocommerce #content div.product div.social span,.woocommerce div.product div.social span,.woocommerce-page #content div.product div.social span,.woocommerce-page div.product div.social span{margin:0 0 0 2px}.woocommerce #content div.product div.social span span,.woocommerce div.product div.social span span,.woocommerce-page #content div.product div.social span span,.woocommerce-page div.product div.social span span{margin:0}.woocommerce #content div.product div.social span .stButton .chicklets,.woocommerce div.product div.social span .stButton .chicklets,.woocommerce-page #content div.product div.social span .stButton .chicklets,.woocommerce-page div.product div.social span .stButton .chicklets{padding-left:16px;width:0}.woocommerce #content div.product div.social iframe,.woocommerce div.product div.social iframe,.woocommerce-page #content div.product div.social iframe,.woocommerce-page div.product div.social iframe{float:left;margin-top:3px}.woocommerce #content div.product .woocommerce-tabs ul.tabs,.woocommerce div.product .woocommerce-tabs ul.tabs,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs,.woocommerce-page div.product .woocommerce-tabs ul.tabs{list-style:none;padding:0 0 0 1em;margin:0 0 1.618em;overflow:hidden;position:relative}.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{border:1px solid #e0dadf;background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#e0dadf));background:-webkit-linear-gradient(#f7f6f7,#e0dadf);background:-moz-linear-gradient(center top,#f7f6f7 0,#e0dadf 100%);background:-moz-gradient(center top,#f7f6f7 0,#e0dadf 100%);display:inline-block;position:relative;z-index:0;-webkit-border-top-left-radius:4px;-webkit-border-top-right-radius:4px;border-top-left-radius:4px;border-top-right-radius:4px;box-shadow:0 3px 3px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.6);margin:0 -5px;padding:0 1em}.woocommerce #content div.product .woocommerce-tabs ul.tabs li a,.woocommerce div.product .woocommerce-tabs ul.tabs li a,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li a,.woocommerce-page div.product .woocommerce-tabs ul.tabs li a{display:inline-block;padding:.5em 0;font-weight:700;color:#5d5d5d;text-shadow:0 1px 0 rgba(255,255,255,.8);text-decoration:none}.woocommerce #content div.product .woocommerce-tabs ul.tabs li a:hover,.woocommerce div.product .woocommerce-tabs ul.tabs li a:hover,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li a:hover,.woocommerce-page div.product .woocommerce-tabs ul.tabs li a:hover{text-decoration:none;color:#777}.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active,.woocommerce div.product .woocommerce-tabs ul.tabs li.active,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active,.woocommerce-page div.product .woocommerce-tabs ul.tabs li.active{background:#fff;z-index:2;border-bottom-color:#fff}.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active a,.woocommerce div.product .woocommerce-tabs ul.tabs li.active a,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active a,.woocommerce-page div.product .woocommerce-tabs ul.tabs li.active a{color:inherit;text-shadow:inherit}.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active:before,.woocommerce div.product .woocommerce-tabs ul.tabs li.active:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs li.active:before{box-shadow:2px 2px 0 #fff}.woocommerce #content div.product .woocommerce-tabs ul.tabs li.active:after,.woocommerce div.product .woocommerce-tabs ul.tabs li.active:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li.active:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs li.active:after{box-shadow:-2px 2px 0 #fff}.woocommerce #content div.product .woocommerce-tabs ul.tabs li:after,.woocommerce #content div.product .woocommerce-tabs ul.tabs li:before,.woocommerce div.product .woocommerce-tabs ul.tabs li:after,.woocommerce div.product .woocommerce-tabs ul.tabs li:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs li:after,.woocommerce-page div.product .woocommerce-tabs ul.tabs li:before{border:1px solid #e0dadf;position:absolute;bottom:-1px;width:5px;height:5px;content:" "}.woocommerce #content div.product .woocommerce-tabs ul.tabs li:before,.woocommerce div.product .woocommerce-tabs ul.tabs li:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:before,.woocommerce-page 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 #e0dadf}.woocommerce #content div.product .woocommerce-tabs ul.tabs li:after,.woocommerce div.product .woocommerce-tabs ul.tabs li:after,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs li:after,.woocommerce-page 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 #e0dadf}.woocommerce #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page #content div.product .woocommerce-tabs ul.tabs:before,.woocommerce-page div.product .woocommerce-tabs ul.tabs:before{position:absolute;content:" ";width:100%;bottom:0;left:0;border-bottom:1px solid #e0dadf;z-index:1}.woocommerce #content div.product .woocommerce-tabs .panel,.woocommerce div.product .woocommerce-tabs .panel,.woocommerce-page #content div.product .woocommerce-tabs .panel,.woocommerce-page div.product .woocommerce-tabs .panel{margin:0 0 2em;padding:0}.woocommerce #content div.product p.cart,.woocommerce div.product p.cart,.woocommerce-page #content div.product p.cart,.woocommerce-page div.product p.cart{margin-bottom:2em}.woocommerce #content div.product p.cart:after,.woocommerce #content div.product p.cart:before,.woocommerce div.product p.cart:after,.woocommerce div.product p.cart:before,.woocommerce-page #content div.product p.cart:after,.woocommerce-page #content div.product p.cart:before,.woocommerce-page div.product p.cart:after,.woocommerce-page div.product p.cart:before{content:" ";display:table}.woocommerce #content div.product p.cart:after,.woocommerce div.product p.cart:after,.woocommerce-page #content div.product p.cart:after,.woocommerce-page div.product p.cart:after{clear:both}.woocommerce #content div.product form.cart,.woocommerce div.product form.cart,.woocommerce-page #content div.product form.cart,.woocommerce-page div.product form.cart{margin-bottom:2em}.woocommerce #content div.product form.cart:after,.woocommerce #content div.product form.cart:before,.woocommerce div.product form.cart:after,.woocommerce div.product form.cart:before,.woocommerce-page #content div.product form.cart:after,.woocommerce-page #content div.product form.cart:before,.woocommerce-page div.product form.cart:after,.woocommerce-page div.product form.cart:before{content:" ";display:table}.woocommerce #content div.product form.cart:after,.woocommerce div.product form.cart:after,.woocommerce-page #content div.product form.cart:after,.woocommerce-page div.product form.cart:after{clear:both}.woocommerce #content div.product form.cart div.quantity,.woocommerce div.product form.cart div.quantity,.woocommerce-page #content div.product form.cart div.quantity,.woocommerce-page div.product form.cart div.quantity{float:left;margin:0 4px 0 0}.woocommerce #content div.product form.cart table,.woocommerce div.product form.cart table,.woocommerce-page #content div.product form.cart table,.woocommerce-page div.product form.cart table{border-width:0 0 1px}.woocommerce #content div.product form.cart table td,.woocommerce div.product form.cart table td,.woocommerce-page #content div.product form.cart table td,.woocommerce-page div.product form.cart table td{padding-left:0}.woocommerce #content div.product form.cart table div.quantity,.woocommerce div.product form.cart table div.quantity,.woocommerce-page #content div.product form.cart table div.quantity,.woocommerce-page div.product form.cart table div.quantity{float:none;margin:0}.woocommerce #content div.product form.cart table small.stock,.woocommerce div.product form.cart table small.stock,.woocommerce-page #content div.product form.cart table small.stock,.woocommerce-page div.product form.cart table small.stock{display:block;float:none}.woocommerce #content div.product form.cart .variations,.woocommerce div.product form.cart .variations,.woocommerce-page #content div.product form.cart .variations,.woocommerce-page div.product form.cart .variations{margin-bottom:1em}.woocommerce #content div.product form.cart .variations label,.woocommerce div.product form.cart .variations label,.woocommerce-page #content div.product form.cart .variations label,.woocommerce-page div.product form.cart .variations label{font-weight:700}.woocommerce #content div.product form.cart .variations select,.woocommerce div.product form.cart .variations select,.woocommerce-page #content div.product form.cart .variations select,.woocommerce-page div.product form.cart .variations select{width:100%;float:left}.woocommerce #content div.product form.cart .variations td.label,.woocommerce div.product form.cart .variations td.label,.woocommerce-page #content div.product form.cart .variations td.label,.woocommerce-page div.product form.cart .variations td.label{padding-right:1em}.woocommerce #content div.product form.cart .variations td,.woocommerce div.product form.cart .variations td,.woocommerce-page #content div.product form.cart .variations td,.woocommerce-page div.product form.cart .variations td{vertical-align:top}.woocommerce #content div.product form.cart .button,.woocommerce div.product form.cart .button,.woocommerce-page #content div.product form.cart .button,.woocommerce-page div.product form.cart .button{vertical-align:middle;float:left}.woocommerce #content div.product form.cart .group_table td.label,.woocommerce div.product form.cart .group_table td.label,.woocommerce-page #content div.product form.cart .group_table td.label,.woocommerce-page div.product form.cart .group_table td.label{padding-right:1em;padding-left:1em}.woocommerce #content div.product form.cart .group_table td,.woocommerce div.product form.cart .group_table td,.woocommerce-page #content div.product form.cart .group_table td,.woocommerce-page div.product form.cart .group_table td{vertical-align:top;padding-bottom:.5em}.woocommerce span.onsale,.woocommerce-page span.onsale{min-height:32px;min-width:32px;padding:4px;font-size:12px;font-weight:700;position:absolute;text-align:center;line-height:32px;top:6px;left:6px;margin:0;-webkit-border-radius:20px;border-radius:20px;background:#a2c094;background:-webkit-gradient(linear,left top,left bottom,from(#a2c094),to(#86ad74));background:-webkit-linear-gradient(#a2c094,#86ad74);background:-moz-linear-gradient(center top,#a2c094 0,#86ad74 100%);background:-moz-gradient(center top,#a2c094 0,#86ad74 100%);text-shadow:0 -1px 0 #86ad74;color:#fff;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.2);box-shadow:inset 0 1px 0 rgba(255,255,255,.3),inset 0 -1px 0 rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.2)}.woocommerce .products ul,.woocommerce ul.products,.woocommerce-page .products ul,.woocommerce-page 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,.woocommerce-page .products ul:after,.woocommerce-page .products ul:before,.woocommerce-page ul.products:after,.woocommerce-page ul.products:before{content:" ";display:table}.woocommerce .products ul:after,.woocommerce ul.products:after,.woocommerce-page .products ul:after,.woocommerce-page ul.products:after{clear:both}.woocommerce .products ul li,.woocommerce ul.products li,.woocommerce-page .products ul li,.woocommerce-page ul.products li{list-style:none}.woocommerce ul.products li.product .onsale,.woocommerce-page ul.products li.product .onsale{top:0;right:0;left:auto;margin:-6px -6px 0 0}.woocommerce ul.products li.product h3,.woocommerce-page ul.products li.product h3{padding:.5em 0;margin:0;font-size:1em}.woocommerce ul.products li.product a,.woocommerce-page ul.products li.product a{text-decoration:none}.woocommerce ul.products li.product a img,.woocommerce-page ul.products li.product a img{width:100%;height:auto;display:block;margin:0 0 8px;box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-transition:all ease-in-out .2s;-moz-transition:all ease-in-out .2s;-o-transition:all ease-in-out .2s;transition:all ease-in-out .2s}.woocommerce ul.products li.product a:hover img,.woocommerce-page ul.products li.product a:hover img{box-shadow:0 1px 3px 0 rgba(0,0,0,.4);-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.4)}.woocommerce ul.products li.product strong,.woocommerce-page ul.products li.product strong{display:block}.woocommerce ul.products li.product .price,.woocommerce-page ul.products li.product .price{color:#86ad74;display:block;font-weight:400;margin-bottom:.5em}.woocommerce ul.products li.product .price del,.woocommerce-page ul.products li.product .price del{font-size:.67em;color:rgba(145,145,145,.5);margin:-2px 0 0}.woocommerce ul.products li.product .price ins,.woocommerce-page ul.products li.product .price ins{background:0 0}.woocommerce ul.products li.product .price .from,.woocommerce-page ul.products li.product .price .from{font-size:.67em;margin:-2px 0 0;text-transform:uppercase;color:rgba(145,145,145,.5)}.woocommerce .woocommerce-ordering,.woocommerce .woocommerce-result-count,.woocommerce-page .woocommerce-ordering,.woocommerce-page .woocommerce-result-count{margin:0 0 1em}.woocommerce .woocommerce-ordering select,.woocommerce-page .woocommerce-ordering select{vertical-align:top}.woocommerce #content nav.woocommerce-pagination,.woocommerce nav.woocommerce-pagination,.woocommerce-page #content nav.woocommerce-pagination,.woocommerce-page nav.woocommerce-pagination{text-align:center}.woocommerce #content nav.woocommerce-pagination ul,.woocommerce nav.woocommerce-pagination ul,.woocommerce-page #content nav.woocommerce-pagination ul,.woocommerce-page nav.woocommerce-pagination ul{display:inline-block;white-space:nowrap;padding:0;clear:both;border:1px solid #e0dadf;border-right:0;margin:1px}.woocommerce #content nav.woocommerce-pagination ul li,.woocommerce nav.woocommerce-pagination ul li,.woocommerce-page #content nav.woocommerce-pagination ul li,.woocommerce-page nav.woocommerce-pagination ul li{border-right:1px solid #e0dadf;padding:0;margin:0;float:left;display:inline;overflow:hidden}.woocommerce #content nav.woocommerce-pagination ul li a,.woocommerce #content nav.woocommerce-pagination ul li span,.woocommerce nav.woocommerce-pagination ul li a,.woocommerce nav.woocommerce-pagination ul li span,.woocommerce-page #content nav.woocommerce-pagination ul li a,.woocommerce-page #content nav.woocommerce-pagination ul li span,.woocommerce-page nav.woocommerce-pagination ul li a,.woocommerce-page nav.woocommerce-pagination ul li span{margin:0;text-decoration:none;line-height:1em;font-size:1em;font-weight:400;padding:.5em;min-width:1em;display:block}.woocommerce #content nav.woocommerce-pagination ul li a:focus,.woocommerce #content nav.woocommerce-pagination ul li a:hover,.woocommerce #content nav.woocommerce-pagination ul li span.current,.woocommerce nav.woocommerce-pagination ul li a:focus,.woocommerce nav.woocommerce-pagination ul li a:hover,.woocommerce nav.woocommerce-pagination ul li span.current,.woocommerce-page #content nav.woocommerce-pagination ul li a:focus,.woocommerce-page #content nav.woocommerce-pagination ul li a:hover,.woocommerce-page #content nav.woocommerce-pagination ul li span.current,.woocommerce-page nav.woocommerce-pagination ul li a:focus,.woocommerce-page nav.woocommerce-pagination ul li a:hover,.woocommerce-page nav.woocommerce-pagination ul li span.current{background:#f7f6f7;color:#998896}.woocommerce #content input.button,.woocommerce #respond input#submit,.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.woocommerce-page #content input.button,.woocommerce-page #respond input#submit,.woocommerce-page a.button,.woocommerce-page button.button,.woocommerce-page input.button{font-size:100%;margin:0;line-height:1em;cursor:pointer;position:relative;font-family:inherit;overflow:visible;padding:6px 10px;text-decoration:none;font-weight:700;-webkit-border-radius:2px;border-radius:2px;left:auto;color:#5d5d5d;text-shadow:0 1px 0 rgba(255,255,255,.8);border:1px solid #c8bfc6;background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#e0dadf));background:-webkit-linear-gradient(#f7f6f7,#e0dadf);background:-moz-linear-gradient(center top,#f7f6f7 0,#e0dadf 100%);background:-moz-gradient(center top,#f7f6f7 0,#e0dadf 100%);white-space:nowrap;display:inline-block;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1)}.woocommerce #content input.button.loading,.woocommerce #respond input#submit.loading,.woocommerce a.button.loading,.woocommerce button.button.loading,.woocommerce input.button.loading,.woocommerce-page #content input.button.loading,.woocommerce-page #respond input#submit.loading,.woocommerce-page a.button.loading,.woocommerce-page button.button.loading,.woocommerce-page input.button.loading{color:#777;border:1px solid #f7f6f7}.woocommerce #content input.button.loading:before,.woocommerce #respond input#submit.loading:before,.woocommerce a.button.loading:before,.woocommerce button.button.loading:before,.woocommerce input.button.loading:before,.woocommerce-page #content input.button.loading:before,.woocommerce-page #respond input#submit.loading:before,.woocommerce-page a.button.loading:before,.woocommerce-page button.button.loading:before,.woocommerce-page input.button.loading:before{content:"";position:absolute;top:0;right:0;left:0;bottom:0;background:url(../images/ajax-loader.gif) center no-repeat rgba(255,255,255,.65)}.woocommerce #content input.button.added:before,.woocommerce #respond input#submit.added:before,.woocommerce a.button.added:before,.woocommerce button.button.added:before,.woocommerce input.button.added:before,.woocommerce-page #content input.button.added:before,.woocommerce-page #respond input#submit.added:before,.woocommerce-page a.button.added:before,.woocommerce-page button.button.added:before,.woocommerce-page input.button.added:before{position:absolute;height:16px;width:16px;top:.35em;right:-26px;text-indent:0;font-family:WooCommerce;content:"\e017"}.woocommerce #content input.button:hover,.woocommerce #respond input#submit:hover,.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover,.woocommerce-page #content input.button:hover,.woocommerce-page #respond input#submit:hover,.woocommerce-page a.button:hover,.woocommerce-page button.button:hover,.woocommerce-page input.button:hover{background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#d4cdd2));background:-webkit-linear-gradient(#f7f6f7,#d4cdd2);background:-moz-linear-gradient(center top,#f7f6f7 0,#d4cdd2 100%);background:-moz-gradient(center top,#f7f6f7 0,#d4cdd2 100%);text-decoration:none}.woocommerce #content input.button:active,.woocommerce #respond input#submit:active,.woocommerce a.button:active,.woocommerce button.button:active,.woocommerce input.button:active,.woocommerce-page #content input.button:active,.woocommerce-page #respond input#submit:active,.woocommerce-page a.button:active,.woocommerce-page button.button:active,.woocommerce-page input.button:active{top:1px}.woocommerce #content input.button.alt,.woocommerce #respond input#submit.alt,.woocommerce a.button.alt,.woocommerce button.button.alt,.woocommerce input.button.alt,.woocommerce-page #content input.button.alt,.woocommerce-page #respond input#submit.alt,.woocommerce-page a.button.alt,.woocommerce-page button.button.alt,.woocommerce-page input.button.alt{background:#ad74a2;background:-webkit-gradient(linear,left top,left bottom,from(#ad74a2),to(#96588a));background:-webkit-linear-gradient(#ad74a2,#96588a);background:-moz-linear-gradient(center top,#ad74a2 0,#96588a 100%);background:-moz-gradient(center top,#ad74a2 0,#96588a 100%);border-color:#76456c;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.6)}.woocommerce #content input.button.alt:hover,.woocommerce #respond input#submit.alt:hover,.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover,.woocommerce input.button.alt:hover,.woocommerce-page #content input.button.alt:hover,.woocommerce-page #respond input#submit.alt:hover,.woocommerce-page a.button.alt:hover,.woocommerce-page button.button.alt:hover,.woocommerce-page input.button.alt:hover{background:#ad74a2;background:-webkit-gradient(linear,left top,left bottom,from(#ad74a2),to(#864f7b));background:-webkit-linear-gradient(#ad74a2,#864f7b);background:-moz-linear-gradient(center top,#ad74a2 0,#864f7b 100%);background:-moz-gradient(center top,#ad74a2 0,#864f7b 100%);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.6)}.woocommerce #content input.button.disabled,.woocommerce #content input.button:disabled,.woocommerce #respond input#submit.disabled,.woocommerce #respond input#submit:disabled,.woocommerce a.button.disabled,.woocommerce a.button:disabled,.woocommerce button.button.disabled,.woocommerce button.button:disabled,.woocommerce input.button.disabled,.woocommerce input.button:disabled,.woocommerce-page #content input.button.disabled,.woocommerce-page #content input.button:disabled,.woocommerce-page #respond input#submit.disabled,.woocommerce-page #respond input#submit:disabled,.woocommerce-page a.button.disabled,.woocommerce-page a.button:disabled,.woocommerce-page button.button.disabled,.woocommerce-page button.button:disabled,.woocommerce-page input.button.disabled,.woocommerce-page input.button:disabled{color:#aaa;border:1px solid #e0dadf;background:#f7f6f7;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;cursor:not-allowed}.woocommerce #content input.button.disabled:active,.woocommerce #content input.button:disabled:active,.woocommerce #respond input#submit.disabled:active,.woocommerce #respond input#submit:disabled:active,.woocommerce a.button.disabled:active,.woocommerce a.button:disabled:active,.woocommerce button.button.disabled:active,.woocommerce button.button:disabled:active,.woocommerce input.button.disabled:active,.woocommerce input.button:disabled:active,.woocommerce-page #content input.button.disabled:active,.woocommerce-page #content input.button:disabled:active,.woocommerce-page #respond input#submit.disabled:active,.woocommerce-page #respond input#submit:disabled:active,.woocommerce-page a.button.disabled:active,.woocommerce-page a.button:disabled:active,.woocommerce-page button.button.disabled:active,.woocommerce-page button.button:disabled:active,.woocommerce-page input.button.disabled:active,.woocommerce-page input.button:disabled:active{top:0}.woocommerce .cart .button,.woocommerce .cart input.button,.woocommerce-page .cart .button,.woocommerce-page .cart input.button{float:none}.woocommerce a.added_to_cart,.woocommerce-page a.added_to_cart{padding-top:.5em;white-space:nowrap;display:inline-block}.woocommerce #content .quantity,.woocommerce .quantity,.woocommerce-page #content .quantity,.woocommerce-page .quantity{width:60px;position:relative;margin:0 auto;overflow:hidden;zoom:1}.woocommerce #content .quantity input.qty,.woocommerce .quantity input.qty,.woocommerce-page #content .quantity input.qty,.woocommerce-page .quantity input.qty{width:40px;height:28px;float:left;padding:0;margin:0;text-align:center;border:1px solid #c8bfc6;border-right:0;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px;box-shadow:inset 0 0 2px 0 #f7f6f7;-webkit-box-shadow:inset 0 0 2px 0 #f7f6f7;font-weight:700;-moz-appearance:textfield}.woocommerce #content .quantity input[type=number],.woocommerce #content .quantity noindex:-o-prefocus,.woocommerce .quantity input[type=number],.woocommerce .quantity noindex:-o-prefocus,.woocommerce-page #content .quantity input[type=number],.woocommerce-page #content .quantity noindex:-o-prefocus,.woocommerce-page .quantity input[type=number],.woocommerce-page .quantity noindex:-o-prefocus{padding-right:1.2em}.woocommerce #content .quantity .minus,.woocommerce #content .quantity .plus,.woocommerce .quantity .minus,.woocommerce .quantity .plus,.woocommerce-page #content .quantity .minus,.woocommerce-page #content .quantity .plus,.woocommerce-page .quantity .minus,.woocommerce-page .quantity .plus{display:block;padding:0;margin:0;position:absolute;text-align:center;vertical-align:text-top;width:20px;height:15px;overflow:visible;text-decoration:none;font-weight:700;cursor:pointer;line-height:13px;font-size:12px;-webkit-border-radius:2px;border-radius:2px;color:#5d5d5d;text-shadow:0 1px 0 rgba(255,255,255,.8);border:1px solid #c8bfc6;background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#e0dadf));background:-webkit-linear-gradient(#f7f6f7,#e0dadf);background:-moz-linear-gradient(center top,#f7f6f7 0,#e0dadf 100%);background:-moz-gradient(center top,#f7f6f7 0,#e0dadf 100%);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.075),inset 0 1px 0 rgba(255,255,255,.3),0 1px 2px rgba(0,0,0,.1)}.woocommerce #content .quantity .minus:hover,.woocommerce #content .quantity .plus:hover,.woocommerce .quantity .minus:hover,.woocommerce .quantity .plus:hover,.woocommerce-page #content .quantity .minus:hover,.woocommerce-page #content .quantity .plus:hover,.woocommerce-page .quantity .minus:hover,.woocommerce-page .quantity .plus:hover{background:#f7f6f7;background:-webkit-gradient(linear,left top,left bottom,from(#f7f6f7),to(#d4cdd2));background:-webkit-linear-gradient(#f7f6f7,#d4cdd2);background:-moz-linear-gradient(center top,#f7f6f7 0,#d4cdd2 100%);background:-moz-gradient(center top,#f7f6f7 0,#d4cdd2 100%)}.woocommerce #content .quantity .plus,.woocommerce .quantity .plus,.woocommerce-page #content .quantity .plus,.woocommerce-page .quantity .plus{top:0;right:0;border-bottom:0;-webkit-border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;border-bottom-left-radius:0;border-bottom-right-radius:0}.woocommerce #content .quantity .minus,.woocommerce .quantity .minus,.woocommerce-page #content .quantity .minus,.woocommerce-page .quantity .minus{bottom:0;right:0;-webkit-border-top-left-radius:0;-webkit-border-top-right-radius:0;border-top-left-radius:0;border-top-right-radius:0}.woocommerce #reviews h2 small,.woocommerce-page #reviews h2 small{float:right;color:#777;font-size:15px;line-height:21px;margin:10px 0 0}.woocommerce #reviews h2 small a,.woocommerce-page #reviews h2 small a{text-decoration:none;color:#777}.woocommerce #reviews h3,.woocommerce-page #reviews h3{margin:0}.woocommerce #reviews #respond,.woocommerce-page #reviews #respond{margin:0;border:0;padding:0}.woocommerce #reviews #comment,.woocommerce-page #reviews #comment{height:75px}.woocommerce #reviews #comments .add_review:after,.woocommerce #reviews #comments .add_review:before,.woocommerce-page #reviews #comments .add_review:after,.woocommerce-page #reviews #comments .add_review:before{content:" ";display:table}.woocommerce #reviews #comments .add_review:after,.woocommerce-page #reviews #comments .add_review:after{clear:both}.woocommerce #reviews #comments h2,.woocommerce-page #reviews #comments h2{clear:none}.woocommerce #reviews #comments ol.commentlist,.woocommerce-page #reviews #comments ol.commentlist{margin:0;width:100%;background:0 0;list-style:none}.woocommerce #reviews #comments ol.commentlist:after,.woocommerce #reviews #comments ol.commentlist:before,.woocommerce-page #reviews #comments ol.commentlist:after,.woocommerce-page #reviews #comments ol.commentlist:before{content:" ";display:table}.woocommerce #reviews #comments ol.commentlist:after,.woocommerce-page #reviews #comments ol.commentlist:after{clear:both}.woocommerce #reviews #comments ol.commentlist li,.woocommerce-page #reviews #comments ol.commentlist li{padding:0;margin:0 0 20px;position:relative;background:0;border:0}.woocommerce #reviews #comments ol.commentlist li .meta,.woocommerce-page #reviews #comments ol.commentlist li .meta{color:#777;font-size:.75em}.woocommerce #reviews #comments ol.commentlist li img.avatar,.woocommerce-page #reviews #comments ol.commentlist li img.avatar{float:left;position:absolute;top:0;left:0;padding:3px;width:32px;height:auto;background:#f7f6f7;border:1px solid #f0eef0;margin:0;line-height:1}.woocommerce #reviews #comments ol.commentlist li .comment-text,.woocommerce-page #reviews #comments ol.commentlist li .comment-text{margin:0 0 0 50px;border:1px solid #f0eef0;-webkit-border-radius:4px;border-radius:4px;padding:1em 1em 0}.woocommerce #reviews #comments ol.commentlist li .comment-text:after,.woocommerce #reviews #comments ol.commentlist li .comment-text:before,.woocommerce-page #reviews #comments ol.commentlist li .comment-text:after,.woocommerce-page #reviews #comments ol.commentlist li .comment-text:before{content:" ";display:table}.woocommerce #reviews #comments ol.commentlist li .comment-text:after,.woocommerce-page #reviews #comments ol.commentlist li .comment-text:after{clear:both}.woocommerce #reviews #comments ol.commentlist li .comment-text p,.woocommerce-page #reviews #comments ol.commentlist li .comment-text p{margin:0 0 1em}.woocommerce #reviews #comments ol.commentlist li .comment-text p.meta,.woocommerce-page #reviews #comments ol.commentlist li .comment-text p.meta{font-size:.83em}.woocommerce #reviews #comments ol.commentlist ul.children,.woocommerce-page #reviews #comments ol.commentlist ul.children{list-style:none;margin:20px 0 0 50px}.woocommerce #reviews #comments ol.commentlist ul.children .star-rating,.woocommerce-page #reviews #comments ol.commentlist ul.children .star-rating{display:none}.woocommerce #reviews #comments ol.commentlist #respond,.woocommerce-page #reviews #comments ol.commentlist #respond{border:1px solid #f0eef0;-webkit-border-radius:4px;border-radius:4px;padding:1em 1em 0;margin:20px 0 0 50px}.woocommerce #reviews #comments .commentlist>li:before,.woocommerce-page #reviews #comments .commentlist>li:before{content:""}.woocommerce .star-rating,.woocommerce-page .star-rating{float:right;overflow:hidden;position:relative;height:1em;line-height:1em;font-size:1em;width:5.4em;font-family:star}.woocommerce .star-rating:before,.woocommerce-page .star-rating:before{content:"\73\73\73\73\73";color:#e0dadf;float:left;top:0;left:0;position:absolute}.woocommerce .star-rating span,.woocommerce-page .star-rating span{overflow:hidden;float:left;top:0;left:0;position:absolute;padding-top:1.5em}.woocommerce .star-rating span:before,.woocommerce-page .star-rating span:before{content:"\53\53\53\53\53";top:0;position:absolute;left:0}.woocommerce .woocommerce-product-rating,.woocommerce-page .woocommerce-product-rating{line-height:2em;display:block}.woocommerce .woocommerce-product-rating .star-rating,.woocommerce-page .woocommerce-product-rating .star-rating{margin:.5em 4px 0 0;float:left}.woocommerce .products .star-rating,.woocommerce-page .products .star-rating{display:block;margin:0 0 .5em;float:none}.woocommerce .hreview-aggregate .star-rating,.woocommerce-page .hreview-aggregate .star-rating{margin:10px 0 0}.woocommerce #review_form #respond,.woocommerce-page #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,.woocommerce-page #review_form #respond:after,.woocommerce-page #review_form #respond:before{content:" ";display:table}.woocommerce #review_form #respond:after,.woocommerce-page #review_form #respond:after{clear:both}.woocommerce #review_form #respond p,.woocommerce-page #review_form #respond p{margin:0 0 10px}.woocommerce #review_form #respond .form-submit input,.woocommerce-page #review_form #respond .form-submit input{left:auto}.woocommerce #review_form #respond textarea,.woocommerce-page #review_form #respond textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}.woocommerce p.stars,.woocommerce-page p.stars{position:relative;font-size:1em}.woocommerce p.stars a,.woocommerce-page p.stars a{display:inline-block;font-weight:700;margin-right:1em;text-indent:-9999px;position:relative}.woocommerce p.stars a:last-child,.woocommerce-page p.stars a:last-child{border-right:0}.woocommerce p.stars a.star-1,.woocommerce p.stars a.star-2,.woocommerce p.stars a.star-3,.woocommerce p.stars a.star-4,.woocommerce p.stars a.star-5,.woocommerce-page p.stars a.star-1,.woocommerce-page p.stars a.star-2,.woocommerce-page p.stars a.star-3,.woocommerce-page p.stars a.star-4,.woocommerce-page p.stars a.star-5{border-right:1px solid #ccc}.woocommerce p.stars a.star-1:after,.woocommerce p.stars a.star-2:after,.woocommerce p.stars a.star-3:after,.woocommerce p.stars a.star-4:after,.woocommerce p.stars a.star-5:after,.woocommerce-page p.stars a.star-1:after,.woocommerce-page p.stars a.star-2:after,.woocommerce-page p.stars a.star-3:after,.woocommerce-page p.stars a.star-4:after,.woocommerce-page p.stars a.star-5:after{font-family:WooCommerce;text-indent:0;position:absolute;top:0;left:0}.woocommerce p.stars a.star-1,.woocommerce-page p.stars a.star-1{width:2em}.woocommerce p.stars a.star-1:after,.woocommerce-page p.stars a.star-1:after{content:"\e021"}.woocommerce p.stars a.star-1.active:after,.woocommerce p.stars a.star-1:hover:after,.woocommerce-page p.stars a.star-1.active:after,.woocommerce-page p.stars a.star-1:hover:after{content:""}.woocommerce p.stars a.star-2,.woocommerce-page p.stars a.star-2{width:3em}.woocommerce p.stars a.star-2:after,.woocommerce-page p.stars a.star-2:after{content:"\e021\e021"}.woocommerce p.stars a.star-2.active:after,.woocommerce p.stars a.star-2:hover:after,.woocommerce-page p.stars a.star-2.active:after,.woocommerce-page p.stars a.star-2:hover:after{content:""}.woocommerce p.stars a.star-3,.woocommerce-page p.stars a.star-3{width:4em}.woocommerce p.stars a.star-3:after,.woocommerce-page p.stars a.star-3:after{content:"\e021\e021\e021"}.woocommerce p.stars a.star-3.active:after,.woocommerce p.stars a.star-3:hover:after,.woocommerce-page p.stars a.star-3.active:after,.woocommerce-page p.stars a.star-3:hover:after{content:""}.woocommerce p.stars a.star-4,.woocommerce-page p.stars a.star-4{width:5em}.woocommerce p.stars a.star-4:after,.woocommerce-page p.stars a.star-4:after{content:"\e021\e021\e021\e021"}.woocommerce p.stars a.star-4.active:after,.woocommerce p.stars a.star-4:hover:after,.woocommerce-page p.stars a.star-4.active:after,.woocommerce-page p.stars a.star-4:hover:after{content:""}.woocommerce p.stars a.star-5,.woocommerce-page p.stars a.star-5{width:6em;border:0}.woocommerce p.stars a.star-5:after,.woocommerce-page p.stars a.star-5:after{content:"\e021\e021\e021\e021\e021"}.woocommerce p.stars a.star-5.active:after,.woocommerce p.stars a.star-5:hover:after,.woocommerce-page p.stars a.star-5.active:after,.woocommerce-page p.stars a.star-5:hover:after{content:""}.woocommerce table.shop_attributes,.woocommerce-page 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,.woocommerce-page table.shop_attributes th{width:150px;font-weight:700;padding:8px;border-top:0;border-bottom:1px dotted rgba(0,0,0,.1);margin:0;line-height:1.5em}.woocommerce table.shop_attributes td,.woocommerce-page table.shop_attributes td{font-style:italic;padding:0;border-top:0;border-bottom:1px dotted rgba(0,0,0,.1);margin:0;line-height:1.5em}.woocommerce table.shop_attributes td p,.woocommerce-page table.shop_attributes td p{margin:0;padding:8px 0}.woocommerce table.shop_attributes .alt td,.woocommerce table.shop_attributes .alt th,.woocommerce-page table.shop_attributes .alt td,.woocommerce-page table.shop_attributes .alt th{background:rgba(0,0,0,.025)}.woocommerce table.shop_table,.woocommerce-page table.shop_table{border:1px solid rgba(0,0,0,.1);margin:0 -1px 24px 0;text-align:left;width:100%;border-collapse:separate;-webkit-border-radius:5px;border-radius:5px}.woocommerce table.shop_table th,.woocommerce-page table.shop_table th{font-weight:700;line-height:18px;padding:9px 12px}.woocommerce table.shop_table td,.woocommerce-page 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,.woocommerce-page table.shop_table td small{font-weight:400}.woocommerce table.shop_table tfoot td,.woocommerce table.shop_table tfoot th,.woocommerce-page table.shop_table tfoot td,.woocommerce-page table.shop_table tfoot th{font-weight:700;border-top:1px solid rgba(0,0,0,.1)}.woocommerce table.my_account_orders,.woocommerce-page table.my_account_orders{font-size:.85em}.woocommerce table.my_account_orders td,.woocommerce table.my_account_orders th,.woocommerce-page table.my_account_orders td,.woocommerce-page table.my_account_orders th{padding:4px 8px;vertical-align:middle}.woocommerce table.my_account_orders .button,.woocommerce-page table.my_account_orders .button{white-space:nowrap}.woocommerce table.my_account_orders .order-actions,.woocommerce-page table.my_account_orders .order-actions{text-align:right}.woocommerce table.my_account_orders .order-actions .button,.woocommerce-page table.my_account_orders .order-actions .button{margin:.125em 0 .125em .25em}.woocommerce td.product-name dl.variation,.woocommerce-page td.product-name dl.variation{margin:.25em 0}.woocommerce td.product-name dl.variation:after,.woocommerce td.product-name dl.variation:before,.woocommerce-page td.product-name dl.variation:after,.woocommerce-page td.product-name dl.variation:before{content:" ";display:table}.woocommerce td.product-name dl.variation:after,.woocommerce-page td.product-name dl.variation:after{clear:both}.woocommerce td.product-name dl.variation dd,.woocommerce td.product-name dl.variation dt,.woocommerce-page td.product-name dl.variation dd,.woocommerce-page td.product-name dl.variation dt{display:inline-block;float:left;margin-bottom:1em}.woocommerce td.product-name dl.variation dt,.woocommerce-page td.product-name dl.variation dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}.woocommerce td.product-name dl.variation dd,.woocommerce-page td.product-name dl.variation dd{padding:0 0 .25em}.woocommerce td.product-name dl.variation dd p:last-child,.woocommerce-page td.product-name dl.variation dd p:last-child{margin-bottom:0}.woocommerce td.product-name p.backorder_notification,.woocommerce-page td.product-name p.backorder_notification{font-size:.83em}.woocommerce td.product-quantity,.woocommerce-page td.product-quantity{min-width:80px}.woocommerce #content table.cart .product-thumbnail,.woocommerce table.cart .product-thumbnail,.woocommerce-page #content table.cart .product-thumbnail,.woocommerce-page table.cart .product-thumbnail{min-width:32px}.woocommerce #content table.cart img,.woocommerce table.cart img,.woocommerce-page #content table.cart img,.woocommerce-page table.cart img{width:32px}.woocommerce #content table.cart td,.woocommerce #content table.cart th,.woocommerce table.cart td,.woocommerce table.cart th,.woocommerce-page #content table.cart td,.woocommerce-page #content table.cart th,.woocommerce-page table.cart td,.woocommerce-page table.cart th{vertical-align:middle}.woocommerce #content table.cart a.remove,.woocommerce table.cart a.remove,.woocommerce-page #content table.cart a.remove,.woocommerce-page table.cart a.remove{display:block;font-size:1.5em;height:1em;width:1em;text-align:center;line-height:1;-webkit-border-radius:100%;border-radius:100%;color:red;text-decoration:none;font-weight:700}.woocommerce #content table.cart a.remove:hover,.woocommerce table.cart a.remove:hover,.woocommerce-page #content table.cart a.remove:hover,.woocommerce-page table.cart a.remove:hover{background-color:red;color:#fff}.woocommerce #content table.cart td.actions .coupon .input-text,.woocommerce table.cart td.actions .coupon .input-text,.woocommerce-page #content table.cart td.actions .coupon .input-text,.woocommerce-page table.cart td.actions .coupon .input-text{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.1);-webkit-box-shadow:inset 0 1px 4px 0 rgba(0,0,0,.1);border:1px solid #e0dadf;padding:6px 6px 5px;margin:0 4px 0 0;outline:0;line-height:1em}.woocommerce #content table.cart input,.woocommerce table.cart input,.woocommerce-page #content table.cart input,.woocommerce-page table.cart input{margin:0;vertical-align:middle;line-height:1em}.woocommerce ul.cart_list,.woocommerce ul.product_list_widget,.woocommerce-page ul.cart_list,.woocommerce-page ul.product_list_widget{list-style:none;padding:0;margin:0}.woocommerce ul.cart_list li,.woocommerce ul.product_list_widget li,.woocommerce-page ul.cart_list li,.woocommerce-page 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,.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 ul.cart_list li:after,.woocommerce ul.product_list_widget li:after,.woocommerce-page ul.cart_list li:after,.woocommerce-page ul.product_list_widget li:after{clear:both}.woocommerce ul.cart_list li a,.woocommerce ul.product_list_widget li a,.woocommerce-page ul.cart_list li a,.woocommerce-page ul.product_list_widget li a{display:block;font-weight:700}.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;margin-left:4px;width:32px;height:auto;box-shadow:0 1px 2px 0 rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.3)}.woocommerce ul.cart_list li dl,.woocommerce ul.product_list_widget li dl,.woocommerce-page ul.cart_list li dl,.woocommerce-page 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,.woocommerce-page ul.cart_list li dl:after,.woocommerce-page ul.cart_list li dl:before,.woocommerce-page ul.product_list_widget li dl:after,.woocommerce-page ul.product_list_widget li dl:before{content:" ";display:table}.woocommerce ul.cart_list li dl:after,.woocommerce ul.product_list_widget li dl:after,.woocommerce-page ul.cart_list li dl:after,.woocommerce-page ul.product_list_widget li dl:after{clear:both}.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,.woocommerce-page ul.cart_list li dl dd,.woocommerce-page ul.cart_list li dl dt,.woocommerce-page ul.product_list_widget li dl dd,.woocommerce-page 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,.woocommerce-page ul.cart_list li dl dt,.woocommerce-page ul.product_list_widget li dl dt{font-weight:700;padding:0 0 .25em;margin:0 4px 0 0;clear:left}.woocommerce ul.cart_list li dl dd,.woocommerce ul.product_list_widget li dl dd,.woocommerce-page ul.cart_list li dl dd,.woocommerce-page 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,.woocommerce-page ul.cart_list li dl dd p:last-child,.woocommerce-page 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,.woocommerce-page ul.cart_list li .star-rating,.woocommerce-page ul.product_list_widget li .star-rating{float:none}.woocommerce .widget_shopping_cart .total,.woocommerce-page .widget_shopping_cart .total,.woocommerce-page.widget_shopping_cart .total,.woocommerce.widget_shopping_cart .total{border-top:3px double #f7f6f7;padding:4px 0 0}.woocommerce .widget_shopping_cart .total strong,.woocommerce-page .widget_shopping_cart .total strong,.woocommerce-page.widget_shopping_cart .total strong,.woocommerce.widget_shopping_cart .total strong{min-width:40px;display:inline-block}.woocommerce .widget_shopping_cart .buttons:after,.woocommerce .widget_shopping_cart .buttons:before,.woocommerce-page .widget_shopping_cart .buttons:after,.woocommerce-page .widget_shopping_cart .buttons:before,.woocommerce-page.widget_shopping_cart .buttons:after,.woocommerce-page.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:after,.woocommerce-page .widget_shopping_cart .buttons:after,.woocommerce-page.widget_shopping_cart .buttons:after,.woocommerce.widget_shopping_cart .buttons:after{clear:both}.woocommerce .cart-collaterals .shipping_calculator .button,.woocommerce-page .cart-collaterals .shipping_calculator .button{width:100%;float:none;display:block}.woocommerce .cart-collaterals .shipping_calculator .shipping-calculator-button:after,.woocommerce-page .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:7px;content:""}.woocommerce .cart-collaterals .cart_totals p,.woocommerce-page .cart-collaterals .cart_totals p{margin:0}.woocommerce .cart-collaterals .cart_totals p small,.woocommerce-page .cart-collaterals .cart_totals p small{color:#777;font-size:.83em}.woocommerce .cart-collaterals .cart_totals table,.woocommerce-page .cart-collaterals .cart_totals table{border-collapse:separate;-webkit-border-radius:5px;border-radius:5px;margin:0 0 6px;padding:0}.woocommerce .cart-collaterals .cart_totals table tr:first-child td,.woocommerce .cart-collaterals .cart_totals table tr:first-child th,.woocommerce-page .cart-collaterals .cart_totals table tr:first-child td,.woocommerce-page .cart-collaterals .cart_totals table tr:first-child th{border-top:0}.woocommerce .cart-collaterals .cart_totals table th,.woocommerce-page .cart-collaterals .cart_totals table th{padding:6px 12px 0 0;width:25%}.woocommerce .cart-collaterals .cart_totals table td,.woocommerce-page .cart-collaterals .cart_totals table td{padding:6px 0}.woocommerce .cart-collaterals .cart_totals table td,.woocommerce .cart-collaterals .cart_totals table th,.woocommerce-page .cart-collaterals .cart_totals table td,.woocommerce-page .cart-collaterals .cart_totals table th{vertical-align:top}.woocommerce .cart-collaterals .cart_totals table small,.woocommerce-page .cart-collaterals .cart_totals table small{display:block;color:#777}.woocommerce .cart-collaterals .cart_totals table select,.woocommerce-page .cart-collaterals .cart_totals table select{width:100%}.woocommerce .cart-collaterals .cart_totals .discount td,.woocommerce-page .cart-collaterals .cart_totals .discount td{color:#86ad74}.woocommerce .cart-collaterals .cart_totals tr td,.woocommerce .cart-collaterals .cart_totals tr th,.woocommerce-page .cart-collaterals .cart_totals tr td,.woocommerce-page .cart-collaterals .cart_totals tr th{border-top:1px solid #f7f6f7}.woocommerce .cart-collaterals .cart_totals a.button.alt,.woocommerce-page .cart-collaterals .cart_totals a.button.alt{display:inline-block}.woocommerce .cart-collaterals .cross-sells ul.products li.product,.woocommerce-page .cart-collaterals .cross-sells ul.products li.product{margin-top:0}.woocommerce form .form-row,.woocommerce-page form .form-row{padding:3px;margin:0 0 6px}.woocommerce form .form-row [placeholder]:focus::-webkit-input-placeholder,.woocommerce-page 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,.woocommerce-page form .form-row label{line-height:2em}.woocommerce form .form-row label.hidden,.woocommerce-page form .form-row label.hidden{visibility:hidden}.woocommerce form .form-row label.inline,.woocommerce-page form .form-row label.inline{display:inline}.woocommerce form .form-row select,.woocommerce-page form .form-row select{cursor:pointer;margin:0}.woocommerce form .form-row .required,.woocommerce-page form .form-row .required{color:red;font-weight:700;border:0}.woocommerce form .form-row .input-checkbox,.woocommerce-page 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,.woocommerce-page form .form-row input.input-text,.woocommerce-page form .form-row textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0;outline:0;line-height:1em}.woocommerce form .form-row textarea,.woocommerce-page form .form-row textarea{height:4em;line-height:1.5em;display:block;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.woocommerce form .form-row.validate-required.woocommerce-invalid .chosen-drop,.woocommerce form .form-row.validate-required.woocommerce-invalid .chosen-single,.woocommerce form .form-row.validate-required.woocommerce-invalid input.input-text,.woocommerce form .form-row.validate-required.woocommerce-invalid select,.woocommerce-page form .form-row.validate-required.woocommerce-invalid .chosen-drop,.woocommerce-page form .form-row.validate-required.woocommerce-invalid .chosen-single,.woocommerce-page form .form-row.validate-required.woocommerce-invalid input.input-text,.woocommerce-page form .form-row.validate-required.woocommerce-invalid select{border-color:#fb7f88}.woocommerce form .form-row ::-webkit-input-placeholder,.woocommerce-page form .form-row ::-webkit-input-placeholder{line-height:normal}.woocommerce form .form-row :-moz-placeholder,.woocommerce-page form .form-row :-moz-placeholder{line-height:normal}.woocommerce form .form-row :-ms-input-placeholder,.woocommerce-page form .form-row :-ms-input-placeholder{line-height:normal}.woocommerce form.checkout_coupon,.woocommerce form.login,.woocommerce form.register,.woocommerce-page form.checkout_coupon,.woocommerce-page form.login,.woocommerce-page form.register{border:1px solid #e0dadf;padding:20px;margin:2em 0;text-align:left;-webkit-border-radius:5px;border-radius:5px}.woocommerce ul#shipping_method,.woocommerce-page ul#shipping_method{list-style:none;margin:0;padding:0}.woocommerce ul#shipping_method li,.woocommerce-page ul#shipping_method li{margin:0;padding:.25em 0 .25em 22px;text-indent:-22px;list-style:none}.woocommerce ul#shipping_method .amount,.woocommerce-page ul#shipping_method .amount{font-weight:700}.woocommerce p.woocommerce-shipping-contents,.woocommerce-page p.woocommerce-shipping-contents{margin:0}.woocommerce .checkout .col-2 h3#ship-to-different-address,.woocommerce-page .checkout .col-2 h3#ship-to-different-address{float:left;clear:none}.woocommerce .checkout .col-2 .form-row-first,.woocommerce .checkout .col-2 .notes,.woocommerce-page .checkout .col-2 .form-row-first,.woocommerce-page .checkout .col-2 .notes{clear:left}.woocommerce .checkout .create-account small,.woocommerce-page .checkout .create-account small{font-size:11px;color:#777;line-height:13px;font-weight:400}.woocommerce .checkout div.shipping-address,.woocommerce-page .checkout div.shipping-address{padding:0;clear:left;width:100%}.woocommerce .checkout .shipping_address,.woocommerce-page .checkout .shipping_address{clear:both}.woocommerce #payment,.woocommerce-page #payment{background:#f7f6f7;-webkit-border-radius:5px;border-radius:5px}.woocommerce #payment ul.payment_methods,.woocommerce-page #payment ul.payment_methods{text-align:left;padding:1em;border-bottom:1px solid #e0dadf;margin:0;list-style:none}.woocommerce #payment ul.payment_methods:after,.woocommerce #payment ul.payment_methods:before,.woocommerce-page #payment ul.payment_methods:after,.woocommerce-page #payment ul.payment_methods:before{content:" ";display:table}.woocommerce #payment ul.payment_methods:after,.woocommerce-page #payment ul.payment_methods:after{clear:both}.woocommerce #payment ul.payment_methods li,.woocommerce-page #payment ul.payment_methods li{line-height:2em;text-align:left;margin:0;font-weight:400}.woocommerce #payment ul.payment_methods li input,.woocommerce-page #payment ul.payment_methods li input{margin:0 1em 0 0}.woocommerce #payment ul.payment_methods li img,.woocommerce-page #payment ul.payment_methods li img{vertical-align:middle;margin:-2px 0 0 .5em;padding:0;position:relative;box-shadow:none}.woocommerce #payment ul.payment_methods li img+img,.woocommerce-page #payment ul.payment_methods li img+img{margin-left:2px}.woocommerce #payment div.form-row,.woocommerce-page #payment div.form-row{padding:1em;border-top:1px solid #fff}.woocommerce #payment div.payment_box,.woocommerce-page #payment div.payment_box{position:relative;width:96%;padding:1em 2%;margin:1em 0;font-size:.92em;-webkit-border-radius:2px;border-radius:2px;line-height:1.5em;background:#ebe8eb;background:-webkit-gradient(linear,left top,left bottom,from(#ebe8eb),to(#e0dadf));background:-webkit-linear-gradient(#ebe8eb,#e0dadf);background:-moz-linear-gradient(center top,#ebe8eb 0,#e0dadf 100%);background:-moz-gradient(center top,#ebe8eb 0,#e0dadf 100%);box-shadow:0 1px 2px 0 rgba(0,0,0,.25);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.25);color:#5d5d5d;text-shadow:0 1px 0 rgba(255,255,255,.8)}.woocommerce #payment div.payment_box input.input-text,.woocommerce #payment div.payment_box textarea,.woocommerce-page #payment div.payment_box input.input-text,.woocommerce-page #payment div.payment_box textarea{border-color:#c8bfc6 #d4cdd2 #d4cdd2;box-shadow:0 1px 0 0 rgba(255,255,255,.4);-webkit-box-shadow:0 1px 0 0 rgba(255,255,255,.4)}.woocommerce #payment div.payment_box ::-webkit-input-placeholder,.woocommerce-page #payment div.payment_box ::-webkit-input-placeholder{color:#c8bfc6}.woocommerce #payment div.payment_box :-moz-placeholder,.woocommerce-page #payment div.payment_box :-moz-placeholder{color:#c8bfc6}.woocommerce #payment div.payment_box :-ms-input-placeholder,.woocommerce-page #payment div.payment_box :-ms-input-placeholder{color:#c8bfc6}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number{font-size:1.5em;padding:8px;background-repeat:no-repeat;background-position:right}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.visa,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.visa,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.visa,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.visa{background-image:url(../images/icons/credit-cards/visa.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.mastercard,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.mastercard,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.mastercard,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.mastercard{background-image:url(../images/icons/credit-cards/mastercard.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.laser,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.laser,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.laser,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.laser{background-image:url(../images/icons/credit-cards/laser.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.dinersclub,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.dinersclub,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.dinersclub,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.dinersclub{background-image:url(../images/icons/credit-cards/diners.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.maestro,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.maestro,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.maestro,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.maestro{background-image:url(../images/icons/credit-cards/maestro.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.jcb,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.jcb,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.jcb,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.jcb{background-image:url(../images/icons/credit-cards/jcb.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.amex,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.amex,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.amex,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.amex{background-image:url(../images/icons/credit-cards/amex.png)}.woocommerce #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce #payment div.payment_box .wc-credit-card-form-card-number.discover,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-cvc.discover,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-expiry.discover,.woocommerce-page #payment div.payment_box .wc-credit-card-form-card-number.discover{background-image:url(../images/icons/credit-cards/discover.png)}.woocommerce #payment div.payment_box span.help,.woocommerce-page #payment div.payment_box span.help{font-size:11px;color:#777;line-height:13px;font-weight:400}.woocommerce #payment div.payment_box .form-row,.woocommerce-page #payment div.payment_box .form-row{margin:0 0 1em}.woocommerce #payment div.payment_box p:last-child,.woocommerce-page #payment div.payment_box p:last-child{margin-bottom:0}.woocommerce #payment div.payment_box:after,.woocommerce-page #payment div.payment_box:after{content:"";display:block;border:8px solid #ebe8eb;border-right-color:transparent;border-left-color:transparent;border-top-color:transparent;position:absolute;top:-3px;left:0;margin:-1em 0 0 2em}.woocommerce #payment .payment_method_paypal .about_paypal,.woocommerce-page #payment .payment_method_paypal .about_paypal{float:right;line-height:52px;font-size:.83em}.woocommerce #payment .payment_method_paypal img,.woocommerce-page #payment .payment_method_paypal img{max-height:52px;vertical-align:middle}.woocommerce .order_details,.woocommerce-page .order_details{margin:0 0 1.5em;list-style:none}.woocommerce .order_details:after,.woocommerce .order_details:before,.woocommerce-page .order_details:after,.woocommerce-page .order_details:before{content:" ";display:table}.woocommerce .order_details:after,.woocommerce-page .order_details:after{clear:both}.woocommerce .order_details li,.woocommerce-page .order_details li{float:left;margin-right:2em;text-transform:uppercase;font-size:.715em;line-height:1em;border-right:1px dashed #e0dadf;padding-right:2em}.woocommerce .order_details li strong,.woocommerce-page .order_details li strong{display:block;font-size:1.4em;text-transform:none;line-height:1.5em}.woocommerce .order_details li:last-of-type,.woocommerce-page .order_details li:last-of-type{border:none}.woocommerce .addresses .title:after,.woocommerce .addresses .title:before,.woocommerce-page .addresses .title:after,.woocommerce-page .addresses .title:before{content:" ";display:table}.woocommerce .addresses .title:after,.woocommerce-page .addresses .title:after{clear:both}.woocommerce .addresses .title h3,.woocommerce-page .addresses .title h3{float:left}.woocommerce .addresses .title .edit,.woocommerce-page .addresses .title .edit{float:right}.woocommerce ol.commentlist.notes li.note p.meta,.woocommerce-page ol.commentlist.notes li.note p.meta{font-weight:700;margin-bottom:0}.woocommerce ol.commentlist.notes li.note .description p:last-child,.woocommerce-page ol.commentlist.notes li.note .description p:last-child{margin-bottom:0}.woocommerce ul.digital-downloads,.woocommerce-page ul.digital-downloads{margin-left:0;padding-left:0}.woocommerce ul.digital-downloads li,.woocommerce-page ul.digital-downloads li{list-style:none;margin-left:0;padding-left:0}.woocommerce ul.digital-downloads li:before,.woocommerce-page 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:7px;content:""}.woocommerce ul.digital-downloads li .count,.woocommerce-page ul.digital-downloads li .count{float:right}.woocommerce .widget_layered_nav ul,.woocommerce-page .widget_layered_nav ul{margin:0;padding:0;border:0;list-style:none}.woocommerce .widget_layered_nav ul li,.woocommerce-page .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,.woocommerce-page .widget_layered_nav ul li:after,.woocommerce-page .widget_layered_nav ul li:before{content:" ";display:table}.woocommerce .widget_layered_nav ul li:after,.woocommerce-page .widget_layered_nav ul li:after{clear:both}.woocommerce .widget_layered_nav ul li a,.woocommerce .widget_layered_nav ul li span,.woocommerce-page .widget_layered_nav ul li a,.woocommerce-page .widget_layered_nav ul li span{padding:1px 0;float:left}.woocommerce .widget_layered_nav ul li.chosen a,.woocommerce-page .widget_layered_nav ul li.chosen a{padding:0 6px;text-decoration:none;border:1px solid #ad74a2;background:#ad74a2;box-shadow:inset 0 1px 1px rgba(255,255,255,.5) #888;-webkit-box-shadow:inset 0 1px 1px rgba(255,255,255,.5) #888;color:#fff;-webkit-border-radius:3px;border-radius:3px}.woocommerce .widget_layered_nav ul li.chosen a:before,.woocommerce-page .widget_layered_nav 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:7px;content:""}.woocommerce .widget_layered_nav ul small.count,.woocommerce-page .widget_layered_nav ul small.count{float:right;margin-left:6px;font-size:1em;padding:1px 0;color:#777}.woocommerce .widget_layered_nav_filters ul,.woocommerce-page .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,.woocommerce-page .widget_layered_nav_filters ul li{float:left;padding:0 1px 1px 0;list-style:none}.woocommerce .widget_layered_nav_filters ul li a,.woocommerce-page .widget_layered_nav_filters ul li a{padding:0 6px;text-decoration:none;border:1px solid #ad74a2;background:#ad74a2;box-shadow:inset 0 1px 1px rgba(255,255,255,.5) #888;-webkit-box-shadow:inset 0 1px 1px rgba(255,255,255,.5) #888;color:#fff;-webkit-border-radius:3px;border-radius:3px;float:left}.woocommerce .widget_layered_nav_filters ul li a:before,.woocommerce-page .widget_layered_nav_filters ul li 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:7px;content:""}.woocommerce .widget_price_filter .price_slider,.woocommerce-page .widget_price_filter .price_slider{margin-bottom:1em}.woocommerce .widget_price_filter .price_slider_amount,.woocommerce-page .widget_price_filter .price_slider_amount{text-align:right;line-height:2.4em;font-size:.8751em}.woocommerce .widget_price_filter .price_slider_amount .button,.woocommerce-page .widget_price_filter .price_slider_amount .button{font-size:1.15em;float:left}.woocommerce .widget_price_filter .ui-slider,.woocommerce-page .widget_price_filter .ui-slider{position:relative;text-align:left}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle,.woocommerce-page .widget_price_filter .ui-slider .ui-slider-handle{position:absolute;z-index:2;width:.9em;height:.9em;-webkit-border-radius:1em;border-radius:1em;border:1px solid #150d14;cursor:pointer;background:#ad74a2;background:-webkit-gradient(linear,left top,left bottom,from(#ad74a2),to(#96588a));background:-webkit-linear-gradient(#ad74a2,#96588a);background:-moz-linear-gradient(center top,#ad74a2 0,#96588a 100%);background:-moz-gradient(center top,#ad74a2 0,#96588a 100%);outline:0;top:-.3em;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.65);-moz-box-shadow:0 1px 2px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.65);box-shadow:0 1px 2px rgba(0,0,0,.3),inset 0 0 0 1px rgba(255,255,255,.65)}.woocommerce .widget_price_filter .ui-slider .ui-slider-handle:last-child,.woocommerce-page .widget_price_filter .ui-slider .ui-slider-handle:last-child{margin-left:-1em}.woocommerce .widget_price_filter .ui-slider .ui-slider-range,.woocommerce-page .widget_price_filter .ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAFUlEQVQIHWP4//9/PRMDA8NzEPEMADLLBU76a5idAAAAAElFTkSuQmCC) top repeat-x #ad74a2;box-shadow:inset 0 0 0 1px rgba(0,0,0,.5);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.5);-webkit-border-radius:1em;border-radius:1em}.woocommerce .widget_price_filter .price_slider_wrapper .ui-widget-content,.woocommerce-page .widget_price_filter .price_slider_wrapper .ui-widget-content{-webkit-border-radius:1em;border-radius:1em;background:#1e1e1e;background:-webkit-gradient(linear,left top,left bottom,from(#1e1e1e),to(#6a6a6a));background:-webkit-linear-gradient(#1e1e1e,#6a6a6a);background:-moz-linear-gradient(center top,#1e1e1e 0,#6a6a6a 100%);background:-moz-gradient(center top,#1e1e1e 0,#6a6a6a 100%)}.woocommerce .widget_price_filter .ui-slider-horizontal,.woocommerce-page .widget_price_filter .ui-slider-horizontal{height:.5em}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range,.woocommerce-page .widget_price_filter .ui-slider-horizontal .ui-slider-range{top:0;height:100%}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-min,.woocommerce-page .widget_price_filter .ui-slider-horizontal .ui-slider-range-min{left:-1px}.woocommerce .widget_price_filter .ui-slider-horizontal .ui-slider-range-max,.woocommerce-page .widget_price_filter .ui-slider-horizontal .ui-slider-range-max{right:-1px}.single-product .twentythirteen #reply-title,.single-product .twentythirteen #respond #commentform,.single-product .twentythirteen .entry-summary{padding:0}.single-product .twentythirteen p.stars{clear:both}.twentythirteen .woocommerce-breadcrumb{padding-top:40px}.twentyfourteen ul.products li.product{margin-top:0!important}@media (-webkit-min-device-pixel-ratio:2),(min-resolution:192dpi){.woocommerce #content input.button.loading:before,.woocommerce #respond input#submit.loading:before,.woocommerce a.button.loading:before,.woocommerce button.button.loading:before,.woocommerce input.button.loading:before,.woocommerce-page #content input.button.loading:before,.woocommerce-page #respond input#submit.loading:before,.woocommerce-page a.button.loading:before,.woocommerce-page button.button.loading:before,.woocommerce-page input.button.loading:before{background-image:url(../images/ajax-loader@2x.gif);background-size:16px 16px}} \ No newline at end of file diff --git a/assets/css/woocommerce.less b/assets/css/woocommerce.scss similarity index 80% rename from assets/css/woocommerce.less rename to assets/css/woocommerce.scss index f1dae6ead81..48aee05aafd 100644 --- a/assets/css/woocommerce.less +++ b/assets/css/woocommerce.scss @@ -1,10 +1,10 @@ -@import "mixins.less"; -@import "woocommerce-base.less"; /* Contains base colours like @primary */ +@import 'mixins'; +@import 'woocommerce-base'; // Contains base colours like $primary -/* Colours */ -@tertiary: @primary; /* Price slider bar / layered nav UI */ -@tertiarytext: @primarytext; /* Text on tertiary colour bg */ -@quaternary: desaturate( darken( @tertiary, 45%), 40% ); /* Price slider bg */ +// Colours +$tertiary: $primary; // Price slider bar / layered nav UI +$tertiarytext: $primarytext; // Text on tertiary colour bg +$quaternary: desaturate(darken($tertiary, 45%), 40%); // Price slider bg /* =Custom Font -------------------------------------------------------------- */ @@ -41,11 +41,11 @@ p.demo_store { font-size: 1em; padding: .5em 0; text-align: center; - .vertical_gradient( @primary, darken(@primary, 10) ); - border: 1px solid darken(@primary, 10); - color: @primarytext; + @include vertical_gradient( $primary, darken($primary, 10%) ); + border: 1px solid darken($primary, 10%); + color: $primarytext; z-index: 99998; - .inset_box_shadow( 0, 0, 0, 3px, rgba(255,255,255,0.2) ); + @include inset_box_shadow( 0, 0, 0, 3px, rgba(255,255,255,0.2) ); } .admin-bar { // Styles applied when the admin bar is present @@ -58,13 +58,13 @@ p.demo_store { -------------------------------------------------------------- */ .wc-forward, .wc-forward a { &:after { - .iconafter( "\e029" ); + @include iconafter( "\e029" ); font-size:.75em; } } .wc-backward, .wc-backward a { &:before { - .iconbefore( "\e02f" ); + @include iconbefore( "\e02f" ); font-size:.75em; } } @@ -77,12 +77,12 @@ p.demo_store { padding: 1em 1em 1em 3.5em !important; margin: 0 0 2em !important; position: relative; - .border_radius(4px); - .vertical_gradient( lighten( @secondary, 2 ), @secondary ); - color: @secondarytext; - .text_shadow( 0, 1px, 0, lighten( @secondary, 4 ) ); + @include border_radius(4px); + @include vertical_gradient( lighten( $secondary, 2% ), $secondary ); + color: $secondarytext; + @include text_shadow( 0, 1px, 0, lighten( $secondary, 4% ) ); list-style:none outside !important; - .clearfix(); + @include clearfix(); width: auto; -webkit-box-shadow: inset 0 -2px 6px rgba(0,0,0,0.05), @@ -110,8 +110,8 @@ p.demo_store { color: #fff; text-shadow:0 1px 0 rgba(0,0,0,0.2); padding-top:1em; - .border_radius_bottom(4px); - .inset_box_shadow(0,-1px,0,0,rgba(0,0,0,0.1)); + @include border_radius_bottom(4px); + @include inset_box_shadow(0,-1px,0,0,rgba(0,0,0,0.1)); } .button { @@ -152,20 +152,20 @@ p.demo_store { small.note { display:block; - color: @subtext; + color: $subtext; font-size: 11px; line-height: 21px; margin-top: 10px; } .woocommerce-breadcrumb{ - .clearfix(); + @include clearfix(); margin: 0 0 1em; padding: 0; font-size: 0.92em; - color: @subtext; + color: $subtext; a { - color: @subtext; + color: $subtext; } } @@ -185,14 +185,14 @@ p.demo_store { /* Price */ span.price, p.price { - color: @highlight; + color: $highlight; font-size: 1.25em; ins { background: inherit; } del { font-size: 0.67em; - color:fade( desaturate( @highlight, 75% ), 50% ); + color: rgba(desaturate($highlight, 75%), 0.5); } } @@ -201,7 +201,7 @@ p.demo_store { font-size: 0.92em; } .stock { - color: @highlight; + color: $highlight; } .out-of-stock { color: red; @@ -214,8 +214,8 @@ p.demo_store { display:block; width: 100%; height:auto; - .box_shadow(0,1px,2px,0,rgba(0,0,0,0.3)); - .transition(); + @include box_shadow(0,1px,2px,0,rgba(0,0,0,0.3)); + @include transition(); } div.thumbnails { padding-top: 1em; @@ -258,12 +258,12 @@ p.demo_store { position: relative; li { - border: 1px solid darken( @secondary, 10 ); - .vertical_gradient( @secondary, darken( @secondary, 10 ) ); + border: 1px solid darken( $secondary, 10% ); + @include vertical_gradient( $secondary, darken( $secondary, 10% ) ); display: inline-block; position: relative; z-index: 0; - .border_radius_top(4px); + @include border_radius_top(4px); box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255,255,255,0.6); margin: 0 -5px; padding: 0 1em; @@ -272,20 +272,20 @@ p.demo_store { display: inline-block; padding: .5em 0; font-weight:bold; - color: @secondarytext; - .darkorlighttextshadow( @secondarytext ); + color: $secondarytext; + @include darkorlighttextshadow( $secondarytext ); text-decoration: none; &:hover { text-decoration:none; - color: lighten( @secondarytext, 10 ); + color: lighten( $secondarytext, 10% ); } } &.active { - background: @contentbg; + background: $contentbg; z-index: 2; - border-bottom-color: @contentbg; + border-bottom-color: $contentbg; a { color: inherit; @@ -293,15 +293,15 @@ p.demo_store { } &:before { - box-shadow: 2px 2px 0 @contentbg; + box-shadow: 2px 2px 0 $contentbg; } &:after { - box-shadow: -2px 2px 0 @contentbg; + box-shadow: -2px 2px 0 $contentbg; } } &:before, &:after { - border: 1px solid darken( @secondary, 10 ); + border: 1px solid darken( $secondary, 10% ); position:absolute; bottom: -1px; width: 5px; @@ -314,7 +314,7 @@ p.demo_store { -moz-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; border-width: 0 1px 1px 0; - box-shadow: 2px 2px 0 darken( @secondary, 10 ); + box-shadow: 2px 2px 0 darken( $secondary, 10% ); } &:after { right: -6px; @@ -322,7 +322,7 @@ p.demo_store { -moz-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; border-width: 0 0 1px 1px; - box-shadow: -2px 2px 0 darken( @secondary, 10 ); + box-shadow: -2px 2px 0 darken( $secondary, 10% ); } } &:before { @@ -331,7 +331,7 @@ p.demo_store { width: 100%; bottom: 0; left: 0; - border-bottom: 1px solid darken( @secondary, 10 ); + border-bottom: 1px solid darken( $secondary, 10% ); z-index: 1; } } @@ -344,13 +344,13 @@ p.demo_store { /* Cart button */ p.cart { margin-bottom: 2em; - .clearfix(); + @include clearfix(); } /* add to cart forms */ form.cart { margin-bottom: 2em; - .clearfix(); + @include clearfix(); div.quantity { float:left; margin: 0 4px 0 0; @@ -416,10 +416,10 @@ p.demo_store { top: 6px; left: 6px; margin: 0; - .border_radius(20px); - .vertical_gradient( lighten( @highlight, 10), @highlight ); - .text_shadow( 0, -1px, 0, @highlight ); - color: @highlightext; + @include border_radius(20px); + @include vertical_gradient( lighten( $highlight, 10%), $highlight ); + @include text_shadow( 0, -1px, 0, $highlight ); + color: $highlightext; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,0.3), inset 0 -1px 0 rgba(0,0,0,0.2), @@ -442,7 +442,7 @@ p.demo_store { padding: 0; list-style:none outside; clear:both; - .clearfix(); + @include clearfix(); li { list-style:none outside; } @@ -469,23 +469,23 @@ p.demo_store { height:auto; display:block; margin: 0 0 8px; - .box_shadow(0,1px,2px,0,rgba(0,0,0,0.3)); - .transition(); + @include box_shadow(0,1px,2px,0,rgba(0,0,0,0.3)); + @include transition(); } a:hover img { - .box_shadow(0,1px,3px,0,rgba(0,0,0,0.4)); + @include box_shadow(0,1px,3px,0,rgba(0,0,0,0.4)); } strong { display:block; } .price { - color: @highlight; - display:block; - font-weight:normal; + color: $highlight; + display: block; + font-weight: normal; margin-bottom: .5em; del { font-size: 0.67em; - color:fade( desaturate( @highlight, 75% ), 50% ); + color: rgba(desaturate($highlight, 75%), 0.5); margin: -2px 0 0 0; } ins { @@ -495,7 +495,7 @@ p.demo_store { font-size: 0.67em; margin: -2px 0 0 0; text-transform: uppercase; - color:fade( desaturate( @highlight, 75% ), 50% ); + color: rgba(desaturate($highlight, 75%), 0.5); } } } @@ -517,11 +517,11 @@ p.demo_store { white-space: nowrap; padding:0; clear: both; - border: 1px solid darken( @secondary, 10 ); + border: 1px solid darken( $secondary, 10% ); border-right: 0; margin: 1px; li { - border-right: 1px solid darken( @secondary, 10 ); + border-right: 1px solid darken( $secondary, 10% ); padding: 0; margin: 0; float: left; @@ -539,8 +539,8 @@ p.demo_store { display: block; } span.current, a:hover, a:focus { - background: @secondary; - color: darken( @secondary, 40 ); + background: $secondary; + color: darken( $secondary, 40% ); } } } @@ -561,13 +561,13 @@ p.demo_store { padding: 6px 10px; text-decoration:none; font-weight:bold; - .border_radius(2px); + @include border_radius(2px); left: auto; - text-shadow:0 1px 0 @secondary + #111; - color: @secondarytext; - .darkorlighttextshadow( @secondarytext ); - border: 1px solid darken( @secondary, 20 ); - .vertical_gradient( @secondary, darken( @secondary, 10 ) ); + text-shadow:0 1px 0 $secondary + #111; + color: $secondarytext; + @include darkorlighttextshadow( $secondarytext ); + border: 1px solid darken( $secondary, 20% ); + @include vertical_gradient( $secondary, darken( $secondary, 10% ) ); white-space: nowrap; display: inline-block; @@ -585,8 +585,8 @@ p.demo_store { 0 1px 2px rgba(0,0,0,0.1); &.loading { - color: lighten( @secondarytext, 10 ); - border: 1px solid @secondary; + color: lighten( $secondarytext, 10% ); + border: 1px solid $secondary; &:before { content: ""; @@ -613,7 +613,7 @@ p.demo_store { } &:hover { - .vertical_gradient( @secondary, darken( @secondary, 15 ) ); + @include vertical_gradient( $secondary, darken( $secondary, 15% ) ); text-decoration:none; } @@ -622,24 +622,24 @@ p.demo_store { } &.alt { - .vertical_gradient( @primary, darken( @primary, 10 ) ); - border-color: darken(@primary, 20); - color: @primarytext; - .darkorlighttextshadow( @primarytext, 0.6 ); + @include vertical_gradient( $primary, darken( $primary, 10% ) ); + border-color: darken($primary, 20%); + color: $primarytext; + @include darkorlighttextshadow( $primarytext, 0.6 ); &:hover { - .vertical_gradient( @primary, darken( @primary, 15 ) ); - color:@primarytext + #111; - .darkorlighttextshadow( @primarytext + #111, 0.6 ); + @include vertical_gradient( $primary, darken( $primary, 15% ) ); + color:$primarytext + #111; + @include darkorlighttextshadow( $primarytext + #111, 0.6 ); } } &:disabled, &.disabled { - color: lighten( @secondarytext, 30 ); - border: 1px solid darken( @secondary, 10 ); + color: lighten( $secondarytext, 30% ); + border: 1px solid darken( $secondary, 10% ); - background: @secondary; + background: $secondary; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; @@ -678,12 +678,12 @@ p.demo_store { padding: 0; margin: 0; text-align: center; - border: 1px solid darken( @secondary, 20 ); + border: 1px solid darken( $secondary, 20% ); border-right: 0; - .border_radius_right(0); - .inset_box_shadow( 0, 0, 2px, 0, @secondary ); + @include border_radius_right(0); + @include inset_box_shadow( 0, 0, 2px, 0, $secondary ); font-weight:bold; - .border_radius_left(2px); + @include border_radius_left(2px); -moz-appearance: textfield; /* Hide buttons for Firefox 29 and later */ } @@ -708,12 +708,12 @@ p.demo_store { cursor: pointer; line-height: 13px; font-size: 12px; - .border_radius(2px); + @include border_radius(2px); - color: @secondarytext; - .darkorlighttextshadow( @secondarytext ); - border: 1px solid darken( @secondary, 20 ); - .vertical_gradient( @secondary, darken( @secondary, 10 ) ); + color: $secondarytext; + @include darkorlighttextshadow( $secondarytext ); + border: 1px solid darken( $secondary, 20% ); + @include vertical_gradient( $secondary, darken( $secondary, 10% ) ); -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,0.075), @@ -729,7 +729,7 @@ p.demo_store { 0 1px 2px rgba(0,0,0,0.1); &:hover { - .vertical_gradient( @secondary, darken( @secondary, 15 ) ); + @include vertical_gradient( $secondary, darken( $secondary, 15% ) ); } } @@ -737,13 +737,13 @@ p.demo_store { top: 0; right: 0; border-bottom: 0; - .border_radius_bottom(0); + @include border_radius_bottom(0); } .minus { bottom: 0; right: 0; - .border_radius_top(0); + @include border_radius_top(0); } } @@ -752,13 +752,13 @@ p.demo_store { #reviews { h2 small { float: right; - color: @subtext; + color: $subtext; font-size: 15px; line-height: 21px; margin: 10px 0 0 0; a { text-decoration:none; - color: @subtext; + color: $subtext; } } h3 { @@ -774,13 +774,13 @@ p.demo_store { } #comments { .add_review { - .clearfix(); + @include clearfix(); } h2 { clear:none; } ol.commentlist { - .clearfix(); + @include clearfix(); margin: 0; width: 100%; background:none; @@ -793,7 +793,7 @@ p.demo_store { background: 0; border: 0; .meta { - color: @subtext; + color: $subtext; font-size: 0.75em; } img.avatar { @@ -804,17 +804,17 @@ p.demo_store { padding: 3px; width: 32px; height:auto; - background: @secondary; - border: 1px solid darken( @secondary, 3 ); + background: $secondary; + border: 1px solid darken( $secondary, 3% ); margin: 0; line-height: 1; } .comment-text { margin: 0 0 0 50px; - border: 1px solid darken( @secondary, 3 ); - .border_radius(4px); + border: 1px solid darken( $secondary, 3% ); + @include border_radius(4px); padding: 1em 1em 0; - .clearfix(); + @include clearfix(); p { margin: 0 0 1em; } @@ -832,8 +832,8 @@ p.demo_store { } } #respond { - border: 1px solid darken( @secondary, 3 ); - .border_radius(4px); + border: 1px solid darken( $secondary, 3% ); + @include border_radius(4px); padding: 1em 1em 0; margin: 20px 0 0 50px; } @@ -856,7 +856,7 @@ p.demo_store { font-family: 'star'; &:before { content: "\73\73\73\73\73"; - color: darken( @secondary, 10 ); + color: darken( $secondary, 10% ); float: left; top: 0; left: 0; @@ -904,7 +904,7 @@ p.demo_store { #review_form { #respond { - .clearfix(); + @include clearfix(); position: static; margin: 0; width: auto; @@ -1069,7 +1069,7 @@ p.demo_store { text-align:left; width: 100%; border-collapse: separate; - .border_radius(5px); + @include border_radius(5px); th { font-weight:bold; line-height: 18px; @@ -1109,7 +1109,7 @@ p.demo_store { td.product-name { dl.variation { margin: .25em 0; - .clearfix; + @include clearfix(); dt, dd { display: inline-block; @@ -1158,7 +1158,7 @@ p.demo_store { width:1em; text-align: center; line-height: 1; - .border_radius(100%); + @include border_radius(100%); color: red; text-decoration: none; font-weight: bold; @@ -1175,9 +1175,9 @@ p.demo_store { -moz-box-sizing:border-box; box-sizing:border-box; - .inset_box_shadow(0, 1px, 4px, 0, rgba(0,0,0,0.1)); + @include inset_box_shadow(0, 1px, 4px, 0, rgba(0,0,0,0.1)); - border: 1px solid darken( @secondary, 10 ); + border: 1px solid darken( $secondary, 10% ); padding: 6px 6px 5px; margin: 0 4px 0 0; outline: 0; @@ -1203,7 +1203,7 @@ p.demo_store { li { padding: 4px 0; margin: 0; - .clearfix; + @include clearfix(); list-style:none; a { display:block; @@ -1214,13 +1214,13 @@ p.demo_store { margin-left: 4px; width: 32px; height:auto; - .box_shadow(0,1px,2px,0,rgba(0,0,0,0.3)); + @include box_shadow(0,1px,2px,0,rgba(0,0,0,0.3)); } dl { margin: 0; padding-left: 1em; border-left: 2px solid rgba(0,0,0,0.1); - .clearfix; + @include clearfix(); dt, dd { display: inline-block; @@ -1248,7 +1248,7 @@ p.demo_store { &.widget_shopping_cart, .widget_shopping_cart { .total { - border-top: 3px double @secondary; + border-top: 3px double $secondary; padding: 4px 0 0; strong { min-width: 40px; @@ -1256,7 +1256,7 @@ p.demo_store { } } .buttons { - .clearfix; + @include clearfix(); } } @@ -1273,7 +1273,7 @@ p.demo_store { } .shipping-calculator-button { &:after { - .iconafter( "\e02e" ); + @include iconafter( "\e02e" ); } } } @@ -1281,13 +1281,13 @@ p.demo_store { p { margin: 0; small { - color: @subtext; + color: $subtext; font-size: 0.83em; } } table { border-collapse: separate; - .border_radius(5px); + @include border_radius(5px); margin: 0 0 6px; padding: 0; tr:first-child { @@ -1307,17 +1307,17 @@ p.demo_store { } small { display:block; - color: @subtext; + color: $subtext; } select { width: 100%; } } .discount td { - color: @highlight; + color: $highlight; } tr td, tr th { - border-top: 1px solid @secondary; + border-top: 1px solid $secondary; } a.button.alt { display: inline-block; @@ -1371,7 +1371,7 @@ p.demo_store { vertical-align: middle; } input.input-text, textarea { - .borderbox; + @include borderbox(); width: 100%; margin: 0; outline: 0; @@ -1403,11 +1403,11 @@ p.demo_store { } form.login, form.checkout_coupon, form.register { - border: 1px solid darken( @secondary, 10 ); + border: 1px solid darken( $secondary, 10% ); padding: 20px; margin: 2em 0 2em 0px; text-align:left; - .border_radius(5px); + @include border_radius(5px); } ul#shipping_method { @@ -1448,7 +1448,7 @@ p.demo_store { } .create-account small { font-size: 11px; - color: @subtext; + color: $subtext; line-height: 13px; font-weight:normal; } @@ -1464,14 +1464,14 @@ p.demo_store { /* Payment box - appears on checkout and page page */ #payment { - background: @secondary; - .border_radius(5px); + background: $secondary; + @include border_radius(5px); ul.payment_methods { - .clearfix; + @include clearfix(); text-align:left; padding: 1em; - border-bottom: 1px solid darken( @secondary, 10 ); + border-bottom: 1px solid darken( $secondary, 10% ); margin: 0; list-style:none outside; li { @@ -1497,7 +1497,7 @@ p.demo_store { div.form-row { padding: 1em; - border-top: 1px solid lighten( @secondary, 5 ); + border-top: 1px solid lighten( $secondary, 5% ); } div.payment_box { position: relative; @@ -1505,26 +1505,26 @@ p.demo_store { padding: 1em 2%; margin: 1em 0 1em 0; font-size: 0.92em; - .border_radius(2px); + @include border_radius(2px); line-height: 1.5em; - .vertical_gradient( darken( @secondary, 5 ), darken( @secondary, 10 ) ); - .box_shadow(0,1px,2px,0,rgba(0,0,0,0.25)); - color: @secondarytext; - .darkorlighttextshadow( @secondarytext ); + @include vertical_gradient( darken( $secondary, 5% ), darken( $secondary, 10% ) ); + @include box_shadow(0,1px,2px,0,rgba(0,0,0,0.25)); + color: $secondarytext; + @include darkorlighttextshadow( $secondarytext ); input.input-text, textarea { - border-color: darken( @secondary, 15 ); - border-top-color: darken( @secondary, 20 ); - .box_shadow( 0, 1px, 0, 0, rgba( 255,255,255,0.4 ) ); + border-color: darken( $secondary, 15% ); + border-top-color: darken( $secondary, 20% ); + @include box_shadow( 0, 1px, 0, 0, rgba( 255,255,255,0.4 ) ); } ::-webkit-input-placeholder { - color: darken( @secondary, 20 ); + color: darken( $secondary, 20% ); } :-moz-placeholder { - color: darken( @secondary, 20 ); + color: darken( $secondary, 20% ); } :-ms-input-placeholder { - color: darken( @secondary, 20 ); + color: darken( $secondary, 20% ); } .wc-credit-card-form-card-number, .wc-credit-card-form-card-expiry, @@ -1561,7 +1561,7 @@ p.demo_store { } span.help { font-size: 11px; - color: @subtext; + color: $subtext; line-height: 13px; font-weight:normal; } @@ -1574,7 +1574,7 @@ p.demo_store { &:after { content: ""; display:block; - border: 8px solid darken( @secondary, 5 ); /* arrow size / color */ + border: 8px solid darken( $secondary, 5% ); /* arrow size / color */ border-right-color: transparent; border-left-color: transparent; border-top-color: transparent; @@ -1584,13 +1584,24 @@ p.demo_store { margin: -1em 0 0 2em; } } + .payment_method_paypal { + .about_paypal { + float: right; + line-height: 52px; + font-size: 0.83em; + } + img { + max-height: 52px; + vertical-align: middle; + } + } } /* =Order Page -------------------------------------------------------------- */ .order_details { - .clearfix(); + @include clearfix(); margin: 0 0 1.5em; list-style:none; @@ -1600,7 +1611,7 @@ p.demo_store { text-transform: uppercase; font-size: 0.715em; line-height: 1em; - border-right: 1px dashed darken( @secondary, 10 ); + border-right: 1px dashed darken( $secondary, 10% ); padding-right: 2em; strong { @@ -1621,7 +1632,7 @@ p.demo_store { .addresses { .title { - .clearfix(); + @include clearfix(); h3 { float:left; @@ -1654,7 +1665,7 @@ p.demo_store { margin-left: 0; padding-left: 0; &:before { - .iconbefore( "\e00a" ); + @include iconbefore( "\e00a" ); } .count { float: right; @@ -1672,7 +1683,7 @@ p.demo_store { border: 0; list-style:none outside; li { - .clearfix(); + @include clearfix(); padding: 0 0 1px; list-style:none; a, span { @@ -1684,13 +1695,13 @@ p.demo_store { a { padding:0 6px; text-decoration: none; - border: 1px solid @tertiary; - background: @tertiary; - .inset_box_shadow(0, 1px, 1px, rgba(255,255,255,0.5)); - color: @tertiarytext; - .border_radius(3px); + border: 1px solid $tertiary; + background: $tertiary; + @include inset_box_shadow(0, 1px, 1px, rgba(255,255,255,0.5)); + color: $tertiarytext; + @include border_radius(3px); &:before { - .iconbefore( "\e013" ); + @include iconbefore( "\e013" ); } } } @@ -1699,7 +1710,7 @@ p.demo_store { margin-left: 6px; font-size: 1em; padding: 1px 0; - color: @subtext; + color: $subtext; } } } @@ -1719,14 +1730,14 @@ p.demo_store { a { padding:0 6px; text-decoration: none; - border: 1px solid @tertiary; - background: @tertiary; - .inset_box_shadow(0, 1px, 1px, rgba(255,255,255,0.5)); - color: @tertiarytext; - .border_radius(3px); + border: 1px solid $tertiary; + background: $tertiary; + @include inset_box_shadow(0, 1px, 1px, rgba(255,255,255,0.5)); + color: $tertiarytext; + @include border_radius(3px); float: left; &:before { - .iconbefore( "\e013" ); + @include iconbefore( "\e013" ); } } } @@ -1760,10 +1771,10 @@ p.demo_store { z-index: 2; width: 0.9em; height: 0.9em; - .border_radius(1em); - border: 1px solid darken( @tertiary, 50 ); + @include border_radius(1em); + border: 1px solid darken( $tertiary, 50% ); cursor: pointer; - .vertical_gradient( @tertiary, darken( @tertiary, 10 )); + @include vertical_gradient( $tertiary, darken( $tertiary, 10% )); outline:none; top: -.3em; -webkit-box-shadow: @@ -1786,13 +1797,13 @@ p.demo_store { font-size: .7em; display:block; border: 0; - background: @tertiary url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAFUlEQVQIHWP4//9/PRMDA8NzEPEMADLLBU76a5idAAAAAElFTkSuQmCC) top repeat-x; /* transparent png */ - .inset_box_shadow(0,0,0,1px,rgba(0,0,0,0.5)); - .border_radius(1em); + background: $tertiary url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAFUlEQVQIHWP4//9/PRMDA8NzEPEMADLLBU76a5idAAAAAElFTkSuQmCC) top repeat-x; /* transparent png */ + @include inset_box_shadow(0,0,0,1px,rgba(0,0,0,0.5)); + @include border_radius(1em); } .price_slider_wrapper .ui-widget-content { - .border_radius(1em); - .vertical_gradient( @quaternary, lighten( @quaternary, 30 ) ); + @include border_radius(1em); + @include vertical_gradient( $quaternary, lighten( $quaternary, 30% ) ); } .ui-slider-horizontal { height: .5em; diff --git a/assets/images/icons/paypal.png b/assets/images/icons/paypal.png deleted file mode 100644 index 3f4c3130f0d..00000000000 Binary files a/assets/images/icons/paypal.png and /dev/null differ diff --git a/assets/js/admin/meta-boxes-product-variation.js b/assets/js/admin/meta-boxes-product-variation.js index c4ae2c69512..a5938ebbc57 100644 --- a/assets/js/admin/meta-boxes-product-variation.js +++ b/assets/js/admin/meta-boxes-product-variation.js @@ -250,7 +250,13 @@ jQuery( function ( $ ) { edit_field = 'variable_sale_price'; } - value = window.prompt( woocommerce_admin_meta_boxes_variations.i18n_enter_a_value_fixed_or_percent ).toString(); + value = window.prompt( woocommerce_admin_meta_boxes_variations.i18n_enter_a_value_fixed_or_percent ); + + if ( value == null ) { + return; + } else { + value = value.toString(); + } $( ':input[name^="' + edit_field + '"]' ).each( function() { var current_value = accounting.unformat( $( this ).val(), woocommerce_admin.mon_decimal_point ), @@ -288,7 +294,9 @@ jQuery( function ( $ ) { case 'variable_download_expiry' : value = window.prompt( woocommerce_admin_meta_boxes_variations.i18n_enter_a_value ); - $( ':input[name^="' + bulk_edit + '"]').not('[name*="dates"]').val( value ).change(); + if ( value != null ) { + $( ':input[name^="' + bulk_edit + '"]').not('[name*="dates"]').val( value ).change(); + } break; default: $( 'select#field_to_edit' ).trigger( bulk_edit ); diff --git a/assets/js/admin/meta-boxes-product-variation.min.js b/assets/js/admin/meta-boxes-product-variation.min.js index 3698fe83f35..56abfffa6d7 100644 --- a/assets/js/admin/meta-boxes-product-variation.min.js +++ b/assets/js/admin/meta-boxes-product-variation.min.js @@ -1 +1 @@ -jQuery(function(a){function b(){a(".woocommerce_variations .woocommerce_variation").each(function(b,c){a(".variation_menu_order",c).val(parseInt(a(c).index(".woocommerce_variations .woocommerce_variation"),10))})}var c={items:".woocommerce_variation",cursor:"move",axis:"y",handle:"h3",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(a,b){b.item.css("background-color","#f6f6f6")},stop:function(a,c){c.item.removeAttr("style"),b()}};a("#variable_product_options").on("click","button.add_variation",function(){a(".woocommerce_variations").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_admin_meta_boxes_variations.plugin_url+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var b=a(".woocommerce_variation").size(),c={action:"woocommerce_add_variation",post_id:woocommerce_admin_meta_boxes_variations.post_id,loop:b,security:woocommerce_admin_meta_boxes_variations.add_variation_nonce};return a.post(woocommerce_admin_meta_boxes_variations.ajax_url,c,function(b){a(".woocommerce_variations").append(b),a(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50}),a("input.variable_is_downloadable, input.variable_is_virtual, input.variable_manage_stock").change(),a("input#_manage_stock").attr("checked")||a(".hide_if_parent_manage_stock_is_disabled").hide(),a(".woocommerce_variations").unblock(),a("#variable_product_options").trigger("woocommerce_variations_added")}),!1}),a("input#_manage_stock").on("change",function(){var b=a(".hide_if_parent_manage_stock_is_disabled");a(this).attr("checked")?(b.show(),a("input.variable_manage_stock").change()):b.hide()}).change(),a("#variable_product_options").on("click","button.link_all_variations",function(){var b=window.confirm(woocommerce_admin_meta_boxes_variations.i18n_link_all_variations);if(b){a("#variable_product_options").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_admin_meta_boxes_variations.plugin_url+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var c={action:"woocommerce_link_all_variations",post_id:woocommerce_admin_meta_boxes_variations.post_id,security:woocommerce_admin_meta_boxes_variations.link_variation_nonce};a.post(woocommerce_admin_meta_boxes_variations.ajax_url,c,function(b){var c=parseInt(b,10);if(window.alert(1===c?c+" "+woocommerce_admin_meta_boxes_variations.i18n_variation_added:0===c||c>1?c+" "+woocommerce_admin_meta_boxes_variations.i18n_variations_added:woocommerce_admin_meta_boxes_variations.i18n_no_variations_added),c>0){var d=window.location.toString();d=d.replace("post-new.php?","post.php?post="+woocommerce_admin_meta_boxes_variations.post_id+"&action=edit&"),a("#variable_product_options").load(d+" #variable_product_options_inner",function(){a("#variable_product_options").unblock(),a("#variable_product_options").trigger("woocommerce_variations_added"),a(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50})})}else a("#variable_product_options").unblock()})}return!1}),a("#variable_product_options").on("click","button.remove_variation",function(b){b.preventDefault();var c=window.confirm(woocommerce_admin_meta_boxes_variations.i18n_remove_variation);if(c){var d=a(this).parent().parent(),e=a(this).attr("rel");if(e>0){a(d).block({message:null,overlayCSS:{background:"#fff url("+woocommerce_admin_meta_boxes_variations.plugin_url+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var f={action:"woocommerce_remove_variation",variation_id:e,security:woocommerce_admin_meta_boxes_variations.delete_variation_nonce};a.post(woocommerce_admin_meta_boxes_variations.ajax_url,f,function(){a(d).fadeOut("300",function(){a(d).remove()})})}else a(d).fadeOut("300",function(){a(d).remove()})}return!1}),a(".wc-metaboxes-wrapper").on("click","a.bulk_edit",function(){var b,c,d,e=a("select#field_to_edit").val();switch(e){case"toggle_enabled":b=a('input[name^="variable_enabled"]'),b.attr("checked",!b.attr("checked"));break;case"toggle_downloadable":b=a('input[name^="variable_is_downloadable"]'),b.attr("checked",!b.attr("checked")),a("input.variable_is_downloadable").change();break;case"toggle_virtual":b=a('input[name^="variable_is_virtual"]'),b.attr("checked",!b.attr("checked")),a("input.variable_is_virtual").change();break;case"toggle_manage_stock":b=a('input[name^="variable_manage_stock"]'),b.attr("checked",!b.attr("checked")),a("input.variable_manage_stock").change();break;case"delete_all":if(c=window.confirm(woocommerce_admin_meta_boxes_variations.i18n_delete_all_variations),c&&(c=window.confirm(woocommerce_admin_meta_boxes_variations.i18n_last_warning))){var f=[];a(".woocommerce_variations .woocommerce_variation").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_admin_meta_boxes_variations.plugin_url+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}}),a(".woocommerce_variations .woocommerce_variation .remove_variation").each(function(){var b=a(this).attr("rel");b>0&&f.push(b)});var g={action:"woocommerce_remove_variations",variation_ids:f,security:woocommerce_admin_meta_boxes_variations.delete_variations_nonce};a.post(woocommerce_admin_meta_boxes_variations.ajax_url,g,function(){a(".woocommerce_variations .woocommerce_variation").fadeOut("300",function(){a(".woocommerce_variations .woocommerce_variation").remove()})})}break;case"variable_regular_price_increase":case"variable_regular_price_decrease":case"variable_sale_price_increase":case"variable_sale_price_decrease":var h;h=0===e.lastIndexOf("variable_regular_price",0)?"variable_regular_price":"variable_sale_price",d=window.prompt(woocommerce_admin_meta_boxes_variations.i18n_enter_a_value_fixed_or_percent).toString(),a(':input[name^="'+h+'"]').each(function(){var b,c,f=accounting.unformat(a(this).val(),woocommerce_admin.mon_decimal_point);c=d.indexOf("%")>=0?f/100*accounting.unformat(d.replace(/\%/,""),woocommerce_admin.mon_decimal_point):accounting.unformat(d,woocommerce_admin.mon_decimal_point),b=-1!==e.indexOf("increase")?f+c:f-c,a(this).val(accounting.formatNumber(b,woocommerce_admin_meta_boxes.currency_format_num_decimals,woocommerce_admin_meta_boxes.currency_format_thousand_sep,woocommerce_admin_meta_boxes.currency_format_decimal_sep)).change()});break;case"variable_regular_price":case"variable_sale_price":case"variable_stock":case"variable_weight":case"variable_length":case"variable_width":case"variable_height":case"variable_download_limit":case"variable_download_expiry":d=window.prompt(woocommerce_admin_meta_boxes_variations.i18n_enter_a_value),a(':input[name^="'+e+'"]').not('[name*="dates"]').val(d).change();break;default:a("select#field_to_edit").trigger(e)}}),a("#variable_product_options").on("change","input.variable_is_downloadable",function(){a(this).closest(".woocommerce_variation").find(".show_if_variation_downloadable").hide(),a(this).is(":checked")&&a(this).closest(".woocommerce_variation").find(".show_if_variation_downloadable").show()}),a("#variable_product_options").on("change","input.variable_is_virtual",function(){a(this).closest(".woocommerce_variation").find(".hide_if_variation_virtual").show(),a(this).is(":checked")&&a(this).closest(".woocommerce_variation").find(".hide_if_variation_virtual").hide()}),a("#variable_product_options").on("change","input.variable_manage_stock",function(){a(this).closest(".woocommerce_variation").find(".show_if_variation_manage_stock").hide(),a(this).is(":checked")&&a(this).closest(".woocommerce_variation").find(".show_if_variation_manage_stock").show()}),a("input.variable_is_downloadable, input.variable_is_virtual, input.variable_manage_stock").change(),a("#variable_product_options").on("woocommerce_variations_added",function(){a(".woocommerce_variations").sortable(c)}),a(".woocommerce_variations").sortable(c);var d,e,f,g=wp.media.model.settings.post.id;a("#variable_product_options").on("click",".upload_image_button",function(b){var c=a(this),h=c.attr("rel"),i=c.closest(".upload_image");if(f=i,e=h,b.preventDefault(),c.is(".remove"))f.find(".upload_image_id").val(""),f.find("img").eq(0).attr("src",woocommerce_admin_meta_boxes_variations.woocommerce_placeholder_img_src),f.find(".upload_image_button").removeClass("remove");else{if(d)return d.uploader.uploader.param("post_id",e),void d.open();wp.media.model.settings.post.id=e,d=wp.media.frames.variable_image=wp.media({title:woocommerce_admin_meta_boxes_variations.i18n_choose_image,button:{text:woocommerce_admin_meta_boxes_variations.i18n_set_image},states:[new wp.media.controller.Library({title:woocommerce_admin_meta_boxes_variations.i18n_choose_image,filterable:"all"})]}),d.on("select",function(){var a=d.state().get("selection").first().toJSON(),b=a.sizes.thumbnail?a.sizes.thumbnail.url:a.url;f.find(".upload_image_id").val(a.id),f.find(".upload_image_button").addClass("remove"),f.find("img").eq(0).attr("src",b),wp.media.model.settings.post.id=g}),d.open()}}),a("a.add_media").on(" click",function(){wp.media.model.settings.post.id=g})}); \ No newline at end of file +jQuery(function(a){function b(){a(".woocommerce_variations .woocommerce_variation").each(function(b,c){a(".variation_menu_order",c).val(parseInt(a(c).index(".woocommerce_variations .woocommerce_variation"),10))})}var c={items:".woocommerce_variation",cursor:"move",axis:"y",handle:"h3",scrollSensitivity:40,forcePlaceholderSize:!0,helper:"clone",opacity:.65,placeholder:"wc-metabox-sortable-placeholder",start:function(a,b){b.item.css("background-color","#f6f6f6")},stop:function(a,c){c.item.removeAttr("style"),b()}};a("#variable_product_options").on("click","button.add_variation",function(){a(".woocommerce_variations").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_admin_meta_boxes_variations.plugin_url+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var b=a(".woocommerce_variation").size(),c={action:"woocommerce_add_variation",post_id:woocommerce_admin_meta_boxes_variations.post_id,loop:b,security:woocommerce_admin_meta_boxes_variations.add_variation_nonce};return a.post(woocommerce_admin_meta_boxes_variations.ajax_url,c,function(b){a(".woocommerce_variations").append(b),a(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50}),a("input.variable_is_downloadable, input.variable_is_virtual, input.variable_manage_stock").change(),a("input#_manage_stock").attr("checked")||a(".hide_if_parent_manage_stock_is_disabled").hide(),a(".woocommerce_variations").unblock(),a("#variable_product_options").trigger("woocommerce_variations_added")}),!1}),a("input#_manage_stock").on("change",function(){var b=a(".hide_if_parent_manage_stock_is_disabled");a(this).attr("checked")?(b.show(),a("input.variable_manage_stock").change()):b.hide()}).change(),a("#variable_product_options").on("click","button.link_all_variations",function(){var b=window.confirm(woocommerce_admin_meta_boxes_variations.i18n_link_all_variations);if(b){a("#variable_product_options").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_admin_meta_boxes_variations.plugin_url+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var c={action:"woocommerce_link_all_variations",post_id:woocommerce_admin_meta_boxes_variations.post_id,security:woocommerce_admin_meta_boxes_variations.link_variation_nonce};a.post(woocommerce_admin_meta_boxes_variations.ajax_url,c,function(b){var c=parseInt(b,10);if(window.alert(1===c?c+" "+woocommerce_admin_meta_boxes_variations.i18n_variation_added:0===c||c>1?c+" "+woocommerce_admin_meta_boxes_variations.i18n_variations_added:woocommerce_admin_meta_boxes_variations.i18n_no_variations_added),c>0){var d=window.location.toString();d=d.replace("post-new.php?","post.php?post="+woocommerce_admin_meta_boxes_variations.post_id+"&action=edit&"),a("#variable_product_options").load(d+" #variable_product_options_inner",function(){a("#variable_product_options").unblock(),a("#variable_product_options").trigger("woocommerce_variations_added"),a(".tips").tipTip({attribute:"data-tip",fadeIn:50,fadeOut:50})})}else a("#variable_product_options").unblock()})}return!1}),a("#variable_product_options").on("click","button.remove_variation",function(b){b.preventDefault();var c=window.confirm(woocommerce_admin_meta_boxes_variations.i18n_remove_variation);if(c){var d=a(this).parent().parent(),e=a(this).attr("rel");if(e>0){a(d).block({message:null,overlayCSS:{background:"#fff url("+woocommerce_admin_meta_boxes_variations.plugin_url+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}});var f={action:"woocommerce_remove_variation",variation_id:e,security:woocommerce_admin_meta_boxes_variations.delete_variation_nonce};a.post(woocommerce_admin_meta_boxes_variations.ajax_url,f,function(){a(d).fadeOut("300",function(){a(d).remove()})})}else a(d).fadeOut("300",function(){a(d).remove()})}return!1}),a(".wc-metaboxes-wrapper").on("click","a.bulk_edit",function(){var b,c,d,e=a("select#field_to_edit").val();switch(e){case"toggle_enabled":b=a('input[name^="variable_enabled"]'),b.attr("checked",!b.attr("checked"));break;case"toggle_downloadable":b=a('input[name^="variable_is_downloadable"]'),b.attr("checked",!b.attr("checked")),a("input.variable_is_downloadable").change();break;case"toggle_virtual":b=a('input[name^="variable_is_virtual"]'),b.attr("checked",!b.attr("checked")),a("input.variable_is_virtual").change();break;case"toggle_manage_stock":b=a('input[name^="variable_manage_stock"]'),b.attr("checked",!b.attr("checked")),a("input.variable_manage_stock").change();break;case"delete_all":if(c=window.confirm(woocommerce_admin_meta_boxes_variations.i18n_delete_all_variations),c&&(c=window.confirm(woocommerce_admin_meta_boxes_variations.i18n_last_warning))){var f=[];a(".woocommerce_variations .woocommerce_variation").block({message:null,overlayCSS:{background:"#fff url("+woocommerce_admin_meta_boxes_variations.plugin_url+"/assets/images/ajax-loader.gif) no-repeat center",opacity:.6}}),a(".woocommerce_variations .woocommerce_variation .remove_variation").each(function(){var b=a(this).attr("rel");b>0&&f.push(b)});var g={action:"woocommerce_remove_variations",variation_ids:f,security:woocommerce_admin_meta_boxes_variations.delete_variations_nonce};a.post(woocommerce_admin_meta_boxes_variations.ajax_url,g,function(){a(".woocommerce_variations .woocommerce_variation").fadeOut("300",function(){a(".woocommerce_variations .woocommerce_variation").remove()})})}break;case"variable_regular_price_increase":case"variable_regular_price_decrease":case"variable_sale_price_increase":case"variable_sale_price_decrease":var h;if(h=0===e.lastIndexOf("variable_regular_price",0)?"variable_regular_price":"variable_sale_price",d=window.prompt(woocommerce_admin_meta_boxes_variations.i18n_enter_a_value_fixed_or_percent),null==d)return;d=d.toString(),a(':input[name^="'+h+'"]').each(function(){var b,c,f=accounting.unformat(a(this).val(),woocommerce_admin.mon_decimal_point);c=d.indexOf("%")>=0?f/100*accounting.unformat(d.replace(/\%/,""),woocommerce_admin.mon_decimal_point):accounting.unformat(d,woocommerce_admin.mon_decimal_point),b=-1!==e.indexOf("increase")?f+c:f-c,a(this).val(accounting.formatNumber(b,woocommerce_admin_meta_boxes.currency_format_num_decimals,woocommerce_admin_meta_boxes.currency_format_thousand_sep,woocommerce_admin_meta_boxes.currency_format_decimal_sep)).change()});break;case"variable_regular_price":case"variable_sale_price":case"variable_stock":case"variable_weight":case"variable_length":case"variable_width":case"variable_height":case"variable_download_limit":case"variable_download_expiry":d=window.prompt(woocommerce_admin_meta_boxes_variations.i18n_enter_a_value),null!=d&&a(':input[name^="'+e+'"]').not('[name*="dates"]').val(d).change();break;default:a("select#field_to_edit").trigger(e)}}),a("#variable_product_options").on("change","input.variable_is_downloadable",function(){a(this).closest(".woocommerce_variation").find(".show_if_variation_downloadable").hide(),a(this).is(":checked")&&a(this).closest(".woocommerce_variation").find(".show_if_variation_downloadable").show()}),a("#variable_product_options").on("change","input.variable_is_virtual",function(){a(this).closest(".woocommerce_variation").find(".hide_if_variation_virtual").show(),a(this).is(":checked")&&a(this).closest(".woocommerce_variation").find(".hide_if_variation_virtual").hide()}),a("#variable_product_options").on("change","input.variable_manage_stock",function(){a(this).closest(".woocommerce_variation").find(".show_if_variation_manage_stock").hide(),a(this).is(":checked")&&a(this).closest(".woocommerce_variation").find(".show_if_variation_manage_stock").show()}),a("input.variable_is_downloadable, input.variable_is_virtual, input.variable_manage_stock").change(),a("#variable_product_options").on("woocommerce_variations_added",function(){a(".woocommerce_variations").sortable(c)}),a(".woocommerce_variations").sortable(c);var d,e,f,g=wp.media.model.settings.post.id;a("#variable_product_options").on("click",".upload_image_button",function(b){var c=a(this),h=c.attr("rel"),i=c.closest(".upload_image");if(f=i,e=h,b.preventDefault(),c.is(".remove"))f.find(".upload_image_id").val(""),f.find("img").eq(0).attr("src",woocommerce_admin_meta_boxes_variations.woocommerce_placeholder_img_src),f.find(".upload_image_button").removeClass("remove");else{if(d)return d.uploader.uploader.param("post_id",e),void d.open();wp.media.model.settings.post.id=e,d=wp.media.frames.variable_image=wp.media({title:woocommerce_admin_meta_boxes_variations.i18n_choose_image,button:{text:woocommerce_admin_meta_boxes_variations.i18n_set_image},states:[new wp.media.controller.Library({title:woocommerce_admin_meta_boxes_variations.i18n_choose_image,filterable:"all"})]}),d.on("select",function(){var a=d.state().get("selection").first().toJSON(),b=a.sizes.thumbnail?a.sizes.thumbnail.url:a.url;f.find(".upload_image_id").val(a.id),f.find(".upload_image_button").addClass("remove"),f.find("img").eq(0).attr("src",b),wp.media.model.settings.post.id=g}),d.open()}}),a("a.add_media").on(" click",function(){wp.media.model.settings.post.id=g})}); \ No newline at end of file diff --git a/assets/js/frontend/add-to-cart-variation.js b/assets/js/frontend/add-to-cart-variation.js index e790494d3cd..21e08761cd1 100644 --- a/assets/js/frontend/add-to-cart-variation.js +++ b/assets/js/frontend/add-to-cart-variation.js @@ -243,7 +243,10 @@ current_attr_select.find( 'option:gt(0)' ).remove(); current_attr_select.append( current_attr_select.data( 'attribute_options' ) ); - current_attr_select.find( 'option:gt(0)' ).removeClass( 'active' ); + current_attr_select.find( 'option:gt(0)' ).removeClass( 'attached' ); + + current_attr_select.find( 'option:gt(0)' ).removeClass( 'enabled' ); + current_attr_select.find( 'option:gt(0)' ).removeAttr( 'disabled' ); // Get name var current_attr_name = current_attr_select.attr( 'name' ); @@ -261,6 +264,11 @@ if ( attr_name == current_attr_name ) { + if ( variations[ num ].variation_is_active ) + variation_active = 'enabled'; + else + variation_active = ''; + if ( attr_val ) { // Decode entities @@ -271,11 +279,11 @@ attr_val = attr_val.replace( /"/g, "\\\"" ); // Compare the meerkat - current_attr_select.find( 'option[value="' + attr_val + '"]' ).addClass( 'active' ); + current_attr_select.find( 'option[value="' + attr_val + '"]' ).addClass( 'attached ' + variation_active ); } else { - current_attr_select.find( 'option:gt(0)' ).addClass( 'active' ); + current_attr_select.find( 'option:gt(0)' ).addClass( 'attached ' + variation_active ); } } @@ -284,8 +292,11 @@ } } - // Detach inactive - current_attr_select.find( 'option:gt(0):not(.active)' ).remove(); + // Detach unattached + current_attr_select.find( 'option:gt(0):not(.attached)' ).remove(); + + // Grey out disabled + current_attr_select.find( 'option:gt(0):not(.enabled)' ).attr( 'disabled', 'disabled' ); }); diff --git a/assets/js/frontend/add-to-cart-variation.min.js b/assets/js/frontend/add-to-cart-variation.min.js index c60a1863a9f..8505c8532dc 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(){return a.fn.wc_variation_form.find_matching_variations=function(b,c){for(var d=[],e=0;e").html(i).text(),i=i.replace(/'/g,"\\'"),i=i.replace(/"/g,'\\"'),current_attr_select.find('option[value="'+i+'"]').addClass("active")):current_attr_select.find("option:gt(0)").addClass("active"))}}current_attr_select.find("option:gt(0):not(.active)").remove()}),$variation_form.trigger("woocommerce_update_variation_values")}).on("found_variation",function(b,c){var e=a(this),f=a(this).closest(".product"),g=f.find("div.images img:eq(0)"),h=f.find("div.images a.zoom:eq(0)"),i=g.attr("data-o_src"),j=g.attr("data-o_title"),k=g.attr("data-o_alt"),l=h.attr("data-o_href"),m=c.image_src,n=c.image_link,o=c.image_title,p=c.image_alt;e.find(".variations_button").show(),e.find(".single_variation").html(c.price_html+c.availability_html),i===d&&(i=g.attr("src")?g.attr("src"):"",g.attr("data-o_src",i)),l===d&&(l=h.attr("href")?h.attr("href"):"",h.attr("data-o_href",l)),j===d&&(j=g.attr("title")?g.attr("title"):"",g.attr("data-o_title",j)),k===d&&(k=g.attr("alt")?g.attr("alt"):"",g.attr("data-o_alt",k)),m&&m.length>1?(g.attr("src",m).attr("alt",p).attr("title",o),h.attr("href",n).attr("title",o)):(g.attr("src",i).attr("alt",k).attr("title",j),h.attr("href",l).attr("title",j));var q=e.find(".single_variation_wrap"),r=f.find(".product_meta").find(".sku"),s=f.find(".product_weight"),t=f.find(".product_dimensions");r.attr("data-o_sku")||r.attr("data-o_sku",r.text()),s.attr("data-o_weight")||s.attr("data-o_weight",s.text()),t.attr("data-o_dimensions")||t.attr("data-o_dimensions",t.text()),r.text(c.sku?c.sku:r.attr("data-o_sku")),s.text(c.weight?c.weight:s.attr("data-o_weight")),t.text(c.dimensions?c.dimensions:t.attr("data-o_dimensions")),q.find(".quantity").show(),c.is_purchasable&&c.is_in_stock&&c.variation_is_visible||e.find(".variations_button").hide(),c.variation_is_visible||e.find(".single_variation").html("

"+wc_add_to_cart_variation_params.i18n_unavailable_text+"

"),c.min_qty?q.find("input[name=quantity]").attr("min",c.min_qty).val(c.min_qty):q.find("input[name=quantity]").removeAttr("min"),c.max_qty?q.find("input[name=quantity]").attr("max",c.max_qty):q.find("input[name=quantity]").removeAttr("max"),"yes"===c.is_sold_individually&&(q.find("input[name=quantity]").val("1"),q.find(".quantity").hide()),q.slideDown(200).trigger("show_variation",[c])}),$form.trigger("wc_variation_form"),$form},a(function(){return"undefined"==typeof wc_add_to_cart_variation_params?!1:(a(".variations_form").wc_variation_form(),void a(".variations_form .variations select").change())})}(jQuery,window,document); \ No newline at end of file +!function(a,b,c,d){a.fn.wc_variation_form=function(){return a.fn.wc_variation_form.find_matching_variations=function(b,c){for(var d=[],e=0;e").html(i).text(),i=i.replace(/'/g,"\\'"),i=i.replace(/"/g,'\\"'),current_attr_select.find('option[value="'+i+'"]').addClass("attached "+variation_active)):current_attr_select.find("option:gt(0)").addClass("attached "+variation_active))}}current_attr_select.find("option:gt(0):not(.attached)").remove(),current_attr_select.find("option:gt(0):not(.enabled)").attr("disabled","disabled")}),$variation_form.trigger("woocommerce_update_variation_values")}).on("found_variation",function(b,c){var e=a(this),f=a(this).closest(".product"),g=f.find("div.images img:eq(0)"),h=f.find("div.images a.zoom:eq(0)"),i=g.attr("data-o_src"),j=g.attr("data-o_title"),k=g.attr("data-o_alt"),l=h.attr("data-o_href"),m=c.image_src,n=c.image_link,o=c.image_title,p=c.image_alt;e.find(".variations_button").show(),e.find(".single_variation").html(c.price_html+c.availability_html),i===d&&(i=g.attr("src")?g.attr("src"):"",g.attr("data-o_src",i)),l===d&&(l=h.attr("href")?h.attr("href"):"",h.attr("data-o_href",l)),j===d&&(j=g.attr("title")?g.attr("title"):"",g.attr("data-o_title",j)),k===d&&(k=g.attr("alt")?g.attr("alt"):"",g.attr("data-o_alt",k)),m&&m.length>1?(g.attr("src",m).attr("alt",p).attr("title",o),h.attr("href",n).attr("title",o)):(g.attr("src",i).attr("alt",k).attr("title",j),h.attr("href",l).attr("title",j));var q=e.find(".single_variation_wrap"),r=f.find(".product_meta").find(".sku"),s=f.find(".product_weight"),t=f.find(".product_dimensions");r.attr("data-o_sku")||r.attr("data-o_sku",r.text()),s.attr("data-o_weight")||s.attr("data-o_weight",s.text()),t.attr("data-o_dimensions")||t.attr("data-o_dimensions",t.text()),r.text(c.sku?c.sku:r.attr("data-o_sku")),s.text(c.weight?c.weight:s.attr("data-o_weight")),t.text(c.dimensions?c.dimensions:t.attr("data-o_dimensions")),q.find(".quantity").show(),c.is_purchasable&&c.is_in_stock&&c.variation_is_visible||e.find(".variations_button").hide(),c.variation_is_visible||e.find(".single_variation").html("

"+wc_add_to_cart_variation_params.i18n_unavailable_text+"

"),c.min_qty?q.find("input[name=quantity]").attr("min",c.min_qty).val(c.min_qty):q.find("input[name=quantity]").removeAttr("min"),c.max_qty?q.find("input[name=quantity]").attr("max",c.max_qty):q.find("input[name=quantity]").removeAttr("max"),"yes"===c.is_sold_individually&&(q.find("input[name=quantity]").val("1"),q.find(".quantity").hide()),q.slideDown(200).trigger("show_variation",[c])}),$form.trigger("wc_variation_form"),$form},a(function(){return"undefined"==typeof wc_add_to_cart_variation_params?!1:(a(".variations_form").wc_variation_form(),void a(".variations_form .variations select").change())})}(jQuery,window,document); \ No newline at end of file diff --git a/i18n/countries.php b/i18n/countries.php index 5c572e175a6..c7e7a2cbd02 100644 --- a/i18n/countries.php +++ b/i18n/countries.php @@ -4,13 +4,15 @@ * * Returns an array of countries and codes. * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.2.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} return array( 'AF' => __( 'Afghanistan', 'woocommerce' ), @@ -257,4 +259,4 @@ return array( 'YE' => __( 'Yemen', 'woocommerce' ), 'ZM' => __( 'Zambia', 'woocommerce' ), 'ZW' => __( 'Zimbabwe', 'woocommerce' ) -); \ No newline at end of file +); diff --git a/i18n/languages/README.md b/i18n/languages/README.md new file mode 100644 index 00000000000..6d051e43584 --- /dev/null +++ b/i18n/languages/README.md @@ -0,0 +1,9 @@ +# WARNING! DO NOT PUT CUSTOM TRANSLATIONS HERE! + +WooCommerce will delete all custom translations placed in this directory. + +## Translating WooCommerce +Put your custom WooCommerce translations in your WordPress language directory, located at: WP_LANG_DIR . "/woocommerce/{$textdomain}-{$locale}.mo"; + +## Contributing your translating to WooCommerce +If you want to help translate WooCommerce, please visit our [translation page](https://www.transifex.com/projects/p/woocommerce/). \ No newline at end of file diff --git a/i18n/languages/woocommerce-admin.pot b/i18n/languages/woocommerce-admin.pot index a7e12f6c12a..6d1eb37b99f 100644 --- a/i18n/languages/woocommerce-admin.pot +++ b/i18n/languages/woocommerce-admin.pot @@ -2,9 +2,9 @@ # This file is distributed under the same license as the WooCommerce package. msgid "" msgstr "" -"Project-Id-Version: WooCommerce 2.2.3 Admin\n" +"Project-Id-Version: WooCommerce 2.2.4 Admin\n" "Report-Msgid-Bugs-To: https://github.com/woothemes/woocommerce/issues\n" -"POT-Creation-Date: 2014-09-16 12:34:12+00:00\n" +"POT-Creation-Date: 2014-09-18 12:40:25+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -1270,10 +1270,10 @@ msgstr "" #: includes/admin/class-wc-admin-post-types.php:1982 #: includes/admin/meta-boxes/class-wc-meta-box-product-data.php:177 -#: includes/admin/meta-boxes/views/html-order-items.php:234 -#: includes/admin/meta-boxes/views/html-order-items.php:273 -#: includes/admin/meta-boxes/views/html-order-items.php:293 -#: includes/admin/meta-boxes/views/html-order-items.php:348 +#: includes/admin/meta-boxes/views/html-order-items.php:236 +#: includes/admin/meta-boxes/views/html-order-items.php:275 +#: includes/admin/meta-boxes/views/html-order-items.php:295 +#: includes/admin/meta-boxes/views/html-order-items.php:350 msgid "Cancel" msgstr "" @@ -2079,7 +2079,7 @@ msgstr "" #: includes/admin/meta-boxes/class-wc-meta-box-coupon-data.php:101 #: includes/admin/meta-boxes/class-wc-meta-box-product-data.php:608 #: includes/admin/meta-boxes/class-wc-meta-box-product-data.php:628 -#: includes/admin/meta-boxes/views/html-order-items.php:288 +#: includes/admin/meta-boxes/views/html-order-items.php:290 #: includes/admin/reports/class-wc-report-sales-by-product.php:181 msgid "Search for a product…" msgstr "" @@ -2377,8 +2377,8 @@ msgstr "" #: includes/admin/meta-boxes/class-wc-meta-box-order-notes.php:74 #: includes/admin/meta-boxes/class-wc-meta-box-product-data.php:584 -#: includes/admin/meta-boxes/views/html-order-items.php:294 -#: includes/admin/meta-boxes/views/html-order-items.php:349 +#: includes/admin/meta-boxes/views/html-order-items.php:296 +#: includes/admin/meta-boxes/views/html-order-items.php:351 msgid "Add" msgstr "" @@ -3037,93 +3037,101 @@ msgstr "" msgid "Add line item(s)" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:219 +#: includes/admin/meta-boxes/views/html-order-items.php:218 +msgid "To edit this order change the status back to \"Pending\"" +msgstr "" + +#: includes/admin/meta-boxes/views/html-order-items.php:218 +msgid "This order has been paid for and is no longer editable" +msgstr "" + +#: includes/admin/meta-boxes/views/html-order-items.php:221 msgid "Add Tax" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:222 +#: includes/admin/meta-boxes/views/html-order-items.php:224 #: includes/admin/meta-boxes/views/html-order-refund.php:14 msgid "Refund" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:225 +#: includes/admin/meta-boxes/views/html-order-items.php:227 msgid "Calculate Taxes" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:226 +#: includes/admin/meta-boxes/views/html-order-items.php:228 msgid "Calculate Total" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:231 +#: includes/admin/meta-boxes/views/html-order-items.php:233 msgid "Add product(s)" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:232 +#: includes/admin/meta-boxes/views/html-order-items.php:234 msgid "Add fee" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:233 +#: includes/admin/meta-boxes/views/html-order-items.php:235 msgid "Add shipping cost" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:235 +#: includes/admin/meta-boxes/views/html-order-items.php:237 msgid "Save" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:241 +#: includes/admin/meta-boxes/views/html-order-items.php:243 msgid "Restock refunded items" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:245 +#: includes/admin/meta-boxes/views/html-order-items.php:247 msgid "Amount already refunded" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:249 +#: includes/admin/meta-boxes/views/html-order-items.php:251 msgid "Total available to refund" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:253 +#: includes/admin/meta-boxes/views/html-order-items.php:255 msgid "Refund amount" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:260 +#: includes/admin/meta-boxes/views/html-order-items.php:262 msgid "Reason for refund (optional)" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:272 +#: includes/admin/meta-boxes/views/html-order-items.php:274 msgid "Refund manually" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:284 +#: includes/admin/meta-boxes/views/html-order-items.php:286 msgid "Add products" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:308 +#: includes/admin/meta-boxes/views/html-order-items.php:310 msgid "Add tax" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:316 +#: includes/admin/meta-boxes/views/html-order-items.php:318 msgid "Rate name" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:317 +#: includes/admin/meta-boxes/views/html-order-items.php:319 msgid "Tax class" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:318 +#: includes/admin/meta-boxes/views/html-order-items.php:320 msgid "Rate code" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:319 +#: includes/admin/meta-boxes/views/html-order-items.php:321 #: includes/admin/settings/class-wc-settings-tax.php:392 msgid "Rate %" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:340 +#: includes/admin/meta-boxes/views/html-order-items.php:342 msgid "Or, enter tax rate ID:" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:341 +#: includes/admin/meta-boxes/views/html-order-items.php:343 msgid "Optional" msgstr "" @@ -3616,7 +3624,7 @@ msgid "This is the total tax for the rate (shipping tax + product tax)." msgstr "" #: includes/admin/reports/class-wc-report-taxes-by-code.php:182 -#: includes/admin/reports/class-wc-report-taxes-by-date.php:163 +#: includes/admin/reports/class-wc-report-taxes-by-date.php:164 msgid "No taxes found in this period" msgstr "" @@ -3652,7 +3660,7 @@ msgstr "" msgid "Total sales minus shipping and tax." msgstr "" -#: includes/admin/reports/class-wc-report-taxes-by-date.php:152 +#: includes/admin/reports/class-wc-report-taxes-by-date.php:153 msgid "Totals" msgstr "" @@ -5560,7 +5568,7 @@ msgctxt "Tax status" msgid "None" msgstr "" -#: includes/admin/meta-boxes/views/html-order-items.php:270 +#: includes/admin/meta-boxes/views/html-order-items.php:272 msgctxt "Refund $amount" msgid "Refund %s via %s" msgstr "" diff --git a/i18n/languages/woocommerce.pot b/i18n/languages/woocommerce.pot index ba7185fcad5..924933a49d4 100644 --- a/i18n/languages/woocommerce.pot +++ b/i18n/languages/woocommerce.pot @@ -2,9 +2,9 @@ # This file is distributed under the same license as the WooCommerce package. msgid "" msgstr "" -"Project-Id-Version: WooCommerce 2.2.3 Frontend\n" +"Project-Id-Version: WooCommerce 2.2.4 Frontend\n" "Report-Msgid-Bugs-To: https://github.com/woothemes/woocommerce/issues\n" -"POT-Creation-Date: 2014-09-16 12:34:12+00:00\n" +"POT-Creation-Date: 2014-09-18 12:40:24+00:00\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -1413,7 +1413,7 @@ msgstr "" msgid "Ceará" msgstr "" -#: i18n/states/BR.php:19 +#: i18n/states/BR.php:19 i18n/states/MX.php:13 msgid "Distrito Federal" msgstr "" @@ -3005,6 +3005,130 @@ msgstr "" msgid "Okinawa" msgstr "" +#: i18n/states/MX.php:14 +msgid "Jalisco" +msgstr "" + +#: i18n/states/MX.php:15 +msgid "Nuevo León" +msgstr "" + +#: i18n/states/MX.php:16 +msgid "Aguascalientes" +msgstr "" + +#: i18n/states/MX.php:17 +msgid "Baja California Norte" +msgstr "" + +#: i18n/states/MX.php:18 +msgid "Baja California Sur" +msgstr "" + +#: i18n/states/MX.php:19 +msgid "Campeche" +msgstr "" + +#: i18n/states/MX.php:20 +msgid "Chiapas" +msgstr "" + +#: i18n/states/MX.php:21 +msgid "Chihuahua" +msgstr "" + +#: i18n/states/MX.php:22 +msgid "Coahuila" +msgstr "" + +#: i18n/states/MX.php:23 +msgid "Colima" +msgstr "" + +#: i18n/states/MX.php:24 +msgid "Durango" +msgstr "" + +#: i18n/states/MX.php:25 +msgid "Guanajuato" +msgstr "" + +#: i18n/states/MX.php:26 +msgid "Guerrero" +msgstr "" + +#: i18n/states/MX.php:27 +msgid "Hidalgo" +msgstr "" + +#: i18n/states/MX.php:28 +msgid "Edo. de México" +msgstr "" + +#: i18n/states/MX.php:29 +msgid "Michoacán" +msgstr "" + +#: i18n/states/MX.php:30 +msgid "Morelos" +msgstr "" + +#: i18n/states/MX.php:31 +msgid "Nayarit" +msgstr "" + +#: i18n/states/MX.php:32 +msgid "Oaxaca" +msgstr "" + +#: i18n/states/MX.php:33 +msgid "Puebla" +msgstr "" + +#: i18n/states/MX.php:34 +msgid "Querétaro" +msgstr "" + +#: i18n/states/MX.php:35 +msgid "Quintana Roo" +msgstr "" + +#: i18n/states/MX.php:36 +msgid "San Luis Potosí" +msgstr "" + +#: i18n/states/MX.php:37 +msgid "Sinaloa" +msgstr "" + +#: i18n/states/MX.php:38 +msgid "Sonora" +msgstr "" + +#: i18n/states/MX.php:39 +msgid "Tabasco" +msgstr "" + +#: i18n/states/MX.php:40 +msgid "Tamaulipas" +msgstr "" + +#: i18n/states/MX.php:41 +msgid "Tlaxcala" +msgstr "" + +#: i18n/states/MX.php:42 +msgid "Veracruz" +msgstr "" + +#: i18n/states/MX.php:43 +msgid "Yucatán" +msgstr "" + +#: i18n/states/MX.php:44 +msgid "Zacatecas" +msgstr "" + #: i18n/states/MY.php:13 msgid "Johor" msgstr "" @@ -3069,6 +3193,306 @@ msgstr "" msgid "W.P. Putrajaya" msgstr "" +#: i18n/states/NP.php:15 +msgid "Illam" +msgstr "" + +#: i18n/states/NP.php:16 +msgid "Jhapa" +msgstr "" + +#: i18n/states/NP.php:17 +msgid "Panchthar" +msgstr "" + +#: i18n/states/NP.php:18 +msgid "Taplejung" +msgstr "" + +#: i18n/states/NP.php:21 +msgid "Bhojpur" +msgstr "" + +#: i18n/states/NP.php:22 +msgid "Dhankuta" +msgstr "" + +#: i18n/states/NP.php:23 +msgid "Morang" +msgstr "" + +#: i18n/states/NP.php:24 +msgid "Sunsari" +msgstr "" + +#: i18n/states/NP.php:25 +msgid "Sankhuwa" +msgstr "" + +#: i18n/states/NP.php:26 +msgid "Terhathum" +msgstr "" + +#: i18n/states/NP.php:29 +msgid "Khotang" +msgstr "" + +#: i18n/states/NP.php:30 +msgid "Okhaldhunga" +msgstr "" + +#: i18n/states/NP.php:31 +msgid "Saptari" +msgstr "" + +#: i18n/states/NP.php:32 +msgid "Siraha" +msgstr "" + +#: i18n/states/NP.php:33 +msgid "Solukhumbu" +msgstr "" + +#: i18n/states/NP.php:34 +msgid "Udayapur" +msgstr "" + +#: i18n/states/NP.php:37 +msgid "Dhanusa" +msgstr "" + +#: i18n/states/NP.php:38 +msgid "Dolakha" +msgstr "" + +#: i18n/states/NP.php:39 +msgid "Mohottari" +msgstr "" + +#: i18n/states/NP.php:40 +msgid "Ramechha" +msgstr "" + +#: i18n/states/NP.php:41 +msgid "Sarlahi" +msgstr "" + +#: i18n/states/NP.php:42 +msgid "Sindhuli" +msgstr "" + +#: i18n/states/NP.php:45 +msgid "Bhaktapur" +msgstr "" + +#: i18n/states/NP.php:46 +msgid "Dhading" +msgstr "" + +#: i18n/states/NP.php:47 +msgid "Kathmandu" +msgstr "" + +#: i18n/states/NP.php:48 +msgid "Kavrepalanchowk" +msgstr "" + +#: i18n/states/NP.php:49 +msgid "Lalitpur" +msgstr "" + +#: i18n/states/NP.php:50 +msgid "Nuwakot" +msgstr "" + +#: i18n/states/NP.php:51 +msgid "Rasuwa" +msgstr "" + +#: i18n/states/NP.php:52 +msgid "Sindhupalchowk" +msgstr "" + +#: i18n/states/NP.php:55 +msgid "Bara" +msgstr "" + +#: i18n/states/NP.php:56 +msgid "Chitwan" +msgstr "" + +#: i18n/states/NP.php:57 +msgid "Makwanpur" +msgstr "" + +#: i18n/states/NP.php:58 +msgid "Parsa" +msgstr "" + +#: i18n/states/NP.php:59 +msgid "Rautahat" +msgstr "" + +#: i18n/states/NP.php:62 +msgid "Gorkha" +msgstr "" + +#: i18n/states/NP.php:63 +msgid "Kaski" +msgstr "" + +#: i18n/states/NP.php:64 +msgid "Lamjung" +msgstr "" + +#: i18n/states/NP.php:65 +msgid "Manang" +msgstr "" + +#: i18n/states/NP.php:66 +msgid "Syangja" +msgstr "" + +#: i18n/states/NP.php:67 +msgid "Tanahun" +msgstr "" + +#: i18n/states/NP.php:70 +msgid "Baglung" +msgstr "" + +#: i18n/states/NP.php:71 +msgid "Parbat" +msgstr "" + +#: i18n/states/NP.php:72 +msgid "Mustang" +msgstr "" + +#: i18n/states/NP.php:73 +msgid "Myagdi" +msgstr "" + +#: i18n/states/NP.php:76 +msgid "Agrghakanchi" +msgstr "" + +#: i18n/states/NP.php:77 +msgid "Gulmi" +msgstr "" + +#: i18n/states/NP.php:78 +msgid "Kapilbastu" +msgstr "" + +#: i18n/states/NP.php:79 +msgid "Nawalparasi" +msgstr "" + +#: i18n/states/NP.php:80 +msgid "Palpa" +msgstr "" + +#: i18n/states/NP.php:81 +msgid "Rupandehi" +msgstr "" + +#: i18n/states/NP.php:84 +msgid "Dang" +msgstr "" + +#: i18n/states/NP.php:85 +msgid "Pyuthan" +msgstr "" + +#: i18n/states/NP.php:86 +msgid "Rolpa" +msgstr "" + +#: i18n/states/NP.php:87 +msgid "Rukum" +msgstr "" + +#: i18n/states/NP.php:88 +msgid "Salyan" +msgstr "" + +#: i18n/states/NP.php:91 +msgid "Banke" +msgstr "" + +#: i18n/states/NP.php:92 +msgid "Bardiya" +msgstr "" + +#: i18n/states/NP.php:93 +msgid "Dailekh" +msgstr "" + +#: i18n/states/NP.php:94 +msgid "Jajarkot" +msgstr "" + +#: i18n/states/NP.php:95 +msgid "Surkhet" +msgstr "" + +#: i18n/states/NP.php:98 +msgid "Dolpa" +msgstr "" + +#: i18n/states/NP.php:99 +msgid "Humla" +msgstr "" + +#: i18n/states/NP.php:100 +msgid "Jumla" +msgstr "" + +#: i18n/states/NP.php:101 +msgid "Kalikot" +msgstr "" + +#: i18n/states/NP.php:102 +msgid "Mugu" +msgstr "" + +#: i18n/states/NP.php:105 +msgid "Achham" +msgstr "" + +#: i18n/states/NP.php:106 +msgid "Bajhang" +msgstr "" + +#: i18n/states/NP.php:107 +msgid "Bajura" +msgstr "" + +#: i18n/states/NP.php:108 +msgid "Doti" +msgstr "" + +#: i18n/states/NP.php:109 +msgid "Kailali" +msgstr "" + +#: i18n/states/NP.php:112 +msgid "Baitadi" +msgstr "" + +#: i18n/states/NP.php:113 +msgid "Dadeldhura" +msgstr "" + +#: i18n/states/NP.php:114 +msgid "Darchula" +msgstr "" + +#: i18n/states/NP.php:115 +msgid "Kanchanpur" +msgstr "" + #: i18n/states/NZ.php:13 msgid "Northland" msgstr "" @@ -4371,16 +4795,16 @@ msgstr "" msgid "WooCommerce" msgstr "" -#: includes/abstracts/abstract-wc-order.php:2075 +#: includes/abstracts/abstract-wc-order.php:2080 msgid "Order status changed from %s to %s." msgstr "" -#: includes/abstracts/abstract-wc-order.php:2338 +#: includes/abstracts/abstract-wc-order.php:2343 #: includes/class-wc-ajax.php:1167 includes/class-wc-ajax.php:1168 msgid "Item #%s stock reduced from %s to %s." msgstr "" -#: includes/abstracts/abstract-wc-order.php:2348 +#: includes/abstracts/abstract-wc-order.php:2353 msgid "Order item stock reduced successfully." msgstr "" @@ -4453,18 +4877,18 @@ msgstr "" msgid "Out of stock" msgstr "" -#: includes/abstracts/abstract-wc-product.php:1015 +#: includes/abstracts/abstract-wc-product.php:1021 #: templates/single-product/rating.php:23 msgid "Rated %s out of 5" msgstr "" -#: includes/abstracts/abstract-wc-product.php:1017 +#: includes/abstracts/abstract-wc-product.php:1023 #: templates/single-product/rating.php:25 #: templates/single-product/review.php:27 msgid "out of 5" msgstr "" -#: includes/abstracts/abstract-wc-product.php:1371 +#: includes/abstracts/abstract-wc-product.php:1377 msgid "%s – %s" msgstr "" @@ -4873,7 +5297,7 @@ msgstr "" msgid "Zero size file downloaded" msgstr "" -#: includes/api/class-wc-api-reports.php:469 +#: includes/api/class-wc-api-reports.php:471 #: includes/api/v1/class-wc-api-reports.php:470 msgid "You do not have permission to read this report" msgstr "" @@ -9189,8 +9613,8 @@ msgstr "" #: includes/class-wc-post-types.php:220 #: includes/updates/woocommerce-update-2.0.php:53 -#: includes/wc-core-functions.php:506 includes/wc-core-functions.php:525 -#: includes/wc-core-functions.php:559 +#: includes/wc-core-functions.php:507 includes/wc-core-functions.php:526 +#: includes/wc-core-functions.php:560 msgctxt "slug" msgid "product" msgstr "" diff --git a/i18n/states/AU.php b/i18n/states/AU.php index 59fe57be954..175dc87faf4 100644 --- a/i18n/states/AU.php +++ b/i18n/states/AU.php @@ -2,9 +2,9 @@ /** * Australian states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; diff --git a/i18n/states/BD.php b/i18n/states/BD.php index fe93c98f586..d140e9636a8 100644 --- a/i18n/states/BD.php +++ b/i18n/states/BD.php @@ -2,10 +2,10 @@ /** * Bangladeshi states (districts) * - * @author Md Ariful Haque Khan - * @category i18n - * @package WooCommerce/i18n - * @version 2.0.0 + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n + * @version 2.0.0 */ global $states; diff --git a/i18n/states/BG.php b/i18n/states/BG.php index 69a38e2d2ca..14feebeec82 100644 --- a/i18n/states/BG.php +++ b/i18n/states/BG.php @@ -2,40 +2,40 @@ /** * Bulgarian states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; $states['BG'] = array( - 'BG-01' => __( 'Blagoevgrad', 'woocommerce' ), - 'BG-02' => __( 'Burgas', 'woocommerce' ), - 'BG-08' => __( 'Dobrich', 'woocommerce' ), - 'BG-07' => __( 'Gabrovo', 'woocommerce' ), - 'BG-26' => __( 'Haskovo', 'woocommerce' ), - 'BG-09' => __( 'Kardzhali', 'woocommerce' ), - 'BG-10' => __( 'Kyustendil', 'woocommerce' ), - 'BG-11' => __( 'Lovech', 'woocommerce' ), - 'BG-12' => __( 'Montana', 'woocommerce' ), - 'BG-13' => __( 'Pazardzhik', 'woocommerce' ), - 'BG-14' => __( 'Pernik', 'woocommerce' ), - 'BG-15' => __( 'Pleven', 'woocommerce' ), - 'BG-16' => __( 'Plovdiv', 'woocommerce' ), - 'BG-17' => __( 'Razgrad', 'woocommerce' ), - 'BG-18' => __( 'Ruse', 'woocommerce' ), - 'BG-27' => __( 'Shumen', 'woocommerce' ), - 'BG-19' => __( 'Silistra', 'woocommerce' ), - 'BG-20' => __( 'Sliven', 'woocommerce' ), - 'BG-21' => __( 'Smolyan', 'woocommerce' ), - 'BG-23' => __( 'Sofia', 'woocommerce' ), - 'BG-22' => __( 'Sofia-Grad', 'woocommerce' ), - 'BG-24' => __( 'Stara Zagora', 'woocommerce' ), - 'BG-25' => __( 'Targovishte', 'woocommerce' ), - 'BG-03' => __( 'Varna', 'woocommerce' ), - 'BG-04' => __( 'Veliko Tarnovo', 'woocommerce' ), - 'BG-05' => __( 'Vidin', 'woocommerce' ), - 'BG-06' => __( 'Vratsa', 'woocommerce' ), - 'BG-28' => __( 'Yambol', 'woocommerce' ), + 'BG-01' => __( 'Blagoevgrad', 'woocommerce' ), + 'BG-02' => __( 'Burgas', 'woocommerce' ), + 'BG-08' => __( 'Dobrich', 'woocommerce' ), + 'BG-07' => __( 'Gabrovo', 'woocommerce' ), + 'BG-26' => __( 'Haskovo', 'woocommerce' ), + 'BG-09' => __( 'Kardzhali', 'woocommerce' ), + 'BG-10' => __( 'Kyustendil', 'woocommerce' ), + 'BG-11' => __( 'Lovech', 'woocommerce' ), + 'BG-12' => __( 'Montana', 'woocommerce' ), + 'BG-13' => __( 'Pazardzhik', 'woocommerce' ), + 'BG-14' => __( 'Pernik', 'woocommerce' ), + 'BG-15' => __( 'Pleven', 'woocommerce' ), + 'BG-16' => __( 'Plovdiv', 'woocommerce' ), + 'BG-17' => __( 'Razgrad', 'woocommerce' ), + 'BG-18' => __( 'Ruse', 'woocommerce' ), + 'BG-27' => __( 'Shumen', 'woocommerce' ), + 'BG-19' => __( 'Silistra', 'woocommerce' ), + 'BG-20' => __( 'Sliven', 'woocommerce' ), + 'BG-21' => __( 'Smolyan', 'woocommerce' ), + 'BG-23' => __( 'Sofia', 'woocommerce' ), + 'BG-22' => __( 'Sofia-Grad', 'woocommerce' ), + 'BG-24' => __( 'Stara Zagora', 'woocommerce' ), + 'BG-25' => __( 'Targovishte', 'woocommerce' ), + 'BG-03' => __( 'Varna', 'woocommerce' ), + 'BG-04' => __( 'Veliko Tarnovo', 'woocommerce' ), + 'BG-05' => __( 'Vidin', 'woocommerce' ), + 'BG-06' => __( 'Vratsa', 'woocommerce' ), + 'BG-28' => __( 'Yambol', 'woocommerce' ), ); diff --git a/i18n/states/BR.php b/i18n/states/BR.php index 13a67ce8ba9..9e0097b63b4 100644 --- a/i18n/states/BR.php +++ b/i18n/states/BR.php @@ -2,9 +2,9 @@ /** * Brazillian states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; diff --git a/i18n/states/CA.php b/i18n/states/CA.php index 513c4362f4c..55efcca6105 100644 --- a/i18n/states/CA.php +++ b/i18n/states/CA.php @@ -2,9 +2,9 @@ /** * Canadian states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; diff --git a/i18n/states/CN.php b/i18n/states/CN.php index 29b8c280a16..4f8a85d4190 100644 --- a/i18n/states/CN.php +++ b/i18n/states/CN.php @@ -2,44 +2,44 @@ /** * Chinese states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; $states['CN'] = array( - 'CN1' => __( 'Yunnan / 云南', 'woocommerce' ), - 'CN2' => __( 'Beijing / 北京', 'woocommerce' ), - 'CN3' => __( 'Tianjin / 天津', 'woocommerce' ), - 'CN4' => __( 'Hebei / 河北', 'woocommerce' ), - 'CN5' => __( 'Shanxi / 山西', 'woocommerce' ), - 'CN6' => __( 'Inner Mongolia / 內蒙古', 'woocommerce' ), - 'CN7' => __( 'Liaoning / 辽宁', 'woocommerce' ), - 'CN8' => __( 'Jilin / 吉林', 'woocommerce' ), - 'CN9' => __( 'Heilongjiang / 黑龙江', 'woocommerce' ), - 'CN10' => __( 'Shanghai / 上海', 'woocommerce' ), - 'CN11' => __( 'Jiangsu / 江苏', 'woocommerce' ), - 'CN12' => __( 'Zhejiang / 浙江', 'woocommerce' ), - 'CN13' => __( 'Anhui / 安徽', 'woocommerce' ), - 'CN14' => __( 'Fujian / 福建', 'woocommerce' ), - 'CN15' => __( 'Jiangxi / 江西', 'woocommerce' ), - 'CN16' => __( 'Shandong / 山东', 'woocommerce' ), - 'CN17' => __( 'Henan / 河南', 'woocommerce' ), - 'CN18' => __( 'Hubei / 湖北', 'woocommerce' ), - 'CN19' => __( 'Hunan / 湖南', 'woocommerce' ), - 'CN20' => __( 'Guangdong / 广东', 'woocommerce' ), - 'CN21' => __( 'Guangxi Zhuang / 广西壮族', 'woocommerce' ), - 'CN22' => __( 'Hainan / 海南', 'woocommerce' ), - 'CN23' => __( 'Chongqing / 重庆', 'woocommerce' ), - 'CN24' => __( 'Sichuan / 四川', 'woocommerce' ), - 'CN25' => __( 'Guizhou / 贵州', 'woocommerce' ), - 'CN26' => __( 'Shaanxi / 陕西', 'woocommerce' ), - 'CN27' => __( 'Gansu / 甘肃', 'woocommerce' ), - 'CN28' => __( 'Qinghai / 青海', 'woocommerce' ), - 'CN29' => __( 'Ningxia Hui / 宁夏', 'woocommerce' ), - 'CN30' => __( 'Macau / 澳门', 'woocommerce' ), - 'CN31' => __( 'Tibet / 西藏', 'woocommerce' ), - 'CN32' => __( 'Xinjiang / 新疆', 'woocommerce' ) -); \ No newline at end of file + 'CN1' => __( 'Yunnan / 云南', 'woocommerce' ), + 'CN2' => __( 'Beijing / 北京', 'woocommerce' ), + 'CN3' => __( 'Tianjin / 天津', 'woocommerce' ), + 'CN4' => __( 'Hebei / 河北', 'woocommerce' ), + 'CN5' => __( 'Shanxi / 山西', 'woocommerce' ), + 'CN6' => __( 'Inner Mongolia / 內蒙古', 'woocommerce' ), + 'CN7' => __( 'Liaoning / 辽宁', 'woocommerce' ), + 'CN8' => __( 'Jilin / 吉林', 'woocommerce' ), + 'CN9' => __( 'Heilongjiang / 黑龙江', 'woocommerce' ), + 'CN10' => __( 'Shanghai / 上海', 'woocommerce' ), + 'CN11' => __( 'Jiangsu / 江苏', 'woocommerce' ), + 'CN12' => __( 'Zhejiang / 浙江', 'woocommerce' ), + 'CN13' => __( 'Anhui / 安徽', 'woocommerce' ), + 'CN14' => __( 'Fujian / 福建', 'woocommerce' ), + 'CN15' => __( 'Jiangxi / 江西', 'woocommerce' ), + 'CN16' => __( 'Shandong / 山东', 'woocommerce' ), + 'CN17' => __( 'Henan / 河南', 'woocommerce' ), + 'CN18' => __( 'Hubei / 湖北', 'woocommerce' ), + 'CN19' => __( 'Hunan / 湖南', 'woocommerce' ), + 'CN20' => __( 'Guangdong / 广东', 'woocommerce' ), + 'CN21' => __( 'Guangxi Zhuang / 广西壮族', 'woocommerce' ), + 'CN22' => __( 'Hainan / 海南', 'woocommerce' ), + 'CN23' => __( 'Chongqing / 重庆', 'woocommerce' ), + 'CN24' => __( 'Sichuan / 四川', 'woocommerce' ), + 'CN25' => __( 'Guizhou / 贵州', 'woocommerce' ), + 'CN26' => __( 'Shaanxi / 陕西', 'woocommerce' ), + 'CN27' => __( 'Gansu / 甘肃', 'woocommerce' ), + 'CN28' => __( 'Qinghai / 青海', 'woocommerce' ), + 'CN29' => __( 'Ningxia Hui / 宁夏', 'woocommerce' ), + 'CN30' => __( 'Macau / 澳门', 'woocommerce' ), + 'CN31' => __( 'Tibet / 西藏', 'woocommerce' ), + 'CN32' => __( 'Xinjiang / 新疆', 'woocommerce' ) +); diff --git a/i18n/states/ES.php b/i18n/states/ES.php index 2a340accaf5..64ea9ced467 100644 --- a/i18n/states/ES.php +++ b/i18n/states/ES.php @@ -2,64 +2,64 @@ /** * Spain states * - * @author Samuel Aguilera - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.11 */ global $states; -$states["ES"] = array( - 'C' => __('A Coruña', 'woocommerce'), - 'VI' => __('Araba/Álava', 'woocommerce'), - 'AB' => __('Albacete', 'woocommerce'), - 'A' => __('Alicante', 'woocommerce'), - 'AL' => __('Almería', 'woocommerce'), - 'O' => __('Asturias', 'woocommerce'), - 'AV' => __('Ávila', 'woocommerce'), - 'BA' => __('Badajoz', 'woocommerce'), - 'PM' => __('Baleares', 'woocommerce'), - 'B' => __('Barcelona', 'woocommerce'), - 'BU' => __('Burgos', 'woocommerce'), - 'CC' => __('Cáceres', 'woocommerce'), - 'CA' => __('Cádiz', 'woocommerce'), - 'S' => __('Cantabria', 'woocommerce'), - 'CS' => __('Castellón', 'woocommerce'), - 'CE' => __('Ceuta', 'woocommerce'), - 'CR' => __('Ciudad Real', 'woocommerce'), - 'CO' => __('Córdoba', 'woocommerce'), - 'CU' => __('Cuenca', 'woocommerce'), - 'GI' => __('Girona', 'woocommerce'), - 'GR' => __('Granada', 'woocommerce'), - 'GU' => __('Guadalajara', 'woocommerce'), - 'SS' => __('Gipuzkoa', 'woocommerce'), - 'H' => __('Huelva', 'woocommerce'), - 'HU' => __('Huesca', 'woocommerce'), - 'J' => __('Jaén', 'woocommerce'), - 'LO' => __('La Rioja', 'woocommerce'), - 'GC' => __('Las Palmas', 'woocommerce'), - 'LE' => __('León', 'woocommerce'), - 'L' => __('Lleida', 'woocommerce'), - 'LU' => __('Lugo', 'woocommerce'), - 'M' => __('Madrid', 'woocommerce'), - 'MA' => __('Málaga', 'woocommerce'), - 'ML' => __('Melilla', 'woocommerce'), - 'MU' => __('Murcia', 'woocommerce'), - 'NA' => __('Navarra', 'woocommerce'), - 'OR' => __('Ourense', 'woocommerce'), - 'P' => __('Palencia', 'woocommerce'), - 'PO' => __('Pontevedra', 'woocommerce'), - 'SA' => __('Salamanca', 'woocommerce'), - 'TF' => __('Santa Cruz de Tenerife', 'woocommerce'), - 'SG' => __('Segovia', 'woocommerce'), - 'SE' => __('Sevilla', 'woocommerce'), - 'SO' => __('Soria', 'woocommerce'), - 'T' => __('Tarragona', 'woocommerce'), - 'TE' => __('Teruel', 'woocommerce'), - 'TO' => __('Toledo', 'woocommerce'), - 'V' => __('Valencia', 'woocommerce'), - 'VA' => __('Valladolid', 'woocommerce'), - 'BI' => __('Bizkaia', 'woocommerce'), - 'ZA' => __('Zamora', 'woocommerce'), - 'Z' => __('Zaragoza', 'woocommerce') -); +$states['ES'] = array( + 'C' => __( 'A Coruña', 'woocommerce' ), + 'VI' => __( 'Araba/Álava', 'woocommerce' ), + 'AB' => __( 'Albacete', 'woocommerce' ), + 'A' => __( 'Alicante', 'woocommerce' ), + 'AL' => __( 'Almería', 'woocommerce' ), + 'O' => __( 'Asturias', 'woocommerce' ), + 'AV' => __( 'Ávila', 'woocommerce' ), + 'BA' => __( 'Badajoz', 'woocommerce' ), + 'PM' => __( 'Baleares', 'woocommerce' ), + 'B' => __( 'Barcelona', 'woocommerce' ), + 'BU' => __( 'Burgos', 'woocommerce' ), + 'CC' => __( 'Cáceres', 'woocommerce' ), + 'CA' => __( 'Cádiz', 'woocommerce' ), + 'S' => __( 'Cantabria', 'woocommerce' ), + 'CS' => __( 'Castellón', 'woocommerce' ), + 'CE' => __( 'Ceuta', 'woocommerce' ), + 'CR' => __( 'Ciudad Real', 'woocommerce' ), + 'CO' => __( 'Córdoba', 'woocommerce' ), + 'CU' => __( 'Cuenca', 'woocommerce' ), + 'GI' => __( 'Girona', 'woocommerce' ), + 'GR' => __( 'Granada', 'woocommerce' ), + 'GU' => __( 'Guadalajara', 'woocommerce' ), + 'SS' => __( 'Gipuzkoa', 'woocommerce' ), + 'H' => __( 'Huelva', 'woocommerce' ), + 'HU' => __( 'Huesca', 'woocommerce' ), + 'J' => __( 'Jaén', 'woocommerce' ), + 'LO' => __( 'La Rioja', 'woocommerce' ), + 'GC' => __( 'Las Palmas', 'woocommerce' ), + 'LE' => __( 'León', 'woocommerce' ), + 'L' => __( 'Lleida', 'woocommerce' ), + 'LU' => __( 'Lugo', 'woocommerce' ), + 'M' => __( 'Madrid', 'woocommerce' ), + 'MA' => __( 'Málaga', 'woocommerce' ), + 'ML' => __( 'Melilla', 'woocommerce' ), + 'MU' => __( 'Murcia', 'woocommerce' ), + 'NA' => __( 'Navarra', 'woocommerce' ), + 'OR' => __( 'Ourense', 'woocommerce' ), + 'P' => __( 'Palencia', 'woocommerce' ), + 'PO' => __( 'Pontevedra', 'woocommerce' ), + 'SA' => __( 'Salamanca', 'woocommerce' ), + 'TF' => __( 'Santa Cruz de Tenerife', 'woocommerce' ), + 'SG' => __( 'Segovia', 'woocommerce' ), + 'SE' => __( 'Sevilla', 'woocommerce' ), + 'SO' => __( 'Soria', 'woocommerce' ), + 'T' => __( 'Tarragona', 'woocommerce' ), + 'TE' => __( 'Teruel', 'woocommerce' ), + 'TO' => __( 'Toledo', 'woocommerce' ), + 'V' => __( 'Valencia', 'woocommerce' ), + 'VA' => __( 'Valladolid', 'woocommerce' ), + 'BI' => __( 'Bizkaia', 'woocommerce' ), + 'ZA' => __( 'Zamora', 'woocommerce' ), + 'Z' => __( 'Zaragoza', 'woocommerce' ) +); diff --git a/i18n/states/HK.php b/i18n/states/HK.php index 9922116c50e..f55b322b42c 100644 --- a/i18n/states/HK.php +++ b/i18n/states/HK.php @@ -2,9 +2,9 @@ /** * Hong Kong states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; diff --git a/i18n/states/HU.php b/i18n/states/HU.php index f54cb023ff5..22a27b568fe 100644 --- a/i18n/states/HU.php +++ b/i18n/states/HU.php @@ -2,9 +2,9 @@ /** * Hungary states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; diff --git a/i18n/states/ID.php b/i18n/states/ID.php index b4241428a82..bd0c4af1293 100644 --- a/i18n/states/ID.php +++ b/i18n/states/ID.php @@ -2,46 +2,46 @@ /** * Indonesia Provinces * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; $states['ID'] = array( - 'AC' => __( 'Daerah Istimewa Aceh', 'woocommerce' ), - 'SU' => __( 'Sumatera Utara', 'woocommerce' ), - 'SB' => __( 'Sumatera Barat', 'woocommerce' ), - 'RI' => __( 'Riau', 'woocommerce' ), - 'KR' => __( 'Kepulauan Riau', 'woocommerce' ), - 'JA' => __( 'Jambi', 'woocommerce' ), - 'SS' => __( 'Sumatera Selatan', 'woocommerce' ), - 'BB' => __( 'Bangka Belitung', 'woocommerce' ), - 'BE' => __( 'Bengkulu', 'woocommerce' ), - 'LA' => __( 'Lampung', 'woocommerce' ), - 'JK' => __( 'DKI Jakarta', 'woocommerce' ), - 'JB' => __( 'Jawa Barat', 'woocommerce' ), - 'BT' => __( 'Banten', 'woocommerce' ), - 'JT' => __( 'Jawa Tengah', 'woocommerce' ), - 'JI' => __( 'Jawa Timur', 'woocommerce' ), - 'YO' => __( 'Daerah Istimewa Yogyakarta', 'woocommerce' ), - 'BA' => __( 'Bali', 'woocommerce' ), - 'NB' => __( 'Nusa Tenggara Barat', 'woocommerce' ), - 'NT' => __( 'Nusa Tenggara Timur', 'woocommerce' ), - 'KB' => __( 'Kalimantan Barat', 'woocommerce' ), - 'KT' => __( 'Kalimantan Tengah', 'woocommerce' ), - 'KI' => __( 'Kalimantan Timur', 'woocommerce' ), - 'KS' => __( 'Kalimantan Selatan', 'woocommerce' ), - 'KU' => __( 'Kalimantan Utara', 'woocommerce' ), - 'SA' => __( 'Sulawesi Utara', 'woocommerce' ), - 'ST' => __( 'Sulawesi Tengah', 'woocommerce' ), - 'SG' => __( 'Sulawesi Tenggara', 'woocommerce' ), - 'SR' => __( 'Sulawesi Barat', 'woocommerce' ), - 'SN' => __( 'Sulawesi Selatan', 'woocommerce' ), - 'GO' => __( 'Gorontalo', 'woocommerce' ), - 'MA' => __( 'Maluku', 'woocommerce' ), - 'MU' => __( 'Maluku Utara', 'woocommerce' ), - 'PA' => __( 'Papua', 'woocommerce' ), - 'PB' => __( 'Papua Barat', 'woocommerce' ) -); \ No newline at end of file + 'AC' => __( 'Daerah Istimewa Aceh', 'woocommerce' ), + 'SU' => __( 'Sumatera Utara', 'woocommerce' ), + 'SB' => __( 'Sumatera Barat', 'woocommerce' ), + 'RI' => __( 'Riau', 'woocommerce' ), + 'KR' => __( 'Kepulauan Riau', 'woocommerce' ), + 'JA' => __( 'Jambi', 'woocommerce' ), + 'SS' => __( 'Sumatera Selatan', 'woocommerce' ), + 'BB' => __( 'Bangka Belitung', 'woocommerce' ), + 'BE' => __( 'Bengkulu', 'woocommerce' ), + 'LA' => __( 'Lampung', 'woocommerce' ), + 'JK' => __( 'DKI Jakarta', 'woocommerce' ), + 'JB' => __( 'Jawa Barat', 'woocommerce' ), + 'BT' => __( 'Banten', 'woocommerce' ), + 'JT' => __( 'Jawa Tengah', 'woocommerce' ), + 'JI' => __( 'Jawa Timur', 'woocommerce' ), + 'YO' => __( 'Daerah Istimewa Yogyakarta', 'woocommerce' ), + 'BA' => __( 'Bali', 'woocommerce' ), + 'NB' => __( 'Nusa Tenggara Barat', 'woocommerce' ), + 'NT' => __( 'Nusa Tenggara Timur', 'woocommerce' ), + 'KB' => __( 'Kalimantan Barat', 'woocommerce' ), + 'KT' => __( 'Kalimantan Tengah', 'woocommerce' ), + 'KI' => __( 'Kalimantan Timur', 'woocommerce' ), + 'KS' => __( 'Kalimantan Selatan', 'woocommerce' ), + 'KU' => __( 'Kalimantan Utara', 'woocommerce' ), + 'SA' => __( 'Sulawesi Utara', 'woocommerce' ), + 'ST' => __( 'Sulawesi Tengah', 'woocommerce' ), + 'SG' => __( 'Sulawesi Tenggara', 'woocommerce' ), + 'SR' => __( 'Sulawesi Barat', 'woocommerce' ), + 'SN' => __( 'Sulawesi Selatan', 'woocommerce' ), + 'GO' => __( 'Gorontalo', 'woocommerce' ), + 'MA' => __( 'Maluku', 'woocommerce' ), + 'MU' => __( 'Maluku Utara', 'woocommerce' ), + 'PA' => __( 'Papua', 'woocommerce' ), + 'PB' => __( 'Papua Barat', 'woocommerce' ) +); diff --git a/i18n/states/IN.php b/i18n/states/IN.php index f5b1d86b1cd..e8b55c1e292 100644 --- a/i18n/states/IN.php +++ b/i18n/states/IN.php @@ -2,9 +2,9 @@ /** * Indian states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; diff --git a/i18n/states/IR.php b/i18n/states/IR.php index 06461b1b6cd..ce8ca23711e 100644 --- a/i18n/states/IR.php +++ b/i18n/states/IR.php @@ -2,43 +2,43 @@ /** * Iran States * - * @author Khalil Delavaran - * @category i18n - * @package WooCommerce/i18n - * @version 2.2.3 + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n + * @version 2.2.3 */ global $states; $states['IR'] = array( - 'KHZ' => __( 'Khuzestan (خوزستان)', 'woocommerce' ), - 'THR' => __( 'Tehran (تهران)', 'woocommerce' ), - 'ILM' => __( 'Ilaam (ایلام)', 'woocommerce' ), - 'BHR' => __( 'Bushehr (بوشهر)', 'woocommerce' ), - 'ADL' => __( 'Ardabil (اردبیل)', 'woocommerce' ), - 'ESF' => __( 'Isfahan (اصفهان)', 'woocommerce' ), - 'YZD' => __( 'Yazd (یزد)', 'woocommerce' ), - 'KRH' => __( 'Kermanshah (کرمانشاه)', 'woocommerce' ), - 'KRN' => __( 'Kerman (کرمان)', 'woocommerce' ), - 'HDN' => __( 'Hamadan (همدان)', 'woocommerce' ), - 'GZN' => __( 'Ghazvin (قزوین)', 'woocommerce' ), - 'ZJN' => __( 'Zanjan (زنجان)', 'woocommerce' ), - 'LRS' => __( 'Luristan (لرستان)', 'woocommerce' ), - 'ABZ' => __( 'Alborz (البرز)', 'woocommerce' ), - 'EAZ' => __( 'East Azarbaijan (آذربایجان شرقی)', 'woocommerce' ), - 'WAZ' => __( 'West Azarbaijan (آذربایجان غربی)', 'woocommerce' ), - 'CHB' => __( 'Chaharmahal and Bakhtiari (چهارمحال و بختیاری)', 'woocommerce' ), - 'SKH' => __( 'South Khorasan (خراسان جنوبی)', 'woocommerce' ), - 'RKH' => __( 'Razavi Khorasan (خراسان رضوی)', 'woocommerce' ), - 'NKH' => __( 'North Khorasan (خراسان جنوبی)', 'woocommerce' ), - 'SMN' => __( 'Semnan (سمنان)', 'woocommerce' ), - 'FRS' => __( 'Fars (فارس)', 'woocommerce' ), - 'QHM' => __( 'Qom (قم)', 'woocommerce' ), - 'KRD' => __( 'Kurdistan / کردستان)', 'woocommerce' ), - 'KBD' => __( 'Kohgiluyeh and BoyerAhmad (کهگیلوییه و بویراحمد)', 'woocommerce' ), - 'GLS' => __( 'Golestan (گلستان)', 'woocommerce' ), - 'GIL' => __( 'Gilan (گیلان)', 'woocommerce' ), - 'MZN' => __( 'Mazandaran (مازندران)', 'woocommerce' ), - 'MKZ' => __( 'Markazi (مرکزی)', 'woocommerce' ), - 'HRZ' => __( 'Hormozgan (هرمزگان)', 'woocommerce' ), - 'SBN' => __( 'Sistan and Baluchestan (سیستان و بلوچستان)', 'woocommerce' ) + 'KHZ' => __( 'Khuzestan (خوزستان)', 'woocommerce' ), + 'THR' => __( 'Tehran (تهران)', 'woocommerce' ), + 'ILM' => __( 'Ilaam (ایلام)', 'woocommerce' ), + 'BHR' => __( 'Bushehr (بوشهر)', 'woocommerce' ), + 'ADL' => __( 'Ardabil (اردبیل)', 'woocommerce' ), + 'ESF' => __( 'Isfahan (اصفهان)', 'woocommerce' ), + 'YZD' => __( 'Yazd (یزد)', 'woocommerce' ), + 'KRH' => __( 'Kermanshah (کرمانشاه)', 'woocommerce' ), + 'KRN' => __( 'Kerman (کرمان)', 'woocommerce' ), + 'HDN' => __( 'Hamadan (همدان)', 'woocommerce' ), + 'GZN' => __( 'Ghazvin (قزوین)', 'woocommerce' ), + 'ZJN' => __( 'Zanjan (زنجان)', 'woocommerce' ), + 'LRS' => __( 'Luristan (لرستان)', 'woocommerce' ), + 'ABZ' => __( 'Alborz (البرز)', 'woocommerce' ), + 'EAZ' => __( 'East Azarbaijan (آذربایجان شرقی)', 'woocommerce' ), + 'WAZ' => __( 'West Azarbaijan (آذربایجان غربی)', 'woocommerce' ), + 'CHB' => __( 'Chaharmahal and Bakhtiari (چهارمحال و بختیاری)', 'woocommerce' ), + 'SKH' => __( 'South Khorasan (خراسان جنوبی)', 'woocommerce' ), + 'RKH' => __( 'Razavi Khorasan (خراسان رضوی)', 'woocommerce' ), + 'NKH' => __( 'North Khorasan (خراسان جنوبی)', 'woocommerce' ), + 'SMN' => __( 'Semnan (سمنان)', 'woocommerce' ), + 'FRS' => __( 'Fars (فارس)', 'woocommerce' ), + 'QHM' => __( 'Qom (قم)', 'woocommerce' ), + 'KRD' => __( 'Kurdistan / کردستان)', 'woocommerce' ), + 'KBD' => __( 'Kohgiluyeh and BoyerAhmad (کهگیلوییه و بویراحمد)', 'woocommerce' ), + 'GLS' => __( 'Golestan (گلستان)', 'woocommerce' ), + 'GIL' => __( 'Gilan (گیلان)', 'woocommerce' ), + 'MZN' => __( 'Mazandaran (مازندران)', 'woocommerce' ), + 'MKZ' => __( 'Markazi (مرکزی)', 'woocommerce' ), + 'HRZ' => __( 'Hormozgan (هرمزگان)', 'woocommerce' ), + 'SBN' => __( 'Sistan and Baluchestan (سیستان و بلوچستان)', 'woocommerce' ) ); diff --git a/i18n/states/IT.php b/i18n/states/IT.php index bb648f010bb..62a5259e520 100644 --- a/i18n/states/IT.php +++ b/i18n/states/IT.php @@ -2,122 +2,122 @@ /** * Italy Provinces * - * @author Teo Maragakis - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; $states['IT'] = array( - 'AG' => __( 'Agrigento', 'woocommerce' ), - 'AL' => __( 'Alessandria', 'woocommerce' ), - 'AN' => __( 'Ancona', 'woocommerce' ), - 'AO' => __( 'Aosta', 'woocommerce' ), - 'AR' => __( 'Arezzo', 'woocommerce' ), - 'AP' => __( 'Ascoli Piceno', 'woocommerce' ), - 'AT' => __( 'Asti', 'woocommerce' ), - 'AV' => __( 'Avellino', 'woocommerce' ), - 'BA' => __( 'Bari', 'woocommerce' ), - 'BT' => __( 'Barletta-Andria-Trani', 'woocommerce' ), - 'BL' => __( 'Belluno', 'woocommerce' ), - 'BN' => __( 'Benevento', 'woocommerce' ), - 'BG' => __( 'Bergamo', 'woocommerce' ), - 'BI' => __( 'Biella', 'woocommerce' ), - 'BO' => __( 'Bologna', 'woocommerce' ), - 'BZ' => __( 'Bolzano', 'woocommerce' ), - 'BS' => __( 'Brescia', 'woocommerce' ), - 'BR' => __( 'Brindisi', 'woocommerce' ), - 'CA' => __( 'Cagliari', 'woocommerce' ), - 'CL' => __( 'Caltanissetta', 'woocommerce' ), - 'CB' => __( 'Campobasso', 'woocommerce' ), - 'CI' => __( 'Carbonia-Iglesias', 'woocommerce' ), - 'CE' => __( 'Caserta', 'woocommerce' ), - 'CT' => __( 'Catania', 'woocommerce' ), - 'CZ' => __( 'Catanzaro', 'woocommerce' ), - 'CH' => __( 'Chieti', 'woocommerce' ), - 'CO' => __( 'Como', 'woocommerce' ), - 'CS' => __( 'Cosenza', 'woocommerce' ), - 'CR' => __( 'Cremona', 'woocommerce' ), - 'KR' => __( 'Crotone', 'woocommerce' ), - 'CN' => __( 'Cuneo', 'woocommerce' ), - 'EN' => __( 'Enna', 'woocommerce' ), - 'FM' => __( 'Fermo', 'woocommerce' ), - 'FE' => __( 'Ferrara', 'woocommerce' ), - 'FI' => __( 'Firenze', 'woocommerce' ), - 'FG' => __( 'Foggia', 'woocommerce' ), - 'FC' => __( 'Forlì-Cesena', 'woocommerce' ), - 'FR' => __( 'Frosinone', 'woocommerce' ), - 'GE' => __( 'Genova', 'woocommerce' ), - 'GO' => __( 'Gorizia', 'woocommerce' ), - 'GR' => __( 'Grosseto', 'woocommerce' ), - 'IM' => __( 'Imperia', 'woocommerce' ), - 'IS' => __( 'Isernia', 'woocommerce' ), - 'SP' => __( 'La Spezia', 'woocommerce' ), - 'AQ' => __( 'L'Aquila', 'woocommerce' ), - 'LT' => __( 'Latina', 'woocommerce' ), - 'LE' => __( 'Lecce', 'woocommerce' ), - 'LC' => __( 'Lecco', 'woocommerce' ), - 'LI' => __( 'Livorno', 'woocommerce' ), - 'LO' => __( 'Lodi', 'woocommerce' ), - 'LU' => __( 'Lucca', 'woocommerce' ), - 'MC' => __( 'Macerata', 'woocommerce' ), - 'MN' => __( 'Mantova', 'woocommerce' ), - 'MS' => __( 'Massa-Carrara', 'woocommerce' ), - 'MT' => __( 'Matera', 'woocommerce' ), - 'ME' => __( 'Messina', 'woocommerce' ), - 'MI' => __( 'Milano', 'woocommerce' ), - 'MO' => __( 'Modena', 'woocommerce' ), - 'MB' => __( 'Monza e della Brianza', 'woocommerce' ), - 'NA' => __( 'Napoli', 'woocommerce' ), - 'NO' => __( 'Novara', 'woocommerce' ), - 'NU' => __( 'Nuoro', 'woocommerce' ), - 'OT' => __( 'Olbia-Tempio', 'woocommerce' ), - 'OR' => __( 'Oristano', 'woocommerce' ), - 'PD' => __( 'Padova', 'woocommerce' ), - 'PA' => __( 'Palermo', 'woocommerce' ), - 'PR' => __( 'Parma', 'woocommerce' ), - 'PV' => __( 'Pavia', 'woocommerce' ), - 'PG' => __( 'Perugia', 'woocommerce' ), - 'PU' => __( 'Pesaro e Urbino', 'woocommerce' ), - 'PE' => __( 'Pescara', 'woocommerce' ), - 'PC' => __( 'Piacenza', 'woocommerce' ), - 'PI' => __( 'Pisa', 'woocommerce' ), - 'PT' => __( 'Pistoia', 'woocommerce' ), - 'PN' => __( 'Pordenone', 'woocommerce' ), - 'PZ' => __( 'Potenza', 'woocommerce' ), - 'PO' => __( 'Prato', 'woocommerce' ), - 'RG' => __( 'Ragusa', 'woocommerce' ), - 'RA' => __( 'Ravenna', 'woocommerce' ), - 'RC' => __( 'Reggio Calabria', 'woocommerce' ), - 'RE' => __( 'Reggio Emilia', 'woocommerce' ), - 'RI' => __( 'Rieti', 'woocommerce' ), - 'RN' => __( 'Rimini', 'woocommerce' ), - 'RM' => __( 'Roma', 'woocommerce' ), - 'RO' => __( 'Rovigo', 'woocommerce' ), - 'SA' => __( 'Salerno', 'woocommerce' ), - 'VS' => __( 'Medio Campidano', 'woocommerce' ), - 'SS' => __( 'Sassari', 'woocommerce' ), - 'SV' => __( 'Savona', 'woocommerce' ), - 'SI' => __( 'Siena', 'woocommerce' ), - 'SR' => __( 'Siracusa', 'woocommerce' ), - 'SO' => __( 'Sondrio', 'woocommerce' ), - 'TA' => __( 'Taranto', 'woocommerce' ), - 'TE' => __( 'Teramo', 'woocommerce' ), - 'TR' => __( 'Terni', 'woocommerce' ), - 'TO' => __( 'Torino', 'woocommerce' ), - 'OG' => __( 'Ogliastra', 'woocommerce' ), - 'TP' => __( 'Trapani', 'woocommerce' ), - 'TN' => __( 'Trento', 'woocommerce' ), - 'TV' => __( 'Treviso', 'woocommerce' ), - 'TS' => __( 'Trieste', 'woocommerce' ), - 'UD' => __( 'Udine', 'woocommerce' ), - 'VA' => __( 'Varese', 'woocommerce' ), - 'VE' => __( 'Venezia', 'woocommerce' ), - 'VB' => __( 'Verbano-Cusio-Ossola', 'woocommerce' ), - 'VC' => __( 'Vercelli', 'woocommerce' ), - 'VR' => __( 'Verona', 'woocommerce' ), - 'VV' => __( 'Vibo Valentia', 'woocommerce' ), - 'VI' => __( 'Vicenza', 'woocommerce' ), - 'VT' => __( 'Viterbo', 'woocommerce' ) -); \ No newline at end of file + 'AG' => __( 'Agrigento', 'woocommerce' ), + 'AL' => __( 'Alessandria', 'woocommerce' ), + 'AN' => __( 'Ancona', 'woocommerce' ), + 'AO' => __( 'Aosta', 'woocommerce' ), + 'AR' => __( 'Arezzo', 'woocommerce' ), + 'AP' => __( 'Ascoli Piceno', 'woocommerce' ), + 'AT' => __( 'Asti', 'woocommerce' ), + 'AV' => __( 'Avellino', 'woocommerce' ), + 'BA' => __( 'Bari', 'woocommerce' ), + 'BT' => __( 'Barletta-Andria-Trani', 'woocommerce' ), + 'BL' => __( 'Belluno', 'woocommerce' ), + 'BN' => __( 'Benevento', 'woocommerce' ), + 'BG' => __( 'Bergamo', 'woocommerce' ), + 'BI' => __( 'Biella', 'woocommerce' ), + 'BO' => __( 'Bologna', 'woocommerce' ), + 'BZ' => __( 'Bolzano', 'woocommerce' ), + 'BS' => __( 'Brescia', 'woocommerce' ), + 'BR' => __( 'Brindisi', 'woocommerce' ), + 'CA' => __( 'Cagliari', 'woocommerce' ), + 'CL' => __( 'Caltanissetta', 'woocommerce' ), + 'CB' => __( 'Campobasso', 'woocommerce' ), + 'CI' => __( 'Carbonia-Iglesias', 'woocommerce' ), + 'CE' => __( 'Caserta', 'woocommerce' ), + 'CT' => __( 'Catania', 'woocommerce' ), + 'CZ' => __( 'Catanzaro', 'woocommerce' ), + 'CH' => __( 'Chieti', 'woocommerce' ), + 'CO' => __( 'Como', 'woocommerce' ), + 'CS' => __( 'Cosenza', 'woocommerce' ), + 'CR' => __( 'Cremona', 'woocommerce' ), + 'KR' => __( 'Crotone', 'woocommerce' ), + 'CN' => __( 'Cuneo', 'woocommerce' ), + 'EN' => __( 'Enna', 'woocommerce' ), + 'FM' => __( 'Fermo', 'woocommerce' ), + 'FE' => __( 'Ferrara', 'woocommerce' ), + 'FI' => __( 'Firenze', 'woocommerce' ), + 'FG' => __( 'Foggia', 'woocommerce' ), + 'FC' => __( 'Forlì-Cesena', 'woocommerce' ), + 'FR' => __( 'Frosinone', 'woocommerce' ), + 'GE' => __( 'Genova', 'woocommerce' ), + 'GO' => __( 'Gorizia', 'woocommerce' ), + 'GR' => __( 'Grosseto', 'woocommerce' ), + 'IM' => __( 'Imperia', 'woocommerce' ), + 'IS' => __( 'Isernia', 'woocommerce' ), + 'SP' => __( 'La Spezia', 'woocommerce' ), + 'AQ' => __( 'L'Aquila', 'woocommerce' ), + 'LT' => __( 'Latina', 'woocommerce' ), + 'LE' => __( 'Lecce', 'woocommerce' ), + 'LC' => __( 'Lecco', 'woocommerce' ), + 'LI' => __( 'Livorno', 'woocommerce' ), + 'LO' => __( 'Lodi', 'woocommerce' ), + 'LU' => __( 'Lucca', 'woocommerce' ), + 'MC' => __( 'Macerata', 'woocommerce' ), + 'MN' => __( 'Mantova', 'woocommerce' ), + 'MS' => __( 'Massa-Carrara', 'woocommerce' ), + 'MT' => __( 'Matera', 'woocommerce' ), + 'ME' => __( 'Messina', 'woocommerce' ), + 'MI' => __( 'Milano', 'woocommerce' ), + 'MO' => __( 'Modena', 'woocommerce' ), + 'MB' => __( 'Monza e della Brianza', 'woocommerce' ), + 'NA' => __( 'Napoli', 'woocommerce' ), + 'NO' => __( 'Novara', 'woocommerce' ), + 'NU' => __( 'Nuoro', 'woocommerce' ), + 'OT' => __( 'Olbia-Tempio', 'woocommerce' ), + 'OR' => __( 'Oristano', 'woocommerce' ), + 'PD' => __( 'Padova', 'woocommerce' ), + 'PA' => __( 'Palermo', 'woocommerce' ), + 'PR' => __( 'Parma', 'woocommerce' ), + 'PV' => __( 'Pavia', 'woocommerce' ), + 'PG' => __( 'Perugia', 'woocommerce' ), + 'PU' => __( 'Pesaro e Urbino', 'woocommerce' ), + 'PE' => __( 'Pescara', 'woocommerce' ), + 'PC' => __( 'Piacenza', 'woocommerce' ), + 'PI' => __( 'Pisa', 'woocommerce' ), + 'PT' => __( 'Pistoia', 'woocommerce' ), + 'PN' => __( 'Pordenone', 'woocommerce' ), + 'PZ' => __( 'Potenza', 'woocommerce' ), + 'PO' => __( 'Prato', 'woocommerce' ), + 'RG' => __( 'Ragusa', 'woocommerce' ), + 'RA' => __( 'Ravenna', 'woocommerce' ), + 'RC' => __( 'Reggio Calabria', 'woocommerce' ), + 'RE' => __( 'Reggio Emilia', 'woocommerce' ), + 'RI' => __( 'Rieti', 'woocommerce' ), + 'RN' => __( 'Rimini', 'woocommerce' ), + 'RM' => __( 'Roma', 'woocommerce' ), + 'RO' => __( 'Rovigo', 'woocommerce' ), + 'SA' => __( 'Salerno', 'woocommerce' ), + 'VS' => __( 'Medio Campidano', 'woocommerce' ), + 'SS' => __( 'Sassari', 'woocommerce' ), + 'SV' => __( 'Savona', 'woocommerce' ), + 'SI' => __( 'Siena', 'woocommerce' ), + 'SR' => __( 'Siracusa', 'woocommerce' ), + 'SO' => __( 'Sondrio', 'woocommerce' ), + 'TA' => __( 'Taranto', 'woocommerce' ), + 'TE' => __( 'Teramo', 'woocommerce' ), + 'TR' => __( 'Terni', 'woocommerce' ), + 'TO' => __( 'Torino', 'woocommerce' ), + 'OG' => __( 'Ogliastra', 'woocommerce' ), + 'TP' => __( 'Trapani', 'woocommerce' ), + 'TN' => __( 'Trento', 'woocommerce' ), + 'TV' => __( 'Treviso', 'woocommerce' ), + 'TS' => __( 'Trieste', 'woocommerce' ), + 'UD' => __( 'Udine', 'woocommerce' ), + 'VA' => __( 'Varese', 'woocommerce' ), + 'VE' => __( 'Venezia', 'woocommerce' ), + 'VB' => __( 'Verbano-Cusio-Ossola', 'woocommerce' ), + 'VC' => __( 'Vercelli', 'woocommerce' ), + 'VR' => __( 'Verona', 'woocommerce' ), + 'VV' => __( 'Vibo Valentia', 'woocommerce' ), + 'VI' => __( 'Vicenza', 'woocommerce' ), + 'VT' => __( 'Viterbo', 'woocommerce' ) +); diff --git a/i18n/states/JP.php b/i18n/states/JP.php index 8f2822a2d62..20470f8c939 100644 --- a/i18n/states/JP.php +++ b/i18n/states/JP.php @@ -1,10 +1,10 @@ __( 'Distrito Federal', 'woocommerce' ), + 'JAL' => __( 'Jalisco', 'woocommerce' ), + 'NLE' => __( 'Nuevo León', 'woocommerce' ), + 'AGU' => __( 'Aguascalientes', 'woocommerce' ), + 'BCN' => __( 'Baja California Norte', 'woocommerce' ), + 'BCS' => __( 'Baja California Sur', 'woocommerce' ), + 'CAM' => __( 'Campeche', 'woocommerce' ), + 'CHP' => __( 'Chiapas', 'woocommerce' ), + 'CHH' => __( 'Chihuahua', 'woocommerce' ), + 'COA' => __( 'Coahuila', 'woocommerce' ), + 'COL' => __( 'Colima', 'woocommerce' ), + 'DUR' => __( 'Durango', 'woocommerce' ), + 'GUA' => __( 'Guanajuato', 'woocommerce' ), + 'GRO' => __( 'Guerrero', 'woocommerce' ), + 'HID' => __( 'Hidalgo', 'woocommerce' ), + 'MEX' => __( 'Edo. de México', 'woocommerce' ), + 'MIC' => __( 'Michoacán', 'woocommerce' ), + 'MOR' => __( 'Morelos', 'woocommerce' ), + 'NAY' => __( 'Nayarit', 'woocommerce' ), + 'OAX' => __( 'Oaxaca', 'woocommerce' ), + 'PUE' => __( 'Puebla', 'woocommerce' ), + 'QUE' => __( 'Querétaro', 'woocommerce' ), + 'ROO' => __( 'Quintana Roo', 'woocommerce' ), + 'SLP' => __( 'San Luis Potosí', 'woocommerce' ), + 'SIN' => __( 'Sinaloa', 'woocommerce' ), + 'SON' => __( 'Sonora', 'woocommerce' ), + 'TAB' => __( 'Tabasco', 'woocommerce' ), + 'TAM' => __( 'Tamaulipas', 'woocommerce' ), + 'TLA' => __( 'Tlaxcala', 'woocommerce' ), + 'VER' => __( 'Veracruz', 'woocommerce' ), + 'YUC' => __( 'Yucatán', 'woocommerce' ), + 'ZAC' => __( 'Zacatecas', 'woocommerce' ) +); diff --git a/i18n/states/MY.php b/i18n/states/MY.php index 001f4d48d54..532f102dc86 100644 --- a/i18n/states/MY.php +++ b/i18n/states/MY.php @@ -2,9 +2,9 @@ /** * Malaysian states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; @@ -26,4 +26,4 @@ $states['MY'] = array( 'KUL' => __( 'W.P. Kuala Lumpur', 'woocommerce' ), 'LBN' => __( 'W.P. Labuan', 'woocommerce' ), 'PJY' => __( 'W.P. Putrajaya', 'woocommerce' ) -); \ No newline at end of file +); diff --git a/i18n/states/NP.php b/i18n/states/NP.php new file mode 100644 index 00000000000..4f1f8f11ad8 --- /dev/null +++ b/i18n/states/NP.php @@ -0,0 +1,116 @@ + __( 'Illam', 'woocommerce' ), + 'JHA' => __( 'Jhapa', 'woocommerce' ), + 'PAN' => __( 'Panchthar', 'woocommerce' ), + 'TAP' => __( 'Taplejung', 'woocommerce' ), + + // Koshi + 'BHO' => __( 'Bhojpur', 'woocommerce' ), + 'DKA' => __( 'Dhankuta', 'woocommerce' ), + 'MOR' => __( 'Morang', 'woocommerce' ), + 'SUN' => __( 'Sunsari', 'woocommerce' ), + 'SAN' => __( 'Sankhuwa', 'woocommerce' ), + 'TER' => __( 'Terhathum', 'woocommerce' ), + + // Sagarmatha + 'KHO' => __( 'Khotang', 'woocommerce' ), + 'OKH' => __( 'Okhaldhunga', 'woocommerce' ), + 'SAP' => __( 'Saptari', 'woocommerce' ), + 'SIR' => __( 'Siraha', 'woocommerce' ), + 'SOL' => __( 'Solukhumbu', 'woocommerce' ), + 'UDA' => __( 'Udayapur', 'woocommerce' ), + + // Janakpur + 'DHA' => __( 'Dhanusa', 'woocommerce' ), + 'DLK' => __( 'Dolakha', 'woocommerce' ), + 'MOH' => __( 'Mohottari', 'woocommerce' ), + 'RAM' => __( 'Ramechha', 'woocommerce' ), + 'SAR' => __( 'Sarlahi', 'woocommerce' ), + 'SIN' => __( 'Sindhuli', 'woocommerce' ), + + // Bagmati + 'BHA' => __( 'Bhaktapur', 'woocommerce' ), + 'DHD' => __( 'Dhading', 'woocommerce' ), + 'KTM' => __( 'Kathmandu', 'woocommerce' ), + 'KAV' => __( 'Kavrepalanchowk', 'woocommerce' ), + 'LAL' => __( 'Lalitpur', 'woocommerce' ), + 'NUW' => __( 'Nuwakot', 'woocommerce' ), + 'RAS' => __( 'Rasuwa', 'woocommerce' ), + 'SPC' => __( 'Sindhupalchowk', 'woocommerce' ), + + // Narayani + 'BAR' => __( 'Bara', 'woocommerce' ), + 'CHI' => __( 'Chitwan', 'woocommerce' ), + 'MAK' => __( 'Makwanpur', 'woocommerce' ), + 'PAR' => __( 'Parsa', 'woocommerce' ), + 'RAU' => __( 'Rautahat', 'woocommerce' ), + + // Gandaki + 'GOR' => __( 'Gorkha', 'woocommerce' ), + 'KAS' => __( 'Kaski', 'woocommerce' ), + 'LAM' => __( 'Lamjung', 'woocommerce' ), + 'MAN' => __( 'Manang', 'woocommerce' ), + 'SYN' => __( 'Syangja', 'woocommerce' ), + 'TAN' => __( 'Tanahun', 'woocommerce' ), + + // Dhawalagiri + 'BAG' => __( 'Baglung', 'woocommerce' ), + 'PBT' => __( 'Parbat', 'woocommerce' ), + 'MUS' => __( 'Mustang', 'woocommerce' ), + 'MYG' => __( 'Myagdi', 'woocommerce' ), + + // Lumbini + 'AGR' => __( 'Agrghakanchi', 'woocommerce' ), + 'GUL' => __( 'Gulmi', 'woocommerce' ), + 'KAP' => __( 'Kapilbastu', 'woocommerce' ), + 'NAW' => __( 'Nawalparasi', 'woocommerce' ), + 'PAL' => __( 'Palpa', 'woocommerce' ), + 'RUP' => __( 'Rupandehi', 'woocommerce' ), + + // Rapti + 'DAN' => __( 'Dang', 'woocommerce' ), + 'PYU' => __( 'Pyuthan', 'woocommerce' ), + 'ROL' => __( 'Rolpa', 'woocommerce' ), + 'RUK' => __( 'Rukum', 'woocommerce' ), + 'SAL' => __( 'Salyan', 'woocommerce' ), + + // Bheri + 'BAN' => __( 'Banke', 'woocommerce' ), + 'BDA' => __( 'Bardiya', 'woocommerce' ), + 'DAI' => __( 'Dailekh', 'woocommerce' ), + 'JAJ' => __( 'Jajarkot', 'woocommerce' ), + 'SUR' => __( 'Surkhet', 'woocommerce' ), + + // Karnali + 'DOL' => __( 'Dolpa', 'woocommerce' ), + 'HUM' => __( 'Humla', 'woocommerce' ), + 'JUM' => __( 'Jumla', 'woocommerce' ), + 'KAL' => __( 'Kalikot', 'woocommerce' ), + 'MUG' => __( 'Mugu', 'woocommerce' ), + + // Seti + 'ACH' => __( 'Achham', 'woocommerce' ), + 'BJH' => __( 'Bajhang', 'woocommerce' ), + 'BJU' => __( 'Bajura', 'woocommerce' ), + 'DOT' => __( 'Doti', 'woocommerce' ), + 'KAI' => __( 'Kailali', 'woocommerce' ), + + // Mahakali + 'BAI' => __( 'Baitadi', 'woocommerce' ), + 'DAD' => __( 'Dadeldhura', 'woocommerce' ), + 'DAR' => __( 'Darchula', 'woocommerce' ), + 'KAN' => __( 'Kanchanpur', 'woocommerce' ) +); diff --git a/i18n/states/NZ.php b/i18n/states/NZ.php index 91ab33139ba..547bec93b61 100644 --- a/i18n/states/NZ.php +++ b/i18n/states/NZ.php @@ -1,10 +1,10 @@ __( 'Uttaradit (อุตรดิตถ์)', 'woocommerce' ), 'TH-95' => __( 'Yala (ยะลา)', 'woocommerce' ), 'TH-35' => __( 'Yasothon (ยโสธร)', 'woocommerce' ) -); \ No newline at end of file +); diff --git a/i18n/states/TR.php b/i18n/states/TR.php index f74ccba9ff1..c8dc7dbd353 100644 --- a/i18n/states/TR.php +++ b/i18n/states/TR.php @@ -1,94 +1,94 @@ __( 'Adana', 'woocommerce' ), -'TR02' => __( 'Adıyaman', 'woocommerce' ), -'TR03' => __( 'Afyon', 'woocommerce' ), -'TR04' => __( 'Ağrı', 'woocommerce' ), -'TR05' => __( 'Amasya', 'woocommerce' ), -'TR06' => __( 'Ankara', 'woocommerce' ), -'TR07' => __( 'Antalya', 'woocommerce' ), -'TR08' => __( 'Artvin', 'woocommerce' ), -'TR09' => __( 'Aydın', 'woocommerce' ), -'TR10' => __( 'Balıkesir', 'woocommerce' ), -'TR11' => __( 'Bilecik', 'woocommerce' ), -'TR12' => __( 'Bingöl', 'woocommerce' ), -'TR13' => __( 'Bitlis', 'woocommerce' ), -'TR14' => __( 'Bolu', 'woocommerce' ), -'TR15' => __( 'Burdur', 'woocommerce' ), -'TR16' => __( 'Bursa', 'woocommerce' ), -'TR17' => __( 'Çanakkale', 'woocommerce' ), -'TR18' => __( 'Çankırı', 'woocommerce' ), -'TR19' => __( 'Çorum', 'woocommerce' ), -'TR20' => __( 'Denizli', 'woocommerce' ), -'TR21' => __( 'Diyarbakır', 'woocommerce' ), -'TR22' => __( 'Edirne', 'woocommerce' ), -'TR23' => __( 'Elazığ', 'woocommerce' ), -'TR24' => __( 'Erzincan', 'woocommerce' ), -'TR25' => __( 'Erzurum', 'woocommerce' ), -'TR26' => __( 'Eskişehir', 'woocommerce' ), -'TR27' => __( 'Gaziantep', 'woocommerce' ), -'TR28' => __( 'Giresun', 'woocommerce' ), -'TR29' => __( 'Gümüşhane', 'woocommerce' ), -'TR30' => __( 'Hakkari', 'woocommerce' ), -'TR31' => __( 'Hatay', 'woocommerce' ), -'TR32' => __( 'Isparta', 'woocommerce' ), -'TR33' => __( 'İçel', 'woocommerce' ), -'TR34' => __( 'İstanbul', 'woocommerce' ), -'TR35' => __( 'İzmir', 'woocommerce' ), -'TR36' => __( 'Kars', 'woocommerce' ), -'TR37' => __( 'Kastamonu', 'woocommerce' ), -'TR38' => __( 'Kayseri', 'woocommerce' ), -'TR39' => __( 'Kırklareli', 'woocommerce' ), -'TR40' => __( 'Kırşehir', 'woocommerce' ), -'TR41' => __( 'Kocaeli', 'woocommerce' ), -'TR42' => __( 'Konya', 'woocommerce' ), -'TR43' => __( 'Kütahya', 'woocommerce' ), -'TR44' => __( 'Malatya', 'woocommerce' ), -'TR45' => __( 'Manisa', 'woocommerce' ), -'TR46' => __( 'Kahramanmaraş', 'woocommerce' ), -'TR47' => __( 'Mardin', 'woocommerce' ), -'TR48' => __( 'Muğla', 'woocommerce' ), -'TR49' => __( 'Muş', 'woocommerce' ), -'TR50' => __( 'Nevşehir', 'woocommerce' ), -'TR51' => __( 'Niğde', 'woocommerce' ), -'TR52' => __( 'Ordu', 'woocommerce' ), -'TR53' => __( 'Rize', 'woocommerce' ), -'TR54' => __( 'Sakarya', 'woocommerce' ), -'TR55' => __( 'Samsun', 'woocommerce' ), -'TR56' => __( 'Siirt', 'woocommerce' ), -'TR57' => __( 'Sinop', 'woocommerce' ), -'TR58' => __( 'Sivas', 'woocommerce' ), -'TR59' => __( 'Tekirdağ', 'woocommerce' ), -'TR60' => __( 'Tokat', 'woocommerce' ), -'TR61' => __( 'Trabzon', 'woocommerce' ), -'TR62' => __( 'Tunceli', 'woocommerce' ), -'TR63' => __( 'Şanlıurfa', 'woocommerce' ), -'TR64' => __( 'Uşak', 'woocommerce' ), -'TR65' => __( 'Van', 'woocommerce' ), -'TR66' => __( 'Yozgat', 'woocommerce' ), -'TR67' => __( 'Zonguldak', 'woocommerce' ), -'TR68' => __( 'Aksaray', 'woocommerce' ), -'TR69' => __( 'Bayburt', 'woocommerce' ), -'TR70' => __( 'Karaman', 'woocommerce' ), -'TR71' => __( 'Kırıkkale', 'woocommerce' ), -'TR72' => __( 'Batman', 'woocommerce' ), -'TR73' => __( 'Şırnak', 'woocommerce' ), -'TR74' => __( 'Bartın', 'woocommerce' ), -'TR75' => __( 'Ardahan', 'woocommerce' ), -'TR76' => __( 'Iğdır', 'woocommerce' ), -'TR77' => __( 'Yalova', 'woocommerce' ), -'TR78' => __( 'Karabük', 'woocommerce' ), -'TR79' => __( 'Kilis', 'woocommerce' ), -'TR80' => __( 'Osmaniye', 'woocommerce' ), -'TR81' => __( 'Düzce', 'woocommerce' ), -); \ No newline at end of file + 'TR01' => __( 'Adana', 'woocommerce' ), + 'TR02' => __( 'Adıyaman', 'woocommerce' ), + 'TR03' => __( 'Afyon', 'woocommerce' ), + 'TR04' => __( 'Ağrı', 'woocommerce' ), + 'TR05' => __( 'Amasya', 'woocommerce' ), + 'TR06' => __( 'Ankara', 'woocommerce' ), + 'TR07' => __( 'Antalya', 'woocommerce' ), + 'TR08' => __( 'Artvin', 'woocommerce' ), + 'TR09' => __( 'Aydın', 'woocommerce' ), + 'TR10' => __( 'Balıkesir', 'woocommerce' ), + 'TR11' => __( 'Bilecik', 'woocommerce' ), + 'TR12' => __( 'Bingöl', 'woocommerce' ), + 'TR13' => __( 'Bitlis', 'woocommerce' ), + 'TR14' => __( 'Bolu', 'woocommerce' ), + 'TR15' => __( 'Burdur', 'woocommerce' ), + 'TR16' => __( 'Bursa', 'woocommerce' ), + 'TR17' => __( 'Çanakkale', 'woocommerce' ), + 'TR18' => __( 'Çankırı', 'woocommerce' ), + 'TR19' => __( 'Çorum', 'woocommerce' ), + 'TR20' => __( 'Denizli', 'woocommerce' ), + 'TR21' => __( 'Diyarbakır', 'woocommerce' ), + 'TR22' => __( 'Edirne', 'woocommerce' ), + 'TR23' => __( 'Elazığ', 'woocommerce' ), + 'TR24' => __( 'Erzincan', 'woocommerce' ), + 'TR25' => __( 'Erzurum', 'woocommerce' ), + 'TR26' => __( 'Eskişehir', 'woocommerce' ), + 'TR27' => __( 'Gaziantep', 'woocommerce' ), + 'TR28' => __( 'Giresun', 'woocommerce' ), + 'TR29' => __( 'Gümüşhane', 'woocommerce' ), + 'TR30' => __( 'Hakkari', 'woocommerce' ), + 'TR31' => __( 'Hatay', 'woocommerce' ), + 'TR32' => __( 'Isparta', 'woocommerce' ), + 'TR33' => __( 'İçel', 'woocommerce' ), + 'TR34' => __( 'İstanbul', 'woocommerce' ), + 'TR35' => __( 'İzmir', 'woocommerce' ), + 'TR36' => __( 'Kars', 'woocommerce' ), + 'TR37' => __( 'Kastamonu', 'woocommerce' ), + 'TR38' => __( 'Kayseri', 'woocommerce' ), + 'TR39' => __( 'Kırklareli', 'woocommerce' ), + 'TR40' => __( 'Kırşehir', 'woocommerce' ), + 'TR41' => __( 'Kocaeli', 'woocommerce' ), + 'TR42' => __( 'Konya', 'woocommerce' ), + 'TR43' => __( 'Kütahya', 'woocommerce' ), + 'TR44' => __( 'Malatya', 'woocommerce' ), + 'TR45' => __( 'Manisa', 'woocommerce' ), + 'TR46' => __( 'Kahramanmaraş', 'woocommerce' ), + 'TR47' => __( 'Mardin', 'woocommerce' ), + 'TR48' => __( 'Muğla', 'woocommerce' ), + 'TR49' => __( 'Muş', 'woocommerce' ), + 'TR50' => __( 'Nevşehir', 'woocommerce' ), + 'TR51' => __( 'Niğde', 'woocommerce' ), + 'TR52' => __( 'Ordu', 'woocommerce' ), + 'TR53' => __( 'Rize', 'woocommerce' ), + 'TR54' => __( 'Sakarya', 'woocommerce' ), + 'TR55' => __( 'Samsun', 'woocommerce' ), + 'TR56' => __( 'Siirt', 'woocommerce' ), + 'TR57' => __( 'Sinop', 'woocommerce' ), + 'TR58' => __( 'Sivas', 'woocommerce' ), + 'TR59' => __( 'Tekirdağ', 'woocommerce' ), + 'TR60' => __( 'Tokat', 'woocommerce' ), + 'TR61' => __( 'Trabzon', 'woocommerce' ), + 'TR62' => __( 'Tunceli', 'woocommerce' ), + 'TR63' => __( 'Şanlıurfa', 'woocommerce' ), + 'TR64' => __( 'Uşak', 'woocommerce' ), + 'TR65' => __( 'Van', 'woocommerce' ), + 'TR66' => __( 'Yozgat', 'woocommerce' ), + 'TR67' => __( 'Zonguldak', 'woocommerce' ), + 'TR68' => __( 'Aksaray', 'woocommerce' ), + 'TR69' => __( 'Bayburt', 'woocommerce' ), + 'TR70' => __( 'Karaman', 'woocommerce' ), + 'TR71' => __( 'Kırıkkale', 'woocommerce' ), + 'TR72' => __( 'Batman', 'woocommerce' ), + 'TR73' => __( 'Şırnak', 'woocommerce' ), + 'TR74' => __( 'Bartın', 'woocommerce' ), + 'TR75' => __( 'Ardahan', 'woocommerce' ), + 'TR76' => __( 'Iğdır', 'woocommerce' ), + 'TR77' => __( 'Yalova', 'woocommerce' ), + 'TR78' => __( 'Karabük', 'woocommerce' ), + 'TR79' => __( 'Kilis', 'woocommerce' ), + 'TR80' => __( 'Osmaniye', 'woocommerce' ), + 'TR81' => __( 'Düzce', 'woocommerce' ), +); diff --git a/i18n/states/US.php b/i18n/states/US.php index 4928dfb8693..52378a9f59c 100644 --- a/i18n/states/US.php +++ b/i18n/states/US.php @@ -2,9 +2,9 @@ /** * United States * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; diff --git a/i18n/states/ZA.php b/i18n/states/ZA.php index 8bca5553213..c157bcf2fb0 100644 --- a/i18n/states/ZA.php +++ b/i18n/states/ZA.php @@ -2,21 +2,21 @@ /** * South African states * - * @author WooThemes - * @category i18n - * @package WooCommerce/i18n + * @author WooThemes + * @category i18n + * @package WooCommerce/i18n * @version 2.0.0 */ global $states; $states['ZA'] = array( - 'EC' => __( 'Eastern Cape', 'woocommerce' ) , - 'FS' => __( 'Free State', 'woocommerce' ) , - 'GP' => __( 'Gauteng', 'woocommerce' ) , - 'KZN' => __( 'KwaZulu-Natal', 'woocommerce' ) , - 'LP' => __( 'Limpopo', 'woocommerce' ) , - 'MP' => __( 'Mpumalanga', 'woocommerce' ) , - 'NC' => __( 'Northern Cape', 'woocommerce' ) , - 'NW' => __( 'North West', 'woocommerce' ) , + 'EC' => __( 'Eastern Cape', 'woocommerce' ), + 'FS' => __( 'Free State', 'woocommerce' ), + 'GP' => __( 'Gauteng', 'woocommerce' ), + 'KZN' => __( 'KwaZulu-Natal', 'woocommerce' ), + 'LP' => __( 'Limpopo', 'woocommerce' ), + 'MP' => __( 'Mpumalanga', 'woocommerce' ), + 'NC' => __( 'Northern Cape', 'woocommerce' ), + 'NW' => __( 'North West', 'woocommerce' ), 'WC' => __( 'Western Cape', 'woocommerce' ) -); \ No newline at end of file +); diff --git a/includes/abstracts/abstract-wc-email.php b/includes/abstracts/abstract-wc-email.php index 04d5f626648..3f17eba3c80 100644 --- a/includes/abstracts/abstract-wc-email.php +++ b/includes/abstracts/abstract-wc-email.php @@ -1,6 +1,8 @@ get_status(); - $new_status = 'wc-' === substr( $new_status, 0, 3 ) ? substr( $new_status, 3 ) : $new_status; + if ( ! $this->id ) { + return; + } - // Only update if they differ - if ( $this->id && $new_status !== $old_status ) { + // Standardise status names. + $new_status = 'wc-' === substr( $new_status, 0, 3 ) ? substr( $new_status, 3 ) : $new_status; + $old_status = $this->get_status(); + + // Only update if they differ - and ensure post_status is a 'wc' status. + if ( $new_status !== $old_status || ! in_array( $this->post_status, array_keys( wc_get_order_statuses() ) ) ) { // Update the order wp_update_post( array( 'ID' => $this->id, 'post_status' => 'wc-' . $new_status ) ); diff --git a/includes/abstracts/abstract-wc-payment-gateway.php b/includes/abstracts/abstract-wc-payment-gateway.php index cf5d1c252cf..a6ba818c610 100644 --- a/includes/abstracts/abstract-wc-payment-gateway.php +++ b/includes/abstracts/abstract-wc-payment-gateway.php @@ -1,6 +1,8 @@ id ) ) ) { + $value = intval( $value ); + $value_suffix = $value ? '_' . $value : ''; + + if ( false === ( $count = get_transient( 'wc_rating_count_' . $this->id . $value_suffix ) ) ) { global $wpdb; + $where_meta_value = $value ? $wpdb->prepare( " AND meta_value = %d", $value ) : " AND meta_value > 0"; + $count = $wpdb->get_var( $wpdb->prepare(" SELECT COUNT(meta_value) FROM $wpdb->commentmeta LEFT JOIN $wpdb->comments ON $wpdb->commentmeta.comment_id = $wpdb->comments.comment_ID WHERE meta_key = 'rating' AND comment_post_ID = %d AND comment_approved = '1' - AND meta_value > 0 - ", $this->id ) ); + ", $this->id ) . $where_meta_value ); - set_transient( 'wc_rating_count_' . $this->id, $count, YEAR_IN_SECONDS ); + set_transient( 'wc_rating_count_' . $this->id . $value_suffix, $count, YEAR_IN_SECONDS ); } return $count; diff --git a/includes/abstracts/abstract-wc-shipping-method.php b/includes/abstracts/abstract-wc-shipping-method.php index 38a0cf622b3..804de056fba 100644 --- a/includes/abstracts/abstract-wc-shipping-method.php +++ b/includes/abstracts/abstract-wc-shipping-method.php @@ -1,6 +1,8 @@ post_type ); $can_edit_post = current_user_can( $post_type_object->cap->edit_post, $post->ID ); - echo ''; + echo '' . esc_html( $title ). ''; _post_states( $post ); // Get actions $actions = array(); + if ( current_user_can( $post_type_object->cap->edit_post, $post->ID ) ) { + $actions['edit'] = '' . __( 'Edit', 'woocommerce' ) . ''; + } + if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) { if ( 'trash' == $post->post_status ) $actions['untrash'] = "ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore', 'woocommerce' ) . ""; @@ -851,7 +857,11 @@ class WC_Admin_Post_Types { } if ( isset( $_REQUEST['_featured'] ) ) { - if ( update_post_meta( $post_id, '_featured', isset( $_REQUEST['_featured'] ) ? 'yes' : 'no' ) ) { + if ( update_post_meta( $post_id, '_featured', 'yes' ) ) { + delete_transient( 'wc_featured_products' ); + } + } else { + if ( update_post_meta( $post_id, '_featured', 'no' ) ) { delete_transient( 'wc_featured_products' ); } } @@ -1012,9 +1022,9 @@ class WC_Admin_Post_Types { case 3 : if ( strstr( $regular_price, '%' ) ) { $percent = str_replace( '%', '', $regular_price ) / 100; - $new_price = $old_regular_price - ( round ( $old_regular_price * $percent, absint( get_option( 'woocommerce_price_num_decimals' ) ) ) ); + $new_price = max( 0, $old_regular_price - ( round ( $old_regular_price * $percent, absint( get_option( 'woocommerce_price_num_decimals' ) ) ) ) ); } else { - $new_price = $old_regular_price - $regular_price; + $new_price = max( 0, $old_regular_price - $regular_price ); } break; @@ -1033,7 +1043,7 @@ class WC_Admin_Post_Types { if ( ! empty( $_REQUEST['change_sale_price'] ) ) { $change_sale_price = absint( $_REQUEST['change_sale_price'] ); - $sale_price = esc_attr( stripslashes( $_REQUEST['_sale_price'] ) ); + $sale_price = esc_attr( stripslashes( $_REQUEST['_sale_price'] ) ); switch ( $change_sale_price ) { case 1 : @@ -1050,17 +1060,17 @@ class WC_Admin_Post_Types { case 3 : if ( strstr( $sale_price, '%' ) ) { $percent = str_replace( '%', '', $sale_price ) / 100; - $new_price = $old_sale_price - ( $old_sale_price * $percent ); + $new_price = max( 0, $old_sale_price - ( $old_sale_price * $percent ) ); } else { - $new_price = $old_sale_price - $sale_price; + $new_price = max( 0, $old_sale_price - $sale_price ); } break; case 4 : if ( strstr( $sale_price, '%' ) ) { $percent = str_replace( '%', '', $sale_price ) / 100; - $new_price = $product->regular_price - ( $product->regular_price * $percent ); + $new_price = max( 0, $product->regular_price - ( $product->regular_price * $percent ) ); } else { - $new_price = $product->regular_price - $sale_price; + $new_price = max( 0, $product->regular_price - $sale_price ); } break; @@ -1337,13 +1347,15 @@ class WC_Admin_Post_Types { switch ( $typenow ) { case 'product' : $this->product_filters(); - break; - case 'product' : + break; + case 'shop_coupon' : $this->shop_coupon_filters(); - break; - case 'product' : + break; + case 'shop_order' : $this->shop_order_filters(); - break; + break; + default : + break; } } diff --git a/includes/admin/class-wc-admin-profile.php b/includes/admin/class-wc-admin-profile.php index f507030a2fa..310f8a905ab 100644 --- a/includes/admin/class-wc-admin-profile.php +++ b/includes/admin/class-wc-admin-profile.php @@ -8,7 +8,9 @@ * @version 2.1.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} if ( ! class_exists( 'WC_Admin_Profile' ) ) : diff --git a/includes/admin/class-wc-admin-reports.php b/includes/admin/class-wc-admin-reports.php index 4ca7d2430ce..6c39734fd7b 100644 --- a/includes/admin/class-wc-admin-reports.php +++ b/includes/admin/class-wc-admin-reports.php @@ -10,7 +10,9 @@ * @version 2.0.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} if ( ! class_exists( 'WC_Admin_Reports' ) ) : @@ -165,4 +167,4 @@ class WC_Admin_Reports { } } -endif; \ No newline at end of file +endif; diff --git a/includes/admin/class-wc-admin-status.php b/includes/admin/class-wc-admin-status.php index 3ba09e2be9e..4e2a43073e3 100644 --- a/includes/admin/class-wc-admin-status.php +++ b/includes/admin/class-wc-admin-status.php @@ -8,7 +8,9 @@ * @version 2.2.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} /** * WC_Admin_Status Class diff --git a/includes/admin/class-wc-admin-taxonomies.php b/includes/admin/class-wc-admin-taxonomies.php index 1676b2bac5e..f3971efb233 100644 --- a/includes/admin/class-wc-admin-taxonomies.php +++ b/includes/admin/class-wc-admin-taxonomies.php @@ -1,8 +1,4 @@ '_billing_' . $key, 'label' => $field['label'], 'options' => $field['options'] ) ); + // allow for setting a default value programaticaly, and draw the selectbox + woocommerce_wp_select( array( 'id' => '_billing_' . $key, 'label' => $field['label'], 'options' => $field['options'], 'value' => isset( $field['value'] ) ? $field['value'] : '' ) ); break; default : - woocommerce_wp_text_input( array( 'id' => '_billing_' . $key, 'label' => $field['label'] ) ); + // allow for setting a default value programaticaly, and draw the textbox + woocommerce_wp_text_input( array( 'id' => '_billing_' . $key, 'label' => $field['label'], 'value' => isset( $field['value'] ) ? $field['value'] : '' ) ); break; } } diff --git a/includes/admin/meta-boxes/class-wc-meta-box-order-downloads.php b/includes/admin/meta-boxes/class-wc-meta-box-order-downloads.php index 548452f6f24..8a96671938d 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-order-downloads.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-order-downloads.php @@ -8,10 +8,12 @@ * @version 2.1.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} /** - * WC_Meta_Box_Order_Downloads + * WC_Meta_Box_Order_Downloads Class */ class WC_Meta_Box_Order_Downloads { diff --git a/includes/admin/meta-boxes/class-wc-meta-box-order-items.php b/includes/admin/meta-boxes/class-wc-meta-box-order-items.php index 0a24cfe0b9a..d71b9e97210 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-order-items.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-order-items.php @@ -10,8 +10,13 @@ * @version 2.1.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} +/** + * WC_Meta_Box_Order_Items Class + */ class WC_Meta_Box_Order_Items { /** diff --git a/includes/admin/meta-boxes/class-wc-meta-box-order-notes.php b/includes/admin/meta-boxes/class-wc-meta-box-order-notes.php index c73e4a4f8a4..df648ca8997 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-order-notes.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-order-notes.php @@ -8,10 +8,12 @@ * @version 2.1.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} /** - * WC_Meta_Box_Order_Notes + * WC_Meta_Box_Order_Notes Class */ class WC_Meta_Box_Order_Notes { diff --git a/includes/admin/meta-boxes/class-wc-meta-box-order-reviews.php b/includes/admin/meta-boxes/class-wc-meta-box-order-reviews.php index 4846ea627a6..9b2b83fd7d4 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-order-reviews.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-order-reviews.php @@ -10,10 +10,12 @@ * @version 2.1.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} /** - * WC_Meta_Box_Order_Reviews + * WC_Meta_Box_Order_Reviews Class */ class WC_Meta_Box_Order_Reviews { diff --git a/includes/admin/meta-boxes/class-wc-meta-box-product-data.php b/includes/admin/meta-boxes/class-wc-meta-box-product-data.php index 36efbbe0f7e..0fc39f84dff 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-product-data.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-product-data.php @@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) { } /** - * WC_Meta_Box_Product_Data + * WC_Meta_Box_Product_Data Class */ class WC_Meta_Box_Product_Data { @@ -1267,7 +1267,6 @@ class WC_Meta_Box_Product_Data { if ( $clear_parent_ids ) { foreach ( $clear_parent_ids as $clear_id ) { - $children_by_price = get_posts( array( 'post_parent' => $clear_id, 'orderby' => 'meta_value_num', @@ -1279,12 +1278,13 @@ class WC_Meta_Box_Product_Data { ) ); if ( $children_by_price ) { - foreach ( $children_by_price as $child ) { $child_price = get_post_meta( $child, '_price', true ); update_post_meta( $clear_id, '_price', $child_price ); } } + + wc_delete_product_transients( $clear_id ); } } } diff --git a/includes/admin/meta-boxes/class-wc-meta-box-product-images.php b/includes/admin/meta-boxes/class-wc-meta-box-product-images.php index ad1102a3dc9..2b856a7ff40 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-product-images.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-product-images.php @@ -10,10 +10,12 @@ * @version 2.1.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} /** - * WC_Meta_Box_Product_Images + * WC_Meta_Box_Product_Images Class */ class WC_Meta_Box_Product_Images { diff --git a/includes/admin/meta-boxes/class-wc-meta-box-product-short-description.php b/includes/admin/meta-boxes/class-wc-meta-box-product-short-description.php index 46f758e8a82..e2990e3b49a 100644 --- a/includes/admin/meta-boxes/class-wc-meta-box-product-short-description.php +++ b/includes/admin/meta-boxes/class-wc-meta-box-product-short-description.php @@ -10,10 +10,12 @@ * @version 2.1.0 */ -if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} /** - * WC_Meta_Box_Product_Short_Description + * WC_Meta_Box_Product_Short_Description Class */ class WC_Meta_Box_Product_Short_Description { diff --git a/includes/admin/meta-boxes/views/html-order-download-permission.php b/includes/admin/meta-boxes/views/html-order-download-permission.php index 81e86b92195..a1f2ef2cbd2 100644 --- a/includes/admin/meta-boxes/views/html-order-download-permission.php +++ b/includes/admin/meta-boxes/views/html-order-download-permission.php @@ -1,5 +1,9 @@

@@ -25,4 +29,4 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly -

\ No newline at end of file + diff --git a/includes/admin/meta-boxes/views/html-order-fee.php b/includes/admin/meta-boxes/views/html-order-fee.php index 57b9785e7eb..02a8f522c00 100644 --- a/includes/admin/meta-boxes/views/html-order-fee.php +++ b/includes/admin/meta-boxes/views/html-order-fee.php @@ -1,7 +1,9 @@ @@ -42,7 +44,7 @@ if ( ! defined( 'ABSPATH' ) ) { @@ -45,6 +47,8 @@ if ( ! defined( 'ABSPATH' ) ) { + +
+ + + @@ -198,7 +205,7 @@ if ( ! defined( 'ABSPATH' ) ) { $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' ); @@ -214,6 +215,8 @@ if ( 'yes' == get_option( 'woocommerce_calc_taxes' ) ) {

is_editable() ) : ?> + + "> is_editable() ) : ?> @@ -233,6 +236,10 @@ if ( 'yes' == get_option( 'woocommerce_calc_taxes' ) ) { + get_total() - $order->get_total_refunded() ) > 0 ) : ?>

"; } -} \ No newline at end of file +} diff --git a/includes/gateways/mijireh/includes/Address.php b/includes/gateways/mijireh/includes/Address.php index 3f4ed5c8129..bf7b18ee0df 100644 --- a/includes/gateways/mijireh/includes/Address.php +++ b/includes/gateways/mijireh/includes/Address.php @@ -1,6 +1,8 @@ _errors) == 0; } -} \ No newline at end of file +} diff --git a/includes/gateways/mijireh/includes/Mijireh.php b/includes/gateways/mijireh/includes/Mijireh.php index dc60766f6be..211363574e0 100644 --- a/includes/gateways/mijireh/includes/Mijireh.php +++ b/includes/gateways/mijireh/includes/Mijireh.php @@ -1,6 +1,8 @@ id = 'paypal'; - $this->icon = apply_filters( 'woocommerce_paypal_icon', WC()->plugin_url() . '/assets/images/icons/paypal.png' ); $this->has_fields = false; $this->order_button_text = __( 'Proceed to PayPal', 'woocommerce' ); $this->liveurl = 'https://www.paypal.com/cgi-bin/webscr'; @@ -78,6 +79,92 @@ class WC_Gateway_Paypal extends WC_Payment_Gateway { } } + /** + * get_icon function. + * + * @return string + */ + public function get_icon() { + $link = null; + switch ( WC()->countries->get_base_country() ) { + case 'US' : + case 'NZ' : + case 'CZ' : + case 'HU' : + case 'MY' : + $icon = 'https://www.paypalobjects.com/webstatic/mktg/logo/AM_mc_vs_dc_ae.jpg'; + break; + case 'TR' : + $icon = 'https://www.paypalobjects.com/webstatic/mktg/logo-center/logo_paypal_odeme_secenekleri.jpg'; + break; + case 'GB' : + $icon = 'https://www.paypalobjects.com/webstatic/mktg/Logo/AM_mc_vs_ms_ae_UK.png'; + break; + case 'MX' : + $icon = array( + 'https://www.paypal.com/es_XC/Marketing/i/banner/paypal_visa_mastercard_amex.png', + 'https://www.paypal.com/es_XC/Marketing/i/banner/paypal_debit_card_275x60.gif' + ); + $link = 'https://www.paypal.com/mx/cgi-bin/webscr?cmd=xpt/Marketing/general/WIPaypal-outside'; + break; + case 'FR' : + $icon = 'https://www.paypalobjects.com/webstatic/mktg/logo-center/logo_paypal_moyens_paiement_fr.jpg'; + break; + case 'AU' : + $icon = 'https://www.paypalobjects.com/webstatic/en_AU/mktg/logo/Solutions-graphics-1-184x80.jpg'; + break; + case 'DK' : + $icon = 'https://www.paypalobjects.com/webstatic/mktg/logo-center/logo_PayPal_betalingsmuligheder_dk.jpg'; + break; + case 'RU' : + $icon = 'https://www.paypalobjects.com/webstatic/ru_RU/mktg/business/pages/logo-center/AM_mc_vs_dc_ae.jpg'; + break; + case 'NO' : + $icon = 'https://www.paypalobjects.com/webstatic/mktg/logo-center/banner_pl_just_pp_319x110.jpg'; + break; + case 'CA' : + $icon = 'https://www.paypalobjects.com/webstatic/en_CA/mktg/logo-image/AM_mc_vs_dc_ae.jpg'; + break; + case 'HK' : + $icon = 'https://www.paypalobjects.com/webstatic/en_HK/mktg/logo/AM_mc_vs_dc_ae.jpg'; + break; + case 'SG' : + $icon = 'https://www.paypalobjects.com/webstatic/en_SG/mktg/Logos/AM_mc_vs_dc_ae.jpg'; + break; + case 'TW' : + $icon = 'https://www.paypalobjects.com/webstatic/en_TW/mktg/logos/AM_mc_vs_dc_ae.jpg'; + break; + case 'TH' : + $icon = 'https://www.paypalobjects.com/webstatic/en_TH/mktg/Logos/AM_mc_vs_dc_ae.jpg'; + break; + default : + $icon = WC_HTTPS::force_https_url( WC()->plugin_url() . '/includes/gateways/paypal/assets/images/paypal.png' ); + $link = null; + break; + } + + if ( is_null( $link ) ) { + $link = 'https://www.paypal.com/' . strtolower( WC()->countries->get_base_country() ) . '/webapps/mpp/paypal-popup'; + } + + if ( is_array( $icon ) ) { + $icon_html = ''; + foreach ( $icon as $i ) { + $icon_html .= 'PayPal Acceptance Mark'; + } + } else { + $icon_html = 'PayPal Acceptance Mark'; + } + + if ( $link ) { + $what_is_paypal = sprintf( '' . esc_attr__( 'What is PayPal?', 'woocommerce' ) . '', esc_url( $link ) ); + } else { + $what_is_paypal = ''; + } + + return apply_filters( 'woocommerce_gateway_icon', $icon_html . $what_is_paypal, $this->id ); + } + /** * Check if this gateway is enabled and available in the user's country * @@ -134,7 +221,7 @@ class WC_Gateway_Paypal extends WC_Payment_Gateway { 'type' => 'text', 'desc_tip' => true, 'description' => __( 'This controls the description which the user sees during checkout.', 'woocommerce' ), - 'default' => __( 'Pay via PayPal; you can pay with your credit card if you don\'t have a PayPal account', 'woocommerce' ) + 'default' => __( 'Pay via PayPal; you can pay with your credit card if you don\'t have a PayPal account.', 'woocommerce' ) ), 'email' => array( 'title' => __( 'PayPal Email', 'woocommerce' ), diff --git a/includes/gateways/simplify-commerce/class-wc-addons-gateway-simplify-commerce.php b/includes/gateways/simplify-commerce/class-wc-addons-gateway-simplify-commerce.php index 9f3e3496dd6..ed9cb2acf15 100644 --- a/includes/gateways/simplify-commerce/class-wc-addons-gateway-simplify-commerce.php +++ b/includes/gateways/simplify-commerce/class-wc-addons-gateway-simplify-commerce.php @@ -1,4 +1,5 @@ \ No newline at end of file +?> diff --git a/includes/libraries/class-lessc.php b/includes/libraries/class-lessc.php deleted file mode 100644 index 3d9e003c264..00000000000 --- a/includes/libraries/class-lessc.php +++ /dev/null @@ -1,3767 +0,0 @@ - - * Licensed under MIT or GPLv3, see LICENSE - */ - - -/** - * The LESS compiler and parser. - * - * Converting LESS to CSS is a three stage process. The incoming file is parsed - * by `lessc_parser` into a syntax tree, then it is compiled into another tree - * representing the CSS structure by `lessc`. The CSS tree is fed into a - * formatter, like `lessc_formatter` which then outputs CSS as a string. - * - * During the first compile, all values are *reduced*, which means that their - * types are brought to the lowest form before being dump as strings. This - * handles math equations, variable dereferences, and the like. - * - * The `parse` function of `lessc` is the entry point. - * - * In summary: - * - * The `lessc` class creates an instance of the parser, feeds it LESS code, - * then transforms the resulting tree to a CSS tree. This class also holds the - * evaluation context, such as all available mixins and variables at any given - * time. - * - * The `lessc_parser` class is only concerned with parsing its input. - * - * The `lessc_formatter` takes a CSS tree, and dumps it to a formatted string, - * handling things like indentation. - */ -class lessc { - static public $VERSION = "v0.4.0"; - - static public $TRUE = array("keyword", "true"); - static public $FALSE = array("keyword", "false"); - - protected $libFunctions = array(); - protected $registeredVars = array(); - protected $preserveComments = false; - - public $vPrefix = '@'; // prefix of abstract properties - public $mPrefix = '$'; // prefix of abstract blocks - public $parentSelector = '&'; - - public $importDisabled = false; - public $importDir = ''; - - protected $numberPrecision = null; - - protected $allParsedFiles = array(); - - // set to the parser that generated the current line when compiling - // so we know how to create error messages - protected $sourceParser = null; - protected $sourceLoc = null; - - static protected $nextImportId = 0; // uniquely identify imports - - // attempts to find the path of an import url, returns null for css files - protected function findImport($url) { - foreach ((array)$this->importDir as $dir) { - $full = $dir.(substr($dir, -1) != '/' ? '/' : '').$url; - if ($this->fileExists($file = $full.'.less') || $this->fileExists($file = $full)) { - return $file; - } - } - - return null; - } - - protected function fileExists($name) { - return is_file($name); - } - - static public function compressList($items, $delim) { - if (!isset($items[1]) && isset($items[0])) return $items[0]; - else return array('list', $delim, $items); - } - - static public function preg_quote($what) { - return preg_quote($what, '/'); - } - - protected function tryImport($importPath, $parentBlock, $out) { - if ($importPath[0] == "function" && $importPath[1] == "url") { - $importPath = $this->flattenList($importPath[2]); - } - - $str = $this->coerceString($importPath); - if ($str === null) return false; - - $url = $this->compileValue($this->lib_e($str)); - - // don't import if it ends in css - if (substr_compare($url, '.css', -4, 4) === 0) return false; - - $realPath = $this->findImport($url); - - if ($realPath === null) return false; - - if ($this->importDisabled) { - return array(false, "/* import disabled */"); - } - - if (isset($this->allParsedFiles[realpath($realPath)])) { - return array(false, null); - } - - $this->addParsedFile($realPath); - $parser = $this->makeParser($realPath); - $root = $parser->parse(file_get_contents($realPath)); - - // set the parents of all the block props - foreach ($root->props as $prop) { - if ($prop[0] == "block") { - $prop[1]->parent = $parentBlock; - } - } - - // copy mixins into scope, set their parents - // bring blocks from import into current block - // TODO: need to mark the source parser these came from this file - foreach ($root->children as $childName => $child) { - if (isset($parentBlock->children[$childName])) { - $parentBlock->children[$childName] = array_merge( - $parentBlock->children[$childName], - $child); - } else { - $parentBlock->children[$childName] = $child; - } - } - - $pi = pathinfo($realPath); - $dir = $pi["dirname"]; - - list($top, $bottom) = $this->sortProps($root->props, true); - $this->compileImportedProps($top, $parentBlock, $out, $parser, $dir); - - return array(true, $bottom, $parser, $dir); - } - - protected function compileImportedProps($props, $block, $out, $sourceParser, $importDir) { - $oldSourceParser = $this->sourceParser; - - $oldImport = $this->importDir; - - // TODO: this is because the importDir api is stupid - $this->importDir = (array)$this->importDir; - array_unshift($this->importDir, $importDir); - - foreach ($props as $prop) { - $this->compileProp($prop, $block, $out); - } - - $this->importDir = $oldImport; - $this->sourceParser = $oldSourceParser; - } - - /** - * Recursively compiles a block. - * - * A block is analogous to a CSS block in most cases. A single LESS document - * is encapsulated in a block when parsed, but it does not have parent tags - * so all of it's children appear on the root level when compiled. - * - * Blocks are made up of props and children. - * - * Props are property instructions, array tuples which describe an action - * to be taken, eg. write a property, set a variable, mixin a block. - * - * The children of a block are just all the blocks that are defined within. - * This is used to look up mixins when performing a mixin. - * - * Compiling the block involves pushing a fresh environment on the stack, - * and iterating through the props, compiling each one. - * - * See lessc::compileProp() - * - */ - protected function compileBlock($block) { - switch ($block->type) { - case "root": - $this->compileRoot($block); - break; - case null: - $this->compileCSSBlock($block); - break; - case "media": - $this->compileMedia($block); - break; - case "directive": - $name = "@" . $block->name; - if (!empty($block->value)) { - $name .= " " . $this->compileValue($this->reduce($block->value)); - } - - $this->compileNestedBlock($block, array($name)); - break; - default: - $this->throwError("unknown block type: $block->type\n"); - } - } - - protected function compileCSSBlock($block) { - $env = $this->pushEnv(); - - $selectors = $this->compileSelectors($block->tags); - $env->selectors = $this->multiplySelectors($selectors); - $out = $this->makeOutputBlock(null, $env->selectors); - - $this->scope->children[] = $out; - $this->compileProps($block, $out); - - $block->scope = $env; // mixins carry scope with them! - $this->popEnv(); - } - - protected function compileMedia($media) { - $env = $this->pushEnv($media); - $parentScope = $this->mediaParent($this->scope); - - $query = $this->compileMediaQuery($this->multiplyMedia($env)); - - $this->scope = $this->makeOutputBlock($media->type, array($query)); - $parentScope->children[] = $this->scope; - - $this->compileProps($media, $this->scope); - - if (count($this->scope->lines) > 0) { - $orphanSelelectors = $this->findClosestSelectors(); - if (!is_null($orphanSelelectors)) { - $orphan = $this->makeOutputBlock(null, $orphanSelelectors); - $orphan->lines = $this->scope->lines; - array_unshift($this->scope->children, $orphan); - $this->scope->lines = array(); - } - } - - $this->scope = $this->scope->parent; - $this->popEnv(); - } - - protected function mediaParent($scope) { - while (!empty($scope->parent)) { - if (!empty($scope->type) && $scope->type != "media") { - break; - } - $scope = $scope->parent; - } - - return $scope; - } - - protected function compileNestedBlock($block, $selectors) { - $this->pushEnv($block); - $this->scope = $this->makeOutputBlock($block->type, $selectors); - $this->scope->parent->children[] = $this->scope; - - $this->compileProps($block, $this->scope); - - $this->scope = $this->scope->parent; - $this->popEnv(); - } - - protected function compileRoot($root) { - $this->pushEnv(); - $this->scope = $this->makeOutputBlock($root->type); - $this->compileProps($root, $this->scope); - $this->popEnv(); - } - - protected function compileProps($block, $out) { - foreach ($this->sortProps($block->props) as $prop) { - $this->compileProp($prop, $block, $out); - } - $out->lines = $this->deduplicate($out->lines); - } - - /** - * Deduplicate lines in a block. Comments are not deduplicated. If a - * duplicate rule is detected, the comments immediately preceding each - * occurence are consolidated. - */ - protected function deduplicate($lines) { - $unique = array(); - $comments = array(); - - foreach($lines as $line) { - if (strpos($line, '/*') === 0) { - $comments[] = $line; - continue; - } - if (!in_array($line, $unique)) { - $unique[] = $line; - } - array_splice($unique, array_search($line, $unique), 0, $comments); - $comments = array(); - } - return array_merge($unique, $comments); - } - - protected function sortProps($props, $split = false) { - $vars = array(); - $imports = array(); - $other = array(); - $stack = array(); - - foreach ($props as $prop) { - switch ($prop[0]) { - case "comment": - $stack[] = $prop; - break; - case "assign": - $stack[] = $prop; - if (isset($prop[1][0]) && $prop[1][0] == $this->vPrefix) { - $vars = array_merge($vars, $stack); - } else { - $other = array_merge($other, $stack); - } - $stack = array(); - break; - case "import": - $id = self::$nextImportId++; - $prop[] = $id; - $stack[] = $prop; - $imports = array_merge($imports, $stack); - $other[] = array("import_mixin", $id); - $stack = array(); - break; - default: - $stack[] = $prop; - $other = array_merge($other, $stack); - $stack = array(); - break; - } - } - $other = array_merge($other, $stack); - - if ($split) { - return array(array_merge($vars, $imports), $other); - } else { - return array_merge($vars, $imports, $other); - } - } - - protected function compileMediaQuery($queries) { - $compiledQueries = array(); - foreach ($queries as $query) { - $parts = array(); - foreach ($query as $q) { - switch ($q[0]) { - case "mediaType": - $parts[] = implode(" ", array_slice($q, 1)); - break; - case "mediaExp": - if (isset($q[2])) { - $parts[] = "($q[1]: " . - $this->compileValue($this->reduce($q[2])) . ")"; - } else { - $parts[] = "($q[1])"; - } - break; - case "variable": - $parts[] = $this->compileValue($this->reduce($q)); - break; - } - } - - if (count($parts) > 0) { - $compiledQueries[] = implode(" and ", $parts); - } - } - - $out = "@media"; - if (!empty($parts)) { - $out .= " " . - implode($this->formatter->selectorSeparator, $compiledQueries); - } - return $out; - } - - protected function multiplyMedia($env, $childQueries = null) { - if (is_null($env) || - !empty($env->block->type) && $env->block->type != "media") - { - return $childQueries; - } - - // plain old block, skip - if (empty($env->block->type)) { - return $this->multiplyMedia($env->parent, $childQueries); - } - - $out = array(); - $queries = $env->block->queries; - if (is_null($childQueries)) { - $out = $queries; - } else { - foreach ($queries as $parent) { - foreach ($childQueries as $child) { - $out[] = array_merge($parent, $child); - } - } - } - - return $this->multiplyMedia($env->parent, $out); - } - - protected function expandParentSelectors(&$tag, $replace) { - $parts = explode("$&$", $tag); - $count = 0; - foreach ($parts as &$part) { - $part = str_replace($this->parentSelector, $replace, $part, $c); - $count += $c; - } - $tag = implode($this->parentSelector, $parts); - return $count; - } - - protected function findClosestSelectors() { - $env = $this->env; - $selectors = null; - while ($env !== null) { - if (isset($env->selectors)) { - $selectors = $env->selectors; - break; - } - $env = $env->parent; - } - - return $selectors; - } - - - // multiply $selectors against the nearest selectors in env - protected function multiplySelectors($selectors) { - // find parent selectors - - $parentSelectors = $this->findClosestSelectors(); - if (is_null($parentSelectors)) { - // kill parent reference in top level selector - foreach ($selectors as &$s) { - $this->expandParentSelectors($s, ""); - } - - return $selectors; - } - - $out = array(); - foreach ($parentSelectors as $parent) { - foreach ($selectors as $child) { - $count = $this->expandParentSelectors($child, $parent); - - // don't prepend the parent tag if & was used - if ($count > 0) { - $out[] = trim($child); - } else { - $out[] = trim($parent . ' ' . $child); - } - } - } - - return $out; - } - - // reduces selector expressions - protected function compileSelectors($selectors) { - $out = array(); - - foreach ($selectors as $s) { - if (is_array($s)) { - list(, $value) = $s; - $out[] = trim($this->compileValue($this->reduce($value))); - } else { - $out[] = $s; - } - } - - return $out; - } - - protected function eq($left, $right) { - return $left == $right; - } - - protected function patternMatch($block, $orderedArgs, $keywordArgs) { - // match the guards if it has them - // any one of the groups must have all its guards pass for a match - if (!empty($block->guards)) { - $groupPassed = false; - foreach ($block->guards as $guardGroup) { - foreach ($guardGroup as $guard) { - $this->pushEnv(); - $this->zipSetArgs($block->args, $orderedArgs, $keywordArgs); - - $negate = false; - if ($guard[0] == "negate") { - $guard = $guard[1]; - $negate = true; - } - - $passed = $this->reduce($guard) == self::$TRUE; - if ($negate) $passed = !$passed; - - $this->popEnv(); - - if ($passed) { - $groupPassed = true; - } else { - $groupPassed = false; - break; - } - } - - if ($groupPassed) break; - } - - if (!$groupPassed) { - return false; - } - } - - if (empty($block->args)) { - return $block->isVararg || empty($orderedArgs) && empty($keywordArgs); - } - - $remainingArgs = $block->args; - if ($keywordArgs) { - $remainingArgs = array(); - foreach ($block->args as $arg) { - if ($arg[0] == "arg" && isset($keywordArgs[$arg[1]])) { - continue; - } - - $remainingArgs[] = $arg; - } - } - - $i = -1; // no args - // try to match by arity or by argument literal - foreach ($remainingArgs as $i => $arg) { - switch ($arg[0]) { - case "lit": - if (empty($orderedArgs[$i]) || !$this->eq($arg[1], $orderedArgs[$i])) { - return false; - } - break; - case "arg": - // no arg and no default value - if (!isset($orderedArgs[$i]) && !isset($arg[2])) { - return false; - } - break; - case "rest": - $i--; // rest can be empty - break 2; - } - } - - if ($block->isVararg) { - return true; // not having enough is handled above - } else { - $numMatched = $i + 1; - // greater than becuase default values always match - return $numMatched >= count($orderedArgs); - } - } - - protected function patternMatchAll($blocks, $orderedArgs, $keywordArgs, $skip=array()) { - $matches = null; - foreach ($blocks as $block) { - // skip seen blocks that don't have arguments - if (isset($skip[$block->id]) && !isset($block->args)) { - continue; - } - - if ($this->patternMatch($block, $orderedArgs, $keywordArgs)) { - $matches[] = $block; - } - } - - return $matches; - } - - // attempt to find blocks matched by path and args - protected function findBlocks($searchIn, $path, $orderedArgs, $keywordArgs, $seen=array()) { - if ($searchIn == null) return null; - if (isset($seen[$searchIn->id])) return null; - $seen[$searchIn->id] = true; - - $name = $path[0]; - - if (isset($searchIn->children[$name])) { - $blocks = $searchIn->children[$name]; - if (count($path) == 1) { - $matches = $this->patternMatchAll($blocks, $orderedArgs, $keywordArgs, $seen); - if (!empty($matches)) { - // This will return all blocks that match in the closest - // scope that has any matching block, like lessjs - return $matches; - } - } else { - $matches = array(); - foreach ($blocks as $subBlock) { - $subMatches = $this->findBlocks($subBlock, - array_slice($path, 1), $orderedArgs, $keywordArgs, $seen); - - if (!is_null($subMatches)) { - foreach ($subMatches as $sm) { - $matches[] = $sm; - } - } - } - - return count($matches) > 0 ? $matches : null; - } - } - if ($searchIn->parent === $searchIn) return null; - return $this->findBlocks($searchIn->parent, $path, $orderedArgs, $keywordArgs, $seen); - } - - // sets all argument names in $args to either the default value - // or the one passed in through $values - protected function zipSetArgs($args, $orderedValues, $keywordValues) { - $assignedValues = array(); - - $i = 0; - foreach ($args as $a) { - if ($a[0] == "arg") { - if (isset($keywordValues[$a[1]])) { - // has keyword arg - $value = $keywordValues[$a[1]]; - } elseif (isset($orderedValues[$i])) { - // has ordered arg - $value = $orderedValues[$i]; - $i++; - } elseif (isset($a[2])) { - // has default value - $value = $a[2]; - } else { - $this->throwError("Failed to assign arg " . $a[1]); - $value = null; // :( - } - - $value = $this->reduce($value); - $this->set($a[1], $value); - $assignedValues[] = $value; - } else { - // a lit - $i++; - } - } - - // check for a rest - $last = end($args); - if ($last[0] == "rest") { - $rest = array_slice($orderedValues, count($args) - 1); - $this->set($last[1], $this->reduce(array("list", " ", $rest))); - } - - // wow is this the only true use of PHP's + operator for arrays? - $this->env->arguments = $assignedValues + $orderedValues; - } - - // compile a prop and update $lines or $blocks appropriately - protected function compileProp($prop, $block, $out) { - // set error position context - $this->sourceLoc = isset($prop[-1]) ? $prop[-1] : -1; - - switch ($prop[0]) { - case 'assign': - list(, $name, $value) = $prop; - if ($name[0] == $this->vPrefix) { - $this->set($name, $value); - } else { - $out->lines[] = $this->formatter->property($name, - $this->compileValue($this->reduce($value))); - } - break; - case 'block': - list(, $child) = $prop; - $this->compileBlock($child); - break; - case 'mixin': - list(, $path, $args, $suffix) = $prop; - - $orderedArgs = array(); - $keywordArgs = array(); - foreach ((array)$args as $arg) { - $argval = null; - switch ($arg[0]) { - case "arg": - if (!isset($arg[2])) { - $orderedArgs[] = $this->reduce(array("variable", $arg[1])); - } else { - $keywordArgs[$arg[1]] = $this->reduce($arg[2]); - } - break; - - case "lit": - $orderedArgs[] = $this->reduce($arg[1]); - break; - default: - $this->throwError("Unknown arg type: " . $arg[0]); - } - } - - $mixins = $this->findBlocks($block, $path, $orderedArgs, $keywordArgs); - - if ($mixins === null) { - $this->throwError("{$prop[1][0]} is undefined"); - } - - foreach ($mixins as $mixin) { - if ($mixin === $block && !$orderedArgs) { - continue; - } - - $haveScope = false; - if (isset($mixin->parent->scope)) { - $haveScope = true; - $mixinParentEnv = $this->pushEnv(); - $mixinParentEnv->storeParent = $mixin->parent->scope; - } - - $haveArgs = false; - if (isset($mixin->args)) { - $haveArgs = true; - $this->pushEnv(); - $this->zipSetArgs($mixin->args, $orderedArgs, $keywordArgs); - } - - $oldParent = $mixin->parent; - if ($mixin != $block) $mixin->parent = $block; - - foreach ($this->sortProps($mixin->props) as $subProp) { - if ($suffix !== null && - $subProp[0] == "assign" && - is_string($subProp[1]) && - $subProp[1]{0} != $this->vPrefix) - { - $subProp[2] = array( - 'list', ' ', - array($subProp[2], array('keyword', $suffix)) - ); - } - - $this->compileProp($subProp, $mixin, $out); - } - - $mixin->parent = $oldParent; - - if ($haveArgs) $this->popEnv(); - if ($haveScope) $this->popEnv(); - } - - break; - case 'raw': - $out->lines[] = $prop[1]; - break; - case "directive": - list(, $name, $value) = $prop; - $out->lines[] = "@$name " . $this->compileValue($this->reduce($value)).';'; - break; - case "comment": - $out->lines[] = $prop[1]; - break; - case "import"; - list(, $importPath, $importId) = $prop; - $importPath = $this->reduce($importPath); - - if (!isset($this->env->imports)) { - $this->env->imports = array(); - } - - $result = $this->tryImport($importPath, $block, $out); - - $this->env->imports[$importId] = $result === false ? - array(false, "@import " . $this->compileValue($importPath).";") : - $result; - - break; - case "import_mixin": - list(,$importId) = $prop; - $import = $this->env->imports[$importId]; - if ($import[0] === false) { - if (isset($import[1])) { - $out->lines[] = $import[1]; - } - } else { - list(, $bottom, $parser, $importDir) = $import; - $this->compileImportedProps($bottom, $block, $out, $parser, $importDir); - } - - break; - default: - $this->throwError("unknown op: {$prop[0]}\n"); - } - } - - - /** - * Compiles a primitive value into a CSS property value. - * - * Values in lessphp are typed by being wrapped in arrays, their format is - * typically: - * - * array(type, contents [, additional_contents]*) - * - * The input is expected to be reduced. This function will not work on - * things like expressions and variables. - */ - protected function compileValue($value) { - switch ($value[0]) { - case 'list': - // [1] - delimiter - // [2] - array of values - return implode($value[1], array_map(array($this, 'compileValue'), $value[2])); - case 'raw_color': - if (!empty($this->formatter->compressColors)) { - return $this->compileValue($this->coerceColor($value)); - } - return $value[1]; - case 'keyword': - // [1] - the keyword - return $value[1]; - case 'number': - list(, $num, $unit) = $value; - // [1] - the number - // [2] - the unit - if ($this->numberPrecision !== null) { - $num = round($num, $this->numberPrecision); - } - return $num . $unit; - case 'string': - // [1] - contents of string (includes quotes) - list(, $delim, $content) = $value; - foreach ($content as &$part) { - if (is_array($part)) { - $part = $this->compileValue($part); - } - } - return $delim . implode($content) . $delim; - case 'color': - // [1] - red component (either number or a %) - // [2] - green component - // [3] - blue component - // [4] - optional alpha component - list(, $r, $g, $b) = $value; - $r = round($r); - $g = round($g); - $b = round($b); - - if (count($value) == 5 && $value[4] != 1) { // rgba - return 'rgba('.$r.','.$g.','.$b.','.$value[4].')'; - } - - $h = sprintf("#%02x%02x%02x", $r, $g, $b); - - if (!empty($this->formatter->compressColors)) { - // Converting hex color to short notation (e.g. #003399 to #039) - if ($h[1] === $h[2] && $h[3] === $h[4] && $h[5] === $h[6]) { - $h = '#' . $h[1] . $h[3] . $h[5]; - } - } - - return $h; - - case 'function': - list(, $name, $args) = $value; - return $name.'('.$this->compileValue($args).')'; - default: // assumed to be unit - $this->throwError("unknown value type: $value[0]"); - } - } - - protected function lib_pow($args) { - list($base, $exp) = $this->assertArgs($args, 2, "pow"); - return pow($this->assertNumber($base), $this->assertNumber($exp)); - } - - protected function lib_pi() { - return pi(); - } - - protected function lib_mod($args) { - list($a, $b) = $this->assertArgs($args, 2, "mod"); - return $this->assertNumber($a) % $this->assertNumber($b); - } - - protected function lib_tan($num) { - return tan($this->assertNumber($num)); - } - - protected function lib_sin($num) { - return sin($this->assertNumber($num)); - } - - protected function lib_cos($num) { - return cos($this->assertNumber($num)); - } - - protected function lib_atan($num) { - $num = atan($this->assertNumber($num)); - return array("number", $num, "rad"); - } - - protected function lib_asin($num) { - $num = asin($this->assertNumber($num)); - return array("number", $num, "rad"); - } - - protected function lib_acos($num) { - $num = acos($this->assertNumber($num)); - return array("number", $num, "rad"); - } - - protected function lib_sqrt($num) { - return sqrt($this->assertNumber($num)); - } - - protected function lib_extract($value) { - list($list, $idx) = $this->assertArgs($value, 2, "extract"); - $idx = $this->assertNumber($idx); - // 1 indexed - if ($list[0] == "list" && isset($list[2][$idx - 1])) { - return $list[2][$idx - 1]; - } - } - - protected function lib_isnumber($value) { - return $this->toBool($value[0] == "number"); - } - - protected function lib_isstring($value) { - return $this->toBool($value[0] == "string"); - } - - protected function lib_iscolor($value) { - return $this->toBool($this->coerceColor($value)); - } - - protected function lib_iskeyword($value) { - return $this->toBool($value[0] == "keyword"); - } - - protected function lib_ispixel($value) { - return $this->toBool($value[0] == "number" && $value[2] == "px"); - } - - protected function lib_ispercentage($value) { - return $this->toBool($value[0] == "number" && $value[2] == "%"); - } - - protected function lib_isem($value) { - return $this->toBool($value[0] == "number" && $value[2] == "em"); - } - - protected function lib_isrem($value) { - return $this->toBool($value[0] == "number" && $value[2] == "rem"); - } - - protected function lib_rgbahex($color) { - $color = $this->coerceColor($color); - if (is_null($color)) - $this->throwError("color expected for rgbahex"); - - return sprintf("#%02x%02x%02x%02x", - isset($color[4]) ? $color[4]*255 : 255, - $color[1],$color[2], $color[3]); - } - - protected function lib_argb($color){ - return $this->lib_rgbahex($color); - } - - /** - * Given an url, decide whether to output a regular link or the base64-encoded contents of the file - * - * @param array $value either an argument list (two strings) or a single string - * @return string formatted url(), either as a link or base64-encoded - */ - protected function lib_data_uri($value) { - $mime = ($value[0] === 'list') ? $value[2][0][2] : null; - $url = ($value[0] === 'list') ? $value[2][1][2][0] : $value[2][0]; - - $fullpath = $this->findImport($url); - - if($fullpath && ($fsize = filesize($fullpath)) !== false) { - // IE8 can't handle data uris larger than 32KB - if($fsize/1024 < 32) { - if(is_null($mime)) { - if(class_exists('finfo')) { // php 5.3+ - $finfo = new finfo(FILEINFO_MIME); - $mime = explode('; ', $finfo->file($fullpath)); - $mime = $mime[0]; - } elseif(function_exists('mime_content_type')) { // PHP 5.2 - $mime = mime_content_type($fullpath); - } - } - - if(!is_null($mime)) // fallback if the mime type is still unknown - $url = sprintf('data:%s;base64,%s', $mime, base64_encode(file_get_contents($fullpath))); - } - } - - return 'url("'.$url.'")'; - } - - // utility func to unquote a string - protected function lib_e($arg) { - switch ($arg[0]) { - case "list": - $items = $arg[2]; - if (isset($items[0])) { - return $this->lib_e($items[0]); - } - $this->throwError("unrecognised input"); - case "string": - $arg[1] = ""; - return $arg; - case "keyword": - return $arg; - default: - return array("keyword", $this->compileValue($arg)); - } - } - - protected function lib__sprintf($args) { - if ($args[0] != "list") return $args; - $values = $args[2]; - $string = array_shift($values); - $template = $this->compileValue($this->lib_e($string)); - - $i = 0; - if (preg_match_all('/%[dsa]/', $template, $m)) { - foreach ($m[0] as $match) { - $val = isset($values[$i]) ? - $this->reduce($values[$i]) : array('keyword', ''); - - // lessjs compat, renders fully expanded color, not raw color - if ($color = $this->coerceColor($val)) { - $val = $color; - } - - $i++; - $rep = $this->compileValue($this->lib_e($val)); - $template = preg_replace('/'.self::preg_quote($match).'/', - $rep, $template, 1); - } - } - - $d = $string[0] == "string" ? $string[1] : '"'; - return array("string", $d, array($template)); - } - - protected function lib_floor($arg) { - $value = $this->assertNumber($arg); - return array("number", floor($value), $arg[2]); - } - - protected function lib_ceil($arg) { - $value = $this->assertNumber($arg); - return array("number", ceil($value), $arg[2]); - } - - protected function lib_round($arg) { - if($arg[0] != "list") { - $value = $this->assertNumber($arg); - return array("number", round($value), $arg[2]); - } else { - $value = $this->assertNumber($arg[2][0]); - $precision = $this->assertNumber($arg[2][1]); - return array("number", round($value, $precision), $arg[2][0][2]); - } - } - - protected function lib_unit($arg) { - if ($arg[0] == "list") { - list($number, $newUnit) = $arg[2]; - return array("number", $this->assertNumber($number), - $this->compileValue($this->lib_e($newUnit))); - } else { - return array("number", $this->assertNumber($arg), ""); - } - } - - /** - * Helper function to get arguments for color manipulation functions. - * takes a list that contains a color like thing and a percentage - */ - public function colorArgs($args) { - if ($args[0] != 'list' || count($args[2]) < 2) { - return array(array('color', 0, 0, 0), 0); - } - list($color, $delta) = $args[2]; - $color = $this->assertColor($color); - $delta = floatval($delta[1]); - - return array($color, $delta); - } - - protected function lib_darken($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - $hsl[3] = $this->clamp($hsl[3] - $delta, 100); - return $this->toRGB($hsl); - } - - protected function lib_lighten($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - $hsl[3] = $this->clamp($hsl[3] + $delta, 100); - return $this->toRGB($hsl); - } - - protected function lib_saturate($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - $hsl[2] = $this->clamp($hsl[2] + $delta, 100); - return $this->toRGB($hsl); - } - - protected function lib_desaturate($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - $hsl[2] = $this->clamp($hsl[2] - $delta, 100); - return $this->toRGB($hsl); - } - - protected function lib_spin($args) { - list($color, $delta) = $this->colorArgs($args); - - $hsl = $this->toHSL($color); - - $hsl[1] = $hsl[1] + $delta % 360; - if ($hsl[1] < 0) $hsl[1] += 360; - - return $this->toRGB($hsl); - } - - protected function lib_fadeout($args) { - list($color, $delta) = $this->colorArgs($args); - $color[4] = $this->clamp((isset($color[4]) ? $color[4] : 1) - $delta/100); - return $color; - } - - protected function lib_fadein($args) { - list($color, $delta) = $this->colorArgs($args); - $color[4] = $this->clamp((isset($color[4]) ? $color[4] : 1) + $delta/100); - return $color; - } - - protected function lib_hue($color) { - $hsl = $this->toHSL($this->assertColor($color)); - return round($hsl[1]); - } - - protected function lib_saturation($color) { - $hsl = $this->toHSL($this->assertColor($color)); - return round($hsl[2]); - } - - protected function lib_lightness($color) { - $hsl = $this->toHSL($this->assertColor($color)); - return round($hsl[3]); - } - - // get the alpha of a color - // defaults to 1 for non-colors or colors without an alpha - protected function lib_alpha($value) { - if (!is_null($color = $this->coerceColor($value))) { - return isset($color[4]) ? $color[4] : 1; - } - } - - // set the alpha of the color - protected function lib_fade($args) { - list($color, $alpha) = $this->colorArgs($args); - $color[4] = $this->clamp($alpha / 100.0); - return $color; - } - - protected function lib_percentage($arg) { - $num = $this->assertNumber($arg); - return array("number", $num*100, "%"); - } - - // mixes two colors by weight - // mix(@color1, @color2, [@weight: 50%]); - // http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#mix-instance_method - protected function lib_mix($args) { - if ($args[0] != "list" || count($args[2]) < 2) - $this->throwError("mix expects (color1, color2, weight)"); - - list($first, $second) = $args[2]; - $first = $this->assertColor($first); - $second = $this->assertColor($second); - - $first_a = $this->lib_alpha($first); - $second_a = $this->lib_alpha($second); - - if (isset($args[2][2])) { - $weight = $args[2][2][1] / 100.0; - } else { - $weight = 0.5; - } - - $w = $weight * 2 - 1; - $a = $first_a - $second_a; - - $w1 = (($w * $a == -1 ? $w : ($w + $a)/(1 + $w * $a)) + 1) / 2.0; - $w2 = 1.0 - $w1; - - $new = array('color', - $w1 * $first[1] + $w2 * $second[1], - $w1 * $first[2] + $w2 * $second[2], - $w1 * $first[3] + $w2 * $second[3], - ); - - if ($first_a != 1.0 || $second_a != 1.0) { - $new[] = $first_a * $weight + $second_a * ($weight - 1); - } - - return $this->fixColor($new); - } - - protected function lib_contrast($args) { - $darkColor = array('color', 0, 0, 0); - $lightColor = array('color', 255, 255, 255); - $threshold = 0.43; - - if ( $args[0] == 'list' ) { - $inputColor = ( isset($args[2][0]) ) ? $this->assertColor($args[2][0]) : $lightColor; - $darkColor = ( isset($args[2][1]) ) ? $this->assertColor($args[2][1]) : $darkColor; - $lightColor = ( isset($args[2][2]) ) ? $this->assertColor($args[2][2]) : $lightColor; - $threshold = ( isset($args[2][3]) ) ? $this->assertNumber($args[2][3]) : $threshold; - } - else { - $inputColor = $this->assertColor($args); - } - - $inputColor = $this->coerceColor($inputColor); - $darkColor = $this->coerceColor($darkColor); - $lightColor = $this->coerceColor($lightColor); - - //Figure out which is actually light and dark! - if ( $this->lib_luma($darkColor) > $this->lib_luma($lightColor) ) { - $t = $lightColor; - $lightColor = $darkColor; - $darkColor = $t; - } - - $inputColor_alpha = $this->lib_alpha($inputColor); - if ( ( $this->lib_luma($inputColor) * $inputColor_alpha) < $threshold) { - return $lightColor; - } - return $darkColor; - } - - protected function lib_luma($color) { - $color = $this->coerceColor($color); - return (0.2126 * $color[0] / 255) + (0.7152 * $color[1] / 255) + (0.0722 * $color[2] / 255); - } - - - public function assertColor($value, $error = "expected color value") { - $color = $this->coerceColor($value); - if (is_null($color)) $this->throwError($error); - return $color; - } - - public function assertNumber($value, $error = "expecting number") { - if ($value[0] == "number") return $value[1]; - $this->throwError($error); - } - - public function assertArgs($value, $expectedArgs, $name="") { - if ($expectedArgs == 1) { - return $value; - } else { - if ($value[0] !== "list" || $value[1] != ",") $this->throwError("expecting list"); - $values = $value[2]; - $numValues = count($values); - if ($expectedArgs != $numValues) { - if ($name) { - $name = $name . ": "; - } - - $this->throwError("${name}expecting $expectedArgs arguments, got $numValues"); - } - - return $values; - } - } - - protected function toHSL($color) { - if ($color[0] == 'hsl') return $color; - - $r = $color[1] / 255; - $g = $color[2] / 255; - $b = $color[3] / 255; - - $min = min($r, $g, $b); - $max = max($r, $g, $b); - - $L = ($min + $max) / 2; - if ($min == $max) { - $S = $H = 0; - } else { - if ($L < 0.5) - $S = ($max - $min)/($max + $min); - else - $S = ($max - $min)/(2.0 - $max - $min); - - if ($r == $max) $H = ($g - $b)/($max - $min); - elseif ($g == $max) $H = 2.0 + ($b - $r)/($max - $min); - elseif ($b == $max) $H = 4.0 + ($r - $g)/($max - $min); - - } - - $out = array('hsl', - ($H < 0 ? $H + 6 : $H)*60, - $S*100, - $L*100, - ); - - if (count($color) > 4) $out[] = $color[4]; // copy alpha - return $out; - } - - protected function toRGB_helper($comp, $temp1, $temp2) { - if ($comp < 0) $comp += 1.0; - elseif ($comp > 1) $comp -= 1.0; - - if (6 * $comp < 1) return $temp1 + ($temp2 - $temp1) * 6 * $comp; - if (2 * $comp < 1) return $temp2; - if (3 * $comp < 2) return $temp1 + ($temp2 - $temp1)*((2/3) - $comp) * 6; - - return $temp1; - } - - /** - * Converts a hsl array into a color value in rgb. - * Expects H to be in range of 0 to 360, S and L in 0 to 100 - */ - protected function toRGB($color) { - if ($color[0] == 'color') return $color; - - $H = $color[1] / 360; - $S = $color[2] / 100; - $L = $color[3] / 100; - - if ($S == 0) { - $r = $g = $b = $L; - } else { - $temp2 = $L < 0.5 ? - $L*(1.0 + $S) : - $L + $S - $L * $S; - - $temp1 = 2.0 * $L - $temp2; - - $r = $this->toRGB_helper($H + 1/3, $temp1, $temp2); - $g = $this->toRGB_helper($H, $temp1, $temp2); - $b = $this->toRGB_helper($H - 1/3, $temp1, $temp2); - } - - // $out = array('color', round($r*255), round($g*255), round($b*255)); - $out = array('color', $r*255, $g*255, $b*255); - if (count($color) > 4) $out[] = $color[4]; // copy alpha - return $out; - } - - protected function clamp($v, $max = 1, $min = 0) { - return min($max, max($min, $v)); - } - - /** - * Convert the rgb, rgba, hsl color literals of function type - * as returned by the parser into values of color type. - */ - protected function funcToColor($func) { - $fname = $func[1]; - if ($func[2][0] != 'list') return false; // need a list of arguments - $rawComponents = $func[2][2]; - - if ($fname == 'hsl' || $fname == 'hsla') { - $hsl = array('hsl'); - $i = 0; - foreach ($rawComponents as $c) { - $val = $this->reduce($c); - $val = isset($val[1]) ? floatval($val[1]) : 0; - - if ($i == 0) $clamp = 360; - elseif ($i < 3) $clamp = 100; - else $clamp = 1; - - $hsl[] = $this->clamp($val, $clamp); - $i++; - } - - while (count($hsl) < 4) $hsl[] = 0; - return $this->toRGB($hsl); - - } elseif ($fname == 'rgb' || $fname == 'rgba') { - $components = array(); - $i = 1; - foreach ($rawComponents as $c) { - $c = $this->reduce($c); - if ($i < 4) { - if ($c[0] == "number" && $c[2] == "%") { - $components[] = 255 * ($c[1] / 100); - } else { - $components[] = floatval($c[1]); - } - } elseif ($i == 4) { - if ($c[0] == "number" && $c[2] == "%") { - $components[] = 1.0 * ($c[1] / 100); - } else { - $components[] = floatval($c[1]); - } - } else break; - - $i++; - } - while (count($components) < 3) $components[] = 0; - array_unshift($components, 'color'); - return $this->fixColor($components); - } - - return false; - } - - protected function reduce($value, $forExpression = false) { - switch ($value[0]) { - case "interpolate": - $reduced = $this->reduce($value[1]); - $var = $this->compileValue($reduced); - $res = $this->reduce(array("variable", $this->vPrefix . $var)); - - if ($res[0] == "raw_color") { - $res = $this->coerceColor($res); - } - - if (empty($value[2])) $res = $this->lib_e($res); - - return $res; - case "variable": - $key = $value[1]; - if (is_array($key)) { - $key = $this->reduce($key); - $key = $this->vPrefix . $this->compileValue($this->lib_e($key)); - } - - $seen =& $this->env->seenNames; - - if (!empty($seen[$key])) { - $this->throwError("infinite loop detected: $key"); - } - - $seen[$key] = true; - $out = $this->reduce($this->get($key)); - $seen[$key] = false; - return $out; - case "list": - foreach ($value[2] as &$item) { - $item = $this->reduce($item, $forExpression); - } - return $value; - case "expression": - return $this->evaluate($value); - case "string": - foreach ($value[2] as &$part) { - if (is_array($part)) { - $strip = $part[0] == "variable"; - $part = $this->reduce($part); - if ($strip) $part = $this->lib_e($part); - } - } - return $value; - case "escape": - list(,$inner) = $value; - return $this->lib_e($this->reduce($inner)); - case "function": - $color = $this->funcToColor($value); - if ($color) return $color; - - list(, $name, $args) = $value; - if ($name == "%") $name = "_sprintf"; - - $f = isset($this->libFunctions[$name]) ? - $this->libFunctions[$name] : array($this, 'lib_'.str_replace('-', '_', $name)); - - if (is_callable($f)) { - if ($args[0] == 'list') - $args = self::compressList($args[2], $args[1]); - - $ret = call_user_func($f, $this->reduce($args, true), $this); - - if (is_null($ret)) { - return array("string", "", array( - $name, "(", $args, ")" - )); - } - - // convert to a typed value if the result is a php primitive - if (is_numeric($ret)) $ret = array('number', $ret, ""); - elseif (!is_array($ret)) $ret = array('keyword', $ret); - - return $ret; - } - - // plain function, reduce args - $value[2] = $this->reduce($value[2]); - return $value; - case "unary": - list(, $op, $exp) = $value; - $exp = $this->reduce($exp); - - if ($exp[0] == "number") { - switch ($op) { - case "+": - return $exp; - case "-": - $exp[1] *= -1; - return $exp; - } - } - return array("string", "", array($op, $exp)); - } - - if ($forExpression) { - switch ($value[0]) { - case "keyword": - if ($color = $this->coerceColor($value)) { - return $color; - } - break; - case "raw_color": - return $this->coerceColor($value); - } - } - - return $value; - } - - - // coerce a value for use in color operation - protected function coerceColor($value) { - switch($value[0]) { - case 'color': return $value; - case 'raw_color': - $c = array("color", 0, 0, 0); - $colorStr = substr($value[1], 1); - $num = hexdec($colorStr); - $width = strlen($colorStr) == 3 ? 16 : 256; - - for ($i = 3; $i > 0; $i--) { // 3 2 1 - $t = $num % $width; - $num /= $width; - - $c[$i] = $t * (256/$width) + $t * floor(16/$width); - } - - return $c; - case 'keyword': - $name = $value[1]; - if (isset(self::$cssColors[$name])) { - $rgba = explode(',', self::$cssColors[$name]); - - if(isset($rgba[3])) - return array('color', $rgba[0], $rgba[1], $rgba[2], $rgba[3]); - - return array('color', $rgba[0], $rgba[1], $rgba[2]); - } - return null; - } - } - - // make something string like into a string - protected function coerceString($value) { - switch ($value[0]) { - case "string": - return $value; - case "keyword": - return array("string", "", array($value[1])); - } - return null; - } - - // turn list of length 1 into value type - protected function flattenList($value) { - if ($value[0] == "list" && count($value[2]) == 1) { - return $this->flattenList($value[2][0]); - } - return $value; - } - - public function toBool($a) { - if ($a) return self::$TRUE; - else return self::$FALSE; - } - - // evaluate an expression - protected function evaluate($exp) { - list(, $op, $left, $right, $whiteBefore, $whiteAfter) = $exp; - - $left = $this->reduce($left, true); - $right = $this->reduce($right, true); - - if ($leftColor = $this->coerceColor($left)) { - $left = $leftColor; - } - - if ($rightColor = $this->coerceColor($right)) { - $right = $rightColor; - } - - $ltype = $left[0]; - $rtype = $right[0]; - - // operators that work on all types - if ($op == "and") { - return $this->toBool($left == self::$TRUE && $right == self::$TRUE); - } - - if ($op == "=") { - return $this->toBool($this->eq($left, $right) ); - } - - if ($op == "+" && !is_null($str = $this->stringConcatenate($left, $right))) { - return $str; - } - - // type based operators - $fname = "op_${ltype}_${rtype}"; - if (is_callable(array($this, $fname))) { - $out = $this->$fname($op, $left, $right); - if (!is_null($out)) return $out; - } - - // make the expression look it did before being parsed - $paddedOp = $op; - if ($whiteBefore) $paddedOp = " " . $paddedOp; - if ($whiteAfter) $paddedOp .= " "; - - return array("string", "", array($left, $paddedOp, $right)); - } - - protected function stringConcatenate($left, $right) { - if ($strLeft = $this->coerceString($left)) { - if ($right[0] == "string") { - $right[1] = ""; - } - $strLeft[2][] = $right; - return $strLeft; - } - - if ($strRight = $this->coerceString($right)) { - array_unshift($strRight[2], $left); - return $strRight; - } - } - - - // make sure a color's components don't go out of bounds - protected function fixColor($c) { - foreach (range(1, 3) as $i) { - if ($c[$i] < 0) $c[$i] = 0; - if ($c[$i] > 255) $c[$i] = 255; - } - - return $c; - } - - protected function op_number_color($op, $lft, $rgt) { - if ($op == '+' || $op == '*') { - return $this->op_color_number($op, $rgt, $lft); - } - } - - protected function op_color_number($op, $lft, $rgt) { - if ($rgt[0] == '%') $rgt[1] /= 100; - - return $this->op_color_color($op, $lft, - array_fill(1, count($lft) - 1, $rgt[1])); - } - - protected function op_color_color($op, $left, $right) { - $out = array('color'); - $max = count($left) > count($right) ? count($left) : count($right); - foreach (range(1, $max - 1) as $i) { - $lval = isset($left[$i]) ? $left[$i] : 0; - $rval = isset($right[$i]) ? $right[$i] : 0; - switch ($op) { - case '+': - $out[] = $lval + $rval; - break; - case '-': - $out[] = $lval - $rval; - break; - case '*': - $out[] = $lval * $rval; - break; - case '%': - $out[] = $lval % $rval; - break; - case '/': - if ($rval == 0) $this->throwError("evaluate error: can't divide by zero"); - $out[] = $lval / $rval; - break; - default: - $this->throwError('evaluate error: color op number failed on op '.$op); - } - } - return $this->fixColor($out); - } - - function lib_red($color){ - $color = $this->coerceColor($color); - if (is_null($color)) { - $this->throwError('color expected for red()'); - } - - return $color[1]; - } - - function lib_green($color){ - $color = $this->coerceColor($color); - if (is_null($color)) { - $this->throwError('color expected for green()'); - } - - return $color[2]; - } - - function lib_blue($color){ - $color = $this->coerceColor($color); - if (is_null($color)) { - $this->throwError('color expected for blue()'); - } - - return $color[3]; - } - - - // operator on two numbers - protected function op_number_number($op, $left, $right) { - $unit = empty($left[2]) ? $right[2] : $left[2]; - - $value = 0; - switch ($op) { - case '+': - $value = $left[1] + $right[1]; - break; - case '*': - $value = $left[1] * $right[1]; - break; - case '-': - $value = $left[1] - $right[1]; - break; - case '%': - $value = $left[1] % $right[1]; - break; - case '/': - if ($right[1] == 0) $this->throwError('parse error: divide by zero'); - $value = $left[1] / $right[1]; - break; - case '<': - return $this->toBool($left[1] < $right[1]); - case '>': - return $this->toBool($left[1] > $right[1]); - case '>=': - return $this->toBool($left[1] >= $right[1]); - case '=<': - return $this->toBool($left[1] <= $right[1]); - default: - $this->throwError('parse error: unknown number operator: '.$op); - } - - return array("number", $value, $unit); - } - - - /* environment functions */ - - protected function makeOutputBlock($type, $selectors = null) { - $b = new stdclass; - $b->lines = array(); - $b->children = array(); - $b->selectors = $selectors; - $b->type = $type; - $b->parent = $this->scope; - return $b; - } - - // the state of execution - protected function pushEnv($block = null) { - $e = new stdclass; - $e->parent = $this->env; - $e->store = array(); - $e->block = $block; - - $this->env = $e; - return $e; - } - - // pop something off the stack - protected function popEnv() { - $old = $this->env; - $this->env = $this->env->parent; - return $old; - } - - // set something in the current env - protected function set($name, $value) { - $this->env->store[$name] = $value; - } - - - // get the highest occurrence entry for a name - protected function get($name) { - $current = $this->env; - - $isArguments = $name == $this->vPrefix . 'arguments'; - while ($current) { - if ($isArguments && isset($current->arguments)) { - return array('list', ' ', $current->arguments); - } - - if (isset($current->store[$name])) - return $current->store[$name]; - else { - $current = isset($current->storeParent) ? - $current->storeParent : $current->parent; - } - } - - $this->throwError("variable $name is undefined"); - } - - // inject array of unparsed strings into environment as variables - protected function injectVariables($args) { - $this->pushEnv(); - $parser = new lessc_parser($this, __METHOD__); - foreach ($args as $name => $strValue) { - if ($name{0} != '@') $name = '@'.$name; - $parser->count = 0; - $parser->buffer = (string)$strValue; - if (!$parser->propertyValue($value)) { - throw new Exception("failed to parse passed in variable $name: $strValue"); - } - - $this->set($name, $value); - } - } - - /** - * Initialize any static state, can initialize parser for a file - * $opts isn't used yet - */ - public function __construct($fname = null) { - if ($fname !== null) { - // used for deprecated parse method - $this->_parseFile = $fname; - } - } - - public function compile($string, $name = null) { - $locale = setlocale(LC_NUMERIC, 0); - setlocale(LC_NUMERIC, "C"); - - $this->parser = $this->makeParser($name); - $root = $this->parser->parse($string); - - $this->env = null; - $this->scope = null; - - $this->formatter = $this->newFormatter(); - - if (!empty($this->registeredVars)) { - $this->injectVariables($this->registeredVars); - } - - $this->sourceParser = $this->parser; // used for error messages - $this->compileBlock($root); - - ob_start(); - $this->formatter->block($this->scope); - $out = ob_get_clean(); - setlocale(LC_NUMERIC, $locale); - return $out; - } - - public function compileFile($fname, $outFname = null) { - if (!is_readable($fname)) { - throw new Exception('load error: failed to find '.$fname); - } - - $pi = pathinfo($fname); - - $oldImport = $this->importDir; - - $this->importDir = (array)$this->importDir; - $this->importDir[] = $pi['dirname'].'/'; - - $this->addParsedFile($fname); - - $out = $this->compile(file_get_contents($fname), $fname); - - $this->importDir = $oldImport; - - if ($outFname !== null) { - return file_put_contents($outFname, $out); - } - - return $out; - } - - // compile only if changed input has changed or output doesn't exist - public function checkedCompile($in, $out) { - if (!is_file($out) || filemtime($in) > filemtime($out)) { - $this->compileFile($in, $out); - return true; - } - return false; - } - - /** - * Execute lessphp on a .less file or a lessphp cache structure - * - * The lessphp cache structure contains information about a specific - * less file having been parsed. It can be used as a hint for future - * calls to determine whether or not a rebuild is required. - * - * The cache structure contains two important keys that may be used - * externally: - * - * compiled: The final compiled CSS - * updated: The time (in seconds) the CSS was last compiled - * - * The cache structure is a plain-ol' PHP associative array and can - * be serialized and unserialized without a hitch. - * - * @param mixed $in Input - * @param bool $force Force rebuild? - * @return array lessphp cache structure - */ - public function cachedCompile($in, $force = false) { - // assume no root - $root = null; - - if (is_string($in)) { - $root = $in; - } elseif (is_array($in) and isset($in['root'])) { - if ($force or ! isset($in['files'])) { - // If we are forcing a recompile or if for some reason the - // structure does not contain any file information we should - // specify the root to trigger a rebuild. - $root = $in['root']; - } elseif (isset($in['files']) and is_array($in['files'])) { - foreach ($in['files'] as $fname => $ftime ) { - if (!file_exists($fname) or filemtime($fname) > $ftime) { - // One of the files we knew about previously has changed - // so we should look at our incoming root again. - $root = $in['root']; - break; - } - } - } - } else { - // TODO: Throw an exception? We got neither a string nor something - // that looks like a compatible lessphp cache structure. - return null; - } - - if ($root !== null) { - // If we have a root value which means we should rebuild. - $out = array(); - $out['root'] = $root; - $out['compiled'] = $this->compileFile($root); - $out['files'] = $this->allParsedFiles(); - $out['updated'] = time(); - return $out; - } else { - // No changes, pass back the structure - // we were given initially. - return $in; - } - - } - - // parse and compile buffer - // This is deprecated - public function parse($str = null, $initialVariables = null) { - if (is_array($str)) { - $initialVariables = $str; - $str = null; - } - - $oldVars = $this->registeredVars; - if ($initialVariables !== null) { - $this->setVariables($initialVariables); - } - - if ($str == null) { - if (empty($this->_parseFile)) { - throw new exception("nothing to parse"); - } - - $out = $this->compileFile($this->_parseFile); - } else { - $out = $this->compile($str); - } - - $this->registeredVars = $oldVars; - return $out; - } - - protected function makeParser($name) { - $parser = new lessc_parser($this, $name); - $parser->writeComments = $this->preserveComments; - - return $parser; - } - - public function setFormatter($name) { - $this->formatterName = $name; - } - - protected function newFormatter() { - $className = "lessc_formatter_lessjs"; - if (!empty($this->formatterName)) { - if (!is_string($this->formatterName)) - return $this->formatterName; - $className = "lessc_formatter_$this->formatterName"; - } - - return new $className; - } - - public function setPreserveComments($preserve) { - $this->preserveComments = $preserve; - } - - public function registerFunction($name, $func) { - $this->libFunctions[$name] = $func; - } - - public function unregisterFunction($name) { - unset($this->libFunctions[$name]); - } - - public function setVariables($variables) { - $this->registeredVars = array_merge($this->registeredVars, $variables); - } - - public function unsetVariable($name) { - unset($this->registeredVars[$name]); - } - - public function setImportDir($dirs) { - $this->importDir = (array)$dirs; - } - - public function addImportDir($dir) { - $this->importDir = (array)$this->importDir; - $this->importDir[] = $dir; - } - - public function allParsedFiles() { - return $this->allParsedFiles; - } - - public function addParsedFile($file) { - $this->allParsedFiles[realpath($file)] = filemtime($file); - } - - /** - * Uses the current value of $this->count to show line and line number - */ - public function throwError($msg = null) { - if ($this->sourceLoc >= 0) { - $this->sourceParser->throwError($msg, $this->sourceLoc); - } - throw new exception($msg); - } - - // compile file $in to file $out if $in is newer than $out - // returns true when it compiles, false otherwise - public static function ccompile($in, $out, $less = null) { - if ($less === null) { - $less = new self; - } - return $less->checkedCompile($in, $out); - } - - public static function cexecute($in, $force = false, $less = null) { - if ($less === null) { - $less = new self; - } - return $less->cachedCompile($in, $force); - } - - static protected $cssColors = array( - 'aliceblue' => '240,248,255', - 'antiquewhite' => '250,235,215', - 'aqua' => '0,255,255', - 'aquamarine' => '127,255,212', - 'azure' => '240,255,255', - 'beige' => '245,245,220', - 'bisque' => '255,228,196', - 'black' => '0,0,0', - 'blanchedalmond' => '255,235,205', - 'blue' => '0,0,255', - 'blueviolet' => '138,43,226', - 'brown' => '165,42,42', - 'burlywood' => '222,184,135', - 'cadetblue' => '95,158,160', - 'chartreuse' => '127,255,0', - 'chocolate' => '210,105,30', - 'coral' => '255,127,80', - 'cornflowerblue' => '100,149,237', - 'cornsilk' => '255,248,220', - 'crimson' => '220,20,60', - 'cyan' => '0,255,255', - 'darkblue' => '0,0,139', - 'darkcyan' => '0,139,139', - 'darkgoldenrod' => '184,134,11', - 'darkgray' => '169,169,169', - 'darkgreen' => '0,100,0', - 'darkgrey' => '169,169,169', - 'darkkhaki' => '189,183,107', - 'darkmagenta' => '139,0,139', - 'darkolivegreen' => '85,107,47', - 'darkorange' => '255,140,0', - 'darkorchid' => '153,50,204', - 'darkred' => '139,0,0', - 'darksalmon' => '233,150,122', - 'darkseagreen' => '143,188,143', - 'darkslateblue' => '72,61,139', - 'darkslategray' => '47,79,79', - 'darkslategrey' => '47,79,79', - 'darkturquoise' => '0,206,209', - 'darkviolet' => '148,0,211', - 'deeppink' => '255,20,147', - 'deepskyblue' => '0,191,255', - 'dimgray' => '105,105,105', - 'dimgrey' => '105,105,105', - 'dodgerblue' => '30,144,255', - 'firebrick' => '178,34,34', - 'floralwhite' => '255,250,240', - 'forestgreen' => '34,139,34', - 'fuchsia' => '255,0,255', - 'gainsboro' => '220,220,220', - 'ghostwhite' => '248,248,255', - 'gold' => '255,215,0', - 'goldenrod' => '218,165,32', - 'gray' => '128,128,128', - 'green' => '0,128,0', - 'greenyellow' => '173,255,47', - 'grey' => '128,128,128', - 'honeydew' => '240,255,240', - 'hotpink' => '255,105,180', - 'indianred' => '205,92,92', - 'indigo' => '75,0,130', - 'ivory' => '255,255,240', - 'khaki' => '240,230,140', - 'lavender' => '230,230,250', - 'lavenderblush' => '255,240,245', - 'lawngreen' => '124,252,0', - 'lemonchiffon' => '255,250,205', - 'lightblue' => '173,216,230', - 'lightcoral' => '240,128,128', - 'lightcyan' => '224,255,255', - 'lightgoldenrodyellow' => '250,250,210', - 'lightgray' => '211,211,211', - 'lightgreen' => '144,238,144', - 'lightgrey' => '211,211,211', - 'lightpink' => '255,182,193', - 'lightsalmon' => '255,160,122', - 'lightseagreen' => '32,178,170', - 'lightskyblue' => '135,206,250', - 'lightslategray' => '119,136,153', - 'lightslategrey' => '119,136,153', - 'lightsteelblue' => '176,196,222', - 'lightyellow' => '255,255,224', - 'lime' => '0,255,0', - 'limegreen' => '50,205,50', - 'linen' => '250,240,230', - 'magenta' => '255,0,255', - 'maroon' => '128,0,0', - 'mediumaquamarine' => '102,205,170', - 'mediumblue' => '0,0,205', - 'mediumorchid' => '186,85,211', - 'mediumpurple' => '147,112,219', - 'mediumseagreen' => '60,179,113', - 'mediumslateblue' => '123,104,238', - 'mediumspringgreen' => '0,250,154', - 'mediumturquoise' => '72,209,204', - 'mediumvioletred' => '199,21,133', - 'midnightblue' => '25,25,112', - 'mintcream' => '245,255,250', - 'mistyrose' => '255,228,225', - 'moccasin' => '255,228,181', - 'navajowhite' => '255,222,173', - 'navy' => '0,0,128', - 'oldlace' => '253,245,230', - 'olive' => '128,128,0', - 'olivedrab' => '107,142,35', - 'orange' => '255,165,0', - 'orangered' => '255,69,0', - 'orchid' => '218,112,214', - 'palegoldenrod' => '238,232,170', - 'palegreen' => '152,251,152', - 'paleturquoise' => '175,238,238', - 'palevioletred' => '219,112,147', - 'papayawhip' => '255,239,213', - 'peachpuff' => '255,218,185', - 'peru' => '205,133,63', - 'pink' => '255,192,203', - 'plum' => '221,160,221', - 'powderblue' => '176,224,230', - 'purple' => '128,0,128', - 'red' => '255,0,0', - 'rosybrown' => '188,143,143', - 'royalblue' => '65,105,225', - 'saddlebrown' => '139,69,19', - 'salmon' => '250,128,114', - 'sandybrown' => '244,164,96', - 'seagreen' => '46,139,87', - 'seashell' => '255,245,238', - 'sienna' => '160,82,45', - 'silver' => '192,192,192', - 'skyblue' => '135,206,235', - 'slateblue' => '106,90,205', - 'slategray' => '112,128,144', - 'slategrey' => '112,128,144', - 'snow' => '255,250,250', - 'springgreen' => '0,255,127', - 'steelblue' => '70,130,180', - 'tan' => '210,180,140', - 'teal' => '0,128,128', - 'thistle' => '216,191,216', - 'tomato' => '255,99,71', - 'transparent' => '0,0,0,0', - 'turquoise' => '64,224,208', - 'violet' => '238,130,238', - 'wheat' => '245,222,179', - 'white' => '255,255,255', - 'whitesmoke' => '245,245,245', - 'yellow' => '255,255,0', - 'yellowgreen' => '154,205,50' - ); -} - -// responsible for taking a string of LESS code and converting it into a -// syntax tree -class lessc_parser { - static protected $nextBlockId = 0; // used to uniquely identify blocks - - static protected $precedence = array( - '=<' => 0, - '>=' => 0, - '=' => 0, - '<' => 0, - '>' => 0, - - '+' => 1, - '-' => 1, - '*' => 2, - '/' => 2, - '%' => 2, - ); - - static protected $whitePattern; - static protected $commentMulti; - - static protected $commentSingle = "//"; - static protected $commentMultiLeft = "/*"; - static protected $commentMultiRight = "*/"; - - // regex string to match any of the operators - static protected $operatorString; - - // these properties will supress division unless it's inside parenthases - static protected $supressDivisionProps = - array('/border-radius$/i', '/^font$/i'); - - protected $blockDirectives = array("font-face", "keyframes", "page", "-moz-document", "viewport", "-moz-viewport", "-o-viewport", "-ms-viewport"); - protected $lineDirectives = array("charset"); - - /** - * if we are in parens we can be more liberal with whitespace around - * operators because it must evaluate to a single value and thus is less - * ambiguous. - * - * Consider: - * property1: 10 -5; // is two numbers, 10 and -5 - * property2: (10 -5); // should evaluate to 5 - */ - protected $inParens = false; - - // caches preg escaped literals - static protected $literalCache = array(); - - public function __construct($lessc, $sourceName = null) { - $this->eatWhiteDefault = true; - // reference to less needed for vPrefix, mPrefix, and parentSelector - $this->lessc = $lessc; - - $this->sourceName = $sourceName; // name used for error messages - - $this->writeComments = false; - - if (!self::$operatorString) { - self::$operatorString = - '('.implode('|', array_map(array('lessc', 'preg_quote'), - array_keys(self::$precedence))).')'; - - $commentSingle = lessc::preg_quote(self::$commentSingle); - $commentMultiLeft = lessc::preg_quote(self::$commentMultiLeft); - $commentMultiRight = lessc::preg_quote(self::$commentMultiRight); - - self::$commentMulti = $commentMultiLeft.'.*?'.$commentMultiRight; - self::$whitePattern = '/'.$commentSingle.'[^\n]*\s*|('.self::$commentMulti.')\s*|\s+/Ais'; - } - } - - public function parse($buffer) { - $this->count = 0; - $this->line = 1; - - $this->env = null; // block stack - $this->buffer = $this->writeComments ? $buffer : $this->removeComments($buffer); - $this->pushSpecialBlock("root"); - $this->eatWhiteDefault = true; - $this->seenComments = array(); - - // trim whitespace on head - // if (preg_match('/^\s+/', $this->buffer, $m)) { - // $this->line += substr_count($m[0], "\n"); - // $this->buffer = ltrim($this->buffer); - // } - $this->whitespace(); - - // parse the entire file - while (false !== $this->parseChunk()); - - if ($this->count != strlen($this->buffer)) - $this->throwError(); - - // TODO report where the block was opened - if ( !property_exists($this->env, 'parent') || !is_null($this->env->parent) ) - throw new exception('parse error: unclosed block'); - - return $this->env; - } - - /** - * Parse a single chunk off the head of the buffer and append it to the - * current parse environment. - * Returns false when the buffer is empty, or when there is an error. - * - * This function is called repeatedly until the entire document is - * parsed. - * - * This parser is most similar to a recursive descent parser. Single - * functions represent discrete grammatical rules for the language, and - * they are able to capture the text that represents those rules. - * - * Consider the function lessc::keyword(). (all parse functions are - * structured the same) - * - * The function takes a single reference argument. When calling the - * function it will attempt to match a keyword on the head of the buffer. - * If it is successful, it will place the keyword in the referenced - * argument, advance the position in the buffer, and return true. If it - * fails then it won't advance the buffer and it will return false. - * - * All of these parse functions are powered by lessc::match(), which behaves - * the same way, but takes a literal regular expression. Sometimes it is - * more convenient to use match instead of creating a new function. - * - * Because of the format of the functions, to parse an entire string of - * grammatical rules, you can chain them together using &&. - * - * But, if some of the rules in the chain succeed before one fails, then - * the buffer position will be left at an invalid state. In order to - * avoid this, lessc::seek() is used to remember and set buffer positions. - * - * Before parsing a chain, use $s = $this->seek() to remember the current - * position into $s. Then if a chain fails, use $this->seek($s) to - * go back where we started. - */ - protected function parseChunk() { - if (empty($this->buffer)) return false; - $s = $this->seek(); - - if ($this->whitespace()) { - return true; - } - - // setting a property - if ($this->keyword($key) && $this->assign() && - $this->propertyValue($value, $key) && $this->end()) - { - $this->append(array('assign', $key, $value), $s); - return true; - } else { - $this->seek($s); - } - - - // look for special css blocks - if ($this->literal('@', false)) { - $this->count--; - - // media - if ($this->literal('@media')) { - if (($this->mediaQueryList($mediaQueries) || true) - && $this->literal('{')) - { - $media = $this->pushSpecialBlock("media"); - $media->queries = is_null($mediaQueries) ? array() : $mediaQueries; - return true; - } else { - $this->seek($s); - return false; - } - } - - if ($this->literal("@", false) && $this->keyword($dirName)) { - if ($this->isDirective($dirName, $this->blockDirectives)) { - if (($this->openString("{", $dirValue, null, array(";")) || true) && - $this->literal("{")) - { - $dir = $this->pushSpecialBlock("directive"); - $dir->name = $dirName; - if (isset($dirValue)) $dir->value = $dirValue; - return true; - } - } elseif ($this->isDirective($dirName, $this->lineDirectives)) { - if ($this->propertyValue($dirValue) && $this->end()) { - $this->append(array("directive", $dirName, $dirValue)); - return true; - } - } - } - - $this->seek($s); - } - - // setting a variable - if ($this->variable($var) && $this->assign() && - $this->propertyValue($value) && $this->end()) - { - $this->append(array('assign', $var, $value), $s); - return true; - } else { - $this->seek($s); - } - - if ($this->import($importValue)) { - $this->append($importValue, $s); - return true; - } - - // opening parametric mixin - if ($this->tag($tag, true) && $this->argumentDef($args, $isVararg) && - ($this->guards($guards) || true) && - $this->literal('{')) - { - $block = $this->pushBlock($this->fixTags(array($tag))); - $block->args = $args; - $block->isVararg = $isVararg; - if (!empty($guards)) $block->guards = $guards; - return true; - } else { - $this->seek($s); - } - - // opening a simple block - if ($this->tags($tags) && $this->literal('{', false)) { - $tags = $this->fixTags($tags); - $this->pushBlock($tags); - return true; - } else { - $this->seek($s); - } - - // closing a block - if ($this->literal('}', false)) { - try { - $block = $this->pop(); - } catch (exception $e) { - $this->seek($s); - $this->throwError($e->getMessage()); - } - - $hidden = false; - if (is_null($block->type)) { - $hidden = true; - if (!isset($block->args)) { - foreach ($block->tags as $tag) { - if (!is_string($tag) || $tag{0} != $this->lessc->mPrefix) { - $hidden = false; - break; - } - } - } - - foreach ($block->tags as $tag) { - if (is_string($tag)) { - $this->env->children[$tag][] = $block; - } - } - } - - if (!$hidden) { - $this->append(array('block', $block), $s); - } - - // this is done here so comments aren't bundled into he block that - // was just closed - $this->whitespace(); - return true; - } - - // mixin - if ($this->mixinTags($tags) && - ($this->argumentDef($argv, $isVararg) || true) && - ($this->keyword($suffix) || true) && $this->end()) - { - $tags = $this->fixTags($tags); - $this->append(array('mixin', $tags, $argv, $suffix), $s); - return true; - } else { - $this->seek($s); - } - - // spare ; - if ($this->literal(';')) return true; - - return false; // got nothing, throw error - } - - protected function isDirective($dirname, $directives) { - // TODO: cache pattern in parser - $pattern = implode("|", - array_map(array("lessc", "preg_quote"), $directives)); - $pattern = '/^(-[a-z-]+-)?(' . $pattern . ')$/i'; - - return preg_match($pattern, $dirname); - } - - protected function fixTags($tags) { - // move @ tags out of variable namespace - foreach ($tags as &$tag) { - if ($tag{0} == $this->lessc->vPrefix) - $tag[0] = $this->lessc->mPrefix; - } - return $tags; - } - - // a list of expressions - protected function expressionList(&$exps) { - $values = array(); - - while ($this->expression($exp)) { - $values[] = $exp; - } - - if (count($values) == 0) return false; - - $exps = lessc::compressList($values, ' '); - return true; - } - - /** - * Attempt to consume an expression. - * @link http://en.wikipedia.org/wiki/Operator-precedence_parser#Pseudo-code - */ - protected function expression(&$out) { - if ($this->value($lhs)) { - $out = $this->expHelper($lhs, 0); - - // look for / shorthand - if (!empty($this->env->supressedDivision)) { - unset($this->env->supressedDivision); - $s = $this->seek(); - if ($this->literal("/") && $this->value($rhs)) { - $out = array("list", "", - array($out, array("keyword", "/"), $rhs)); - } else { - $this->seek($s); - } - } - - return true; - } - return false; - } - - /** - * recursively parse infix equation with $lhs at precedence $minP - */ - protected function expHelper($lhs, $minP) { - $this->inExp = true; - $ss = $this->seek(); - - while (true) { - $whiteBefore = isset($this->buffer[$this->count - 1]) && - ctype_space($this->buffer[$this->count - 1]); - - // If there is whitespace before the operator, then we require - // whitespace after the operator for it to be an expression - $needWhite = $whiteBefore && !$this->inParens; - - if ($this->match(self::$operatorString.($needWhite ? '\s' : ''), $m) && self::$precedence[$m[1]] >= $minP) { - if (!$this->inParens && isset($this->env->currentProperty) && $m[1] == "/" && empty($this->env->supressedDivision)) { - foreach (self::$supressDivisionProps as $pattern) { - if (preg_match($pattern, $this->env->currentProperty)) { - $this->env->supressedDivision = true; - break 2; - } - } - } - - - $whiteAfter = isset($this->buffer[$this->count - 1]) && - ctype_space($this->buffer[$this->count - 1]); - - if (!$this->value($rhs)) break; - - // peek for next operator to see what to do with rhs - if ($this->peek(self::$operatorString, $next) && self::$precedence[$next[1]] > self::$precedence[$m[1]]) { - $rhs = $this->expHelper($rhs, self::$precedence[$next[1]]); - } - - $lhs = array('expression', $m[1], $lhs, $rhs, $whiteBefore, $whiteAfter); - $ss = $this->seek(); - - continue; - } - - break; - } - - $this->seek($ss); - - return $lhs; - } - - // consume a list of values for a property - public function propertyValue(&$value, $keyName = null) { - $values = array(); - - if ($keyName !== null) $this->env->currentProperty = $keyName; - - $s = null; - while ($this->expressionList($v)) { - $values[] = $v; - $s = $this->seek(); - if (!$this->literal(',')) break; - } - - if ($s) $this->seek($s); - - if ($keyName !== null) unset($this->env->currentProperty); - - if (count($values) == 0) return false; - - $value = lessc::compressList($values, ', '); - return true; - } - - protected function parenValue(&$out) { - $s = $this->seek(); - - // speed shortcut - if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] != "(") { - return false; - } - - $inParens = $this->inParens; - if ($this->literal("(") && - ($this->inParens = true) && $this->expression($exp) && - $this->literal(")")) - { - $out = $exp; - $this->inParens = $inParens; - return true; - } else { - $this->inParens = $inParens; - $this->seek($s); - } - - return false; - } - - // a single value - protected function value(&$value) { - $s = $this->seek(); - - // speed shortcut - if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "-") { - // negation - if ($this->literal("-", false) && - (($this->variable($inner) && $inner = array("variable", $inner)) || - $this->unit($inner) || - $this->parenValue($inner))) - { - $value = array("unary", "-", $inner); - return true; - } else { - $this->seek($s); - } - } - - if ($this->parenValue($value)) return true; - if ($this->unit($value)) return true; - if ($this->color($value)) return true; - if ($this->func($value)) return true; - if ($this->string($value)) return true; - - if ($this->keyword($word)) { - $value = array('keyword', $word); - return true; - } - - // try a variable - if ($this->variable($var)) { - $value = array('variable', $var); - return true; - } - - // unquote string (should this work on any type? - if ($this->literal("~") && $this->string($str)) { - $value = array("escape", $str); - return true; - } else { - $this->seek($s); - } - - // css hack: \0 - if ($this->literal('\\') && $this->match('([0-9]+)', $m)) { - $value = array('keyword', '\\'.$m[1]); - return true; - } else { - $this->seek($s); - } - - return false; - } - - // an import statement - protected function import(&$out) { - if (!$this->literal('@import')) return false; - - // @import "something.css" media; - // @import url("something.css") media; - // @import url(something.css) media; - - if ($this->propertyValue($value)) { - $out = array("import", $value); - return true; - } - } - - protected function mediaQueryList(&$out) { - if ($this->genericList($list, "mediaQuery", ",", false)) { - $out = $list[2]; - return true; - } - return false; - } - - protected function mediaQuery(&$out) { - $s = $this->seek(); - - $expressions = null; - $parts = array(); - - if (($this->literal("only") && ($only = true) || $this->literal("not") && ($not = true) || true) && $this->keyword($mediaType)) { - $prop = array("mediaType"); - if (isset($only)) $prop[] = "only"; - if (isset($not)) $prop[] = "not"; - $prop[] = $mediaType; - $parts[] = $prop; - } else { - $this->seek($s); - } - - - if (!empty($mediaType) && !$this->literal("and")) { - // ~ - } else { - $this->genericList($expressions, "mediaExpression", "and", false); - if (is_array($expressions)) $parts = array_merge($parts, $expressions[2]); - } - - if (count($parts) == 0) { - $this->seek($s); - return false; - } - - $out = $parts; - return true; - } - - protected function mediaExpression(&$out) { - $s = $this->seek(); - $value = null; - if ($this->literal("(") && - $this->keyword($feature) && - ($this->literal(":") && $this->expression($value) || true) && - $this->literal(")")) - { - $out = array("mediaExp", $feature); - if ($value) $out[] = $value; - return true; - } elseif ($this->variable($variable)) { - $out = array('variable', $variable); - return true; - } - - $this->seek($s); - return false; - } - - // an unbounded string stopped by $end - protected function openString($end, &$out, $nestingOpen=null, $rejectStrs = null) { - $oldWhite = $this->eatWhiteDefault; - $this->eatWhiteDefault = false; - - $stop = array("'", '"', "@{", $end); - $stop = array_map(array("lessc", "preg_quote"), $stop); - // $stop[] = self::$commentMulti; - - if (!is_null($rejectStrs)) { - $stop = array_merge($stop, $rejectStrs); - } - - $patt = '(.*?)('.implode("|", $stop).')'; - - $nestingLevel = 0; - - $content = array(); - while ($this->match($patt, $m, false)) { - if (!empty($m[1])) { - $content[] = $m[1]; - if ($nestingOpen) { - $nestingLevel += substr_count($m[1], $nestingOpen); - } - } - - $tok = $m[2]; - - $this->count-= strlen($tok); - if ($tok == $end) { - if ($nestingLevel == 0) { - break; - } else { - $nestingLevel--; - } - } - - if (($tok == "'" || $tok == '"') && $this->string($str)) { - $content[] = $str; - continue; - } - - if ($tok == "@{" && $this->interpolation($inter)) { - $content[] = $inter; - continue; - } - - if (!empty($rejectStrs) && in_array($tok, $rejectStrs)) { - break; - } - - $content[] = $tok; - $this->count+= strlen($tok); - } - - $this->eatWhiteDefault = $oldWhite; - - if (count($content) == 0) return false; - - // trim the end - if (is_string(end($content))) { - $content[count($content) - 1] = rtrim(end($content)); - } - - $out = array("string", "", $content); - return true; - } - - protected function string(&$out) { - $s = $this->seek(); - if ($this->literal('"', false)) { - $delim = '"'; - } elseif ($this->literal("'", false)) { - $delim = "'"; - } else { - return false; - } - - $content = array(); - - // look for either ending delim , escape, or string interpolation - $patt = '([^\n]*?)(@\{|\\\\|' . - lessc::preg_quote($delim).')'; - - $oldWhite = $this->eatWhiteDefault; - $this->eatWhiteDefault = false; - - while ($this->match($patt, $m, false)) { - $content[] = $m[1]; - if ($m[2] == "@{") { - $this->count -= strlen($m[2]); - if ($this->interpolation($inter, false)) { - $content[] = $inter; - } else { - $this->count += strlen($m[2]); - $content[] = "@{"; // ignore it - } - } elseif ($m[2] == '\\') { - $content[] = $m[2]; - if ($this->literal($delim, false)) { - $content[] = $delim; - } - } else { - $this->count -= strlen($delim); - break; // delim - } - } - - $this->eatWhiteDefault = $oldWhite; - - if ($this->literal($delim)) { - $out = array("string", $delim, $content); - return true; - } - - $this->seek($s); - return false; - } - - protected function interpolation(&$out) { - $oldWhite = $this->eatWhiteDefault; - $this->eatWhiteDefault = true; - - $s = $this->seek(); - if ($this->literal("@{") && - $this->openString("}", $interp, null, array("'", '"', ";")) && - $this->literal("}", false)) - { - $out = array("interpolate", $interp); - $this->eatWhiteDefault = $oldWhite; - if ($this->eatWhiteDefault) $this->whitespace(); - return true; - } - - $this->eatWhiteDefault = $oldWhite; - $this->seek($s); - return false; - } - - protected function unit(&$unit) { - // speed shortcut - if (isset($this->buffer[$this->count])) { - $char = $this->buffer[$this->count]; - if (!ctype_digit($char) && $char != ".") return false; - } - - if ($this->match('([0-9]+(?:\.[0-9]*)?|\.[0-9]+)([%a-zA-Z]+)?', $m)) { - $unit = array("number", $m[1], empty($m[2]) ? "" : $m[2]); - return true; - } - return false; - } - - // a # color - protected function color(&$out) { - if ($this->match('(#(?:[0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{3}))', $m)) { - if (strlen($m[1]) > 7) { - $out = array("string", "", array($m[1])); - } else { - $out = array("raw_color", $m[1]); - } - return true; - } - - return false; - } - - // consume an argument definition list surrounded by () - // each argument is a variable name with optional value - // or at the end a ... or a variable named followed by ... - // arguments are separated by , unless a ; is in the list, then ; is the - // delimiter. - protected function argumentDef(&$args, &$isVararg) { - $s = $this->seek(); - if (!$this->literal('(')) return false; - - $values = array(); - $delim = ","; - $method = "expressionList"; - - $isVararg = false; - while (true) { - if ($this->literal("...")) { - $isVararg = true; - break; - } - - if ($this->$method($value)) { - if ($value[0] == "variable") { - $arg = array("arg", $value[1]); - $ss = $this->seek(); - - if ($this->assign() && $this->$method($rhs)) { - $arg[] = $rhs; - } else { - $this->seek($ss); - if ($this->literal("...")) { - $arg[0] = "rest"; - $isVararg = true; - } - } - - $values[] = $arg; - if ($isVararg) break; - continue; - } else { - $values[] = array("lit", $value); - } - } - - - if (!$this->literal($delim)) { - if ($delim == "," && $this->literal(";")) { - // found new delim, convert existing args - $delim = ";"; - $method = "propertyValue"; - - // transform arg list - if (isset($values[1])) { // 2 items - $newList = array(); - foreach ($values as $i => $arg) { - switch($arg[0]) { - case "arg": - if ($i) { - $this->throwError("Cannot mix ; and , as delimiter types"); - } - $newList[] = $arg[2]; - break; - case "lit": - $newList[] = $arg[1]; - break; - case "rest": - $this->throwError("Unexpected rest before semicolon"); - } - } - - $newList = array("list", ", ", $newList); - - switch ($values[0][0]) { - case "arg": - $newArg = array("arg", $values[0][1], $newList); - break; - case "lit": - $newArg = array("lit", $newList); - break; - } - - } elseif ($values) { // 1 item - $newArg = $values[0]; - } - - if ($newArg) { - $values = array($newArg); - } - } else { - break; - } - } - } - - if (!$this->literal(')')) { - $this->seek($s); - return false; - } - - $args = $values; - - return true; - } - - // consume a list of tags - // this accepts a hanging delimiter - protected function tags(&$tags, $simple = false, $delim = ',') { - $tags = array(); - while ($this->tag($tt, $simple)) { - $tags[] = $tt; - if (!$this->literal($delim)) break; - } - if (count($tags) == 0) return false; - - return true; - } - - // list of tags of specifying mixin path - // optionally separated by > (lazy, accepts extra >) - protected function mixinTags(&$tags) { - $tags = array(); - while ($this->tag($tt, true)) { - $tags[] = $tt; - $this->literal(">"); - } - - if (count($tags) == 0) return false; - - return true; - } - - // a bracketed value (contained within in a tag definition) - protected function tagBracket(&$parts, &$hasExpression) { - // speed shortcut - if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] != "[") { - return false; - } - - $s = $this->seek(); - - $hasInterpolation = false; - - if ($this->literal("[", false)) { - $attrParts = array("["); - // keyword, string, operator - while (true) { - if ($this->literal("]", false)) { - $this->count--; - break; // get out early - } - - if ($this->match('\s+', $m)) { - $attrParts[] = " "; - continue; - } - if ($this->string($str)) { - // escape parent selector, (yuck) - foreach ($str[2] as &$chunk) { - $chunk = str_replace($this->lessc->parentSelector, "$&$", $chunk); - } - - $attrParts[] = $str; - $hasInterpolation = true; - continue; - } - - if ($this->keyword($word)) { - $attrParts[] = $word; - continue; - } - - if ($this->interpolation($inter, false)) { - $attrParts[] = $inter; - $hasInterpolation = true; - continue; - } - - // operator, handles attr namespace too - if ($this->match('[|-~\$\*\^=]+', $m)) { - $attrParts[] = $m[0]; - continue; - } - - break; - } - - if ($this->literal("]", false)) { - $attrParts[] = "]"; - foreach ($attrParts as $part) { - $parts[] = $part; - } - $hasExpression = $hasExpression || $hasInterpolation; - return true; - } - $this->seek($s); - } - - $this->seek($s); - return false; - } - - // a space separated list of selectors - protected function tag(&$tag, $simple = false) { - if ($simple) - $chars = '^@,:;{}\][>\(\) "\''; - else - $chars = '^@,;{}["\''; - - $s = $this->seek(); - - $hasExpression = false; - $parts = array(); - while ($this->tagBracket($parts, $hasExpression)); - - $oldWhite = $this->eatWhiteDefault; - $this->eatWhiteDefault = false; - - while (true) { - if ($this->match('(['.$chars.'0-9]['.$chars.']*)', $m)) { - $parts[] = $m[1]; - if ($simple) break; - - while ($this->tagBracket($parts, $hasExpression)); - continue; - } - - if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "@") { - if ($this->interpolation($interp)) { - $hasExpression = true; - $interp[2] = true; // don't unescape - $parts[] = $interp; - continue; - } - - if ($this->literal("@")) { - $parts[] = "@"; - continue; - } - } - - if ($this->unit($unit)) { // for keyframes - $parts[] = $unit[1]; - $parts[] = $unit[2]; - continue; - } - - break; - } - - $this->eatWhiteDefault = $oldWhite; - if (!$parts) { - $this->seek($s); - return false; - } - - if ($hasExpression) { - $tag = array("exp", array("string", "", $parts)); - } else { - $tag = trim(implode($parts)); - } - - $this->whitespace(); - return true; - } - - // a css function - protected function func(&$func) { - $s = $this->seek(); - - if ($this->match('(%|[\w\-_][\w\-_:\.]+|[\w_])', $m) && $this->literal('(')) { - $fname = $m[1]; - - $sPreArgs = $this->seek(); - - $args = array(); - while (true) { - $ss = $this->seek(); - // this ugly nonsense is for ie filter properties - if ($this->keyword($name) && $this->literal('=') && $this->expressionList($value)) { - $args[] = array("string", "", array($name, "=", $value)); - } else { - $this->seek($ss); - if ($this->expressionList($value)) { - $args[] = $value; - } - } - - if (!$this->literal(',')) break; - } - $args = array('list', ',', $args); - - if ($this->literal(')')) { - $func = array('function', $fname, $args); - return true; - } elseif ($fname == 'url') { - // couldn't parse and in url? treat as string - $this->seek($sPreArgs); - if ($this->openString(")", $string) && $this->literal(")")) { - $func = array('function', $fname, $string); - return true; - } - } - } - - $this->seek($s); - return false; - } - - // consume a less variable - protected function variable(&$name) { - $s = $this->seek(); - if ($this->literal($this->lessc->vPrefix, false) && - ($this->variable($sub) || $this->keyword($name))) - { - if (!empty($sub)) { - $name = array('variable', $sub); - } else { - $name = $this->lessc->vPrefix.$name; - } - return true; - } - - $name = null; - $this->seek($s); - return false; - } - - /** - * Consume an assignment operator - * Can optionally take a name that will be set to the current property name - */ - protected function assign($name = null) { - if ($name) $this->currentProperty = $name; - return $this->literal(':') || $this->literal('='); - } - - // consume a keyword - protected function keyword(&$word) { - if ($this->match('([\w_\-\*!"][\w\-_"]*)', $m)) { - $word = $m[1]; - return true; - } - return false; - } - - // consume an end of statement delimiter - protected function end() { - if ($this->literal(';', false)) { - return true; - } elseif ($this->count == strlen($this->buffer) || $this->buffer[$this->count] == '}') { - // if there is end of file or a closing block next then we don't need a ; - return true; - } - return false; - } - - protected function guards(&$guards) { - $s = $this->seek(); - - if (!$this->literal("when")) { - $this->seek($s); - return false; - } - - $guards = array(); - - while ($this->guardGroup($g)) { - $guards[] = $g; - if (!$this->literal(",")) break; - } - - if (count($guards) == 0) { - $guards = null; - $this->seek($s); - return false; - } - - return true; - } - - // a bunch of guards that are and'd together - // TODO rename to guardGroup - protected function guardGroup(&$guardGroup) { - $s = $this->seek(); - $guardGroup = array(); - while ($this->guard($guard)) { - $guardGroup[] = $guard; - if (!$this->literal("and")) break; - } - - if (count($guardGroup) == 0) { - $guardGroup = null; - $this->seek($s); - return false; - } - - return true; - } - - protected function guard(&$guard) { - $s = $this->seek(); - $negate = $this->literal("not"); - - if ($this->literal("(") && $this->expression($exp) && $this->literal(")")) { - $guard = $exp; - if ($negate) $guard = array("negate", $guard); - return true; - } - - $this->seek($s); - return false; - } - - /* raw parsing functions */ - - protected function literal($what, $eatWhitespace = null) { - if ($eatWhitespace === null) $eatWhitespace = $this->eatWhiteDefault; - - // shortcut on single letter - if (!isset($what[1]) && isset($this->buffer[$this->count])) { - if ($this->buffer[$this->count] == $what) { - if (!$eatWhitespace) { - $this->count++; - return true; - } - // goes below... - } else { - return false; - } - } - - if (!isset(self::$literalCache[$what])) { - self::$literalCache[$what] = lessc::preg_quote($what); - } - - return $this->match(self::$literalCache[$what], $m, $eatWhitespace); - } - - protected function genericList(&$out, $parseItem, $delim="", $flatten=true) { - $s = $this->seek(); - $items = array(); - while ($this->$parseItem($value)) { - $items[] = $value; - if ($delim) { - if (!$this->literal($delim)) break; - } - } - - if (count($items) == 0) { - $this->seek($s); - return false; - } - - if ($flatten && count($items) == 1) { - $out = $items[0]; - } else { - $out = array("list", $delim, $items); - } - - return true; - } - - - // advance counter to next occurrence of $what - // $until - don't include $what in advance - // $allowNewline, if string, will be used as valid char set - protected function to($what, &$out, $until = false, $allowNewline = false) { - if (is_string($allowNewline)) { - $validChars = $allowNewline; - } else { - $validChars = $allowNewline ? "." : "[^\n]"; - } - if (!$this->match('('.$validChars.'*?)'.lessc::preg_quote($what), $m, !$until)) return false; - if ($until) $this->count -= strlen($what); // give back $what - $out = $m[1]; - return true; - } - - // try to match something on head of buffer - protected function match($regex, &$out, $eatWhitespace = null) { - if ($eatWhitespace === null) $eatWhitespace = $this->eatWhiteDefault; - - $r = '/'.$regex.($eatWhitespace && !$this->writeComments ? '\s*' : '').'/Ais'; - if (preg_match($r, $this->buffer, $out, null, $this->count)) { - $this->count += strlen($out[0]); - if ($eatWhitespace && $this->writeComments) $this->whitespace(); - return true; - } - return false; - } - - // match some whitespace - protected function whitespace() { - if ($this->writeComments) { - $gotWhite = false; - while (preg_match(self::$whitePattern, $this->buffer, $m, null, $this->count)) { - if (isset($m[1]) && empty($this->seenComments[$this->count])) { - $this->append(array("comment", $m[1])); - $this->seenComments[$this->count] = true; - } - $this->count += strlen($m[0]); - $gotWhite = true; - } - return $gotWhite; - } else { - $this->match("", $m); - return strlen($m[0]) > 0; - } - } - - // match something without consuming it - protected function peek($regex, &$out = null, $from=null) { - if (is_null($from)) $from = $this->count; - $r = '/'.$regex.'/Ais'; - $result = preg_match($r, $this->buffer, $out, null, $from); - - return $result; - } - - // seek to a spot in the buffer or return where we are on no argument - protected function seek($where = null) { - if ($where === null) return $this->count; - else $this->count = $where; - return true; - } - - /* misc functions */ - - public function throwError($msg = "parse error", $count = null) { - $count = is_null($count) ? $this->count : $count; - - $line = $this->line + - substr_count(substr($this->buffer, 0, $count), "\n"); - - if (!empty($this->sourceName)) { - $loc = "$this->sourceName on line $line"; - } else { - $loc = "line: $line"; - } - - // TODO this depends on $this->count - if ($this->peek("(.*?)(\n|$)", $m, $count)) { - throw new exception("$msg: failed at `$m[1]` $loc"); - } else { - throw new exception("$msg: $loc"); - } - } - - protected function pushBlock($selectors=null, $type=null) { - $b = new stdclass; - $b->parent = $this->env; - - $b->type = $type; - $b->id = self::$nextBlockId++; - - $b->isVararg = false; // TODO: kill me from here - $b->tags = $selectors; - - $b->props = array(); - $b->children = array(); - - $this->env = $b; - return $b; - } - - // push a block that doesn't multiply tags - protected function pushSpecialBlock($type) { - return $this->pushBlock(null, $type); - } - - // append a property to the current block - protected function append($prop, $pos = null) { - if ($pos !== null) $prop[-1] = $pos; - $this->env->props[] = $prop; - } - - // pop something off the stack - protected function pop() { - $old = $this->env; - $this->env = $this->env->parent; - return $old; - } - - // remove comments from $text - // todo: make it work for all functions, not just url - protected function removeComments($text) { - $look = array( - 'url(', '//', '/*', '"', "'" - ); - - $out = ''; - $min = null; - while (true) { - // find the next item - foreach ($look as $token) { - $pos = strpos($text, $token); - if ($pos !== false) { - if (!isset($min) || $pos < $min[1]) $min = array($token, $pos); - } - } - - if (is_null($min)) break; - - $count = $min[1]; - $skip = 0; - $newlines = 0; - switch ($min[0]) { - case 'url(': - if (preg_match('/url\(.*?\)/', $text, $m, 0, $count)) - $count += strlen($m[0]) - strlen($min[0]); - break; - case '"': - case "'": - if (preg_match('/'.$min[0].'.*?(?indentLevel = 0; - } - - public function indentStr($n = 0) { - return str_repeat($this->indentChar, max($this->indentLevel + $n, 0)); - } - - public function property($name, $value) { - return $name . $this->assignSeparator . $value . ";"; - } - - protected function isEmpty($block) { - if (empty($block->lines)) { - foreach ($block->children as $child) { - if (!$this->isEmpty($child)) return false; - } - - return true; - } - return false; - } - - public function block($block) { - if ($this->isEmpty($block)) return; - - $inner = $pre = $this->indentStr(); - - $isSingle = !$this->disableSingle && - is_null($block->type) && count($block->lines) == 1; - - if (!empty($block->selectors)) { - $this->indentLevel++; - - if ($this->breakSelectors) { - $selectorSeparator = $this->selectorSeparator . $this->break . $pre; - } else { - $selectorSeparator = $this->selectorSeparator; - } - - echo $pre . - implode($selectorSeparator, $block->selectors); - if ($isSingle) { - echo $this->openSingle; - $inner = ""; - } else { - echo $this->open . $this->break; - $inner = $this->indentStr(); - } - - } - - if (!empty($block->lines)) { - $glue = $this->break.$inner; - echo $inner . implode($glue, $block->lines); - if (!$isSingle && !empty($block->children)) { - echo $this->break; - } - } - - foreach ($block->children as $child) { - $this->block($child); - } - - if (!empty($block->selectors)) { - if (!$isSingle && empty($block->children)) echo $this->break; - - if ($isSingle) { - echo $this->closeSingle . $this->break; - } else { - echo $pre . $this->close . $this->break; - } - - $this->indentLevel--; - } - } -} - -class lessc_formatter_compressed extends lessc_formatter_classic { - public $disableSingle = true; - public $open = "{"; - public $selectorSeparator = ","; - public $assignSeparator = ":"; - public $break = ""; - public $compressColors = true; - - public function indentStr($n = 0) { - return ""; - } -} - -class lessc_formatter_lessjs extends lessc_formatter_classic { - public $disableSingle = true; - public $breakSelectors = true; - public $assignSeparator = ": "; - public $selectorSeparator = ","; -} - diff --git a/includes/libraries/class-scssc.php b/includes/libraries/class-scssc.php new file mode 100644 index 00000000000..e60349c09b7 --- /dev/null +++ b/includes/libraries/class-scssc.php @@ -0,0 +1,4574 @@ + + */ +class scssc { + static public $VERSION = 'v0.0.12'; + + static protected $operatorNames = array( + '+' => "add", + '-' => "sub", + '*' => "mul", + '/' => "div", + '%' => "mod", + + '==' => "eq", + '!=' => "neq", + '<' => "lt", + '>' => "gt", + + '<=' => "lte", + '>=' => "gte", + ); + + static protected $namespaces = array( + "special" => "%", + "mixin" => "@", + "function" => "^", + ); + + static protected $unitTable = array( + "in" => array( + "in" => 1, + "pt" => 72, + "pc" => 6, + "cm" => 2.54, + "mm" => 25.4, + "px" => 96, + ) + ); + + static public $true = array("keyword", "true"); + static public $false = array("keyword", "false"); + static public $null = array("null"); + + static public $defaultValue = array("keyword", ""); + static public $selfSelector = array("self"); + + protected $importPaths = array(""); + protected $importCache = array(); + + protected $userFunctions = array(); + protected $registeredVars = array(); + + protected $numberPrecision = 5; + + protected $formatter = "scss_formatter_nested"; + + /** + * Compile scss + * + * @param string $code + * @param string $name + * + * @return string + */ + public function compile($code, $name = null) + { + $this->indentLevel = -1; + $this->commentsSeen = array(); + $this->extends = array(); + $this->extendsMap = array(); + $this->parsedFiles = array(); + $this->env = null; + $this->scope = null; + + $locale = setlocale(LC_NUMERIC, 0); + setlocale(LC_NUMERIC, "C"); + + $this->parser = new scss_parser($name); + + $tree = $this->parser->parse($code); + + $this->formatter = new $this->formatter(); + + $this->pushEnv($tree); + $this->injectVariables($this->registeredVars); + $this->compileRoot($tree); + $this->popEnv(); + + $out = $this->formatter->format($this->scope); + + setlocale(LC_NUMERIC, $locale); + + return $out; + } + + protected function isSelfExtend($target, $origin) { + foreach ($origin as $sel) { + if (in_array($target, $sel)) { + return true; + } + } + + return false; + } + + protected function pushExtends($target, $origin) { + if ($this->isSelfExtend($target, $origin)) { + return; + } + + $i = count($this->extends); + $this->extends[] = array($target, $origin); + + foreach ($target as $part) { + if (isset($this->extendsMap[$part])) { + $this->extendsMap[$part][] = $i; + } else { + $this->extendsMap[$part] = array($i); + } + } + } + + protected function makeOutputBlock($type, $selectors = null) { + $out = new stdClass; + $out->type = $type; + $out->lines = array(); + $out->children = array(); + $out->parent = $this->scope; + $out->selectors = $selectors; + $out->depth = $this->env->depth; + + return $out; + } + + protected function matchExtendsSingle($single, &$outOrigin) { + $counts = array(); + foreach ($single as $part) { + if (!is_string($part)) return false; // hmm + + if (isset($this->extendsMap[$part])) { + foreach ($this->extendsMap[$part] as $idx) { + $counts[$idx] = + isset($counts[$idx]) ? $counts[$idx] + 1 : 1; + } + } + } + + $outOrigin = array(); + $found = false; + + foreach ($counts as $idx => $count) { + list($target, $origin) = $this->extends[$idx]; + + // check count + if ($count != count($target)) continue; + + // check if target is subset of single + if (array_diff(array_intersect($single, $target), $target)) continue; + + $rem = array_diff($single, $target); + + foreach ($origin as $j => $new) { + // prevent infinite loop when target extends itself + foreach ($new as $new_selector) { + if (!array_diff($single, $new_selector)) { + continue 2; + } + } + + $origin[$j][count($origin[$j]) - 1] = $this->combineSelectorSingle(end($new), $rem); + } + + $outOrigin = array_merge($outOrigin, $origin); + + $found = true; + } + + return $found; + } + + protected function combineSelectorSingle($base, $other) { + $tag = null; + $out = array(); + + foreach (array($base, $other) as $single) { + foreach ($single as $part) { + if (preg_match('/^[^\[.#:]/', $part)) { + $tag = $part; + } else { + $out[] = $part; + } + } + } + + if ($tag) { + array_unshift($out, $tag); + } + + return $out; + } + + protected function matchExtends($selector, &$out, $from = 0, $initial=true) { + foreach ($selector as $i => $part) { + if ($i < $from) continue; + + if ($this->matchExtendsSingle($part, $origin)) { + $before = array_slice($selector, 0, $i); + $after = array_slice($selector, $i + 1); + + foreach ($origin as $new) { + $k = 0; + + // remove shared parts + if ($initial) { + foreach ($before as $k => $val) { + if (!isset($new[$k]) || $val != $new[$k]) { + break; + } + } + } + + $result = array_merge( + $before, + $k > 0 ? array_slice($new, $k) : $new, + $after); + + + if ($result == $selector) continue; + $out[] = $result; + + // recursively check for more matches + $this->matchExtends($result, $out, $i, false); + + // selector sequence merging + if (!empty($before) && count($new) > 1) { + $result2 = array_merge( + array_slice($new, 0, -1), + $k > 0 ? array_slice($before, $k) : $before, + array_slice($new, -1), + $after); + + $out[] = $result2; + } + } + } + } + } + + protected function flattenSelectors($block, $parentKey = null) { + if ($block->selectors) { + $selectors = array(); + foreach ($block->selectors as $s) { + $selectors[] = $s; + if (!is_array($s)) continue; + // check extends + if (!empty($this->extendsMap)) { + $this->matchExtends($s, $selectors); + } + } + + $block->selectors = array(); + $placeholderSelector = false; + foreach ($selectors as $selector) { + if ($this->hasSelectorPlaceholder($selector)) { + $placeholderSelector = true; + continue; + } + $block->selectors[] = $this->compileSelector($selector); + } + + if ($placeholderSelector && 0 == count($block->selectors) && null !== $parentKey) { + unset($block->parent->children[$parentKey]); + return; + } + } + + foreach ($block->children as $key => $child) { + $this->flattenSelectors($child, $key); + } + } + + protected function compileRoot($rootBlock) + { + $this->scope = $this->makeOutputBlock('root'); + + $this->compileChildren($rootBlock->children, $this->scope); + $this->flattenSelectors($this->scope); + } + + protected function compileMedia($media) { + $this->pushEnv($media); + + $mediaQuery = $this->compileMediaQuery($this->multiplyMedia($this->env)); + + if (!empty($mediaQuery)) { + + $this->scope = $this->makeOutputBlock("media", array($mediaQuery)); + + $parentScope = $this->mediaParent($this->scope); + + $parentScope->children[] = $this->scope; + + // top level properties in a media cause it to be wrapped + $needsWrap = false; + foreach ($media->children as $child) { + $type = $child[0]; + if ($type !== 'block' && $type !== 'media' && $type !== 'directive') { + $needsWrap = true; + break; + } + } + + if ($needsWrap) { + $wrapped = (object)array( + "selectors" => array(), + "children" => $media->children + ); + $media->children = array(array("block", $wrapped)); + } + + $this->compileChildren($media->children, $this->scope); + + $this->scope = $this->scope->parent; + } + + $this->popEnv(); + } + + protected function mediaParent($scope) { + while (!empty($scope->parent)) { + if (!empty($scope->type) && $scope->type != "media") { + break; + } + $scope = $scope->parent; + } + + return $scope; + } + + // TODO refactor compileNestedBlock and compileMedia into same thing + protected function compileNestedBlock($block, $selectors) { + $this->pushEnv($block); + + $this->scope = $this->makeOutputBlock($block->type, $selectors); + $this->scope->parent->children[] = $this->scope; + $this->compileChildren($block->children, $this->scope); + + $this->scope = $this->scope->parent; + $this->popEnv(); + } + + /** + * Recursively compiles a block. + * + * A block is analogous to a CSS block in most cases. A single SCSS document + * is encapsulated in a block when parsed, but it does not have parent tags + * so all of its children appear on the root level when compiled. + * + * Blocks are made up of selectors and children. + * + * The children of a block are just all the blocks that are defined within. + * + * Compiling the block involves pushing a fresh environment on the stack, + * and iterating through the props, compiling each one. + * + * @see scss::compileChild() + * + * @param \StdClass $block + */ + protected function compileBlock($block) { + $env = $this->pushEnv($block); + + $env->selectors = + array_map(array($this, "evalSelector"), $block->selectors); + + $out = $this->makeOutputBlock(null, $this->multiplySelectors($env)); + $this->scope->children[] = $out; + $this->compileChildren($block->children, $out); + + $this->popEnv(); + } + + // joins together .classes and #ids + protected function flattenSelectorSingle($single) { + $joined = array(); + foreach ($single as $part) { + if (empty($joined) || + !is_string($part) || + preg_match('/[\[.:#%]/', $part)) + { + $joined[] = $part; + continue; + } + + if (is_array(end($joined))) { + $joined[] = $part; + } else { + $joined[count($joined) - 1] .= $part; + } + } + + return $joined; + } + + // replaces all the interpolates + protected function evalSelector($selector) { + return array_map(array($this, "evalSelectorPart"), $selector); + } + + protected function evalSelectorPart($piece) { + foreach ($piece as &$p) { + if (!is_array($p)) continue; + + switch ($p[0]) { + case "interpolate": + $p = $this->compileValue($p); + break; + case "string": + $p = $this->compileValue($p); + break; + } + } + + return $this->flattenSelectorSingle($piece); + } + + // compiles to string + // self(&) should have been replaced by now + protected function compileSelector($selector) { + if (!is_array($selector)) return $selector; // media and the like + + return implode(" ", array_map( + array($this, "compileSelectorPart"), $selector)); + } + + protected function compileSelectorPart($piece) { + foreach ($piece as &$p) { + if (!is_array($p)) continue; + + switch ($p[0]) { + case "self": + $p = "&"; + break; + default: + $p = $this->compileValue($p); + break; + } + } + + return implode($piece); + } + + protected function hasSelectorPlaceholder($selector) + { + if (!is_array($selector)) return false; + + foreach ($selector as $parts) { + foreach ($parts as $part) { + if ('%' == $part[0]) { + return true; + } + } + } + + return false; + } + + protected function compileChildren($stms, $out) { + foreach ($stms as $stm) { + $ret = $this->compileChild($stm, $out); + if (isset($ret)) return $ret; + } + } + + protected function compileMediaQuery($queryList) { + $out = "@media"; + $first = true; + foreach ($queryList as $query){ + $type = null; + $parts = array(); + foreach ($query as $q) { + switch ($q[0]) { + case "mediaType": + if ($type) { + $type = $this->mergeMediaTypes($type, array_map(array($this, "compileValue"), array_slice($q, 1))); + if (empty($type)) { // merge failed + return null; + } + } else { + $type = array_map(array($this, "compileValue"), array_slice($q, 1)); + } + break; + case "mediaExp": + if (isset($q[2])) { + $parts[] = "(". $this->compileValue($q[1]) . $this->formatter->assignSeparator . $this->compileValue($q[2]) . ")"; + } else { + $parts[] = "(" . $this->compileValue($q[1]) . ")"; + } + break; + } + } + if ($type) { + array_unshift($parts, implode(' ', array_filter($type))); + } + if (!empty($parts)) { + if ($first) { + $first = false; + $out .= " "; + } else { + $out .= $this->formatter->tagSeparator; + } + $out .= implode(" and ", $parts); + } + } + return $out; + } + + protected function mergeMediaTypes($type1, $type2) { + if (empty($type1)) { + return $type2; + } + if (empty($type2)) { + return $type1; + } + $m1 = ''; + $t1 = ''; + if (count($type1) > 1) { + $m1= strtolower($type1[0]); + $t1= strtolower($type1[1]); + } else { + $t1 = strtolower($type1[0]); + } + $m2 = ''; + $t2 = ''; + if (count($type2) > 1) { + $m2 = strtolower($type2[0]); + $t2 = strtolower($type2[1]); + } else { + $t2 = strtolower($type2[0]); + } + if (($m1 == 'not') ^ ($m2 == 'not')) { + if ($t1 == $t2) { + return null; + } + return array( + $m1 == 'not' ? $m2 : $m1, + $m1 == 'not' ? $t2 : $t1 + ); + } elseif ($m1 == 'not' && $m2 == 'not') { + # CSS has no way of representing "neither screen nor print" + if ($t1 != $t2) { + return null; + } + return array('not', $t1); + } elseif ($t1 != $t2) { + return null; + } else { // t1 == t2, neither m1 nor m2 are "not" + return array(empty($m1)? $m2 : $m1, $t1); + } + } + + // returns true if the value was something that could be imported + protected function compileImport($rawPath, $out) { + if ($rawPath[0] == "string") { + $path = $this->compileStringContent($rawPath); + if ($path = $this->findImport($path)) { + $this->importFile($path, $out); + return true; + } + return false; + } + if ($rawPath[0] == "list") { + // handle a list of strings + if (count($rawPath[2]) == 0) return false; + foreach ($rawPath[2] as $path) { + if ($path[0] != "string") return false; + } + + foreach ($rawPath[2] as $path) { + $this->compileImport($path, $out); + } + + return true; + } + + return false; + } + + // return a value to halt execution + protected function compileChild($child, $out) { + $this->sourcePos = isset($child[-1]) ? $child[-1] : -1; + $this->sourceParser = isset($child[-2]) ? $child[-2] : $this->parser; + + switch ($child[0]) { + case "import": + list(,$rawPath) = $child; + $rawPath = $this->reduce($rawPath); + if (!$this->compileImport($rawPath, $out)) { + $out->lines[] = "@import " . $this->compileValue($rawPath) . ";"; + } + break; + case "directive": + list(, $directive) = $child; + $s = "@" . $directive->name; + if (!empty($directive->value)) { + $s .= " " . $this->compileValue($directive->value); + } + $this->compileNestedBlock($directive, array($s)); + break; + case "media": + $this->compileMedia($child[1]); + break; + case "block": + $this->compileBlock($child[1]); + break; + case "charset": + $out->lines[] = "@charset ".$this->compileValue($child[1]).";"; + break; + case "assign": + list(,$name, $value) = $child; + if ($name[0] == "var") { + $isDefault = !empty($child[3]); + + if ($isDefault) { + $existingValue = $this->get($name[1], true); + $shouldSet = $existingValue === true || $existingValue == self::$null; + } + + if (!$isDefault || $shouldSet) { + $this->set($name[1], $this->reduce($value)); + } + break; + } + + // if the value reduces to null from something else then + // the property should be discarded + if ($value[0] != "null") { + $value = $this->reduce($value); + if ($value[0] == "null") { + break; + } + } + + $compiledValue = $this->compileValue($value); + $out->lines[] = $this->formatter->property( + $this->compileValue($name), + $compiledValue); + break; + case "comment": + $out->lines[] = $child[1]; + break; + case "mixin": + case "function": + list(,$block) = $child; + $this->set(self::$namespaces[$block->type] . $block->name, $block); + break; + case "extend": + list(, $selectors) = $child; + foreach ($selectors as $sel) { + // only use the first one + $sel = current($this->evalSelector($sel)); + $this->pushExtends($sel, $out->selectors); + } + break; + case "if": + list(, $if) = $child; + if ($this->isTruthy($this->reduce($if->cond, true))) { + return $this->compileChildren($if->children, $out); + } else { + foreach ($if->cases as $case) { + if ($case->type == "else" || + $case->type == "elseif" && $this->isTruthy($this->reduce($case->cond))) + { + return $this->compileChildren($case->children, $out); + } + } + } + break; + case "return": + return $this->reduce($child[1], true); + case "each": + list(,$each) = $child; + $list = $this->coerceList($this->reduce($each->list)); + foreach ($list[2] as $item) { + $this->pushEnv(); + $this->set($each->var, $item); + // TODO: allow return from here + $this->compileChildren($each->children, $out); + $this->popEnv(); + } + break; + case "while": + list(,$while) = $child; + while ($this->isTruthy($this->reduce($while->cond, true))) { + $ret = $this->compileChildren($while->children, $out); + if ($ret) return $ret; + } + break; + case "for": + list(,$for) = $child; + $start = $this->reduce($for->start, true); + $start = $start[1]; + $end = $this->reduce($for->end, true); + $end = $end[1]; + $d = $start < $end ? 1 : -1; + + while (true) { + if ((!$for->until && $start - $d == $end) || + ($for->until && $start == $end)) + { + break; + } + + $this->set($for->var, array("number", $start, "")); + $start += $d; + + $ret = $this->compileChildren($for->children, $out); + if ($ret) return $ret; + } + + break; + case "nestedprop": + list(,$prop) = $child; + $prefixed = array(); + $prefix = $this->compileValue($prop->prefix) . "-"; + foreach ($prop->children as $child) { + if ($child[0] == "assign") { + array_unshift($child[1][2], $prefix); + } + if ($child[0] == "nestedprop") { + array_unshift($child[1]->prefix[2], $prefix); + } + $prefixed[] = $child; + } + $this->compileChildren($prefixed, $out); + break; + case "include": // including a mixin + list(,$name, $argValues, $content) = $child; + $mixin = $this->get(self::$namespaces["mixin"] . $name, false); + if (!$mixin) { + $this->throwError("Undefined mixin $name"); + } + + $callingScope = $this->env; + + // push scope, apply args + $this->pushEnv(); + if ($this->env->depth > 0) { + $this->env->depth--; + } + + if (isset($content)) { + $content->scope = $callingScope; + $this->setRaw(self::$namespaces["special"] . "content", $content); + } + + if (isset($mixin->args)) { + $this->applyArguments($mixin->args, $argValues); + } + + foreach ($mixin->children as $child) { + $this->compileChild($child, $out); + } + + $this->popEnv(); + + break; + case "mixin_content": + $content = $this->get(self::$namespaces["special"] . "content"); + if (!isset($content)) { + $this->throwError("Expected @content inside of mixin"); + } + + $strongTypes = array('include', 'block', 'for', 'while'); + foreach ($content->children as $child) { + $this->storeEnv = (in_array($child[0], $strongTypes)) + ? null + : $content->scope; + + $this->compileChild($child, $out); + } + + unset($this->storeEnv); + break; + case "debug": + list(,$value, $pos) = $child; + $line = $this->parser->getLineNo($pos); + $value = $this->compileValue($this->reduce($value, true)); + fwrite(STDERR, "Line $line DEBUG: $value\n"); + break; + default: + $this->throwError("unknown child type: $child[0]"); + } + } + + protected function expToString($exp) { + list(, $op, $left, $right, $inParens, $whiteLeft, $whiteRight) = $exp; + $content = array($this->reduce($left)); + if ($whiteLeft) $content[] = " "; + $content[] = $op; + if ($whiteRight) $content[] = " "; + $content[] = $this->reduce($right); + return array("string", "", $content); + } + + protected function isTruthy($value) { + return $value != self::$false && $value != self::$null; + } + + // should $value cause its operand to eval + protected function shouldEval($value) { + switch ($value[0]) { + case "exp": + if ($value[1] == "/") { + return $this->shouldEval($value[2], $value[3]); + } + case "var": + case "fncall": + return true; + } + return false; + } + + protected function reduce($value, $inExp = false) { + list($type) = $value; + switch ($type) { + case "exp": + list(, $op, $left, $right, $inParens) = $value; + $opName = isset(self::$operatorNames[$op]) ? self::$operatorNames[$op] : $op; + + $inExp = $inExp || $this->shouldEval($left) || $this->shouldEval($right); + + $left = $this->reduce($left, true); + $right = $this->reduce($right, true); + + // only do division in special cases + if ($opName == "div" && !$inParens && !$inExp) { + if ($left[0] != "color" && $right[0] != "color") { + return $this->expToString($value); + } + } + + $left = $this->coerceForExpression($left); + $right = $this->coerceForExpression($right); + + $ltype = $left[0]; + $rtype = $right[0]; + + // this tries: + // 1. op_[op name]_[left type]_[right type] + // 2. op_[left type]_[right type] (passing the op as first arg + // 3. op_[op name] + $fn = "op_${opName}_${ltype}_${rtype}"; + if (is_callable(array($this, $fn)) || + (($fn = "op_${ltype}_${rtype}") && + is_callable(array($this, $fn)) && + $passOp = true) || + (($fn = "op_${opName}") && + is_callable(array($this, $fn)) && + $genOp = true)) + { + $unitChange = false; + if (!isset($genOp) && + $left[0] == "number" && $right[0] == "number") + { + if ($opName == "mod" && $right[2] != "") { + $this->throwError("Cannot modulo by a number with units: $right[1]$right[2]."); + } + + $unitChange = true; + $emptyUnit = $left[2] == "" || $right[2] == ""; + $targetUnit = "" != $left[2] ? $left[2] : $right[2]; + + if ($opName != "mul") { + $left[2] = "" != $left[2] ? $left[2] : $targetUnit; + $right[2] = "" != $right[2] ? $right[2] : $targetUnit; + } + + if ($opName != "mod") { + $left = $this->normalizeNumber($left); + $right = $this->normalizeNumber($right); + } + + if ($opName == "div" && !$emptyUnit && $left[2] == $right[2]) { + $targetUnit = ""; + } + + if ($opName == "mul") { + $left[2] = "" != $left[2] ? $left[2] : $right[2]; + $right[2] = "" != $right[2] ? $right[2] : $left[2]; + } elseif ($opName == "div" && $left[2] == $right[2]) { + $left[2] = ""; + $right[2] = ""; + } + } + + $shouldEval = $inParens || $inExp; + if (isset($passOp)) { + $out = $this->$fn($op, $left, $right, $shouldEval); + } else { + $out = $this->$fn($left, $right, $shouldEval); + } + + if (isset($out)) { + if ($unitChange && $out[0] == "number") { + $out = $this->coerceUnit($out, $targetUnit); + } + return $out; + } + } + + return $this->expToString($value); + case "unary": + list(, $op, $exp, $inParens) = $value; + $inExp = $inExp || $this->shouldEval($exp); + + $exp = $this->reduce($exp); + if ($exp[0] == "number") { + switch ($op) { + case "+": + return $exp; + case "-": + $exp[1] *= -1; + return $exp; + } + } + + if ($op == "not") { + if ($inExp || $inParens) { + if ($exp == self::$false) { + return self::$true; + } else { + return self::$false; + } + } else { + $op = $op . " "; + } + } + + return array("string", "", array($op, $exp)); + case "var": + list(, $name) = $value; + return $this->reduce($this->get($name)); + case "list": + foreach ($value[2] as &$item) { + $item = $this->reduce($item); + } + return $value; + case "string": + foreach ($value[2] as &$item) { + if (is_array($item)) { + $item = $this->reduce($item); + } + } + return $value; + case "interpolate": + $value[1] = $this->reduce($value[1]); + return $value; + case "fncall": + list(,$name, $argValues) = $value; + + // user defined function? + $func = $this->get(self::$namespaces["function"] . $name, false); + if ($func) { + $this->pushEnv(); + + // set the args + if (isset($func->args)) { + $this->applyArguments($func->args, $argValues); + } + + // throw away lines and children + $tmp = (object)array( + "lines" => array(), + "children" => array() + ); + $ret = $this->compileChildren($func->children, $tmp); + $this->popEnv(); + + return !isset($ret) ? self::$defaultValue : $ret; + } + + // built in function + if ($this->callBuiltin($name, $argValues, $returnValue)) { + return $returnValue; + } + + // need to flatten the arguments into a list + $listArgs = array(); + foreach ((array)$argValues as $arg) { + if (empty($arg[0])) { + $listArgs[] = $this->reduce($arg[1]); + } + } + return array("function", $name, array("list", ",", $listArgs)); + default: + return $value; + } + } + + public function normalizeValue($value) { + $value = $this->coerceForExpression($this->reduce($value)); + list($type) = $value; + + switch ($type) { + case "list": + $value = $this->extractInterpolation($value); + if ($value[0] != "list") { + return array("keyword", $this->compileValue($value)); + } + foreach ($value[2] as $key => $item) { + $value[2][$key] = $this->normalizeValue($item); + } + return $value; + case "number": + return $this->normalizeNumber($value); + default: + return $value; + } + } + + // just does physical lengths for now + protected function normalizeNumber($number) { + list(, $value, $unit) = $number; + if (isset(self::$unitTable["in"][$unit])) { + $conv = self::$unitTable["in"][$unit]; + return array("number", $value / $conv, "in"); + } + return $number; + } + + // $number should be normalized + protected function coerceUnit($number, $unit) { + list(, $value, $baseUnit) = $number; + if (isset(self::$unitTable[$baseUnit][$unit])) { + $value = $value * self::$unitTable[$baseUnit][$unit]; + } + + return array("number", $value, $unit); + } + + protected function op_add_number_number($left, $right) { + return array("number", $left[1] + $right[1], $left[2]); + } + + protected function op_mul_number_number($left, $right) { + return array("number", $left[1] * $right[1], $left[2]); + } + + protected function op_sub_number_number($left, $right) { + return array("number", $left[1] - $right[1], $left[2]); + } + + protected function op_div_number_number($left, $right) { + return array("number", $left[1] / $right[1], $left[2]); + } + + protected function op_mod_number_number($left, $right) { + return array("number", $left[1] % $right[1], $left[2]); + } + + // adding strings + protected function op_add($left, $right) { + if ($strLeft = $this->coerceString($left)) { + if ($right[0] == "string") { + $right[1] = ""; + } + $strLeft[2][] = $right; + return $strLeft; + } + + if ($strRight = $this->coerceString($right)) { + if ($left[0] == "string") { + $left[1] = ""; + } + array_unshift($strRight[2], $left); + return $strRight; + } + } + + protected function op_and($left, $right, $shouldEval) { + if (!$shouldEval) return; + if ($left != self::$false) return $right; + return $left; + } + + protected function op_or($left, $right, $shouldEval) { + if (!$shouldEval) return; + if ($left != self::$false) return $left; + return $right; + } + + protected function op_color_color($op, $left, $right) { + $out = array('color'); + foreach (range(1, 3) as $i) { + $lval = isset($left[$i]) ? $left[$i] : 0; + $rval = isset($right[$i]) ? $right[$i] : 0; + switch ($op) { + case '+': + $out[] = $lval + $rval; + break; + case '-': + $out[] = $lval - $rval; + break; + case '*': + $out[] = $lval * $rval; + break; + case '%': + $out[] = $lval % $rval; + break; + case '/': + if ($rval == 0) { + $this->throwError("color: Can't divide by zero"); + } + $out[] = $lval / $rval; + break; + case "==": + return $this->op_eq($left, $right); + case "!=": + return $this->op_neq($left, $right); + default: + $this->throwError("color: unknown op $op"); + } + } + + if (isset($left[4])) $out[4] = $left[4]; + elseif (isset($right[4])) $out[4] = $right[4]; + + return $this->fixColor($out); + } + + protected function op_color_number($op, $left, $right) { + $value = $right[1]; + return $this->op_color_color($op, $left, + array("color", $value, $value, $value)); + } + + protected function op_number_color($op, $left, $right) { + $value = $left[1]; + return $this->op_color_color($op, + array("color", $value, $value, $value), $right); + } + + protected function op_eq($left, $right) { + if (($lStr = $this->coerceString($left)) && ($rStr = $this->coerceString($right))) { + $lStr[1] = ""; + $rStr[1] = ""; + return $this->toBool($this->compileValue($lStr) == $this->compileValue($rStr)); + } + + return $this->toBool($left == $right); + } + + protected function op_neq($left, $right) { + return $this->toBool($left != $right); + } + + protected function op_gte_number_number($left, $right) { + return $this->toBool($left[1] >= $right[1]); + } + + protected function op_gt_number_number($left, $right) { + return $this->toBool($left[1] > $right[1]); + } + + protected function op_lte_number_number($left, $right) { + return $this->toBool($left[1] <= $right[1]); + } + + protected function op_lt_number_number($left, $right) { + return $this->toBool($left[1] < $right[1]); + } + + public function toBool($thing) { + return $thing ? self::$true : self::$false; + } + + /** + * Compiles a primitive value into a CSS property value. + * + * Values in scssphp are typed by being wrapped in arrays, their format is + * typically: + * + * array(type, contents [, additional_contents]*) + * + * The input is expected to be reduced. This function will not work on + * things like expressions and variables. + * + * @param array $value + */ + protected function compileValue($value) { + $value = $this->reduce($value); + + list($type) = $value; + switch ($type) { + case "keyword": + return $value[1]; + case "color": + // [1] - red component (either number for a %) + // [2] - green component + // [3] - blue component + // [4] - optional alpha component + list(, $r, $g, $b) = $value; + + $r = round($r); + $g = round($g); + $b = round($b); + + if (count($value) == 5 && $value[4] != 1) { // rgba + return 'rgba('.$r.', '.$g.', '.$b.', '.$value[4].')'; + } + + $h = sprintf("#%02x%02x%02x", $r, $g, $b); + + // Converting hex color to short notation (e.g. #003399 to #039) + if ($h[1] === $h[2] && $h[3] === $h[4] && $h[5] === $h[6]) { + $h = '#' . $h[1] . $h[3] . $h[5]; + } + + return $h; + case "number": + return round($value[1], $this->numberPrecision) . $value[2]; + case "string": + return $value[1] . $this->compileStringContent($value) . $value[1]; + case "function": + $args = !empty($value[2]) ? $this->compileValue($value[2]) : ""; + return "$value[1]($args)"; + case "list": + $value = $this->extractInterpolation($value); + if ($value[0] != "list") return $this->compileValue($value); + + list(, $delim, $items) = $value; + + $filtered = array(); + foreach ($items as $item) { + if ($item[0] == "null") continue; + $filtered[] = $this->compileValue($item); + } + + return implode("$delim ", $filtered); + case "interpolated": # node created by extractInterpolation + list(, $interpolate, $left, $right) = $value; + list(,, $whiteLeft, $whiteRight) = $interpolate; + + $left = count($left[2]) > 0 ? + $this->compileValue($left).$whiteLeft : ""; + + $right = count($right[2]) > 0 ? + $whiteRight.$this->compileValue($right) : ""; + + return $left.$this->compileValue($interpolate).$right; + + case "interpolate": # raw parse node + list(, $exp) = $value; + + // strip quotes if it's a string + $reduced = $this->reduce($exp); + switch ($reduced[0]) { + case "string": + $reduced = array("keyword", + $this->compileStringContent($reduced)); + break; + case "null": + $reduced = array("keyword", ""); + } + + return $this->compileValue($reduced); + case "null": + return "null"; + default: + $this->throwError("unknown value type: $type"); + } + } + + protected function compileStringContent($string) { + $parts = array(); + foreach ($string[2] as $part) { + if (is_array($part)) { + $parts[] = $this->compileValue($part); + } else { + $parts[] = $part; + } + } + + return implode($parts); + } + + // doesn't need to be recursive, compileValue will handle that + protected function extractInterpolation($list) { + $items = $list[2]; + foreach ($items as $i => $item) { + if ($item[0] == "interpolate") { + $before = array("list", $list[1], array_slice($items, 0, $i)); + $after = array("list", $list[1], array_slice($items, $i + 1)); + return array("interpolated", $item, $before, $after); + } + } + return $list; + } + + // find the final set of selectors + protected function multiplySelectors($env) { + $envs = array(); + while (null !== $env) { + if (!empty($env->selectors)) { + $envs[] = $env; + } + $env = $env->parent; + }; + + $selectors = array(); + $parentSelectors = array(array()); + while ($env = array_pop($envs)) { + $selectors = array(); + foreach ($env->selectors as $selector) { + foreach ($parentSelectors as $parent) { + $selectors[] = $this->joinSelectors($parent, $selector); + } + } + $parentSelectors = $selectors; + } + + return $selectors; + } + + // looks for & to replace, or append parent before child + protected function joinSelectors($parent, $child) { + $setSelf = false; + $out = array(); + foreach ($child as $part) { + $newPart = array(); + foreach ($part as $p) { + if ($p == self::$selfSelector) { + $setSelf = true; + foreach ($parent as $i => $parentPart) { + if ($i > 0) { + $out[] = $newPart; + $newPart = array(); + } + + foreach ($parentPart as $pp) { + $newPart[] = $pp; + } + } + } else { + $newPart[] = $p; + } + } + + $out[] = $newPart; + } + + return $setSelf ? $out : array_merge($parent, $child); + } + + protected function multiplyMedia($env, $childQueries = null) { + if (!isset($env) || + !empty($env->block->type) && $env->block->type != "media") + { + return $childQueries; + } + + // plain old block, skip + if (empty($env->block->type)) { + return $this->multiplyMedia($env->parent, $childQueries); + } + + $parentQueries = $env->block->queryList; + if ($childQueries == null) { + $childQueries = $parentQueries; + } else { + $originalQueries = $childQueries; + $childQueries = array(); + + foreach ($parentQueries as $parentQuery){ + foreach ($originalQueries as $childQuery) { + $childQueries []= array_merge($parentQuery, $childQuery); + } + } + } + + return $this->multiplyMedia($env->parent, $childQueries); + } + + // convert something to list + protected function coerceList($item, $delim = ",") { + if (isset($item) && $item[0] == "list") { + return $item; + } + + return array("list", $delim, !isset($item) ? array(): array($item)); + } + + protected function applyArguments($argDef, $argValues) { + $hasVariable = false; + $args = array(); + foreach ($argDef as $i => $arg) { + list($name, $default, $isVariable) = $argDef[$i]; + $args[$name] = array($i, $name, $default, $isVariable); + $hasVariable |= $isVariable; + } + + $keywordArgs = array(); + $deferredKeywordArgs = array(); + $remaining = array(); + // assign the keyword args + foreach ((array) $argValues as $arg) { + if (!empty($arg[0])) { + if (!isset($args[$arg[0][1]])) { + if ($hasVariable) { + $deferredKeywordArgs[$arg[0][1]] = $arg[1]; + } else { + $this->throwError("Mixin or function doesn't have an argument named $%s.", $arg[0][1]); + } + } elseif ($args[$arg[0][1]][0] < count($remaining)) { + $this->throwError("The argument $%s was passed both by position and by name.", $arg[0][1]); + } else { + $keywordArgs[$arg[0][1]] = $arg[1]; + } + } elseif (count($keywordArgs)) { + $this->throwError('Positional arguments must come before keyword arguments.'); + } elseif ($arg[2] == true) { + $val = $this->reduce($arg[1], true); + if ($val[0] == "list") { + foreach ($val[2] as $name => $item) { + if (!is_numeric($name)) { + $keywordArgs[$name] = $item; + } else { + $remaining[] = $item; + } + } + } else { + $remaining[] = $val; + } + } else { + $remaining[] = $arg[1]; + } + } + + foreach ($args as $arg) { + list($i, $name, $default, $isVariable) = $arg; + if ($isVariable) { + $val = array("list", ",", array()); + for ($count = count($remaining); $i < $count; $i++) { + $val[2][] = $remaining[$i]; + } + foreach ($deferredKeywordArgs as $itemName => $item) { + $val[2][$itemName] = $item; + } + } elseif (isset($remaining[$i])) { + $val = $remaining[$i]; + } elseif (isset($keywordArgs[$name])) { + $val = $keywordArgs[$name]; + } elseif (!empty($default)) { + $val = $default; + } else { + $this->throwError("Missing argument $name"); + } + + $this->set($name, $this->reduce($val, true), true); + } + } + + protected function pushEnv($block=null) { + $env = new stdClass; + $env->parent = $this->env; + $env->store = array(); + $env->block = $block; + $env->depth = isset($this->env->depth) ? $this->env->depth + 1 : 0; + + $this->env = $env; + return $env; + } + + protected function normalizeName($name) { + return str_replace("-", "_", $name); + } + + protected function getStoreEnv() { + return isset($this->storeEnv) ? $this->storeEnv : $this->env; + } + + protected function set($name, $value, $shadow=false) { + $name = $this->normalizeName($name); + + if ($shadow) { + $this->setRaw($name, $value); + } else { + $this->setExisting($name, $value); + } + } + + protected function setExisting($name, $value, $env = null) { + if (!isset($env)) $env = $this->getStoreEnv(); + + if (isset($env->store[$name]) || !isset($env->parent)) { + $env->store[$name] = $value; + } else { + $this->setExisting($name, $value, $env->parent); + } + } + + protected function setRaw($name, $value) { + $env = $this->getStoreEnv(); + $env->store[$name] = $value; + } + + public function get($name, $defaultValue = null, $env = null) { + $name = $this->normalizeName($name); + + if (!isset($env)) $env = $this->getStoreEnv(); + if (!isset($defaultValue)) $defaultValue = self::$defaultValue; + + if (isset($env->store[$name])) { + return $env->store[$name]; + } elseif (isset($env->parent)) { + return $this->get($name, $defaultValue, $env->parent); + } + + return $defaultValue; // found nothing + } + + protected function injectVariables(array $args) + { + if (empty($args)) { + return; + } + + $parser = new scss_parser(__METHOD__, false); + + foreach ($args as $name => $strValue) { + if ($name[0] === '$') { + $name = substr($name, 1); + } + + $parser->env = null; + $parser->count = 0; + $parser->buffer = (string) $strValue; + $parser->inParens = false; + $parser->eatWhiteDefault = true; + $parser->insertComments = true; + + if ( ! $parser->valueList($value)) { + throw new Exception("failed to parse passed in variable $name: $strValue"); + } + + $this->set($name, $value); + } + } + + /** + * Set variables + * + * @param array $variables + */ + public function setVariables(array $variables) + { + $this->registeredVars = array_merge($this->registeredVars, $variables); + } + + /** + * Unset variable + * + * @param string $name + */ + public function unsetVariable($name) + { + unset($this->registeredVars[$name]); + } + + protected function popEnv() { + $env = $this->env; + $this->env = $this->env->parent; + return $env; + } + + public function getParsedFiles() { + return $this->parsedFiles; + } + + public function addImportPath($path) { + $this->importPaths[] = $path; + } + + public function setImportPaths($path) { + $this->importPaths = (array)$path; + } + + public function setNumberPrecision($numberPrecision) { + $this->numberPrecision = $numberPrecision; + } + + public function setFormatter($formatterName) { + $this->formatter = $formatterName; + } + + public function registerFunction($name, $func) { + $this->userFunctions[$this->normalizeName($name)] = $func; + } + + public function unregisterFunction($name) { + unset($this->userFunctions[$this->normalizeName($name)]); + } + + protected function importFile($path, $out) { + // see if tree is cached + $realPath = realpath($path); + if (isset($this->importCache[$realPath])) { + $tree = $this->importCache[$realPath]; + } else { + $code = file_get_contents($path); + $parser = new scss_parser($path, false); + $tree = $parser->parse($code); + $this->parsedFiles[] = $path; + + $this->importCache[$realPath] = $tree; + } + + $pi = pathinfo($path); + array_unshift($this->importPaths, $pi['dirname']); + $this->compileChildren($tree->children, $out); + array_shift($this->importPaths); + } + + // results the file path for an import url if it exists + public function findImport($url) { + $urls = array(); + + // for "normal" scss imports (ignore vanilla css and external requests) + if (!preg_match('/\.css|^http:\/\/$/', $url)) { + // try both normal and the _partial filename + $urls = array($url, preg_replace('/[^\/]+$/', '_\0', $url)); + } + + foreach ($this->importPaths as $dir) { + if (is_string($dir)) { + // check urls for normal import paths + foreach ($urls as $full) { + $full = $dir . + (!empty($dir) && substr($dir, -1) != '/' ? '/' : '') . + $full; + + if ($this->fileExists($file = $full.'.scss') || + $this->fileExists($file = $full)) + { + return $file; + } + } + } else { + // check custom callback for import path + $file = call_user_func($dir,$url,$this); + if ($file !== null) { + return $file; + } + } + } + + return null; + } + + protected function fileExists($name) { + return is_file($name); + } + + protected function callBuiltin($name, $args, &$returnValue) { + // try a lib function + $name = $this->normalizeName($name); + $libName = "lib_".$name; + $f = array($this, $libName); + if (is_callable($f)) { + $prototype = isset(self::$$libName) ? self::$$libName : null; + $sorted = $this->sortArgs($prototype, $args); + foreach ($sorted as &$val) { + $val = $this->reduce($val, true); + } + $returnValue = call_user_func($f, $sorted, $this); + } elseif (isset($this->userFunctions[$name])) { + // see if we can find a user function + $fn = $this->userFunctions[$name]; + + foreach ($args as &$val) { + $val = $this->reduce($val[1], true); + } + + $returnValue = call_user_func($fn, $args, $this); + } + + if (isset($returnValue)) { + // coerce a php value into a scss one + if (is_numeric($returnValue)) { + $returnValue = array('number', $returnValue, ""); + } elseif (is_bool($returnValue)) { + $returnValue = $returnValue ? self::$true : self::$false; + } elseif (!is_array($returnValue)) { + $returnValue = array('keyword', $returnValue); + } + + return true; + } + + return false; + } + + // sorts any keyword arguments + // TODO: merge with apply arguments + protected function sortArgs($prototype, $args) { + $keyArgs = array(); + $posArgs = array(); + + foreach ($args as $arg) { + list($key, $value) = $arg; + $key = $key[1]; + if (empty($key)) { + $posArgs[] = $value; + } else { + $keyArgs[$key] = $value; + } + } + + if (!isset($prototype)) return $posArgs; + + $finalArgs = array(); + foreach ($prototype as $i => $names) { + if (isset($posArgs[$i])) { + $finalArgs[] = $posArgs[$i]; + continue; + } + + $set = false; + foreach ((array)$names as $name) { + if (isset($keyArgs[$name])) { + $finalArgs[] = $keyArgs[$name]; + $set = true; + break; + } + } + + if (!$set) { + $finalArgs[] = null; + } + } + + return $finalArgs; + } + + protected function coerceForExpression($value) { + if ($color = $this->coerceColor($value)) { + return $color; + } + + return $value; + } + + protected function coerceColor($value) { + switch ($value[0]) { + case "color": return $value; + case "keyword": + $name = $value[1]; + if (isset(self::$cssColors[$name])) { + $rgba = explode(',', self::$cssColors[$name]); + return isset($rgba[3]) + ? array('color', (int) $rgba[0], (int) $rgba[1], (int) $rgba[2], (int) $rgba[3]) + : array('color', (int) $rgba[0], (int) $rgba[1], (int) $rgba[2]); + } + return null; + } + + return null; + } + + protected function coerceString($value) { + switch ($value[0]) { + case "string": + return $value; + case "keyword": + return array("string", "", array($value[1])); + } + return null; + } + + public function assertList($value) { + if ($value[0] != "list") + $this->throwError("expecting list"); + return $value; + } + + public function assertColor($value) { + if ($color = $this->coerceColor($value)) return $color; + $this->throwError("expecting color"); + } + + public function assertNumber($value) { + if ($value[0] != "number") + $this->throwError("expecting number"); + return $value[1]; + } + + protected function coercePercent($value) { + if ($value[0] == "number") { + if ($value[2] == "%") { + return $value[1] / 100; + } + return $value[1]; + } + return 0; + } + + // make sure a color's components don't go out of bounds + protected function fixColor($c) { + foreach (range(1, 3) as $i) { + if ($c[$i] < 0) $c[$i] = 0; + if ($c[$i] > 255) $c[$i] = 255; + } + + return $c; + } + + public function toHSL($red, $green, $blue) { + $min = min($red, $green, $blue); + $max = max($red, $green, $blue); + + $l = $min + $max; + + if ($min == $max) { + $s = $h = 0; + } else { + $d = $max - $min; + + if ($l < 255) + $s = $d / $l; + else + $s = $d / (510 - $l); + + if ($red == $max) + $h = 60 * ($green - $blue) / $d; + elseif ($green == $max) + $h = 60 * ($blue - $red) / $d + 120; + elseif ($blue == $max) + $h = 60 * ($red - $green) / $d + 240; + } + + return array('hsl', fmod($h, 360), $s * 100, $l / 5.1); + } + + public function hueToRGB($m1, $m2, $h) { + if ($h < 0) + $h += 1; + elseif ($h > 1) + $h -= 1; + + if ($h * 6 < 1) + return $m1 + ($m2 - $m1) * $h * 6; + + if ($h * 2 < 1) + return $m2; + + if ($h * 3 < 2) + return $m1 + ($m2 - $m1) * (2/3 - $h) * 6; + + return $m1; + } + + // H from 0 to 360, S and L from 0 to 100 + public function toRGB($hue, $saturation, $lightness) { + if ($hue < 0) { + $hue += 360; + } + + $h = $hue / 360; + $s = min(100, max(0, $saturation)) / 100; + $l = min(100, max(0, $lightness)) / 100; + + $m2 = $l <= 0.5 ? $l * ($s + 1) : $l + $s - $l * $s; + $m1 = $l * 2 - $m2; + + $r = $this->hueToRGB($m1, $m2, $h + 1/3) * 255; + $g = $this->hueToRGB($m1, $m2, $h) * 255; + $b = $this->hueToRGB($m1, $m2, $h - 1/3) * 255; + + $out = array('color', $r, $g, $b); + return $out; + } + + // Built in functions + + protected static $lib_if = array("condition", "if-true", "if-false"); + protected function lib_if($args) { + list($cond,$t, $f) = $args; + if (!$this->isTruthy($cond)) return $f; + return $t; + } + + protected static $lib_index = array("list", "value"); + protected function lib_index($args) { + list($list, $value) = $args; + $list = $this->assertList($list); + + $values = array(); + foreach ($list[2] as $item) { + $values[] = $this->normalizeValue($item); + } + $key = array_search($this->normalizeValue($value), $values); + + return false === $key ? false : $key + 1; + } + + protected static $lib_rgb = array("red", "green", "blue"); + protected function lib_rgb($args) { + list($r,$g,$b) = $args; + return array("color", $r[1], $g[1], $b[1]); + } + + protected static $lib_rgba = array( + array("red", "color"), + "green", "blue", "alpha"); + protected function lib_rgba($args) { + if ($color = $this->coerceColor($args[0])) { + $num = !isset($args[1]) ? $args[3] : $args[1]; + $alpha = $this->assertNumber($num); + $color[4] = $alpha; + return $color; + } + + list($r,$g,$b, $a) = $args; + return array("color", $r[1], $g[1], $b[1], $a[1]); + } + + // helper function for adjust_color, change_color, and scale_color + protected function alter_color($args, $fn) { + $color = $this->assertColor($args[0]); + + foreach (array(1,2,3,7) as $i) { + if (isset($args[$i])) { + $val = $this->assertNumber($args[$i]); + $ii = $i == 7 ? 4 : $i; // alpha + $color[$ii] = + $this->$fn(isset($color[$ii]) ? $color[$ii] : 0, $val, $i); + } + } + + if (isset($args[4]) || isset($args[5]) || isset($args[6])) { + $hsl = $this->toHSL($color[1], $color[2], $color[3]); + foreach (array(4,5,6) as $i) { + if (isset($args[$i])) { + $val = $this->assertNumber($args[$i]); + $hsl[$i - 3] = $this->$fn($hsl[$i - 3], $val, $i); + } + } + + $rgb = $this->toRGB($hsl[1], $hsl[2], $hsl[3]); + if (isset($color[4])) $rgb[4] = $color[4]; + $color = $rgb; + } + + return $color; + } + + protected static $lib_adjust_color = array( + "color", "red", "green", "blue", + "hue", "saturation", "lightness", "alpha" + ); + protected function adjust_color_helper($base, $alter, $i) { + return $base += $alter; + } + protected function lib_adjust_color($args) { + return $this->alter_color($args, "adjust_color_helper"); + } + + protected static $lib_change_color = array( + "color", "red", "green", "blue", + "hue", "saturation", "lightness", "alpha" + ); + protected function change_color_helper($base, $alter, $i) { + return $alter; + } + protected function lib_change_color($args) { + return $this->alter_color($args, "change_color_helper"); + } + + protected static $lib_scale_color = array( + "color", "red", "green", "blue", + "hue", "saturation", "lightness", "alpha" + ); + protected function scale_color_helper($base, $scale, $i) { + // 1,2,3 - rgb + // 4, 5, 6 - hsl + // 7 - a + switch ($i) { + case 1: + case 2: + case 3: + $max = 255; break; + case 4: + $max = 360; break; + case 7: + $max = 1; break; + default: + $max = 100; + } + + $scale = $scale / 100; + if ($scale < 0) { + return $base * $scale + $base; + } else { + return ($max - $base) * $scale + $base; + } + } + protected function lib_scale_color($args) { + return $this->alter_color($args, "scale_color_helper"); + } + + protected static $lib_ie_hex_str = array("color"); + protected function lib_ie_hex_str($args) { + $color = $this->coerceColor($args[0]); + $color[4] = isset($color[4]) ? round(255*$color[4]) : 255; + + return sprintf('#%02X%02X%02X%02X', $color[4], $color[1], $color[2], $color[3]); + } + + protected static $lib_red = array("color"); + protected function lib_red($args) { + $color = $this->coerceColor($args[0]); + return $color[1]; + } + + protected static $lib_green = array("color"); + protected function lib_green($args) { + $color = $this->coerceColor($args[0]); + return $color[2]; + } + + protected static $lib_blue = array("color"); + protected function lib_blue($args) { + $color = $this->coerceColor($args[0]); + return $color[3]; + } + + protected static $lib_alpha = array("color"); + protected function lib_alpha($args) { + if ($color = $this->coerceColor($args[0])) { + return isset($color[4]) ? $color[4] : 1; + } + + // this might be the IE function, so return value unchanged + return null; + } + + protected static $lib_opacity = array("color"); + protected function lib_opacity($args) { + $value = $args[0]; + if ($value[0] === 'number') return null; + return $this->lib_alpha($args); + } + + // mix two colors + protected static $lib_mix = array("color-1", "color-2", "weight"); + protected function lib_mix($args) { + list($first, $second, $weight) = $args; + $first = $this->assertColor($first); + $second = $this->assertColor($second); + + if (!isset($weight)) { + $weight = 0.5; + } else { + $weight = $this->coercePercent($weight); + } + + $firstAlpha = isset($first[4]) ? $first[4] : 1; + $secondAlpha = isset($second[4]) ? $second[4] : 1; + + $w = $weight * 2 - 1; + $a = $firstAlpha - $secondAlpha; + + $w1 = (($w * $a == -1 ? $w : ($w + $a)/(1 + $w * $a)) + 1) / 2.0; + $w2 = 1.0 - $w1; + + $new = array('color', + $w1 * $first[1] + $w2 * $second[1], + $w1 * $first[2] + $w2 * $second[2], + $w1 * $first[3] + $w2 * $second[3], + ); + + if ($firstAlpha != 1.0 || $secondAlpha != 1.0) { + $new[] = $firstAlpha * $weight + $secondAlpha * ($weight - 1); + } + + return $this->fixColor($new); + } + + protected static $lib_hsl = array("hue", "saturation", "lightness"); + protected function lib_hsl($args) { + list($h, $s, $l) = $args; + return $this->toRGB($h[1], $s[1], $l[1]); + } + + protected static $lib_hsla = array("hue", "saturation", + "lightness", "alpha"); + protected function lib_hsla($args) { + list($h, $s, $l, $a) = $args; + $color = $this->toRGB($h[1], $s[1], $l[1]); + $color[4] = $a[1]; + return $color; + } + + protected static $lib_hue = array("color"); + protected function lib_hue($args) { + $color = $this->assertColor($args[0]); + $hsl = $this->toHSL($color[1], $color[2], $color[3]); + return array("number", $hsl[1], "deg"); + } + + protected static $lib_saturation = array("color"); + protected function lib_saturation($args) { + $color = $this->assertColor($args[0]); + $hsl = $this->toHSL($color[1], $color[2], $color[3]); + return array("number", $hsl[2], "%"); + } + + protected static $lib_lightness = array("color"); + protected function lib_lightness($args) { + $color = $this->assertColor($args[0]); + $hsl = $this->toHSL($color[1], $color[2], $color[3]); + return array("number", $hsl[3], "%"); + } + + protected function adjustHsl($color, $idx, $amount) { + $hsl = $this->toHSL($color[1], $color[2], $color[3]); + $hsl[$idx] += $amount; + $out = $this->toRGB($hsl[1], $hsl[2], $hsl[3]); + if (isset($color[4])) $out[4] = $color[4]; + return $out; + } + + protected static $lib_adjust_hue = array("color", "degrees"); + protected function lib_adjust_hue($args) { + $color = $this->assertColor($args[0]); + $degrees = $this->assertNumber($args[1]); + return $this->adjustHsl($color, 1, $degrees); + } + + protected static $lib_lighten = array("color", "amount"); + protected function lib_lighten($args) { + $color = $this->assertColor($args[0]); + $amount = 100*$this->coercePercent($args[1]); + return $this->adjustHsl($color, 3, $amount); + } + + protected static $lib_darken = array("color", "amount"); + protected function lib_darken($args) { + $color = $this->assertColor($args[0]); + $amount = 100*$this->coercePercent($args[1]); + return $this->adjustHsl($color, 3, -$amount); + } + + protected static $lib_saturate = array("color", "amount"); + protected function lib_saturate($args) { + $value = $args[0]; + if ($value[0] === 'number') return null; + $color = $this->assertColor($value); + $amount = 100*$this->coercePercent($args[1]); + return $this->adjustHsl($color, 2, $amount); + } + + protected static $lib_desaturate = array("color", "amount"); + protected function lib_desaturate($args) { + $color = $this->assertColor($args[0]); + $amount = 100*$this->coercePercent($args[1]); + return $this->adjustHsl($color, 2, -$amount); + } + + protected static $lib_grayscale = array("color"); + protected function lib_grayscale($args) { + $value = $args[0]; + if ($value[0] === 'number') return null; + return $this->adjustHsl($this->assertColor($value), 2, -100); + } + + protected static $lib_complement = array("color"); + protected function lib_complement($args) { + return $this->adjustHsl($this->assertColor($args[0]), 1, 180); + } + + protected static $lib_invert = array("color"); + protected function lib_invert($args) { + $value = $args[0]; + if ($value[0] === 'number') return null; + $color = $this->assertColor($value); + $color[1] = 255 - $color[1]; + $color[2] = 255 - $color[2]; + $color[3] = 255 - $color[3]; + return $color; + } + + // increases opacity by amount + protected static $lib_opacify = array("color", "amount"); + protected function lib_opacify($args) { + $color = $this->assertColor($args[0]); + $amount = $this->coercePercent($args[1]); + + $color[4] = (isset($color[4]) ? $color[4] : 1) + $amount; + $color[4] = min(1, max(0, $color[4])); + return $color; + } + + protected static $lib_fade_in = array("color", "amount"); + protected function lib_fade_in($args) { + return $this->lib_opacify($args); + } + + // decreases opacity by amount + protected static $lib_transparentize = array("color", "amount"); + protected function lib_transparentize($args) { + $color = $this->assertColor($args[0]); + $amount = $this->coercePercent($args[1]); + + $color[4] = (isset($color[4]) ? $color[4] : 1) - $amount; + $color[4] = min(1, max(0, $color[4])); + return $color; + } + + protected static $lib_fade_out = array("color", "amount"); + protected function lib_fade_out($args) { + return $this->lib_transparentize($args); + } + + protected static $lib_unquote = array("string"); + protected function lib_unquote($args) { + $str = $args[0]; + if ($str[0] == "string") $str[1] = ""; + return $str; + } + + protected static $lib_quote = array("string"); + protected function lib_quote($args) { + $value = $args[0]; + if ($value[0] == "string" && !empty($value[1])) + return $value; + return array("string", '"', array($value)); + } + + protected static $lib_percentage = array("value"); + protected function lib_percentage($args) { + return array("number", + $this->coercePercent($args[0]) * 100, + "%"); + } + + protected static $lib_round = array("value"); + protected function lib_round($args) { + $num = $args[0]; + $num[1] = round($num[1]); + return $num; + } + + protected static $lib_floor = array("value"); + protected function lib_floor($args) { + $num = $args[0]; + $num[1] = floor($num[1]); + return $num; + } + + protected static $lib_ceil = array("value"); + protected function lib_ceil($args) { + $num = $args[0]; + $num[1] = ceil($num[1]); + return $num; + } + + protected static $lib_abs = array("value"); + protected function lib_abs($args) { + $num = $args[0]; + $num[1] = abs($num[1]); + return $num; + } + + protected function lib_min($args) { + $numbers = $this->getNormalizedNumbers($args); + $min = null; + foreach ($numbers as $key => $number) { + if (null === $min || $number[1] <= $min[1]) { + $min = array($key, $number[1]); + } + } + + return $args[$min[0]]; + } + + protected function lib_max($args) { + $numbers = $this->getNormalizedNumbers($args); + $max = null; + foreach ($numbers as $key => $number) { + if (null === $max || $number[1] >= $max[1]) { + $max = array($key, $number[1]); + } + } + + return $args[$max[0]]; + } + + protected function getNormalizedNumbers($args) { + $unit = null; + $originalUnit = null; + $numbers = array(); + foreach ($args as $key => $item) { + if ('number' != $item[0]) { + $this->throwError("%s is not a number", $item[0]); + } + $number = $this->normalizeNumber($item); + + if (null === $unit) { + $unit = $number[2]; + $originalUnit = $item[2]; + } elseif ($unit !== $number[2]) { + $this->throwError('Incompatible units: "%s" and "%s".', $originalUnit, $item[2]); + } + + $numbers[$key] = $number; + } + + return $numbers; + } + + protected static $lib_length = array("list"); + protected function lib_length($args) { + $list = $this->coerceList($args[0]); + return count($list[2]); + } + + protected static $lib_nth = array("list", "n"); + protected function lib_nth($args) { + $list = $this->coerceList($args[0]); + $n = $this->assertNumber($args[1]) - 1; + return isset($list[2][$n]) ? $list[2][$n] : self::$defaultValue; + } + + protected function listSeparatorForJoin($list1, $sep) { + if (!isset($sep)) return $list1[1]; + switch ($this->compileValue($sep)) { + case "comma": + return ","; + case "space": + return ""; + default: + return $list1[1]; + } + } + + protected static $lib_join = array("list1", "list2", "separator"); + protected function lib_join($args) { + list($list1, $list2, $sep) = $args; + $list1 = $this->coerceList($list1, " "); + $list2 = $this->coerceList($list2, " "); + $sep = $this->listSeparatorForJoin($list1, $sep); + return array("list", $sep, array_merge($list1[2], $list2[2])); + } + + protected static $lib_append = array("list", "val", "separator"); + protected function lib_append($args) { + list($list1, $value, $sep) = $args; + $list1 = $this->coerceList($list1, " "); + $sep = $this->listSeparatorForJoin($list1, $sep); + return array("list", $sep, array_merge($list1[2], array($value))); + } + + protected function lib_zip($args) { + foreach ($args as $arg) { + $this->assertList($arg); + } + + $lists = array(); + $firstList = array_shift($args); + foreach ($firstList[2] as $key => $item) { + $list = array("list", "", array($item)); + foreach ($args as $arg) { + if (isset($arg[2][$key])) { + $list[2][] = $arg[2][$key]; + } else { + break 2; + } + } + $lists[] = $list; + } + + return array("list", ",", $lists); + } + + protected static $lib_type_of = array("value"); + protected function lib_type_of($args) { + $value = $args[0]; + switch ($value[0]) { + case "keyword": + if ($value == self::$true || $value == self::$false) { + return "bool"; + } + + if ($this->coerceColor($value)) { + return "color"; + } + + return "string"; + default: + return $value[0]; + } + } + + protected static $lib_unit = array("number"); + protected function lib_unit($args) { + $num = $args[0]; + if ($num[0] == "number") { + return array("string", '"', array($num[2])); + } + return ""; + } + + protected static $lib_unitless = array("number"); + protected function lib_unitless($args) { + $value = $args[0]; + return $value[0] == "number" && empty($value[2]); + } + + protected static $lib_comparable = array("number-1", "number-2"); + protected function lib_comparable($args) { + list($number1, $number2) = $args; + if (!isset($number1[0]) || $number1[0] != "number" || !isset($number2[0]) || $number2[0] != "number") { + $this->throwError('Invalid argument(s) for "comparable"'); + } + + $number1 = $this->normalizeNumber($number1); + $number2 = $this->normalizeNumber($number2); + + return $number1[2] == $number2[2] || $number1[2] == "" || $number2[2] == ""; + } + + /** + * Workaround IE7's content counter bug. + * + * @param array $args + */ + protected function lib_counter($args) { + $list = array_map(array($this, 'compileValue'), $args); + return array('string', '', array('counter(' . implode(',', $list) . ')')); + } + + public function throwError($msg = null) { + if (func_num_args() > 1) { + $msg = call_user_func_array("sprintf", func_get_args()); + } + + if ($this->sourcePos >= 0 && isset($this->sourceParser)) { + $this->sourceParser->throwParseError($msg, $this->sourcePos); + } + + throw new Exception($msg); + } + + /** + * CSS Colors + * + * @see http://www.w3.org/TR/css3-color + */ + static protected $cssColors = array( + 'aliceblue' => '240,248,255', + 'antiquewhite' => '250,235,215', + 'aqua' => '0,255,255', + 'aquamarine' => '127,255,212', + 'azure' => '240,255,255', + 'beige' => '245,245,220', + 'bisque' => '255,228,196', + 'black' => '0,0,0', + 'blanchedalmond' => '255,235,205', + 'blue' => '0,0,255', + 'blueviolet' => '138,43,226', + 'brown' => '165,42,42', + 'burlywood' => '222,184,135', + 'cadetblue' => '95,158,160', + 'chartreuse' => '127,255,0', + 'chocolate' => '210,105,30', + 'coral' => '255,127,80', + 'cornflowerblue' => '100,149,237', + 'cornsilk' => '255,248,220', + 'crimson' => '220,20,60', + 'cyan' => '0,255,255', + 'darkblue' => '0,0,139', + 'darkcyan' => '0,139,139', + 'darkgoldenrod' => '184,134,11', + 'darkgray' => '169,169,169', + 'darkgreen' => '0,100,0', + 'darkgrey' => '169,169,169', + 'darkkhaki' => '189,183,107', + 'darkmagenta' => '139,0,139', + 'darkolivegreen' => '85,107,47', + 'darkorange' => '255,140,0', + 'darkorchid' => '153,50,204', + 'darkred' => '139,0,0', + 'darksalmon' => '233,150,122', + 'darkseagreen' => '143,188,143', + 'darkslateblue' => '72,61,139', + 'darkslategray' => '47,79,79', + 'darkslategrey' => '47,79,79', + 'darkturquoise' => '0,206,209', + 'darkviolet' => '148,0,211', + 'deeppink' => '255,20,147', + 'deepskyblue' => '0,191,255', + 'dimgray' => '105,105,105', + 'dimgrey' => '105,105,105', + 'dodgerblue' => '30,144,255', + 'firebrick' => '178,34,34', + 'floralwhite' => '255,250,240', + 'forestgreen' => '34,139,34', + 'fuchsia' => '255,0,255', + 'gainsboro' => '220,220,220', + 'ghostwhite' => '248,248,255', + 'gold' => '255,215,0', + 'goldenrod' => '218,165,32', + 'gray' => '128,128,128', + 'green' => '0,128,0', + 'greenyellow' => '173,255,47', + 'grey' => '128,128,128', + 'honeydew' => '240,255,240', + 'hotpink' => '255,105,180', + 'indianred' => '205,92,92', + 'indigo' => '75,0,130', + 'ivory' => '255,255,240', + 'khaki' => '240,230,140', + 'lavender' => '230,230,250', + 'lavenderblush' => '255,240,245', + 'lawngreen' => '124,252,0', + 'lemonchiffon' => '255,250,205', + 'lightblue' => '173,216,230', + 'lightcoral' => '240,128,128', + 'lightcyan' => '224,255,255', + 'lightgoldenrodyellow' => '250,250,210', + 'lightgray' => '211,211,211', + 'lightgreen' => '144,238,144', + 'lightgrey' => '211,211,211', + 'lightpink' => '255,182,193', + 'lightsalmon' => '255,160,122', + 'lightseagreen' => '32,178,170', + 'lightskyblue' => '135,206,250', + 'lightslategray' => '119,136,153', + 'lightslategrey' => '119,136,153', + 'lightsteelblue' => '176,196,222', + 'lightyellow' => '255,255,224', + 'lime' => '0,255,0', + 'limegreen' => '50,205,50', + 'linen' => '250,240,230', + 'magenta' => '255,0,255', + 'maroon' => '128,0,0', + 'mediumaquamarine' => '102,205,170', + 'mediumblue' => '0,0,205', + 'mediumorchid' => '186,85,211', + 'mediumpurple' => '147,112,219', + 'mediumseagreen' => '60,179,113', + 'mediumslateblue' => '123,104,238', + 'mediumspringgreen' => '0,250,154', + 'mediumturquoise' => '72,209,204', + 'mediumvioletred' => '199,21,133', + 'midnightblue' => '25,25,112', + 'mintcream' => '245,255,250', + 'mistyrose' => '255,228,225', + 'moccasin' => '255,228,181', + 'navajowhite' => '255,222,173', + 'navy' => '0,0,128', + 'oldlace' => '253,245,230', + 'olive' => '128,128,0', + 'olivedrab' => '107,142,35', + 'orange' => '255,165,0', + 'orangered' => '255,69,0', + 'orchid' => '218,112,214', + 'palegoldenrod' => '238,232,170', + 'palegreen' => '152,251,152', + 'paleturquoise' => '175,238,238', + 'palevioletred' => '219,112,147', + 'papayawhip' => '255,239,213', + 'peachpuff' => '255,218,185', + 'peru' => '205,133,63', + 'pink' => '255,192,203', + 'plum' => '221,160,221', + 'powderblue' => '176,224,230', + 'purple' => '128,0,128', + 'red' => '255,0,0', + 'rosybrown' => '188,143,143', + 'royalblue' => '65,105,225', + 'saddlebrown' => '139,69,19', + 'salmon' => '250,128,114', + 'sandybrown' => '244,164,96', + 'seagreen' => '46,139,87', + 'seashell' => '255,245,238', + 'sienna' => '160,82,45', + 'silver' => '192,192,192', + 'skyblue' => '135,206,235', + 'slateblue' => '106,90,205', + 'slategray' => '112,128,144', + 'slategrey' => '112,128,144', + 'snow' => '255,250,250', + 'springgreen' => '0,255,127', + 'steelblue' => '70,130,180', + 'tan' => '210,180,140', + 'teal' => '0,128,128', + 'thistle' => '216,191,216', + 'tomato' => '255,99,71', + 'transparent' => '0,0,0,0', + 'turquoise' => '64,224,208', + 'violet' => '238,130,238', + 'wheat' => '245,222,179', + 'white' => '255,255,255', + 'whitesmoke' => '245,245,245', + 'yellow' => '255,255,0', + 'yellowgreen' => '154,205,50' + ); +} + +/** + * SCSS parser + * + * @author Leaf Corcoran + */ +class scss_parser { + static protected $precedence = array( + "or" => 0, + "and" => 1, + + '==' => 2, + '!=' => 2, + '<=' => 2, + '>=' => 2, + '=' => 2, + '<' => 3, + '>' => 2, + + '+' => 3, + '-' => 3, + '*' => 4, + '/' => 4, + '%' => 4, + ); + + static protected $operators = array("+", "-", "*", "/", "%", + "==", "!=", "<=", ">=", "<", ">", "and", "or"); + + static protected $operatorStr; + static protected $whitePattern; + static protected $commentMulti; + + static protected $commentSingle = "//"; + static protected $commentMultiLeft = "/*"; + static protected $commentMultiRight = "*/"; + + /** + * Constructor + * + * @param string $sourceName + * @param boolean $rootParser + */ + public function __construct($sourceName = null, $rootParser = true) { + $this->sourceName = $sourceName; + $this->rootParser = $rootParser; + + if (empty(self::$operatorStr)) { + self::$operatorStr = $this->makeOperatorStr(self::$operators); + + $commentSingle = $this->preg_quote(self::$commentSingle); + $commentMultiLeft = $this->preg_quote(self::$commentMultiLeft); + $commentMultiRight = $this->preg_quote(self::$commentMultiRight); + self::$commentMulti = $commentMultiLeft.'.*?'.$commentMultiRight; + self::$whitePattern = '/'.$commentSingle.'[^\n]*\s*|('.self::$commentMulti.')\s*|\s+/Ais'; + } + } + + static protected function makeOperatorStr($operators) { + return '('.implode('|', array_map(array('scss_parser','preg_quote'), + $operators)).')'; + } + + /** + * Parser buffer + * + * @param string $buffer; + * + * @return \StdClass + */ + public function parse($buffer) + { + $this->count = 0; + $this->env = null; + $this->inParens = false; + $this->eatWhiteDefault = true; + $this->insertComments = true; + $this->buffer = $buffer; + + $this->pushBlock(null); // root block + $this->whitespace(); + + while (false !== $this->parseChunk()) + ; + + if ($this->count != strlen($this->buffer)) { + $this->throwParseError(); + } + + if (!empty($this->env->parent)) { + $this->throwParseError("unclosed block"); + } + + $this->env->isRoot = true; + + return $this->env; + } + + /** + * Parse a single chunk off the head of the buffer and append it to the + * current parse environment. + * + * Returns false when the buffer is empty, or when there is an error. + * + * This function is called repeatedly until the entire document is + * parsed. + * + * This parser is most similar to a recursive descent parser. Single + * functions represent discrete grammatical rules for the language, and + * they are able to capture the text that represents those rules. + * + * Consider the function scssc::keyword(). (All parse functions are + * structured the same.) + * + * The function takes a single reference argument. When calling the + * function it will attempt to match a keyword on the head of the buffer. + * If it is successful, it will place the keyword in the referenced + * argument, advance the position in the buffer, and return true. If it + * fails then it won't advance the buffer and it will return false. + * + * All of these parse functions are powered by scssc::match(), which behaves + * the same way, but takes a literal regular expression. Sometimes it is + * more convenient to use match instead of creating a new function. + * + * Because of the format of the functions, to parse an entire string of + * grammatical rules, you can chain them together using &&. + * + * But, if some of the rules in the chain succeed before one fails, then + * the buffer position will be left at an invalid state. In order to + * avoid this, scssc::seek() is used to remember and set buffer positions. + * + * Before parsing a chain, use $s = $this->seek() to remember the current + * position into $s. Then if a chain fails, use $this->seek($s) to + * go back where we started. + * + * @return boolean + */ + protected function parseChunk() { + $s = $this->seek(); + + // the directives + if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "@") { + if ($this->literal("@media") && $this->mediaQueryList($mediaQueryList) && $this->literal("{")) { + $media = $this->pushSpecialBlock("media"); + $media->queryList = $mediaQueryList[2]; + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@mixin") && + $this->keyword($mixinName) && + ($this->argumentDef($args) || true) && + $this->literal("{")) + { + $mixin = $this->pushSpecialBlock("mixin"); + $mixin->name = $mixinName; + $mixin->args = $args; + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@include") && + $this->keyword($mixinName) && + ($this->literal("(") && + ($this->argValues($argValues) || true) && + $this->literal(")") || true) && + ($this->end() || + $this->literal("{") && $hasBlock = true)) + { + $child = array("include", + $mixinName, isset($argValues) ? $argValues : null, null); + + if (!empty($hasBlock)) { + $include = $this->pushSpecialBlock("include"); + $include->child = $child; + } else { + $this->append($child, $s); + } + + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@import") && + $this->valueList($importPath) && + $this->end()) + { + $this->append(array("import", $importPath), $s); + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@extend") && + $this->selectors($selector) && + $this->end()) + { + $this->append(array("extend", $selector), $s); + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@function") && + $this->keyword($fnName) && + $this->argumentDef($args) && + $this->literal("{")) + { + $func = $this->pushSpecialBlock("function"); + $func->name = $fnName; + $func->args = $args; + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@return") && $this->valueList($retVal) && $this->end()) { + $this->append(array("return", $retVal), $s); + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@each") && + $this->variable($varName) && + $this->literal("in") && + $this->valueList($list) && + $this->literal("{")) + { + $each = $this->pushSpecialBlock("each"); + $each->var = $varName[1]; + $each->list = $list; + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@while") && + $this->expression($cond) && + $this->literal("{")) + { + $while = $this->pushSpecialBlock("while"); + $while->cond = $cond; + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@for") && + $this->variable($varName) && + $this->literal("from") && + $this->expression($start) && + ($this->literal("through") || + ($forUntil = true && $this->literal("to"))) && + $this->expression($end) && + $this->literal("{")) + { + $for = $this->pushSpecialBlock("for"); + $for->var = $varName[1]; + $for->start = $start; + $for->end = $end; + $for->until = isset($forUntil); + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@if") && $this->valueList($cond) && $this->literal("{")) { + $if = $this->pushSpecialBlock("if"); + $if->cond = $cond; + $if->cases = array(); + return true; + } else { + $this->seek($s); + } + + if (($this->literal("@debug") || $this->literal("@warn")) && + $this->valueList($value) && + $this->end()) { + $this->append(array("debug", $value, $s), $s); + return true; + } else { + $this->seek($s); + } + + if ($this->literal("@content") && $this->end()) { + $this->append(array("mixin_content"), $s); + return true; + } else { + $this->seek($s); + } + + $last = $this->last(); + if (isset($last) && $last[0] == "if") { + list(, $if) = $last; + if ($this->literal("@else")) { + if ($this->literal("{")) { + $else = $this->pushSpecialBlock("else"); + } elseif ($this->literal("if") && $this->valueList($cond) && $this->literal("{")) { + $else = $this->pushSpecialBlock("elseif"); + $else->cond = $cond; + } + + if (isset($else)) { + $else->dontAppend = true; + $if->cases[] = $else; + return true; + } + } + + $this->seek($s); + } + + if ($this->literal("@charset") && + $this->valueList($charset) && $this->end()) + { + $this->append(array("charset", $charset), $s); + return true; + } else { + $this->seek($s); + } + + // doesn't match built in directive, do generic one + if ($this->literal("@", false) && $this->keyword($dirName) && + ($this->openString("{", $dirValue) || true) && + $this->literal("{")) + { + $directive = $this->pushSpecialBlock("directive"); + $directive->name = $dirName; + if (isset($dirValue)) $directive->value = $dirValue; + return true; + } + + $this->seek($s); + return false; + } + + // property shortcut + // captures most properties before having to parse a selector + if ($this->keyword($name, false) && + $this->literal(": ") && + $this->valueList($value) && + $this->end()) + { + $name = array("string", "", array($name)); + $this->append(array("assign", $name, $value), $s); + return true; + } else { + $this->seek($s); + } + + // variable assigns + if ($this->variable($name) && + $this->literal(":") && + $this->valueList($value) && $this->end()) + { + // check for !default + $defaultVar = $value[0] == "list" && $this->stripDefault($value); + $this->append(array("assign", $name, $value, $defaultVar), $s); + return true; + } else { + $this->seek($s); + } + + // misc + if ($this->literal("-->")) { + return true; + } + + // opening css block + $oldComments = $this->insertComments; + $this->insertComments = false; + if ($this->selectors($selectors) && $this->literal("{")) { + $this->pushBlock($selectors); + $this->insertComments = $oldComments; + return true; + } else { + $this->seek($s); + } + $this->insertComments = $oldComments; + + // property assign, or nested assign + if ($this->propertyName($name) && $this->literal(":")) { + $foundSomething = false; + if ($this->valueList($value)) { + $this->append(array("assign", $name, $value), $s); + $foundSomething = true; + } + + if ($this->literal("{")) { + $propBlock = $this->pushSpecialBlock("nestedprop"); + $propBlock->prefix = $name; + $foundSomething = true; + } elseif ($foundSomething) { + $foundSomething = $this->end(); + } + + if ($foundSomething) { + return true; + } + + $this->seek($s); + } else { + $this->seek($s); + } + + // closing a block + if ($this->literal("}")) { + $block = $this->popBlock(); + if (isset($block->type) && $block->type == "include") { + $include = $block->child; + unset($block->child); + $include[3] = $block; + $this->append($include, $s); + } elseif (empty($block->dontAppend)) { + $type = isset($block->type) ? $block->type : "block"; + $this->append(array($type, $block), $s); + } + return true; + } + + // extra stuff + if ($this->literal(";") || + $this->literal("