Commit 951935ebf84a9f34317833d8c80c5f557b621445

Authored by Dmytry Fedorchuk
2 parents e03ddaf8 d70ed239

Merge remote-tracking branch 'origin/master'

Conflicts:
	.htaccess
.htaccess
... ... @@ -70,7 +70,6 @@ AddDefaultCharset utf-8
70 70  
71 71 RewriteRule sitemap.xml$ frontend/web/sitemap.xml [L]
72 72  
73   -
74 73 RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css|txt|js|images|fonts|img|files)/
75 74  
76 75 RewriteCond %{REQUEST_URI} !index.php
... ...
backend/controllers/SliderImageController.php
... ... @@ -89,6 +89,13 @@ class SliderImageController extends Controller
89 89 $model->image = $image->name;
90 90 }
91 91 if ($model->save() && $image) {
  92 +
  93 + $imgDir = Yii::getAlias('@storage/slider/');
  94 +
  95 + if(!is_dir($imgDir)) {
  96 + mkdir($imgDir, 0755, true);
  97 + }
  98 +
92 99 $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name));
93 100 }
94 101 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]);
... ... @@ -116,11 +123,24 @@ class SliderImageController extends Controller
116 123 $model = $this->findModel($slider_id, $id);
117 124  
118 125 if ($model->load(Yii::$app->request->post())) {
  126 +
  127 +
  128 +
119 129 if ( ($image = UploadedFile::getInstance($model, 'image')) ) {
120 130 $model->image = $image->name;
121 131 }
122 132  
  133 + if(!$model->image){
  134 + $model->image = $model->getOldAttribute('image');
  135 + }
  136 +
123 137 if ($model->save() && $image) {
  138 + $imgDir = Yii::getAlias('@storage/slider/');
  139 +
  140 + if(!is_dir($imgDir)) {
  141 + mkdir($imgDir, 0755, true);
  142 + }
  143 +
124 144 $image->saveAs(Yii::getAlias('@storage/slider/' . $image->name));
125 145 }
126 146 return $this->redirect(['view', 'slider_id'=>$slider_id, 'id' => $model->slider_image_id]);
... ...
backend/views/layouts/main-sidebar.php
... ... @@ -34,6 +34,11 @@ use yii\widgets\Menu;
34 34 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide']
35 35 ],
36 36 [
  37 + 'label' => 'ะœะพะดะธั„ะธะบะฐั†ะธะธ',
  38 + 'url' => ['/product/variant'],
  39 + 'options' => ['class'=>\Yii::$app->user->can('product') ? '' :'hide']
  40 + ],
  41 + [
37 42 'label' => 'ะšะฐั‚ะตะณะพั€ะธะธ',
38 43 'url' => ['/category'],
39 44 'options' => ['class'=>\Yii::$app->user->can('category') ? '' :'hide'],
... ...
backend/views/slider-image/_form.php
... ... @@ -17,6 +17,8 @@ use yii\widgets\ActiveForm;
17 17 <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>
18 18  
19 19 <?= $form->field($model, 'image')->widget(\kartik\file\FileInput::classname(), [
  20 + 'model' => $model,
  21 + 'attribute' => 'image',
20 22 'options' => [
21 23 'accept' => 'image/*',
22 24 'multiple' => true
... ... @@ -29,6 +31,8 @@ use yii\widgets\ActiveForm;
29 31 'showUpload' => false,
30 32 ],
31 33 ]); ?>
  34 +
  35 +
32 36 <?= $form->field($model, 'alt')->textInput(['maxlength' => true]) ?>
33 37  
34 38 <?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>
... ...
common/config/main.php
... ... @@ -207,6 +207,27 @@ return [
207 207 'model' => 'common\modules\product\models\ProductOption',
208 208 ]
209 209 ],
  210 + 'product_variant_option' => [
  211 + 'name' => Yii::t('product', 'Properties'),
  212 + 'field' => 'options',
  213 + 'entity1' => [
  214 + 'model' => '\common\modules\product\models\ProductVariant',
  215 + 'label' => 'Variant',
  216 + 'listField' => 'fullname',
  217 + 'key' => 'product_variant_id',
  218 + 'linked_key' => 'product_variant_id',
  219 + ],
  220 + 'entity2' => [
  221 + 'model' => '\common\modules\rubrication\models\TaxOption',
  222 + 'label' => 'Option',
  223 + 'listField' => 'ValueRenderFlash',
  224 + 'key' => 'tax_option_id',
  225 + 'linked_key' => 'option_id',
  226 + ],
  227 + 'via' => [
  228 + 'model' => 'common\modules\product\models\ProductVariantOption',
  229 + ]
  230 + ],
210 231 'tax_group_to_category' => [
211 232 'name' => Yii::t('product', 'ะฅะฐั€ะฐะบั‚ะตั€ะธัั‚ะธะบะธ ะฟะพ ะบะฐั‚ะตะณะพั€ะธัะผ'),
212 233 'field' => 'group_to_category',
... ...
common/modules/product/controllers/ManageController.php
... ... @@ -117,16 +117,6 @@ class ManageController extends Controller
117 117 $model = $this->findModel($id);
118 118 if ($model->load(Yii::$app->request->post())) {
119 119 $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
120   - $model->variantImagesUpload = UploadedFile::getInstances($model, 'variants');
121   - /*if (!empty($variantImagesUpload)) {
122   - var_dump($variantImagesUpload);exit;
123   - }*/
124   - /*$model->variantImagesUpload = [];
125   - foreach ($_POST['Product']['variants'] as $i => $variant) {
126   - if (!empty($variant['product_variant_id'])) {
127   - $model->variantImagesUpload[$variant['product_variant_id']] = $variantImagesUpload[$i];
128   - }
129   - }*/
130 120 if ($model->save()) {
131 121 // foreach ($model->images as $image) {
132 122 // $image->delete();
... ... @@ -140,19 +130,6 @@ class ManageController extends Controller
140 130 }
141 131 }
142 132  
143   - if ( ($images = $model->variantImagesUpload()) !== FALSE) {
144   - foreach ($images as $i => $image) {
145   - if (empty($model->_variants[$i])) {
146   - continue;
147   - }
148   - $imageModel = new ProductImage();
149   - $imageModel->product_id = $model->product_id;
150   - $imageModel->product_variant_id = intval($model->_variants[$i]['product_variant_id']);
151   - $imageModel->image = $image;
152   - $imageModel->save();
153   - }
154   - }
155   -
156 133 return $this->redirect(['view', 'id' => $model->product_id]);
157 134 }
158 135 } else {
... ...
common/modules/product/controllers/VariantController.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +namespace common\modules\product\controllers;
  4 +
  5 +use common\modules\product\models\Product;
  6 +use common\modules\product\models\ProductVariant;
  7 +use common\modules\product\models\ProductVariantSearch;
  8 +use Yii;
  9 +use yii\web\Controller;
  10 +use yii\web\NotFoundHttpException;
  11 +use yii\filters\VerbFilter;
  12 +use yii\web\UploadedFile;
  13 +
  14 +/**
  15 + * ManageController implements the CRUD actions for ProductVariant model.
  16 + */
  17 +class VariantController extends Controller
  18 +{
  19 + /**
  20 + * @inheritdoc
  21 + */
  22 + public function behaviors()
  23 + {
  24 + return [
  25 + 'verbs' => [
  26 + 'class' => VerbFilter::className(),
  27 + 'actions' => [
  28 + 'delete' => ['POST'],
  29 + ],
  30 + ],
  31 + ];
  32 + }
  33 +
  34 + /**
  35 + * Lists all ProductVariant models.
  36 + * @return mixed
  37 + */
  38 + public function actionIndex()
  39 + {
  40 + $searchModel = new ProductVariantSearch();
  41 + $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
  42 +
  43 + if ( ($product = Yii::$app->request->get('product_id')) !== null) {
  44 + $product = Product::findOne($product);
  45 + }
  46 +
  47 + return $this->render('index', [
  48 + 'searchModel' => $searchModel,
  49 + 'dataProvider' => $dataProvider,
  50 + 'product' => $product,
  51 + ]);
  52 + }
  53 +
  54 + /**
  55 + * Displays a single ProductVariant model.
  56 + * @param integer $id
  57 + * @return mixed
  58 + */
  59 + public function actionView($id)
  60 + {
  61 + return $this->render('view', [
  62 + 'model' => $this->findModel($id),
  63 + ]);
  64 + }
  65 +
  66 + /**
  67 + * Creates a new ProductVariant model.
  68 + * If creation is successful, the browser will be redirected to the 'view' page.
  69 + * @return mixed
  70 + */
  71 + public function actionCreate()
  72 + {
  73 + $model = new ProductVariant();
  74 +
  75 + if ($model->load(Yii::$app->request->post())) {
  76 + $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
  77 +
  78 + if ($model->save() && $model->imagesUpload) {
  79 + if ( ($images = $model->imagesUpload()) !== FALSE) {
  80 + foreach ($images as $image) {
  81 + $imageModel = new ProductImage();
  82 + $imageModel->product_id = $model->product_id;
  83 + $imageModel->product_variant_id = $model->product_variant_id;
  84 + $imageModel->image = $image;
  85 + $imageModel->save();
  86 + }
  87 + }
  88 +
  89 + return $this->redirect(['view', 'id' => $model->product_variant_id]);
  90 + }
  91 + } else {
  92 + return $this->render('create', [
  93 + 'model' => $model,
  94 + ]);
  95 + }
  96 + }
  97 +
  98 + /**
  99 + * Updates an existing ProductVariant model.
  100 + * If update is successful, the browser will be redirected to the 'view' page.
  101 + * @param integer $id
  102 + * @return mixed
  103 + */
  104 + public function actionUpdate($id)
  105 + {
  106 + $model = $this->findModel($id);
  107 + if ($model->load(Yii::$app->request->post())) {
  108 + $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
  109 + if ($model->save()) {
  110 + if ( ($images = $model->imagesUpload()) !== FALSE) {
  111 + foreach ($images as $image) {
  112 + $imageModel = new ProductImage();
  113 + $imageModel->product_id = $model->product_id;
  114 + $imageModel->product_variant_id = $model->product_variant_id;
  115 + $imageModel->image = $image;
  116 + $imageModel->save();
  117 + }
  118 + }
  119 +
  120 + return $this->redirect(['view', 'id' => $model->product_variant_id]);
  121 + }
  122 + } else {
  123 + $groups = $model->category->getTaxGroups();
  124 +
  125 + return $this->render('update', [
  126 + 'model' => $model,
  127 + 'groups' => $groups,
  128 + ]);
  129 + }
  130 + }
  131 +
  132 + /**
  133 + * Deletes an existing ProductVariant model.
  134 + * If deletion is successful, the browser will be redirected to the 'index' page.
  135 + * @param integer $id
  136 + * @return mixed
  137 + */
  138 + public function actionDelete($id)
  139 + {
  140 + $this->findModel($id)->delete();
  141 +
  142 + return $this->redirect(['index']);
  143 + }
  144 +
  145 + public function actionDelimg($id)
  146 + {
  147 + $image = ProductImage::findOne($id);
  148 +
  149 + if ($image) {
  150 + $image->delete();
  151 + }
  152 +
  153 + print '1';
  154 + exit;
  155 + }
  156 +
  157 + /**
  158 + * Finds the ProductVariant model based on its primary key value.
  159 + * If the model is not found, a 404 HTTP exception will be thrown.
  160 + * @param integer $id
  161 + * @return ProductVariant the loaded model
  162 + * @throws NotFoundHttpException if the model cannot be found
  163 + */
  164 + protected function findModel($id)
  165 + {
  166 + if (($model = ProductVariant::findOne($id)) !== null) {
  167 + return $model;
  168 + } else {
  169 + throw new NotFoundHttpException('The requested page does not exist.');
  170 + }
  171 + }
  172 +}
... ...
common/modules/product/helpers/ProductHelper.php
... ... @@ -140,4 +140,63 @@ class ProductHelper extends Object {
140 140 }
141 141 return $products;
142 142 }
  143 +
  144 + public static function _setQueryParams(&$query, $params, $setPriceLimits = true) {
  145 + if (!empty($params['keywords'])) {
  146 + if (!is_array($params['keywords'])) {
  147 + $params['keywords'] = [$params['keywords']];
  148 + }
  149 + foreach ($params['keywords'] as $keyword) {
  150 + $query->orFilterWhere(['ilike', Product::tableName() .'.name', $keyword]);
  151 + $query->orFilterWhere(['ilike', BrandName::tableName() .'.value', $keyword]);
  152 + $query->orFilterWhere(['ilike', CategoryName::tableName() .'.value', $keyword]);
  153 + }
  154 + }
  155 + if (!empty($params['special'])) {
  156 + foreach($params['special'] as $key => $value) {
  157 + $query->orFilterWhere([Product::tableName() .'.'. $key => $value]);
  158 + }
  159 + }
  160 + if (!empty($params['brands'])) {
  161 + $query->andFilterWhere([Product::tableName() .'.brand_id' => $params['brands']]);
  162 + }
  163 + if (!empty($params['options'])) {
  164 + foreach ($params['options'] as $group => $options) {
  165 + foreach ($options as &$option) {
  166 + $option = "'$option'";
  167 + }
  168 + $query->andWhere(
  169 + Product::tableName() . '.product_id IN (SELECT product_id AS products FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id INNER JOIN tax_group ON tax_group.tax_group_id = tax_option.tax_group_id WHERE tax_group.alias LIKE \''. $group .'\' AND tax_option.alias IN (' . implode(',', $options) . '))'
  170 + );
  171 + }
  172 + }
  173 +
  174 + if ($setPriceLimits && !empty($params['prices'])) {
  175 + if ($params['prices']['min'] > 0) {
  176 + $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]);
  177 + }
  178 + if ($params['prices']['max'] > 0) {
  179 + $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]);
  180 + }
  181 + }
  182 + }
  183 +
  184 + public static function productCountQuery($category = null, $params, $excludeKeys = []) {
  185 + $p = [];
  186 + foreach ($params as $key => $param) {
  187 + if (in_array($key, $excludeKeys)) {
  188 + $p[$key] = $param;
  189 + }
  190 + }
  191 + /** @var ActiveQuery $query */
  192 + if (!empty($category)) {
  193 + $query = $category->getProducts();
  194 + } else {
  195 + $query = Product::find();
  196 + }
  197 + ProductHelper::_setQueryParams($query, $params);
  198 + $query->select(['COUNT(product.product_id)']);
  199 +
  200 + return $query;
  201 + }
143 202 }
144 203 \ No newline at end of file
... ...
common/modules/product/models/BrandSearch.php
... ... @@ -2,6 +2,8 @@
2 2  
3 3 namespace common\modules\product\models;
4 4  
  5 +use common\modules\product\helpers\ProductHelper;
  6 +use common\modules\rubrication\models\TaxOption;
5 7 use Yii;
6 8 use yii\base\Model;
7 9 use yii\data\ActiveDataProvider;
... ... @@ -88,15 +90,57 @@ class BrandSearch extends Brand
88 90 return $dataProvider;
89 91 }
90 92  
91   - public function getBrands($category = null, $params = []) {
  93 + public function getBrands($category = null, $params = [], $productQuery = null) {
  94 +// $queryCount = ProductHelper::productCountQuery($category, $params, ['brands']);
  95 +
  96 + /*if (!empty($params['prices'])) {
  97 + if ($params['prices']['min'] > 0) {
  98 + $queryCount->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]);
  99 + }
  100 + if ($params['prices']['max'] > 0) {
  101 + $queryCount->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]);
  102 + }
  103 + }*/
  104 +// if (!empty($params['options'])) {
  105 +// $queryCount->innerJoin(TaxOption::tableName(), TaxOption::tableName())
  106 +// }
  107 +
92 108 $query = Brand::find()
93 109 ->select([
94   - Brand::tableName() .'.*',
95   - 'COUNT('. ProductCategory::tableName() .'.product_id) AS _items_count'
  110 + Brand::tableName() .'.*'
96 111 ])
97 112 ->innerJoin(Product::tableName(), Product::tableName() .'.brand_id='. Brand::tableName() .'.brand_id')
98 113 ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. Product::tableName() .'.product_id')
99 114 ->with(['brandName']);
  115 +
  116 +
  117 + $queryCount = Product::find()
  118 + ->select(['COUNT(product.product_id)'])
  119 + ->where('product.brand_id = brand.brand_id');
  120 + $queryCount->andWhere('(SELECT COUNT(pv.product_variant_id) FROM "product_variant" "pv" WHERE pv.stock != 0 AND pv.product_id = product.product_id) > 0');
  121 + if (!empty($category)) {
  122 + $queryCount->andWhere('(SELECT COUNT(pc.product_id) FROM product_category pc WHERE pc.product_id = product.product_id AND pc.category_id = '. $category->category_id .') > 0');
  123 + }
  124 + if (!empty($params['options'])) {
  125 + $queryCount->innerJoin('product_option', 'product_option.product_id = product.product_id');
  126 + $queryCount->innerJoin('tax_option', 'tax_option.tax_option_id = product_option.option_id');
  127 + $queryCount->innerJoin('tax_group', 'tax_group.tax_group_id = tax_option.tax_group_id');
  128 + foreach ($params['options'] as $group => $options) {
  129 + $queryCount->andWhere([
  130 + 'tax_group.alias' => $group,
  131 + 'tax_option.alias' => $options
  132 + ]);
  133 + }
  134 +// $query->addSelect("(SELECT COUNT(product_option.product_id) AS products FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id INNER JOIN tax_group ON tax_group.tax_group_id = tax_option.tax_group_id WHERE tax_group.alias LIKE '$group' AND tax_option.alias IN (" . implode(',', $options) . ")) AS _items_count");
  135 + }
  136 + $query->addSelect(['_items_count' => $queryCount]);
  137 +
  138 +// if ($productQuery) {
  139 +// $productQuery->select(['COUNT(product.product_id)']);
  140 +// $query->addSelect(['_items_count' => $productQuery]);
  141 +// }
  142 +
  143 +
100 144 $query->innerJoin('product_variant', 'product_variant.product_id = '. Product::tableName() .'.product_id');
101 145 $query->where(['!=', 'product_variant.stock', 0]);
102 146 $query->groupBy(Product::tableName() .'.product_id');
... ... @@ -106,20 +150,6 @@ class BrandSearch extends Brand
106 150 ]);
107 151 }
108 152 $query->groupBy(Brand::tableName() .'.brand_id');
109   - if (isset($params['options'])) {
110   - unset($params['options']);
111   - }
112   - if (!empty($params['prices'])) {
113   - if ($params['prices']['min'] > 0 || $params['prices']['max'] > 0) {
114   - $query->innerJoin(ProductVariant::tableName(), ProductVariant::tableName() .'.product_id='. Product::tableName() .'.product_id');
115   - }
116   - if ($params['prices']['min'] > 0) {
117   - $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]);
118   - }
119   - if ($params['prices']['max'] > 0) {
120   - $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]);
121   - }
122   - }
123 153  
124 154 return $query;
125 155 }
... ...
common/modules/product/models/Product.php
... ... @@ -38,7 +38,7 @@ class Product extends \yii\db\ActiveRecord
38 38  
39 39 /** @var array $_images */
40 40 public $imagesUpload = [];
41   - public $variantImagesUpload = [];
  41 +
42 42 /**
43 43 * @inheritdoc
44 44 */
... ... @@ -318,27 +318,6 @@ class Product extends \yii\db\ActiveRecord
318 318 ProductVariant::deleteAll(['product_id' => $this->product_id]);
319 319 }
320 320  
321   - public function variantImagesUpload()
322   - {
323   - if ($this->validate()) {
324   - $images = [];
325   - foreach ($this->variantImagesUpload as $product_variant_id => $image) {
326   - $imageName = $image->baseName .'.'. $image->extension;
327   - $i = 0;
328   - while(file_exists(Yii::getAlias('@imagesDir/products/' . $imageName))) {
329   - $i++;
330   - $imageName = $image->baseName .'_'. $i .'.'. $image->extension;
331   - }
332   -
333   - $image->saveAs(Yii::getAlias('@imagesDir/products/' .$imageName));
334   - $images[$product_variant_id] = $imageName;
335   - }
336   - return $images;
337   - } else {
338   - return false;
339   - }
340   - }
341   -
342 321 public function imagesUpload()
343 322 {
344 323 if ($this->validate()) {
... ...
common/modules/product/models/ProductVariant.php
... ... @@ -2,6 +2,8 @@
2 2  
3 3 namespace common\modules\product\models;
4 4  
  5 +use common\modules\relation\relationBehavior;
  6 +use common\modules\rubrication\models\TaxOption;
5 7 use Yii;
6 8 use yii\helpers\ArrayHelper;
7 9  
... ... @@ -37,7 +39,23 @@ class ProductVariant extends \yii\db\ActiveRecord
37 39 public $stocks;
38 40  
39 41 /** @var array $_images */
40   -// public $imagesUpload = [];
  42 + public $imagesUpload = [];
  43 +
  44 + /**
  45 + * @inheritdoc
  46 + */
  47 + public function behaviors()
  48 + {
  49 + return [
  50 + [
  51 + 'class' => relationBehavior::className(),
  52 + 'relations' => [
  53 + 'product_variant_option' => 'entity1' // Product variant options
  54 + ]
  55 + ]
  56 + ];
  57 + }
  58 +
41 59 /**
42 60 * @inheritdoc
43 61 */
... ... @@ -57,6 +75,7 @@ class ProductVariant extends \yii\db\ActiveRecord
57 75 [['price', 'price_old', 'stock'], 'number'],
58 76 [['name', 'sku'], 'string', 'max' => 255],
59 77 [['remote_id'], 'string', 'max' => 20],
  78 + [['options', 'imagesUpload'], 'safe'],
60 79 // [['imagesUpload'], 'safe'],
61 80 // [['imagesUpload'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg, gif', 'maxFiles' => 50],
62 81 [['product_unit_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProductUnit::className(), 'targetAttribute' => ['product_unit_id' => 'product_unit_id']],
... ... @@ -144,6 +163,34 @@ class ProductVariant extends \yii\db\ActiveRecord
144 163 return empty($this->product) ? null : ($this->product->name . (empty($this->name) ? '' : ' '. $this->name));
145 164 }
146 165  
  166 + public function getImagesHTML() {
  167 + $op = [];
  168 + if ($this->images) {
  169 + foreach ($this->images as $image) {
  170 + $op[] = \common\components\artboximage\ArtboxImageHelper::getImage($image->imageUrl, 'admin_thumb');
  171 + }
  172 + }
  173 + return $op;
  174 + }
  175 +
  176 + public function getImagesConfig() {
  177 + $op = [];
  178 + if ($this->images) {
  179 + foreach ($this->images as $image) {
  180 + $op[] = [
  181 + 'caption' => $image->image,
  182 + 'width' => '120px',
  183 + 'url' => \yii\helpers\Url::to(['/product/manage/delimg', 'id' => $image->product_image_id]),
  184 + 'key' => $image->product_image_id,
  185 + 'extra' => [
  186 + 'id' => $image->product_image_id,
  187 + ],
  188 + ];
  189 + }
  190 + }
  191 + return $op;
  192 + }
  193 +
147 194 /**
148 195 * @return \yii\db\ActiveQuery
149 196 */
... ... @@ -152,6 +199,24 @@ class ProductVariant extends \yii\db\ActiveRecord
152 199 return $this->hasMany(ProductImage::className(), ['product_variant_id' => 'product_variant_id']);
153 200 }
154 201  
  202 + public function getOptions() {
  203 + return $this->hasMany(TaxOption::className(), ['tax_option_id' => 'option_id'])->viaTable('product_variant_option', ['product_variant_id' => 'product_variant_id']);
  204 + }
  205 +
  206 + public function getProperties() {
  207 + $groups = $options = [];
  208 + foreach ($this->options as $option) {
  209 + $options[$option->tax_group_id][] = $option;
  210 + }
  211 + foreach (TaxGroup::find()->where(['tax_group_id' => array_keys($options)])->all() as $group) {
  212 + if (!empty($options[$group->tax_group_id])) {
  213 + $group->_options = $options[$group->tax_group_id];
  214 + $groups[] = $group;
  215 + }
  216 + }
  217 + return $groups;
  218 + }
  219 +
155 220 /**
156 221 * @inheritdoc
157 222 * @return ProductVariantQuery the active query used by this AR class.
... ... @@ -169,6 +234,10 @@ class ProductVariant extends \yii\db\ActiveRecord
169 234 $this->stocks = (array) $stocks;
170 235 }
171 236  
  237 + public function getCategory() {
  238 + return $this->hasOne(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']);
  239 + }
  240 +
172 241 public function afterSave($insert, $changedAttributes)
173 242 {
174 243 if (!is_null($this->stocks)) {
... ... @@ -187,4 +256,25 @@ class ProductVariant extends \yii\db\ActiveRecord
187 256 ProductImage::deleteAll(['product_variant_id' => $this->product_variant_id]);
188 257 ProductStock::deleteAll(['product_variant_id' => $this->product_variant_id]);
189 258 }
  259 +
  260 + public function imagesUpload()
  261 + {
  262 + if ($this->validate()) {
  263 + $images = [];
  264 + foreach ($this->imagesUpload as $image) {
  265 + $imageName = $image->baseName .'.'. $image->extension;
  266 + $i = 0;
  267 + while(file_exists(Yii::getAlias('@imagesDir/products/' . $imageName))) {
  268 + $i++;
  269 + $imageName = $image->baseName .'_'. $i .'.'. $image->extension;
  270 + }
  271 +
  272 + $image->saveAs(Yii::getAlias('@imagesDir/products/' .$imageName));
  273 + $images[] = $imageName;
  274 + }
  275 + return $images;
  276 + } else {
  277 + return false;
  278 + }
  279 + }
190 280 }
... ...
common/modules/product/models/ProductVariantOption.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +namespace common\modules\product\models;
  4 +
  5 +use Yii;
  6 +
  7 +/**
  8 + * This is the model class for table "product_variant_option".
  9 + *
  10 + * @property integer $product_variant_id
  11 + * @property integer $option_id
  12 + *
  13 + * @property ProductVariant $productVariant
  14 + * @property TaxOption $option
  15 + */
  16 +class ProductVariantOption extends \yii\db\ActiveRecord
  17 +{
  18 + /**
  19 + * @inheritdoc
  20 + */
  21 + public static function tableName()
  22 + {
  23 + return 'product_variant_option';
  24 + }
  25 +
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public function rules()
  30 + {
  31 + return [
  32 + [['product_variant_id', 'option_id'], 'required'],
  33 + [['product_variant_id', 'option_id'], 'integer'],
  34 + [['product_variant_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProductVariant::className(), 'targetAttribute' => ['product_variant_id' => 'product_variant_id']],
  35 + [['option_id'], 'exist', 'skipOnError' => true, 'targetClass' => TaxOption::className(), 'targetAttribute' => ['option_id' => 'tax_option_id']],
  36 + ];
  37 + }
  38 +
  39 + /**
  40 + * @inheritdoc
  41 + */
  42 + public function attributeLabels()
  43 + {
  44 + return [
  45 + 'product_variant_id' => 'Product Variant ID',
  46 + 'option_id' => 'Option ID',
  47 + ];
  48 + }
  49 +
  50 + /**
  51 + * @return \yii\db\ActiveQuery
  52 + */
  53 + public function getProductVariant()
  54 + {
  55 + return $this->hasOne(ProductVariant::className(), ['product_variant_id' => 'product_variant_id']);
  56 + }
  57 +
  58 + /**
  59 + * @return \yii\db\ActiveQuery
  60 + */
  61 + public function getOption()
  62 + {
  63 + return $this->hasOne(TaxOption::className(), ['tax_option_id' => 'option_id']);
  64 + }
  65 +}
... ...
common/modules/product/models/ProductVariantSearch.php
... ... @@ -24,7 +24,7 @@ class ProductVariantSearch extends ProductVariant
24 24 public function rules()
25 25 {
26 26 return [
27   - [['name', 'fullname', 'sku', 'price', 'price_old', 'stock', 'fullname', 'brand_name', 'category_name'], 'safe'],
  27 + [['name', 'fullname', 'sku', 'price', 'price_old', 'stock', 'brand_name', 'category_name'], 'safe'],
28 28 [['product_variant_id', 'product_id'], 'integer'],
29 29 [['is_top', 'is_new', 'akciya'], 'boolean'],
30 30 ];
... ... @@ -48,7 +48,7 @@ class ProductVariantSearch extends ProductVariant
48 48 */
49 49 public function search($params)
50 50 {
51   - $query = Product::find();
  51 + $query = ProductVariant::find();
52 52  
53 53 // add conditions that should always apply here
54 54  
... ... @@ -58,6 +58,10 @@ class ProductVariantSearch extends ProductVariant
58 58  
59 59 $this->load($params);
60 60  
  61 + if (!empty($params['product_id'])) {
  62 + $this->product_id = $params['product_id'];
  63 + }
  64 +
61 65 if (!$this->validate()) {
62 66 // uncomment the following line if you do not want to return any records when validation fails
63 67 // $query->where('0=1');
... ... @@ -66,7 +70,12 @@ class ProductVariantSearch extends ProductVariant
66 70  
67 71 $dataProvider->setSort([
68 72 'attributes' => [
69   - 'name',
  73 + 'name' => [
  74 + 'asc' => ['product_variant.name' => SORT_ASC],
  75 + 'desc' => ['product_variant.value' => SORT_DESC],
  76 + 'default' => SORT_DESC,
  77 + 'label' => 'Variant name',
  78 + ],
70 79 'brand_name' => [
71 80 'asc' => ['brand_name.value' => SORT_ASC],
72 81 'desc' => ['brand_name.value' => SORT_DESC],
... ... @@ -98,12 +107,12 @@ class ProductVariantSearch extends ProductVariant
98 107  
99 108 // grid filtering conditions
100 109 $query->andFilterWhere([
101   - 'product.product_id' => $this->product_id,
  110 + 'product_variant.product_id' => $this->product_id,
102 111 'product_variant_id' => $this->product_variant_id,
103 112 ]);
104 113  
105 114 if (!empty($this->fullname)) {
106   - $query->orFilterWhere(['like', 'name', $this->fullname]);
  115 + $query->orFilterWhere(['like', 'product_variant.name', $this->fullname]);
107 116 $query->orFilterWhere(['ilike', 'product.name', $this->fullname]);
108 117 }
109 118 $query->andFilterWhere(['ilike', 'product.brand_name.value', $this->brand_name]);
... ... @@ -111,7 +120,7 @@ class ProductVariantSearch extends ProductVariant
111 120 $query->andFilterWhere(['ilike', 'sku', $this->sku]);
112 121  
113 122 $query->groupBy(['product_variant_id']);
114   - $query->orderBy('product.product_id', 'DESC');
  123 + $query->orderBy('product_variant.product_id', 'ASC');
115 124  
116 125 return $dataProvider;
117 126 }
... ...
common/modules/product/views/manage/_form.php
... ... @@ -69,7 +69,7 @@ use kartik\select2\Select2;
69 69 ],
70 70 ]); ?>
71 71  
72   - <?= $form->field($model, 'variants')->widget(MultipleInput::className(), [
  72 + <?php /*= $form->field($model, 'variants')->widget(MultipleInput::className(), [
73 73 'columns' => [
74 74 [
75 75 'name' => 'product_variant_id',
... ... @@ -119,7 +119,7 @@ use kartik\select2\Select2;
119 119 ],
120 120 ],
121 121 ]);
122   - ?>
  122 + */ ?>
123 123  
124 124 <?php if(isset($groups)) :?>
125 125 <?php foreach($groups->all() as $group) :?>
... ...
common/modules/product/views/manage/index.php
... ... @@ -27,7 +27,6 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
27 27 'filterModel' => $searchModel,
28 28 'columns' => [
29 29 ['class' => 'yii\grid\SerialColumn'],
30   -// 'product_id',
31 30 'name',
32 31 [
33 32 'label' => Yii::t('product', 'Brand'),
... ... @@ -87,7 +86,7 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
87 86 ],
88 87 [
89 88 'class' => 'yii\grid\ActionColumn',
90   - 'template' => '{view} |{is_top} {is_new} {akciya} | {update} {delete}',
  89 + 'template' => '{items} {view} |{is_top} {is_new} {akciya} | {update} {delete}',
91 90 'buttons' => [
92 91 'is_top' => function ($url, $model) {
93 92 return Html::a('<span class="glyphicon glyphicon-star' . ($model->is_top ? '' : '-empty') . '"></span>', $url, [
... ... @@ -104,9 +103,18 @@ $this-&gt;params[&#39;breadcrumbs&#39;][] = $this-&gt;title;
104 103 'title' => Yii::t('product', ($model->akciya ? 'Set not is promotion' : 'Set is promotion')),
105 104 ]);
106 105 },
  106 + 'items' => function ($url, $model) {
  107 + return Html::a('<span class="glyphicon glyphicon-th-list"></span>', $url, [
  108 + 'title' => Yii::t('product', 'Variants'),
  109 + ]);
  110 + },
  111 +
107 112 ],
108 113 'urlCreator' => function ($action, $model, $key, $index) {
109 114 switch ($action) {
  115 + case 'items':
  116 + return \yii\helpers\Url::to(['/product/variant', 'product_id' => $model->product_id]);
  117 + break;
110 118 case 'is_top':
111 119 return \yii\helpers\Url::to(['manage/is_top', 'id' => $model->product_id]);
112 120 break;
... ...
common/modules/product/views/variant/_form.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\widgets\ActiveForm;
  5 +use yii\helpers\ArrayHelper;
  6 +use common\components\artboxtree\ArtboxTreeHelper;
  7 +use common\modules\product\helpers\ProductHelper;
  8 +use kartik\file\FileInput;
  9 +use unclead\widgets\MultipleInput;
  10 +use unclead\widgets\MultipleInputColumn;
  11 +use kartik\select2\Select2;
  12 +
  13 +/* @var $this yii\web\View */
  14 +/* @var $model common\modules\product\models\Product */
  15 +/* @var $form yii\widgets\ActiveForm */
  16 +?>
  17 +
  18 +<div class="product-form">
  19 +
  20 + <?php $form = ActiveForm::begin([
  21 + 'options' => ['enctype' => 'multipart/form-data']
  22 + ]); ?>
  23 +
  24 + <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?>
  25 +
  26 + <?= $form->field($model, 'product_id')->hiddenInput()->label(''); ?>
  27 +
  28 + <?= $form->field($model, 'sku')->textarea(); ?>
  29 + <?= $form->field($model, 'price')->textarea(); ?>
  30 + <?= $form->field($model, 'price_old')->textarea(); ?>
  31 +
  32 + <?= $form->field($model, 'imagesUpload[]')->widget(\kartik\file\FileInput::classname(), [
  33 + 'language' => 'ru',
  34 + 'options' => [
  35 + 'accept' => 'image/*',
  36 + 'multiple' => true,
  37 + ],
  38 + 'pluginOptions' => [
  39 + 'allowedFileExtensions' => ['jpg', 'gif', 'png'],
  40 + 'initialPreview' => !empty($model->imagesHTML) ? $model->imagesHTML : [],
  41 + 'initialPreviewConfig' => $model->imagesConfig,
  42 + 'overwriteInitial' => false,
  43 + 'showRemove' => false,
  44 + 'showUpload' => false,
  45 +// 'uploadUrl' => empty($model->product_id) ? null : \yii\helpers\Url::to(['/product/manage/uploadImage']),
  46 + 'uploadAsync' => !empty($model->product_id),
  47 + 'previewFileType' => 'image',
  48 + ],
  49 + ]); ?>
  50 +
  51 + <?php /*= $form->field($model, 'variants')->widget(MultipleInput::className(), [
  52 + 'columns' => [
  53 + [
  54 + 'name' => 'product_variant_id',
  55 + 'type' => MultipleInputColumn::TYPE_HIDDEN_INPUT,
  56 + ],
  57 + [
  58 + 'name' => 'name',
  59 + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT,
  60 + 'title' => Yii::t('product', 'Name'),
  61 + ],
  62 + [
  63 + 'name' => 'sku',
  64 + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT,
  65 + 'title' => Yii::t('product', 'SKU'),
  66 + ],
  67 + [
  68 + 'name' => 'price',
  69 + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT,
  70 + 'title' => Yii::t('product', 'Price'),
  71 + ],
  72 + [
  73 + 'name' => 'price_old',
  74 + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT,
  75 + 'title' => Yii::t('product', 'Old Price'),
  76 + ],
  77 + [
  78 + 'name' => 'product_unit_id',
  79 + 'type' => MultipleInputColumn::TYPE_DROPDOWN,
  80 + 'title' => Yii::t('product', 'Unit'),
  81 + 'items' => ArrayHelper::map(\common\modules\product\models\ProductUnit::find()->all(), 'product_unit_id', 'name'),
  82 + ],
  83 + [
  84 + 'name' => 'stock',
  85 + 'type' => MultipleInputColumn::TYPE_TEXT_INPUT,
  86 + 'title' => Yii::t('product', 'Stock'),
  87 + 'options' => [
  88 + 'placeholder' => 'โˆž'
  89 + ],
  90 + ],
  91 + [
  92 + 'name' => 'image',
  93 + 'type' => 'fileInput',
  94 + 'title' => Yii::t('product', 'Image'),
  95 + 'options' => [
  96 + 'multiple' => false
  97 + ],
  98 + ],
  99 + ],
  100 + ]);
  101 + */ ?>
  102 +
  103 + <?php if(isset($groups)) :?>
  104 + <?php foreach($groups->all() as $group) :?>
  105 + <?= $form->field($model, 'options')->checkboxList(
  106 + ArrayHelper::map($group->options, 'tax_option_id', 'ValueRenderFlash'),
  107 + [
  108 + 'multiple' => true,
  109 + 'unselect' => null,
  110 + ]
  111 + )->label($group->name);?>
  112 + <?php endforeach?>
  113 + <?php endif?>
  114 +
  115 + <div class="form-group">
  116 + <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
  117 + </div>
  118 +
  119 + <?php ActiveForm::end(); ?>
  120 +
  121 +</div>
... ...
common/modules/product/views/variant/_search.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\widgets\ActiveForm;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $model common\modules\product\models\ProductSearch */
  8 +/* @var $form yii\widgets\ActiveForm */
  9 +?>
  10 +
  11 +<div class="product-search">
  12 +
  13 + <?php $form = ActiveForm::begin([
  14 + 'action' => ['index'],
  15 + 'method' => 'get',
  16 + ]); ?>
  17 +
  18 + <?= $form->field($model, 'name') ?>
  19 +
  20 + <?= $form->field($model, 'brand_id') ?>
  21 +
  22 + <?= $form->field($model, 'product_id') ?>
  23 +
  24 + <div class="form-group">
  25 + <?= Html::submitButton(Yii::t('product', 'Search'), ['class' => 'btn btn-primary']) ?>
  26 + <?= Html::resetButton(Yii::t('product', 'Reset'), ['class' => 'btn btn-default']) ?>
  27 + </div>
  28 +
  29 + <?php ActiveForm::end(); ?>
  30 +
  31 +</div>
... ...
common/modules/product/views/variant/create.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $model common\modules\product\models\Product */
  8 +
  9 +$this->title = Yii::t('product', 'Create Product');
  10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Products'), 'url' => ['index']];
  11 +$this->params['breadcrumbs'][] = $this->title;
  12 +?>
  13 +<div class="product-create">
  14 +
  15 + <h1><?= Html::encode($this->title) ?></h1>
  16 +
  17 + <?= $this->render('_form', [
  18 + 'model' => $model,
  19 + ]) ?>
  20 +
  21 +</div>
... ...
common/modules/product/views/variant/index.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\grid\GridView;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $searchModel common\modules\product\models\ProductVariantSearch */
  8 +/* @var $dataProvider yii\data\ActiveDataProvider */
  9 +
  10 +$this->title = Yii::t('product', 'Variants');
  11 +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Products'), 'url' => ['/product/manage']];
  12 +if (!empty($product)) {
  13 + $this->params['breadcrumbs'] = [
  14 + ['label' => Yii::t('product', 'Variants'), 'url' => ['/product/variant']],
  15 + $product->fullname
  16 + ];
  17 +} else {
  18 + $this->params['breadcrumbs'][] = $this->title;
  19 +}
  20 +?>
  21 +<div class="product-index">
  22 +
  23 + <h1><?= Html::encode($this->title) ?></h1>
  24 + <?php // echo $this->render('_search', ['model' => $searchModel]); ?>
  25 +
  26 + <p>
  27 + <?= Html::a(Yii::t('product', 'Create Variant'), ['create'], ['class' => 'btn btn-success']) ?>
  28 + </p>
  29 + <?= GridView::widget([
  30 + 'dataProvider' => $dataProvider,
  31 + 'filterModel' => $searchModel,
  32 + 'columns' => [
  33 + ['class' => 'yii\grid\SerialColumn'],
  34 +
  35 + [
  36 + 'attribute' => 'product_id',
  37 + 'value' => 'fullname',
  38 + 'label' => Yii::t('product', 'Name'),
  39 + 'filter' => \kartik\select2\Select2::widget([
  40 + 'model' => $searchModel,
  41 + 'attribute' => 'product_id',
  42 + 'data' => \yii\helpers\ArrayHelper::map(\common\modules\product\models\Product::find()->orderBy(['name' => 'ASC'])->all(), 'product_id', 'name'),
  43 + 'language' => 'ru',
  44 + 'options' => [
  45 + 'placeholder' => Yii::t('product', 'Select product'),
  46 + 'multiple' => false,
  47 + ],
  48 + 'pluginOptions' => [
  49 + 'allowClear' => true
  50 + ],
  51 + ]),
  52 + ],
  53 + 'sku',
  54 + 'price',
  55 + 'price_old',
  56 + 'stock',
  57 +
  58 + ['class' => 'yii\grid\ActionColumn'],
  59 + ],
  60 + ]); ?>
  61 +</div>
... ...
common/modules/product/views/variant/update.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +
  5 +/* @var $this yii\web\View */
  6 +/* @var $model common\modules\product\models\Product */
  7 +
  8 +$this->title = Yii::t('product', 'Update {modelClass}: ', [
  9 + 'modelClass' => 'Product',
  10 +]) . ' ' . $model->name;
  11 +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Products'), 'url' => ['index']];
  12 +$this->params['breadcrumbs'][] = ['label' => $model->product->name, 'url' => ['view', 'id' => $model->product->product_id]];
  13 +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Variants'), 'url' => ['/product/variant?product_id='. $model->product->product_id]];
  14 +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->product_variant_id]];
  15 +$this->params['breadcrumbs'][] = Yii::t('product', 'Update');
  16 +?>
  17 +<div class="product-update">
  18 +
  19 + <h1><?= Html::encode($this->title) ?></h1>
  20 +
  21 + <?= $this->render('_form', [
  22 + 'model' => $model,
  23 + 'groups' => $groups,
  24 + ]) ?>
  25 +
  26 +</div>
... ...
common/modules/product/views/variant/view.php 0 โ†’ 100644
  1 +<?php
  2 +
  3 +use yii\helpers\Html;
  4 +use yii\widgets\DetailView;
  5 +
  6 +/* @var $this yii\web\View */
  7 +/* @var $model common\modules\product\models\Product */
  8 +
  9 +$this->title = $model->name;
  10 +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Products'), 'url' => ['index']];
  11 +$this->params['breadcrumbs'][] = ['label' => $model->product->name, 'url' => ['view', 'id' => $model->product->product_id]];
  12 +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Variants'), 'url' => ['/product/variant?product_id='. $model->product->product_id]];
  13 +$this->params['breadcrumbs'][] = $this->title;
  14 +?>
  15 +<div class="product-view">
  16 +
  17 + <h1><?= Html::encode($this->title) ?></h1>
  18 +
  19 + <p>
  20 + <?= Html::a(Yii::t('product', 'Update'), ['update', 'id' => $model->product_variant_id], ['class' => 'btn btn-primary']) ?>
  21 + <?= Html::a(Yii::t('product', 'Delete'), ['delete', 'id' => $model->product_variant_id], [
  22 + 'class' => 'btn btn-danger',
  23 + 'data' => [
  24 + 'confirm' => Yii::t('product', 'Are you sure you want to delete this item?'),
  25 + 'method' => 'post',
  26 + ],
  27 + ]) ?>
  28 + </p>
  29 +
  30 + <?= DetailView::widget([
  31 + 'model' => $model,
  32 + 'attributes' => [
  33 + 'product_id',
  34 + 'name',
  35 + 'fullname',
  36 + 'brand.name',
  37 + 'category.name',
  38 + 'image.imageUrl:image'
  39 + ],
  40 + ]) ?>
  41 +
  42 +</div>
... ...
common/translation/ru/product.php
... ... @@ -24,6 +24,8 @@ return [
24 24 'Price Old' => 'ะกั‚ะฐั€ะฐั ะฆะตะฝะฐ',
25 25 'Products' => 'ะขะพะฒะฐั€ั‹',
26 26 'Product' => 'ะขะพะฒะฐั€',
  27 + 'Variants' => 'ะœะพะดะธั„ะธั†ะบะฐั†ะธะธ',
  28 + 'Variant' => 'ะœะพะดะธั„ะธั†ะบะฐั†ะธั',
27 29 'Create Product' => 'ะกะพะทะดะฐั‚ัŒ ะขะพะฒะฐั€',
28 30 'Enable' => 'ะ”ะพัั‚ัƒะฟะฝะพ',
29 31 'Disable' => 'ะžั‚ััƒั‚ัะฒัƒะตั‚',
... ...
frontend/controllers/CatalogController.php
... ... @@ -117,6 +117,7 @@ class CatalogController extends \yii\web\Controller
117 117 }
118 118  
119 119 $productModel = new ProductFrontendSearch();
  120 + $productQuery = $productModel->getSearchQuery($category, $params);
120 121 $productProvider = $productModel->search($category, $params);
121 122  
122 123 $brandModel = new BrandSearch();
... ...
frontend/models/ProductFrontendSearch.php
... ... @@ -2,6 +2,7 @@
2 2  
3 3 namespace frontend\models;
4 4  
  5 +use common\modules\product\helpers\ProductHelper;
5 6 use common\modules\product\models\Brand;
6 7 use common\modules\product\models\BrandName;
7 8 use common\modules\product\models\CategoryName;
... ... @@ -47,20 +48,10 @@ class ProductFrontendSearch extends Product {
47 48 * @return ActiveDataProvider
48 49 */
49 50 public function search($category = null, $params = []) {
50   - if (!empty($category)) {
51   - /** @var ActiveQuery $query */
52   -// $query = $category->getRelations('product_categories');
53   - $query = $category->getProducts();
54   - } else {
55   - $query = Product::find();
56   - }
57   - $query->select(['product.*']);
58   - $query->joinWith(['variant', 'image', 'brand', 'brand.brandName', 'category', 'category.categoryName']);
59 51  
60   - $query->groupBy(['product.product_id', 'product_variant.price']);
61 52  
62 53 $dataProvider = new ActiveDataProvider([
63   - 'query' => $query,
  54 + 'query' => $this->getSearchQuery($category, $params),
64 55 'pagination' => [
65 56 'pageSize' => 16,
66 57 ],
... ... @@ -86,50 +77,83 @@ class ProductFrontendSearch extends Product {
86 77 return $dataProvider;
87 78 }
88 79  
89   - $this->_setParams($query, $params);
90 80  
91   - $query->andWhere(['!=', ProductVariant::tableName() .'.stock', 0]);
92 81  
93 82 return $dataProvider;
94 83 }
95 84  
  85 + public function getSearchQuery($category = null, $params = []) {
  86 + if (!empty($category)) {
  87 + /** @var ActiveQuery $query */
  88 +// $query = $category->getRelations('product_categories');
  89 + $query = $category->getProducts();
  90 + } else {
  91 + $query = Product::find();
  92 + }
  93 + $query->select(['product.*']);
  94 + $query->joinWith(['variant', 'image', 'brand', 'brand.brandName', 'category', 'category.categoryName']);
  95 +
  96 + $query->groupBy(['product.product_id', 'product_variant.price']);
  97 +
  98 + ProductHelper::_setQueryParams($query, $params);
  99 +
  100 + $query->andWhere(['!=', ProductVariant::tableName() .'.stock', 0]);
  101 +
  102 + return $query;
  103 + }
  104 +
96 105 public function optionsForCategory($category = null, $params = []) {
97 106 $query = TaxOption::find()
98 107 ->select([
99 108 TaxOption::tableName() .'.*',
100   - 'COUNT('. ProductOption::tableName() .'.product_id) AS _items_count'
101 109 ])
102   - ->innerJoin(ProductOption::tableName(), ProductOption::tableName() .'.option_id='. TaxOption::tableName() .'.tax_option_id')
103   - ->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. ProductOption::tableName() .'.product_id')
  110 + ->leftJoin(ProductOption::tableName(), ProductOption::tableName() .'.option_id='. TaxOption::tableName() .'.tax_option_id')
104 111 ->innerJoin(TaxGroup::tableName(), TaxGroup::tableName() .'.tax_group_id='. TaxOption::tableName() .'.tax_group_id')
105 112 ->where([TaxGroup::tableName() .'.is_filter' => true]);
106 113  
107   - $query->leftJoin('product_variant', 'product_variant.product_id = '. ProductCategory::tableName() .'.product_id');
  114 + $query->innerJoin('product_variant', 'product_variant.product_id = '. ProductOption::tableName() .'.product_id');
108 115 $query->andWhere(['!=', 'product_variant.stock', 0]);
109 116 $query->groupBy(TaxOption::tableName() .'.tax_option_id');
110 117 // $query->having(['>', 'COUNT(product_variant.product_variant_id)', 0]);
111 118  
112 119 if (!empty($category)) {
  120 + $query->innerJoin(ProductCategory::tableName(), ProductCategory::tableName() .'.product_id='. ProductOption::tableName() .'.product_id');
113 121 $query->andWhere([ProductCategory::tableName() .'.category_id' => $category->category_id]);
114 122 }
115 123  
116 124 $query->orderBy(TaxOption::tableName() .'.sort', SORT_ASC);
117 125 $query->limit(null);
118   - if (!empty($params['prices'])) {
119   - if ($params['prices']['min'] > 0 || $params['prices']['max'] > 0) {
120   - $query->innerJoin(ProductVariant::tableName(), ProductVariant::tableName() .'.product_id='. ProductCategory::tableName() .'.product_id');
  126 +
  127 + $queryCount = ProductOption::find()
  128 + ->select(['COUNT('. ProductOption::tableName() .'.product_id)'])
  129 + ->where(ProductOption::tableName() .'.option_id = '. TaxOption::tableName() .'.tax_option_id');
  130 + $queryCount->andWhere('(SELECT COUNT(pv.product_variant_id) FROM "product_variant" "pv" WHERE pv.stock != 0 AND pv.product_id = '. ProductOption::tableName() .'.product_id) > 0');
  131 + if (!empty($category)) {
  132 + $queryCount->andWhere('(SELECT COUNT(pc.product_id) FROM product_category pc WHERE pc.product_id = '. ProductOption::tableName() .'.product_id AND pc.category_id = '. $category->category_id .') > 0');
  133 + }
  134 + if (!empty($params['options'])) {
  135 + $queryCount->innerJoin('tax_option', 'tax_option.tax_option_id = product_option.option_id');
  136 + $queryCount->innerJoin('tax_group', 'tax_group.tax_group_id = tax_option.tax_group_id');
  137 + foreach ($params['options'] as $group => $options) {
  138 + $queryCount->andWhere([
  139 + 'tax_group.alias' => $group,
  140 + 'tax_option.alias' => $options
  141 + ]);
121 142 }
  143 + }
  144 + if (!empty($params['brands'])) {
  145 + $queryCount->innerJoin(Product::tableName(), 'product.product_id='. ProductOption::tableName() .'.product_id');
  146 + $queryCount->andWhere(['product.brand_id' => $params['brands']]);
  147 + }
  148 + if (!empty($params['prices'])) {
122 149 if ($params['prices']['min'] > 0) {
123   - $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]);
  150 + $queryCount->andWhere(['>=', 'pv.price', $params['prices']['min']]);
124 151 }
125 152 if ($params['prices']['max'] > 0) {
126   - $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]);
  153 + $queryCount->andWhere(['<=', 'pv.price', $params['prices']['max']]);
127 154 }
128 155 }
129   - if (!empty($params['brands'])) {
130   - $query->innerJoin(Product::tableName(), Product::tableName() .'.product_id='. ProductCategory::tableName() .'.product_id');
131   - $query->andWhere([Product::tableName() .'.brand_id' => $params['brands']]);
132   - }
  156 + $query->addSelect(['_items_count' => $queryCount]);
133 157  
134 158 return $query;
135 159 }
... ... @@ -144,7 +168,7 @@ class ProductFrontendSearch extends Product {
144 168 }
145 169 $query->joinWith('variant');
146 170  
147   - $this->_setParams($query, $params, false);
  171 + ProductHelper::_setQueryParams($query, $params, false);
148 172  
149 173 // $query->select([
150 174 // 'MIN('. ProductVariant::tableName() .'.price) AS priceMIN',
... ... @@ -156,46 +180,4 @@ class ProductFrontendSearch extends Product {
156 180 'max' => $query->max(ProductVariant::tableName() .'.price'),
157 181 ];
158 182 }
159   -
160   - protected function _setParams(&$query, $params, $setPriceLimits = true) {
161   - if (!empty($params['keywords'])) {
162   - if (!is_array($params['keywords'])) {
163   - $params['keywords'] = [$params['keywords']];
164   - }
165   - foreach ($params['keywords'] as $keyword) {
166   - $query->orFilterWhere(['ilike', Product::tableName() .'.name', $keyword]);
167   - $query->orFilterWhere(['ilike', BrandName::tableName() .'.value', $keyword]);
168   - $query->orFilterWhere(['ilike', CategoryName::tableName() .'.value', $keyword]);
169   - }
170   - }
171   - if (!empty($params['special'])) {
172   - foreach($params['special'] as $key => $value) {
173   - $query->orFilterWhere([Product::tableName() .'.'. $key => $value]);
174   - }
175   - }
176   - if (!empty($params['brands'])) {
177   - $query->andFilterWhere([Product::tableName() .'.brand_id' => $params['brands']]);
178   - }
179   - if (!empty($params['options'])) {
180   - foreach ($params['options'] as $group => $options) {
181   - foreach ($options as &$option) {
182   - $option = "'$option'";
183   - }
184   - $query->andWhere(
185   - Product::tableName() . '.product_id IN (SELECT product_id AS products FROM product_option INNER JOIN tax_option ON tax_option.tax_option_id = product_option.option_id INNER JOIN tax_group ON tax_group.tax_group_id = tax_option.tax_group_id WHERE tax_group.alias LIKE \''. $group .'\' AND tax_option.alias IN (' . implode(',', $options) . '))'
186   - );
187   - }
188   - }
189   -
190   -
191   -
192   - if ($setPriceLimits && !empty($params['prices'])) {
193   - if ($params['prices']['min'] > 0) {
194   - $query->andWhere(['>=', ProductVariant::tableName() .'.price', $params['prices']['min']]);
195   - }
196   - if ($params['prices']['max'] > 0) {
197   - $query->andWhere(['<=', ProductVariant::tableName() .'.price', $params['prices']['max']]);
198   - }
199   - }
200   - }
201 183 }
202 184 \ No newline at end of file
... ...
frontend/views/catalog/products.php
... ... @@ -118,9 +118,13 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
118 118 $checked = !empty($filter['brands']) && in_array($brand->alias, $filter['brands']);
119 119 $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'brands', $brand->alias, $checked)]);
120 120 ?>
121   - <li>
122   - <input type="checkbox" class="brands-option" <?= $checked ? ' checked' : ''?> onchange="document.location='<?= $option_url?>'" />
  121 + <li<?= (empty($brand->_items_count) ? ' class="hidden"' : '')?>>
  122 + <input type="checkbox"<?= (empty($brand->_items_count) ? ' disabled' : ' onchange="document.location=\''. $option_url .'\'"')?> class="brands-option" <?= $checked ? ' checked' : ''?> />
  123 + <?php if (empty($brand->_items_count)) :?>
  124 + <?= $brand->name?>&nbsp;(<?= $brand->_items_count?>)
  125 + <?php else :?>
123 126 <a href="<?= $option_url?>"><?= $brand->name?>&nbsp;(<?= $brand->_items_count?>)</a>
  127 + <?php endif?>
124 128 </li>
125 129 <?php endforeach?>
126 130 </ul>
... ... @@ -136,9 +140,13 @@ $this-&gt;registerJsFile(Yii::getAlias(&#39;@web/js/ion.rangeSlider.js&#39;),[
136 140 $checked = (isset($filter['options'][$group->alias]) && in_array($option->alias, $filter['options'][$group->alias]));
137 141 $option_url = Url::to(['catalog/category', 'category' => $category, 'filter' => ProductHelper::getFilterForOption($filter, 'options', [$option->group->alias => [$option->alias]], $checked)]);
138 142 ?>
139   - <li>
140   - <input type="checkbox" class="features-option" onchange="document.location='<?= $option_url?>'" <?php /* name="option[<?= $group->alias?>][]"value="<?= $option->alias?>"*/?><?= $checked ? ' checked' : ''?> />
  143 + <li<?= (empty($option->_items_count) ? ' class="hidden"' : '')?>>
  144 + <input type="checkbox"<?= (empty($option->_items_count) ? ' disabled' : ' onchange="document.location=\''. $option_url .'\'"')?> class="features-option" <?php /* name="option[<?= $group->alias?>][]"value="<?= $option->alias?>"*/?><?= $checked ? ' checked' : ''?> />
  145 + <?php if (empty($option->_items_count)) :?>
  146 + <?= $option->ValueRenderHTML?>&nbsp;(<?= $option->_items_count?>)
  147 + <?php else :?>
141 148 <a href="<?= $option_url?>"><?= $option->ValueRenderHTML?>&nbsp;(<?= $option->_items_count?>)</a>
  149 + <?php endif?>
142 150 </li>
143 151 <?php endforeach?>
144 152 </ul>
... ...
frontend/web/css/style.css
1   -html,form,body{padding:0;margin:0;font-family:'Roboto';font-size:14px;color:#333;height:100%}h1,h2,h3{margin:0px;padding:0px 0px 10px 0px}.fl{float:left}.fotter .wrap .fr{float:right;width:180px;height:50px;position:relative;font-size:12px}.fotter .wrap .fr img{position:absolute;top:50%;margin-top:-10px;right:0}.fotter .wrap .fl{line-height:50px;font-size:12px}.both{clear:both}h1{margin:10px 0;font-size:24px}h3{margin-bottom:30px}p{margin:3px 0px;padding:0px}a{color:#6a6a6a;font-size:14px;text-decoration:underline}a:hover{color:#799920}.wrap{width:960px;margin:0px auto}.f{background:#ffffff}.br{-webkit-box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);-moz-box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);padding:20px}nav.top{background:#f5f5f5;padding:10px 0px;border-bottom:1px solid #d2d2d2;font-size:12px}nav.top ul{list-style:none;margin:0px;padding:0px}nav.top ul li{float:left;padding-right:20px}nav.top ul li a{font-size:12px}nav.top a{color:#6a6a6a;text-decoration:none}#help{background:url('../img/help.png') right no-repeat;padding-right:20px}#help span{border-bottom:1px dotted #6a6a6a}#login{background:url('../img/login.png') right no-repeat;padding-right:20px;font-size:12px}#login span{border-bottom:1px dotted #6a6a6a}.search{margin:-5px 0px -5px 100px;float:left}nav input[type="text"]{width:325px;outline:0;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px}nav input[type="submit"]{width:35px;height:29px;border:none;background:url('../img/lupa_sub.png') center no-repeat;margin-left:-35px;cursor:pointer}.header{margin:0px 0px 20px}.phone{float:left;position:relative;text-align:center;margin-top:20px}.phone .tel{font-size:23px}.phone .tel span.more{margin-bottom:3px}.more_block{background:#ffffff;border:1px solid #d2d2d2;padding:10px;position:absolute;font-size:20px;display:none;z-index:99}.more{background:url('../img/more.png') no-repeat;width:12px;height:7px;display:inline-block;cursor:pointer;margin-bottom:5px}.logo{margin:0px auto 0px;width:193px}.logo a{display:block;width:193px;height:84px;background:url('../img/logo.png') no-repeat}.logo a span{display:none}#call{color:#6a6a6a;text-decoration:none;border-bottom:1px dotted #6a6a6a}.basket{float:right;position:relative;border:1px solid #d2d2d2;border-radius:5px;padding:15px 20px;font-size:18px;text-transform:uppercase;margin-top:13px}.basket .info{float:left;border-right:1px solid #d2d2d2;padding-right:10px;margin-right:17px}.basket .info span{color:#f75d50;font-size:22px}.basket a:link,.basket a:visited{text-decoration:none;color:#000000;font-size:18px}.basket span.more{margin-bottom:-1px}.menu{background:#596065;border:1px solid #e8e8e8}.menu ul{margin:0px;padding:0px;list-style:none}.menu ul li{float:left;border-left:1px solid #8b9094;height:43px}.menu ul li:first-child{border-left:none}.menu ul li a{width:100%;height:100%;line-height:43px;float:left;box-sizing:border-box;padding:0 19px;text-transform:uppercase;color:#ffffff;font-size:15px;text-decoration:none;font-weight:600}.menu ul li:hover{background:#3e454b}.menu ul li.active a{background:#f5f5f5;color:#596065}.menu ul li.active a:hover{cursor:default}.menu_childs{background:#f5f5f5;border:1px solid #e8e8e8;border-bottom:2px solid #596065}.menu_childs ul{margin:0px;padding:0px;list-style:none}.menu_childs ul li{float:left}.menu_childs ul li a{float:left;padding:15px 23px 15px 23px;text-transform:uppercase;color:#596065;font-size:14px;font-weight:bold;text-decoration:none}.menu_childs ul li a:hover{color:#878b8e}.fr ul li{border:none}.akciya a{background:#f75d50;color:#ffffff}.brands a{background:#95ba2f;color:#ffffff}a.myorders{color:#f75d50}.sub{margin:2px 0px 0px 0px}.sub img{float:left;margin-right:2px}.rubrics{margin:60px 0 0 0;padding-bottom:27px}.rubrics ul{list-style:none;margin:0px;padding:0px}.rubrics ul li{float:left;margin:0px 35px}.rubrics ul li a{float:left;width:120px;padding-top:130px;text-align:center;text-transform:uppercase;color:#494949;text-decoration:none;font-weight:bold}.rubrics ul li.item_ryukzaki a{background:url('../img/ico1.png') no-repeat}.rubrics ul li.item_sumki a{background:url('../img/ico2.png') no-repeat}.rubrics ul li.item_chehly a{background:url('../img/ico3.png') no-repeat}.rubrics ul li.item_nesessery a{background:url('../img/ico4.png') no-repeat}.rubrics ul li.item_koshelki a{background:url('../img/ico5.png') no-repeat}.products{padding-bottom:30px;padding-top:20px}.why_me_,.products{border-top:1px solid #d2d2d2}.products ul{list-style:none;margin:0;padding:0}.products ul li.item{float:left;width:192px;margin:0 0 50px 0;text-align:center;position:relative}.products ul li a.name,.special-products a.name{display:block;color:#799920;font-size:15px;text-decoration:none;margin:15px 0 0 0;height:35px;overflow:hidden;box-sizing:border-box;padding:0 10px}.products ul li a.name:hover,.special-products a.name:hover{text-decoration:underline}.products ul li .info{text-align:left}.pn{border:none}.cost,.product_read_price #cost{color:#f75d50;font-size:18px;margin:0;padding:0}.cost span,.cost span.valute,.product_read_price .valute{font-size:14px}strike,strike span#old_cost{font-size:14px;color:#333}.submit4m,a.link_buy,.checkout_basket button,.submit4{background:#95ba2f;border-radius:4px;height:29px;text-transform:uppercase;color:#ffffff;text-decoration:none;font-weight:600;text-align:center;border-bottom:3px solid #799920;font-size:12px}.submit4.bottom3{font-size:12px !important;display:block}.basket .submit4.bottom3{font-size:12px !important;display:block;margin-top:10px}a.link_buy,.checkout_basket button{display:block;margin:0 auto 10px auto;width:122px;line-height:32px}.checkout_basket button,.submit4{margin:0;padding:0 20px;line-height:31px;width:auto;border-top:0;border-left:0;border-right:0;cursor:pointer}a.link_buy:hover,.submit4m:hover,.checkout_basket button:hover,.submit4:hover,.btn-primary:hover{border-bottom:3px solid #95ba2f}a.link_buy:active,.submit4m:active,.checkout_basket button:active,.submit4:active,.btn-primary:active{background:#799920;border-bottom:3px solid #799920}.checkout_basket button:focus,.submit4:focus{outline:none}.mycarousel{position:absolute;right:22px;top:13px}ul.mycarousel{list-style:none;margin:0px;padding:0px}ul.mycarousel li{margin:0px;padding:0px}.mycarousel img{border:1px solid #d2d2d2}h3{text-align:center;text-transform:uppercase;font-size:20px}span.why {height: 29px;display: block;width:213px;height:49px;background:url('../img/logo-why.png') no-repeat;margin:0px auto;padding:0 0 20px 0}ul.why_list{list-style:none;margin:0px;padding:0px}ul.why_list li{float:left;margin-left:58px;width:288px;height:96px;box-sizing:border-box;padding-left:110px;margin-top:20px}ul.why_list li div{display:table-cell;height:96px;vertical-align:middle}ul.why_list li span{font-weight:bold;color:#799920}ul.why_list li.item1{background:url('../img/why_item1.png') left no-repeat}ul.why_list li.item2{background:url('../img/why_item2.png') left no-repeat}ul.why_list li.item3{background:url('../img/why_item3.png') left no-repeat}ul.why_list li.item4{background:url('../img/why_item4.png') left no-repeat}ul.why_list li.item5{background:url('../img/why_item5.png') left no-repeat}ul.why_list li.item6{background:url('../img/why_item6.png') left no-repeat}.banner_akciya{margin:50px 0px}.bottom{background:#4d5458;padding:40px 0px;color:#ffffff}.bottom .leftbar{float:left;width:210px}.bottom ul{list-style:none;margin:0px;padding:0px;line-height:23px}.bottom ul a{color:#ffffff;font-size:15px;text-decoration:none}.bottom ul a:hover{color:#799920}.phones{padding-left:25px;background:url('../img/phone.png') left top no-repeat;margin-top:50px;line-height:23px;font-size:18px}.map{padding:5px 0px 5px 25px;background:url('../img/map.png') left no-repeat;margin-bottom:7px}a.more_map{color:#99a5ad;border-bottom:1px dotted #99a5ad;text-decoration:none;font-size:11px;text-align:center}.bread-crumbs{padding:0 0 0 20px;border-bottom:1px solid #d2d2d2;height:29px}.bread-crumbs ul{list-style:none;margin:0 0 0 0;padding:0;height:29px}.bread-crumbs ul li{float:left;padding-left:20px;height:100%;line-height:29px;color:#7d7d7d;position:relative;font-size:12px}.bread-crumbs ul li:first-child{padding-left:0}.bread-crumbs ul li a{font-size:12px;display:block;color:#7d7d7d}.bread-crumbs ul li a:visited,.bread-crumbs ul li a:link{color:#7d7d7d;text-decoration:underline}.bread-crumbs ul li a:hover{color:#464646;text-decoration:none}.breadcrumb > li + li:before{color:#ccc;content:"/";position:absolute;top:0;left:8px}.loyout{padding:20px 0px}.leftbar{float:left;width:172px;margin-right:20px}.rightbar{float:right;width:380px;margin-left:40px}.rightbar.basket_rightbar{margin-right:20px}.rightbar2{float:right;width:320px}.content{overflow:hidden}* html .content{height:1%}.content2{overflow:hidden}* html .content2{height:1%}.filters{border-top:1px solid #d2d2d2;padding:20px 0px 0px;margin-top:20px}.filters .begin{text-transform:uppercase;font-weight:bold;font-size:12px}.filters ul{list-style:none;margin:0px;padding:0px;line-height:22px;margin-top:6px}.filters ul li{position:relative;box-sizing:border-box;padding-left:24px;line-height:16px;margin-top:7px}.filters ul li:first-child{margin-top:0}.filters ul li>input{position:absolute;left:4px;margin:0px 0 0;top:3px}.filters ul li a{color:#464646;text-decoration:none;font-size:13px;line-height:16px}.filters ul li a:hover{text-decoration:underline}.productLeftBar{float:left;width:228px;margin-left:20px;margin-right:20px}.productRightBar{float:right;width:260px;margin:0 20px}.productLeftBar h1{font-size:24px;border-bottom:1px solid #d2d2d2;margin-bottom:10px}ul.product_mod{list-style:none;margin:10px 0 0 0;padding:0;float:left}ul.product_mod li{float:left;width:46px;height:46px;background:#fff;border:1px solid #d2d2d2;margin:5px 5px 0 0;text-align:center;position:relative}ul.product_mod li.active:before{width:48px;height:48px;position:absolute;content:'';background:none;border:2px solid #95ba2f;top:-1px;left:-1px;box-sizing:border-box}ul.product_mod li a{width:46px;height:46px;display:table-cell;vertical-align:middle}ul.product_mod li a:focus{outline:none}ul.product_mod li img{vertical-align:middle;max-width:46px;max-height:46px}ul.product_colors{list-style:none;margin:30px 0 0 0;padding:0;float:left}ul.product_colors li{float:left;margin:10px 10px 0 0;width:98px;height:98px;text-align:center;border:1px solid #d2d2d2}ul.product_colors li a{width:98px;height:98px;vertical-align:middle;display:table-cell}ul.product_colors li img{max-width:98px;max-height:98px;vertical-align:middle}.productLeftBar .begin{text-transform:uppercase;font-weight:bold;font-size:12px}.cost_box{border-top:1px solid #d2d2d2;border-bottom:1px solid #d2d2d2;margin:10px 0px;padding:10px 0px}.cost_box .w{float:left;margin-right:20px;padding-top:5px}.product_service ul{list-style:none;margin:0px;padding:0px}.product_service ul li a{color:#799920;text-decoration:none;border-bottom:1px dotted #799920;font-size:12px}.product_service ul li.item1{background:url('../img/li1.png') left no-repeat;padding:3px 23px}.product_service ul li.item2{background:url('../img/li2.png') left no-repeat;padding:3px 23px}.product_service ul li.item3{background:url('../img/li3.png') left no-repeat;padding:3px 23px}#nav_product{list-style:none;margin:0px;padding:0px;line-height:23px}#nav_product li a{background:url('../img/li_plus.png') left no-repeat;padding:3px 15px;color:#000000;text-transform:uppercase;text-decoration:none;font-weight:bold;font-size:12px}#nav_product li a.active{background:url('../img/li_minus.png') left no-repeat}#nav_product li .info{display:none;border-bottom:1px solid #d2d2d2;padding:10px 0px;margin-bottom:10px}#nav_product li .info,#nav_product li .info p{font-size:12px;line-height:16px}.modal_box{position:fixed;left:0;top:0;width:100%;height:100%;z-index:999;background:#000;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity:0.5;opacity:0.5}#data_box{position:absolute;top:100px;z-index:1000;width:400px;background:#ffffff;-webkit-box-shadow:0 0 15px #000;-moz-box-shadow:0 0 15px #000;box-shadow:0 0 15px #000;border:7px solid #1b9bb6;border-radius:5px}#data_box .data_wrp{padding:25px 15px 15px 15px}#data_box .data_wrp h1{text-transform:uppercase}#data_box .data_wrp hr{height:1px;border:none;color:#000000;background:#000000;margin:45px 0px 20px 0px}#data_box .data_wrp hr.hr{height:1px;border:none;color:#000000;background:#000000;margin:20px 0px 20px 0px}#data_box .pic-tango{margin-right:7px;margin-bottom:7px}#modal_close{cursor:pointer;margin-top:-80px;margin-right:-50px}.rightbar .control-label,.textareagroup .control-label{float:left;width:80px;padding-top:5px}.form-control{outline:0;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px;margin-bottom:3px;width:250px}.form-control:focus{border:#1b9bb6 1px solid;box-shadow:0 0 10px #1b9bb6;-webkit-box-shadow:0 0 10px #1b9bb6;-moz-box-shadow:0 0 10px #1b9bb6}.help-block{color:red;font-size:12px;margin-bottom:5px}.basket_item{padding:10px 0px;border-bottom:1px solid #b7b7b7;clear:both}.basket_item img{margin-right:20px}.basket_item .count{margin:20px 0px}.basket_item .fr{margin-top:13px}.basket_item .info{overflow:hidden}.basket_item > a{display:block;float:left}a.del:visited,a.del:link{background:url('../img/del.png') left center no-repeat;padding:2px 25px;font-size:12px;font-weight:normal;color:#787878;text-decoration:underline}a.del:hover{color:#a52828;text-decoration:underline}.total{text-align:right;color:#87476a;font-size:20px;margin:10px 0px}.submit4m{font-family:Roboto;border:none;background:#95ba2f;border-radius:4px;color:#ffffff;text-transform:uppercase;font-size:10px;cursor:pointer;width:102px;height:29px;border-bottom:3px solid #799920;line-height:29px}.submit4m:active,.submit4m:focus{outline:none}.btn-primary{border-bottom:3px solid #799920;border-top:0;border-right:0;border-left:0;margin-top:5px;padding:0 15px;background:#95ba2f;border-radius:4px;color:#ffffff;text-transform:uppercase;text-decoration:none;font-size:12px;font-weight:bold;cursor:pointer;height:29px;line-height:29px}.btn-primary:active,.btn-primary:focus{outline:none}a.logout:visited,a.logout:link{border:none;padding:3px 5px;background:#f75d50;border-radius:5px;color:#ffffff;text-transform:uppercase;text-decoration:none;font-size:11px;font-weight:normal;cursor:pointer}a.logout:hover{background:#95ba2f}.boy_box{border-bottom:1px solid #b7b7b7;padding:0px 0px 15px 0px}.boy_box div{padding-top:10px}.content_product .info{padding:0px 0px 20px 0px}a.btn-success{display:inline-block;border:2px solid #d8d6d6;color:#95ba2f;border-radius:5px;padding:5px;margin-bottom:10px;text-decoration:none;font-size:14px}a.btn-success:hover{border:#95ba2f 2px solid;color:#f75d50}.txtb1{font-size:14px;font-weight:bold}.txtf{font-size:14px;font-weight:bold;color:#87476a}.txtfb{font-size:20px;font-weight:bold;color:#87476a}.count{margin:20px 0px}.count input[type="number"]{outline:0;width:50px;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px;margin-bottom:7px}a.link2:visited,a.link2:link{font-size:14px;font-weight:bold;color:#95ba2f;text-decoration:none}a.link2:hover{color:#f75d50;text-decoration:underline}.well{margin:50px auto;width:400px;background:#f5f5f5;border:1px solid #e8e8e8;padding:20px;border-radius:5px}.control-label{float:left;width:100px;padding-top:5px}#user-verifycode-image{display:block}.form-inline{display:inline}.form-inline .form-group{float:left;margin-right:10px}.form-inline .form-group select{width:100px}.form-group{margin-bottom:10px}.table-bordered{width:100%;border:1px solid silver}.table-bordered th{background:#B3D1FD;padding:5px}.table-bordered tr td{border:1px solid silver;padding:5px}.table-bordered .filters{display:none}.formCost label{float:left;width:30px}ul.brends_list{list-style:none;margin:0px;padding:0px}ul.brends_list li{float:left;text-align:center;margin:0px 15px 20px 15px}.compare{text-align:center}.compare a:visited,.compare a:link{font-size:12px;text-decoration:underline}.alert-success{margin:10px 0px;padding:10px;border:1px solid #3ed824;border-radius:5px;background:#c0feb5}.news_item{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid silver}.news_item img{margin-right:20px}.news_item a{font-size:16px}.pic{width:392px;height:365px}.pic a{width:392px;height:365px;display:table-cell;vertical-align:middle}.pic a img{max-width:392px;max-height:365px;vertical-align:middle}input#subscribe-email::-webkit-input-placeholder{color:#596065}input#subscribe-email::-moz-placeholder{color:#596065}input#subscribe-email:-ms-input-placeholder{color:#596065}input#subscribe-sale::-webkit-input-placeholder{color:#596065}input#subscribe-sale::-moz-placeholder{color:#596065}input#subscribe-sale:-ms-input-placeholder{color:#596065}#subscribe-email,#subscribe-sale{color:#596065}#subscribe-sale{width:100px;float:left;margin-right:20px;height:28px}.saletxt{width:150px;float:left;color:#ffffff;font-size:12px}#subscribe-email{width:370px}.txts{color:#9da9b1;font-size:18px;margin-bottom:20px}.content ul.pagination{list-style:none;text-align:center;margin:0 0 16px 0;padding:0 0 20px 0;border-bottom:1px solid #d2d2d2}.content ul.pagination li{display:inline}.content ul.pagination li a{padding:3px;color:#82a02f;font-size:15px;margin:0;text-decoration:none}.content ul.pagination li a:hover{text-decoration:underline}.content ul.pagination li.active a{color:#333333}.boxitem{height:283px}ul.social{margin-top:20px}.social{list-style:none;margin:10px;padding:0px;height:48px}.social li{display:inline-block;margin-right:7px;padding-bottom:10px}.social li a{width:36px;height:36px;display:block;margin:0;padding:0;text-indent:-9999px;background:#bcbcbc url(../img/social-ico-two.png) no-repeat 0 0;border-radius:48px;-moz-border-radius:48px;-webkit-border-radius:48px;-webkit-transition:all 0.5s ease-out;-moz-transition:all 0.5s ease-out;transition:all 0.5s ease-out}.social .fb{background-position:-44px 0;cursor:pointer}.social .vk{cursor:pointer}.social .vk:hover{background-color:#5B7FA6}.social .fb:hover{background-color:#354f89}.social .gp{background-position:-132px 0;cursor:pointer}.social .gp:hover{background-color:#c72f21}.social .tw{background-position:-144px 0;cursor:pointer}.social .tw:hover{background-color:#6398c9}.social .ok{background-position:-89px 0;cursor:pointer}.social .ok:hover{background-color:#f88f15}.social ul li a:hover{background-color:#065baa}.socialbox{margin:10px 0px}.hide{display:none}.footer .fl{font-size:12px}.fotter{background:#484f55;height:50px;color:#98a3ab}.fotter a{color:#98a3ab;line-height:50px;float:left;font-size:12px}.view_products2{list-style:none;overflow:auto;height:400px}.view_products2 img{float:left;margin-right:20px}.view_products2 li{margin:10px 0px}.pixbox{width:160px;margin:0 auto;height:200px;overflow:hidden;text-align:center}.form-order{background:#f5f5f5;padding:0 20px 20px 20px}#order-payment{float:right;width:280px}#order-delivery{float:right;width:280px}.delivery-data{margin-bottom:27px;position:relative;background:#95ba2f;display:none;border-radius:5px;float:left;box-sizing:border-box;padding:14px 20px;color:#fff;font-size:13px}.jcarousel-next-disabled,.jcarousel-prev-disabled{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.content2 br{display:none}.pixbox a{width:160px;height:200px;display:table-cell;vertical-align:middle}.pixbox img{max-width:160px;max-height:200px;vertical-align:middle}.pagination li.prev.disabled span{display:none}.pagination li.next.disabled span{display:none}.fr{float:right}.nobottom{border-bottom:none !important}.dotted a{border-bottom:1px dotted #808080}.mycabinet{padding-left:20px;margin-top:20px}.mycabinet .begin{text-transform:uppercase;font-size:13px;font-weight:bold;padding-bottom:15px}.mycabinet ul{margin:0px;padding:0px;list-style:none}.mycabinet ul li{padding-top:10px;padding-bottom:10px}.mycabinet a{color:#799920;text-decoration:none}.lay_title .uppercase{text-transform:uppercase}.lay_title .center{text-align:center}.lay_title{padding-top:15px;font-size:24px}.user_data{width:390px;border-right:1px solid #d2d2d2;float:left}.user_data .col{padding-bottom:35px}.user_data .col.last{padding-bottom:0px}.user_data .title{text-transform:uppercase;font-weight:bold;width:170px;float:left;font-size:13px}.user_data .data{float:left;font-size:13px}.edit_menu{float:left;padding-left:60px;font-size:13px}.edit_menu div{padding-bottom:20px}.edit_menu a{color:#799920;text-decoration:none}.edit_menu .dotted{border-bottom:1px dotted #799920}.user_edit_area{padding-top:30px}.user_data_editing{float:left}.inputs .col{padding-bottom:12px !important}.user_data_editing .col{padding-bottom:35px;width:432px}.user_data_editing .title{text-transform:uppercase;font-weight:bold;width:170px;float:left;font-size:13px}.user_data_editing .data{float:left;font-size:13px;width:262px}.user_data_editing input[type="text"]{padding:0;margin:0;border:1px solid #d2d2d2;padding-top:7px;padding-bottom:7px;padding-left:10px;padding-right:10px;border-radius:4px;font-size:12px;margin-top:-10px;width:240px}.user_data_editing .add{color:#799920;text-decoration:none;border-bottom:1px dotted #799920}.add_more{padding-bottom:24px;padding-left:170px}.delete{float:right}.delete_button{background:url('../img/ico_close.png') right no-repeat;width:16px;height:16px;float:right}.content_area{width:450px}#cancel{text-decoration:none;color:#799920;font-size:13px;border-bottom:1px dotted #799920;float:left;margin-left:40px}.buttons{display:inline-flex;align-items:center}.favorites{background-color:#f5f5f5;padding:5px;font-size:14px}.favorites .fav_point{background-color:#ffffff;border:1px solid #d2d2d2;border-radius:3px;padding-top:10px;padding-bottom:10px;padding-left:20px;padding-right:20px;margin-top:5px}.favorites .fav_point .left{float:left;padding-right:0;width:178px}.favorites .fav_point .right{float:right;padding-right:0;padding-left:0}.favorites .link{color:#799920;text-decoration:none;border-bottom:1px dotted #799920}.redtext{color:#f75d50}.greentext{color:#95ba2f}.hold .orders_view{display:none !important}.orders_view{width:680px;margin-top:13px;padding-top:13px;padding-bottom:5px;border-top:1px solid #d2d2d2;display:block}.orders_view .order{float:left;width:225px;text-align:center}.orders_view .order .order_price{color:#f75d50;font-weight:bold;font-size:15px}.orders_view .order .order_price span{font-size:24px}.orders_view .order img{padding-bottom:22px}.orders_view .order .note{font-size:13px}.orders_view .order .note span{color:#f75d50}.basket_hovered{position:absolute;border:1px solid #d2d2d2;border-radius:5px;padding:15px 20px;background-color:white;right:-1px;margin-top:10px;width:640px;display:none;z-index:1111}.open .basket_hovered{display:block}.open,.open .basket_hovered{-moz-box-shadow:0px 0px 5px rgba(149,149,149,0.75);-webkit-box-shadow:0px 0px 5px rgba(149,149,149,0.75);box-shadow:0px 0px 5px rgba(149,149,149,0.75)}.basket_hovered1:before{position:absolute;left:0;content:' ';width:100%;background-color:white;height:10px;top:45px;z-index:1112}.basket_item input{border:1px solid #d2d2d2;border-radius:4px;padding:9px;width:26px;font-size:18px;font-weight:bold;text-align:center;background-color:white;color:black;margin:7px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.minus{background:url('../img/minus.png') no-repeat;width:15px;height:15px;display:inline-block;cursor:pointer}.plus{background:url('../img/plus.png') no-repeat;width:15px;height:15px;display:inline-block;cursor:pointer}.basket_sum{padding-top:15px}.basket_sum .sum_text{font-size:15px;text-transform:none;padding-top:12px;float:right !important;padding-top:1px;margin-bottom:11px}.basket_sum .sum_text span{font-size:18px;color:#f75d50;font-weight:bold}.basket_sum a{color:white !important;font-size:15px !important;float:right}.black{z-index:9999;width:100%;height:100%;position:absolute;display:block;padding-top:6%}.black:before{content:'';background-color:rgba(0,0,0,0.5);width:100%;height:100%;position:fixed;top:0}.black.hidden{display:none}.black .item_added_win{background-color:#ffffff;width:640px;margin:auto;position:relative}.black_close{position:absolute;top:30px;right:30px;background:url('../img/ico_close2.png') no-repeat;width:22px;height:22px;display:inline-block;cursor:pointer}.block_content{padding-left:20px;padding-right:20px}.item_added_win h2{text-transform:uppercase;text-align:center;padding:30px}.block_content .item{padding-top:20px;padding-bottom:20px;border-bottom:1px solid #d2d2d2}.uppercase{text-transform:uppercase}.w230{width:230px}.w260{width:260px}.w430{width:430px}.borderbottom{border-bottom:1px solid #d2d2d2}.left_block .begin{text-transform:uppercase;font-size:13px;font-weight:bold;padding-bottom:15px}.color_variants .variant{text-align:center;border:1px solid #d2d2d2;float:left;margin-right:5px;margin-bottom:5px}.variant:hover{cursor:pointer}.color_variants{margin-top:14px;margin-bottom:-5px}.color_variants .variant.active{width:44px;height:44px;border:2px solid #95ba2f}.color_variants .variant.active a{width:44px;height:44px}.tobasket{margin-top:20px;margin-bottom:20px}.tobasket:hover{color:white}.variant{width:46px;height:46px}.variant.active{width:44px;height:44px}.layout{margin-top:15px}.left_block{float:left}.right_block{float:right}.center_block{float:left;margin-left:23px}.left_block .links{margin-top:25px}.left_block .links li{list-style:none;padding-left:25px;display:inline-block;cursor:pointer;height:20px}.left_block .links ul{margin:0;padding:0}.left_block .links a{font-size:13.5px;text-decoration:none;color:#8ba73e}.links .add_bookmarks{background:url('../img/ico_add_bookmark.png') no-repeat center left}.links .what_price{background:url('../img/ico_price.png') no-repeat center left}.links .add_compare{background:url('../img/ico_scales.png') no-repeat center left}.spoiler_one{padding-top:15px;padding-bottom:15px;border-bottom:1px solid #d2d2d2}.spoiler_one .spoiler_content{margin-top:15px;font-size:13px}.spoiler_one .spoiler_content.hidden{display:none}.title_spoiler:hover{cursor:pointer}.title_spoiler{background:url('../img/ico_open.png') no-repeat center left;padding-left:17px;font-size:13px;text-transform:uppercase;color:#333333;font-weight:bold;text-decoration:none}.title_spoiler.closed{background:url('../img/ico_close3.png') no-repeat center left}.features{list-style:none;padding:0;margin:0;font-size:13px}.features a{font-size:13px;text-decoration:none;border-bottom:1px dotted #8ba73e;color:#8ba73e}.features li{padding-top:5px;padding-bottom:4px}.note_prod{width:225px;height:23px;overflow:hidden;border-radius:5px;display:table;text-transform:uppercase;font-size:11px;font-weight:bold}.note_prod .one{z-index:999}.note_prod .two{z-index:998}.note_prod .blue{float:left;padding-top:5px;padding-bottom:5px;background-color:#42b9f6;padding-left:10px;padding-right:5px;position:relative}.note_prod .blue:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #42b9f6;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.note_prod .red{float:left;padding-top:5px;padding-bottom:5px;background-color:#f75d50;padding-left:10px;padding-right:5px;position:relative;color:#ffffff}.note_prod .red:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #f75d50;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.note_prod .yellow{float:left;padding-top:5px;padding-bottom:5px;background-color:#fbc665;padding-left:10px;padding-right:5px;position:relative}.note_prod .yellow:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #fbc665;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.products_block .product{float:left;width:190px;vertical-align:bottom}.product .image{height:225px;position:relative}.product .image img{position:absolute;bottom:0;left:15px}.price{font-size:18px;color:#f75d50;font-weight:bold;text-align:center}.product{padding-bottom:30px;position:relative}.product p{font-size:15px;text-align:center;margin-top:15px}.left52{margin-left:52px}.product a{color:#ffffff}.mrg1{margin-top:25px;margin-bottom:15px}.products_martopbot{margin-top:60px;margin-bottom:100px}.cont_shop_but{display:table-cell;vertical-align:middle;padding:35px}.cont_shop{text-decoration:none;font-size:12px;border-bottom:1px dotted #799920;color:#799920}.icons{width:45px;height:50%;position:absolute;z-index:9;right:0;padding-top:25px;padding-right:15px}.icons a{width:44px;height:44px;float:left;border:1px solid #d2d2d2;margin-bottom:5px;background-color:white}a:hover{cursor:pointer}.basket_item .form-group{display:inline}.basket.open:after{content:'';position:absolute;top:43px;width:100%;height:10px;background-color:white;left:0;z-index:9990}.basket_hovered .basket_sum{float:left}a.active{font-weight:bold;text-decoration:underline}.HOME_RIGHT{display:inline-block;vertical-align:top;margin-left:10px;position:absolute}#HOME_UNDER_SLIDER > div{display:inline-block;margin-right:3px;margin-top:3px}.sort_block{display:inline-block}.sort_block ul{display:inline-block;margin:0;padding:0}.sort_block ul li{display:inline-block;margin:0 0.5em;list-style:none}.sort_block ul li a.asc:after,.sort_block ul li a.desc:after{display:block;width:5px;height:3px;position:absolute;top:50%;margin-top:-1px;right:-10px;content:'';background:url("../img/arrow_sort_asc_desc.png") no-repeat}.sort_block ul li a.asc:after{background-position:0 0}.sort_block ul li a.desc:after{background-position:0 -3px}.home_banner_up{margin-top:20px}.home_banner_up .HOME_RIGHT{display:block;float:right;position:static;margin-left:0}#HOME_SLIDER .jssorb03 div,#HOME_SLIDER .jssorb03 div:hover,#HOME_SLIDER .jssorb03 .av{width:6px;height:6px;border-radius:50%;line-height:6px;background:#fff;border:2px solid #fff;box-shadow:0px 0px 5px 0px rgba(54, 54, 54, 0.75)}#HOME_SLIDER .jssorb03 div.av:hover,#HOME_SLIDER .jssorb03 div.av:active,#HOME_SLIDER .jssorb03 .av{cursor:default;background:#95BA2F}.special-products{padding-top:30px}.special-products .link_buy{margin-bottom:0}.special-products .item{margin-bottom:0 !important;text-align:center}.why_me_{padding-top:30px;overflow:hidden;margin-bottom:60px}.why_me_ .why_list{width:1038px;margin-left:-58px}.seo_text p{margin:12px 0 0 0;font-size:13px !important;color:#333 !important;font-family:Roboto !important}.seo_text p:first-child{margin-top:0}.product-special{position:absolute}.jcarousel-skin-tango .jcarousel-item{width:38px;height:38px;border:1px solid #d2d2d2;text-align:center;background:#fff}.jcarousel-skin-tango .jcarousel-item a{display:table-cell;width:38px;height:38px;vertical-align:middle}.mycarousel img{max-width:38px;max-height:38px;border:0;vertical-align:middle}.jcarousel-skin-tango .jcarousel-clip-vertical,.jcarousel-skin-tango .jcarousel-container-vertical{height:175px}.jcarousel-skin-tango .jcarousel-container-vertical{padding:0}.jcarousel-skin-tango .jcarousel-prev-vertical{top:-13px}.jcarousel-skin-tango .jcarousel-next-vertical{bottom:-13px}.jcarousel-skin-tango .jcarousel-prev-vertical,.jcarousel-skin-tango .jcarousel-next-vertical{left:0;width:42px;background-position:14px 0}.jcarousel-skin-tango .jcarousel-prev-vertical:hover,.jcarousel-skin-tango .jcarousel-next-vertical:hover{background-position:14px 0;left:0}ul.product-special{position:absolute;top:0;left:16px}ul.product-special li{width:100%;float:left}ul.product-special li div{color:#333;font-size:10px;text-transform:uppercase;font-weight:700;height:22px;line-height:24px;padding:0 9px;position:relative;border-top-left-radius:4px;border-bottom-left-radius:4px;margin-top:8px;float:left}ul.product-special li:first-child{margin-top:0}ul.product-special li.top div{background:#fbc665}ul.product-special li.top div:after{content:'';position:absolute;right:-19px;top:3px;border:11px solid transparent;border-top:5px solid #fbc665;transform:rotate(-90deg)}ul.product-special li.new div{background:#42b9f6}ul.product-special li.new div:after{content:'';position:absolute;right:-18px;top:2px;border:11px solid transparent;border-top:5px solid #42b9f6;transform:rotate(-90deg)}ul.product-special li.promo div{background:#f75d50}ul.product-special li.promo div:after{content:'';position:absolute;right:-18px;top:2px;border:11px solid transparent;border-top:5px solid #f75d50;transform:rotate(-90deg)}.cost-block{margin-top:1px}.products.pn a.link_buy{margin-bottom:0}.products.pn{padding-bottom:0}.products.pn>ul{width:100%;float:left;margin-bottom:-3px}._form_checkbox_reset,.sort_block ul li a,.sort_block{font-size:12px}.filter_accept_bloc{margin-top:13px;margin-bottom:0}._form_checkbox_reset{color:#6a6a6a;display:block;width:128px;height:28px;border:1px solid #d2d2d2;line-height:28px;text-align:center;border-radius:4px;text-decoration:none;margin:0 auto}._form_checkbox_reset:hover{border:1px solid #95ba2f;color:#6a6a6a}._form_checkbox_reset:active{border:1px solid #95ba2f;background:#95ba2f;color:#fff}.sort_block ul li a{color:#8fa951;position:relative}.sort_block ul li a:hover{color:#333}#HOME_SLIDER .jssora03l,#HOME_SLIDER .jssora03r{width:36px;height:340px;background:url('../img/new_arrows_.png') no-repeat}#HOME_SLIDER .jssora03l,#HOME_SLIDER .jssora03l:hover{background-position:0 50%;left:0;top:0}#HOME_SLIDER .jssora03r,#HOME_SLIDER .jssora03r:hover{background-position:-36px 50%;right:0;top:0}.loyout ._prd_spec-wr{margin-top:10px}.loyout .special-products:first-child{border-top:0;padding-top:0}.irs-slider{width:13px;height:13px;top:25px;border-radius:100%;box-shadow:none;border:1px solid #d2d2d2;background:#ffffff;background:-moz-linear-gradient(top, #ffffff 0%, #ebebeb 100%);background:-webkit-linear-gradient(top, #ffffff 0%,#ebebeb 100%);background:linear-gradient(to bottom, #ffffff 0%,#ebebeb 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ebebeb',GradientType=0 )}.irs-slider.state_hover,.irs-slider:hover{background:#ffffff}.irs-slider:after{display:none}.irs-slider:before{content:"";position:absolute;width:5px;height:5px;z-index:2;border:1px solid #d2d2d2;border-radius:100%;background:#799920;top:3px;left:3px}.irs-bar{height:3px;top:30px}.irs-line{height:9px;background:#ebebeb;border:1px solid #d2d2d2;top:27px}.irs-line:before{width:166px;height:5px;position:absolute;content:'';top:2px;left:2px;background:#d2d2d2;border-radius:5px}.irs-min,.irs-max{display:none}.irs{height:49px}.price_filter.first_price_li{margin-top:8px}.product_read_ .w{width:110px;overflow:hidden;margin:0;padding-top:0;display:table-cell;vertical-align:middle;height:32px;float:none}.product_read_ .w strike,.product_read_ .w .cost{width:100%;float:left}.product_read_price .link_buy{width:118px;position:absolute;top:50%;right:0;margin:-16px 0 0 0}.product_read_price{position:relative;min-height:32px;margin-top:10px}.special-products.products h3{margin-bottom:10px}.special-products.products li.item{margin-top:30px}.productLeftBar .cost_box{border-top:0;padding:10px 0 15px 0}.productLeftBar .product_mod{width:100%;float:left;border-bottom:1px solid #d2d2d2;padding-bottom:15px}.field-orders-delivery .control-label,.field-orders-payment .control-label,.field-orders-body .control-label,.textareagroup .control-label{width:100%;float:left}.basket_title_{text-align:center}.cont_shopping-wr{width:100%;float:left;margin-top:10px}.cont_shopping-wr .cont_shopping{float:right}.cont_shopping{display:block !important;border-top:0 !important;border-left:0 !important;border-right:0 !important;border-bottom:1px dashed #799920 !important;color:#799920 !important;margin:0 !important;padding:0 !important;font-size:12px !important;float:left;border-radius:0 !important}.info.product-thumb-video{width:100%;height:100%}.info.product-thumb-video iframe,.info.product-thumb-video embed{width:100% !important;height:auto !important}.input-blocks-wrapper,.input-blocks{width:100%;float:left}.form-order .input-blocks-wrapper{margin-top:6px}.input-blocks label{font-size:13px;color:#333}.basket_input_2 label{height:30px;line-height:30px;float:left;width:70px !important;padding-top:0 !important}.custom-input-2{width:100%;height:30px;box-sizing:border-box;outline:none;line-height:30px;padding-left:8px;margin-top:5px;background:#fff;border-radius:4px}.custom-input-2,.custom-area-2,.textareagroup textarea{border:1px solid #d2d2d2;box-sizing:border-box;font-size:13px;color:#636363}.custom-area-2,.textareagroup textarea{min-height:128px;max-height:128px;resize:none;width:100%;max-width:100%;outline:none;padding-left:8px;padding-top:8px;margin-top:8px}.basket_input_2 .custom-input-2{width:270px;float:right;margin-top:0}.custom-input-2:focus,.custom-area-3:focus,.textareagroup textarea:focus{box-shadow:1px 2px 2px 0px rgba(215, 215, 215, 0.75) inset;transition:0.1s}.textareagroup textarea:focus{border:1px solid #d2d2d2}.title_groups,.radio_grp label.control-label,.textareagroup .control-label{font-size:12px;font-weight:bold;text-transform:uppercase;margin-bottom:12px}.input-blocks-group{width:100%;float:left;border-bottom:1px solid #d2d2d2;padding-bottom:20px;margin-top:18px}.custom-form-buttons{width:100%;float:left}input.custom-radio + label,input.custom-check + label{font-size:13px;cursor:pointer;margin-left:6px}input.custom-radio,input.custom-check{display:none}input.custom-radio + label span{width:16px;height:16px;background:url('../img/radio_new.png') no-repeat;float:left;transition:.2s;margin-top:1px}input.custom-radio:checked + label span,input.custom-radio:checked + label:hover span{background:url('../img/radio_new-active.png') no-repeat}input.custom-radio + label:hover{text-decoration:underline}.custom-form-buttons{margin-top:7px}.custom-form-buttons:first-child{margin-top:0}.delivery-data .field-order-delivery-childs .control-label{display:none}.checkout_basket{width:100%;float:left}.checkout_basket button{margin:0 auto}.input-blocks-wrapper .help-block{padding-left:71px;padding-top:4px;width:100%;float:left;box-sizing:border-box;margin-bottom:0}.cont_shop_but-wr{height:33px;margin-top:35px;padding-bottom:29px}.cont_shop_but-wr .cont_shop{margin-top:8px;float:left}.cont_shop_but-wr .submit4.bottom3{float:right}._qqq_ .params{font-size:12px}.activeShow{border-bottom:0 !important}.delivery-data:after{width:100%;border-bottom:1px solid #d2d2d2;position:absolute;content:'';bottom:-27px;left:0}.img_ajax_basket img{margin-right:0 !important;max-width:90px;max-height:90px;vertical-align:middle}.jcarousel-skin-tango>li{display:none}#login-form{margin:50px auto 0 auto}#bg{top:0 !important;z-index:1 !important}.top,.wrap,.bottom,.fotter{position:relative;z-index:2}.owl-pagination{display:none}.owl-controls .owl-buttons div{width:34px !important;height:50px !important;background:#596065 !important;top:50% !important;margin:-25px 0 0 0 !important;opacity:1 !important;border-radius:0 !important;padding:0 !important;position:absolute}.owl-controls .owl-buttons div:hover{background:#acafb2 !important;transition:0.2s !important}.owl-controls .owl-buttons .owl-prev{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important;left:-20px}.owl-controls .owl-buttons .owl-next{border-top-left-radius:4px !important;border-bottom-left-radius:4px !important;right:-20px}.owl-controls .owl-buttons div:before{position:absolute;content:'';width:8px;height:22px;background:url("../img/arrows_blocks.png") no-repeat;top:50%;margin-top:-11px;left:50%;margin-left:-4px}.owl-controls .owl-buttons .owl-prev:before{background-position:0 0}.owl-controls .owl-buttons .owl-next:before{background-position:-8px 0}.basket_input_2.required .control-label{position:relative}.basket_input_2.required .control-label:before{position:absolute;top:0;content:'*';color:#D60000;left:-11px;padding-top:2px}.float-left{float:left}.blog-show-img{padding-right:20px}.text_seo.hidden_seo{height:178px;overflow:hidden;position:relative}.text_seo.hidden_seo div{height:162px;overflow:hidden;position:relative}.text_seo.hidden_seo a{position:absolute;bottom:0;right:0;font-size:16px}.text_seo.hidden_seo div:before{content:'';display:block;position:absolute;bottom:0;right:0;left:0;height:120px;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,#fff));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%)}
2 1 \ No newline at end of file
  2 +html,form,body{padding:0;margin:0;font-family:'Roboto';font-size:14px;color:#333;height:100%}h1,h2,h3{margin:0px;padding:0px 0px 10px 0px}.fl{float:left}.fotter .wrap .fr{float:right;width:180px;height:50px;position:relative;font-size:12px}.fotter .wrap .fr img{position:absolute;top:50%;margin-top:-10px;right:0}.fotter .wrap .fl{line-height:50px;font-size:12px}.both{clear:both}h1{margin:10px 0;font-size:24px}h3{margin-bottom:30px}p{margin:3px 0px;padding:0px}a{color:#6a6a6a;font-size:14px;text-decoration:underline}a:hover{color:#799920}.wrap{width:960px;margin:0px auto}.f{background:#ffffff}.br{-webkit-box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);-moz-box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);box-shadow:-1px 5px 14px 0px rgba(50, 46, 50, 0.46);padding:20px}nav.top{background:#f5f5f5;padding:10px 0px;border-bottom:1px solid #d2d2d2;font-size:12px}nav.top ul{list-style:none;margin:0px;padding:0px}nav.top ul li{float:left;padding-right:20px}nav.top ul li a{font-size:12px}nav.top a{color:#6a6a6a;text-decoration:none}#help{background:url('../img/help.png') right no-repeat;padding-right:20px}#help span{border-bottom:1px dotted #6a6a6a}#login{background:url('../img/login.png') right no-repeat;padding-right:20px;font-size:12px}#login span{border-bottom:1px dotted #6a6a6a}.search{margin:-5px 0px -5px 100px;float:left}nav input[type="text"]{width:325px;outline:0;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px}nav input[type="submit"]{width:35px;height:29px;border:none;background:url('../img/lupa_sub.png') center no-repeat;margin-left:-35px;cursor:pointer}.header{margin:0px 0px 20px}.phone{float:left;position:relative;text-align:center;margin-top:20px}.phone .tel{font-size:23px}.phone .tel span.more{margin-bottom:3px}.more_block{background:#ffffff;border:1px solid #d2d2d2;padding:10px;position:absolute;font-size:20px;display:none;z-index:99}.more{background:url('../img/more.png') no-repeat;width:12px;height:7px;display:inline-block;cursor:pointer;margin-bottom:5px}.logo{margin:0px auto 0px;width:193px}.logo a{display:block;width:193px;height:84px;background:url('../img/logo.png') no-repeat}.logo a span{display:none}#call{color:#6a6a6a;text-decoration:none;border-bottom:1px dotted #6a6a6a}.basket{float:right;position:relative;border:1px solid #d2d2d2;border-radius:5px;padding:15px 20px;font-size:18px;text-transform:uppercase;margin-top:13px}.basket .info{float:left;border-right:1px solid #d2d2d2;padding-right:10px;margin-right:17px}.basket .info span{color:#f75d50;font-size:22px}.basket a:link,.basket a:visited{text-decoration:none;color:#000000;font-size:18px}.basket span.more{margin-bottom:-1px}.menu{background:#596065;border:1px solid #e8e8e8}.menu ul{margin:0px;padding:0px;list-style:none}.menu ul li{float:left;border-left:1px solid #8b9094;height:43px}.menu ul li:first-child{border-left:none}.menu ul li a{width:100%;height:100%;line-height:43px;float:left;box-sizing:border-box;padding:0 19px;text-transform:uppercase;color:#ffffff;font-size:15px;text-decoration:none;font-weight:600}.menu ul li:hover{background:#3e454b}.menu ul li.active a{background:#f5f5f5;color:#596065}.menu ul li.active a:hover{cursor:default}.menu_childs{background:#f5f5f5;border:1px solid #e8e8e8;border-bottom:2px solid #596065}.menu_childs ul{margin:0px;padding:0px;list-style:none}.menu_childs ul li{float:left}.menu_childs ul li a{float:left;padding:15px 23px 15px 23px;text-transform:uppercase;color:#596065;font-size:14px;font-weight:bold;text-decoration:none}.menu_childs ul li a:hover{color:#878b8e}.fr ul li{border:none}.akciya a{background:#f75d50;color:#ffffff}.brands a{background:#95ba2f;color:#ffffff}a.myorders{color:#f75d50}.sub{margin:2px 0px 0px 0px}.sub img{float:left;margin-right:2px}.rubrics{margin:60px 0 0 0;padding-bottom:27px}.rubrics ul{list-style:none;margin:0px;padding:0px}.rubrics ul li{float:left;margin:0px 35px}.rubrics ul li a{float:left;width:120px;padding-top:130px;text-align:center;text-transform:uppercase;color:#494949;text-decoration:none;font-weight:bold}.rubrics ul li.item_ryukzaki a{background:url('../img/ico1.png') no-repeat}.rubrics ul li.item_sumki a{background:url('../img/ico2.png') no-repeat}.rubrics ul li.item_chehly a{background:url('../img/ico3.png') no-repeat}.rubrics ul li.item_nesessery a{background:url('../img/ico4.png') no-repeat}.rubrics ul li.item_koshelki a{background:url('../img/ico5.png') no-repeat}.products{padding-bottom:30px;padding-top:20px}.why_me_,.products{border-top:1px solid #d2d2d2}.products ul{list-style:none;margin:0;padding:0}.products ul li.item{float:left;width:192px;margin:0 0 50px 0;text-align:center;position:relative}.products ul li a.name,.special-products a.name{display:block;color:#799920;font-size:15px;text-decoration:none;margin:15px 0 0 0;height:35px;overflow:hidden;box-sizing:border-box;padding:0 10px}.products ul li a.name:hover,.special-products a.name:hover{text-decoration:underline}.products ul li .info{text-align:left}.pn{border:none}.cost,.product_read_price #cost{color:#f75d50;font-size:18px;margin:0;padding:0}.cost span,.cost span.valute,.product_read_price .valute{font-size:14px}strike,strike span#old_cost{font-size:14px;color:#333}.submit4m,a.link_buy,.checkout_basket button,.submit4{background:#95ba2f;border-radius:4px;height:29px;text-transform:uppercase;color:#ffffff;text-decoration:none;font-weight:600;text-align:center;border-bottom:3px solid #799920;font-size:12px}.submit4.bottom3{font-size:12px !important;display:block}.basket .submit4.bottom3{font-size:12px !important;display:block;margin-top:10px}a.link_buy,.checkout_basket button{display:block;margin:0 auto 10px auto;width:122px;line-height:32px}.checkout_basket button,.submit4{margin:0;padding:0 20px;line-height:31px;width:auto;border-top:0;border-left:0;border-right:0;cursor:pointer}a.link_buy:hover,.submit4m:hover,.checkout_basket button:hover,.submit4:hover,.btn-primary:hover{border-bottom:3px solid #95ba2f}a.link_buy:active,.submit4m:active,.checkout_basket button:active,.submit4:active,.btn-primary:active{background:#799920;border-bottom:3px solid #799920}.checkout_basket button:focus,.submit4:focus{outline:none}.mycarousel{position:absolute;right:22px;top:13px}ul.mycarousel{list-style:none;margin:0px;padding:0px}ul.mycarousel li{margin:0px;padding:0px}.mycarousel img{border:1px solid #d2d2d2}h3{text-align:center;text-transform:uppercase;font-size:20px}span.why {height: 29px;display: block;width:213px;height:49px;background:url('../img/logo-why.png') no-repeat;margin:0px auto;padding:0 0 20px 0}ul.why_list{list-style:none;margin:0px;padding:0px}ul.why_list li{float:left;margin-left:58px;width:288px;height:96px;box-sizing:border-box;padding-left:110px;margin-top:20px}ul.why_list li div{display:table-cell;height:96px;vertical-align:middle}ul.why_list li span{font-weight:bold;color:#799920}ul.why_list li.item1{background:url('../img/why_item1.png') left no-repeat}ul.why_list li.item2{background:url('../img/why_item2.png') left no-repeat}ul.why_list li.item3{background:url('../img/why_item3.png') left no-repeat}ul.why_list li.item4{background:url('../img/why_item4.png') left no-repeat}ul.why_list li.item5{background:url('../img/why_item5.png') left no-repeat}ul.why_list li.item6{background:url('../img/why_item6.png') left no-repeat}.banner_akciya{margin:50px 0px}.bottom{background:#4d5458;padding:40px 0px;color:#ffffff}.bottom .leftbar{float:left;width:210px}.bottom ul{list-style:none;margin:0px;padding:0px;line-height:23px}.bottom ul a{color:#ffffff;font-size:15px;text-decoration:none}.bottom ul a:hover{color:#799920}.phones{padding-left:25px;background:url('../img/phone.png') left top no-repeat;margin-top:50px;line-height:23px;font-size:18px}.map{padding:5px 0px 5px 25px;background:url('../img/map.png') left no-repeat;margin-bottom:7px}a.more_map{color:#99a5ad;border-bottom:1px dotted #99a5ad;text-decoration:none;font-size:11px;text-align:center}.bread-crumbs{padding:0 0 0 20px;border-bottom:1px solid #d2d2d2;height:29px}.bread-crumbs ul{list-style:none;margin:0 0 0 0;padding:0;height:29px}.bread-crumbs ul li{float:left;padding-left:20px;height:100%;line-height:29px;color:#7d7d7d;position:relative;font-size:12px}.bread-crumbs ul li:first-child{padding-left:0}.bread-crumbs ul li a{font-size:12px;display:block;color:#7d7d7d}.bread-crumbs ul li a:visited,.bread-crumbs ul li a:link{color:#7d7d7d;text-decoration:underline}.bread-crumbs ul li a:hover{color:#464646;text-decoration:none}.breadcrumb > li + li:before{color:#ccc;content:"/";position:absolute;top:0;left:8px}.loyout{padding:20px 0px}.leftbar{float:left;width:172px;margin-right:20px}.rightbar{float:right;width:380px;margin-left:40px}.rightbar.basket_rightbar{margin-right:20px}.rightbar2{float:right;width:320px}.content{overflow:hidden}* html .content{height:1%}.content2{overflow:hidden}* html .content2{height:1%}.filters{border-top:1px solid #d2d2d2;padding:20px 0px 0px;margin-top:20px}.filters .begin{text-transform:uppercase;font-weight:bold;font-size:12px}.filters ul{list-style:none;margin:0px;padding:0px;line-height:22px;margin-top:6px}.filters ul li{position:relative;box-sizing:border-box;padding-left:24px;line-height:16px;margin-top:7px}.filters ul li:first-child{margin-top:0}.filters ul li>input{position:absolute;left:4px;margin:0px 0 0;top:3px}.filters ul li a{color:#464646;text-decoration:none;font-size:13px;line-height:16px}.filters ul li a:hover{text-decoration:underline}.filters ul li.hidden{color: #9da9b1}.productLeftBar{float:left;width:228px;margin-left:20px;margin-right:20px}.productRightBar{float:right;width:260px;margin:0 20px}.productLeftBar h1{font-size:24px;border-bottom:1px solid #d2d2d2;margin-bottom:10px}ul.product_mod{list-style:none;margin:10px 0 0 0;padding:0;float:left}ul.product_mod li{float:left;width:46px;height:46px;background:#fff;border:1px solid #d2d2d2;margin:5px 5px 0 0;text-align:center;position:relative}ul.product_mod li.active:before{width:48px;height:48px;position:absolute;content:'';background:none;border:2px solid #95ba2f;top:-1px;left:-1px;box-sizing:border-box}ul.product_mod li a{width:46px;height:46px;display:table-cell;vertical-align:middle}ul.product_mod li a:focus{outline:none}ul.product_mod li img{vertical-align:middle;max-width:46px;max-height:46px}ul.product_colors{list-style:none;margin:30px 0 0 0;padding:0;float:left}ul.product_colors li{float:left;margin:10px 10px 0 0;width:98px;height:98px;text-align:center;border:1px solid #d2d2d2}ul.product_colors li a{width:98px;height:98px;vertical-align:middle;display:table-cell}ul.product_colors li img{max-width:98px;max-height:98px;vertical-align:middle}.productLeftBar .begin{text-transform:uppercase;font-weight:bold;font-size:12px}.cost_box{border-top:1px solid #d2d2d2;border-bottom:1px solid #d2d2d2;margin:10px 0px;padding:10px 0px}.cost_box .w{float:left;margin-right:20px;padding-top:5px}.product_service ul{list-style:none;margin:0px;padding:0px}.product_service ul li a{color:#799920;text-decoration:none;border-bottom:1px dotted #799920;font-size:12px}.product_service ul li.item1{background:url('../img/li1.png') left no-repeat;padding:3px 23px}.product_service ul li.item2{background:url('../img/li2.png') left no-repeat;padding:3px 23px}.product_service ul li.item3{background:url('../img/li3.png') left no-repeat;padding:3px 23px}#nav_product{list-style:none;margin:0px;padding:0px;line-height:23px}#nav_product li a{background:url('../img/li_plus.png') left no-repeat;padding:3px 15px;color:#000000;text-transform:uppercase;text-decoration:none;font-weight:bold;font-size:12px}#nav_product li a.active{background:url('../img/li_minus.png') left no-repeat}#nav_product li .info{display:none;border-bottom:1px solid #d2d2d2;padding:10px 0px;margin-bottom:10px}#nav_product li .info,#nav_product li .info p{font-size:12px;line-height:16px}.modal_box{position:fixed;left:0;top:0;width:100%;height:100%;z-index:999;background:#000;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50);-moz-opacity:0.5;-khtml-opacity:0.5;opacity:0.5}#data_box{position:absolute;top:100px;z-index:1000;width:400px;background:#ffffff;-webkit-box-shadow:0 0 15px #000;-moz-box-shadow:0 0 15px #000;box-shadow:0 0 15px #000;border:7px solid #1b9bb6;border-radius:5px}#data_box .data_wrp{padding:25px 15px 15px 15px}#data_box .data_wrp h1{text-transform:uppercase}#data_box .data_wrp hr{height:1px;border:none;color:#000000;background:#000000;margin:45px 0px 20px 0px}#data_box .data_wrp hr.hr{height:1px;border:none;color:#000000;background:#000000;margin:20px 0px 20px 0px}#data_box .pic-tango{margin-right:7px;margin-bottom:7px}#modal_close{cursor:pointer;margin-top:-80px;margin-right:-50px}.rightbar .control-label,.textareagroup .control-label{float:left;width:80px;padding-top:5px}.form-control{outline:0;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px;margin-bottom:3px;width:250px}.form-control:focus{border:#1b9bb6 1px solid;box-shadow:0 0 10px #1b9bb6;-webkit-box-shadow:0 0 10px #1b9bb6;-moz-box-shadow:0 0 10px #1b9bb6}.help-block{color:red;font-size:12px;margin-bottom:5px}.basket_item{padding:10px 0px;border-bottom:1px solid #b7b7b7;clear:both}.basket_item img{margin-right:20px}.basket_item .count{margin:20px 0px}.basket_item .fr{margin-top:13px}.basket_item .info{overflow:hidden}.basket_item > a{display:block;float:left}a.del:visited,a.del:link{background:url('../img/del.png') left center no-repeat;padding:2px 25px;font-size:12px;font-weight:normal;color:#787878;text-decoration:underline}a.del:hover{color:#a52828;text-decoration:underline}.total{text-align:right;color:#87476a;font-size:20px;margin:10px 0px}.submit4m{font-family:Roboto;border:none;background:#95ba2f;border-radius:4px;color:#ffffff;text-transform:uppercase;font-size:10px;cursor:pointer;width:102px;height:29px;border-bottom:3px solid #799920;line-height:29px}.submit4m:active,.submit4m:focus{outline:none}.btn-primary{border-bottom:3px solid #799920;border-top:0;border-right:0;border-left:0;margin-top:5px;padding:0 15px;background:#95ba2f;border-radius:4px;color:#ffffff;text-transform:uppercase;text-decoration:none;font-size:12px;font-weight:bold;cursor:pointer;height:29px;line-height:29px}.btn-primary:active,.btn-primary:focus{outline:none}a.logout:visited,a.logout:link{border:none;padding:3px 5px;background:#f75d50;border-radius:5px;color:#ffffff;text-transform:uppercase;text-decoration:none;font-size:11px;font-weight:normal;cursor:pointer}a.logout:hover{background:#95ba2f}.boy_box{border-bottom:1px solid #b7b7b7;padding:0px 0px 15px 0px}.boy_box div{padding-top:10px}.content_product .info{padding:0px 0px 20px 0px}a.btn-success{display:inline-block;border:2px solid #d8d6d6;color:#95ba2f;border-radius:5px;padding:5px;margin-bottom:10px;text-decoration:none;font-size:14px}a.btn-success:hover{border:#95ba2f 2px solid;color:#f75d50}.txtb1{font-size:14px;font-weight:bold}.txtf{font-size:14px;font-weight:bold;color:#87476a}.txtfb{font-size:20px;font-weight:bold;color:#87476a}.count{margin:20px 0px}.count input[type="number"]{outline:0;width:50px;border:1px solid #d8d6d6;border-radius:5px;padding:5px 0px 5px 0px;font-size:14px;text-indent:10px;margin-bottom:7px}a.link2:visited,a.link2:link{font-size:14px;font-weight:bold;color:#95ba2f;text-decoration:none}a.link2:hover{color:#f75d50;text-decoration:underline}.well{margin:50px auto;width:400px;background:#f5f5f5;border:1px solid #e8e8e8;padding:20px;border-radius:5px}.control-label{float:left;width:100px;padding-top:5px}#user-verifycode-image{display:block}.form-inline{display:inline}.form-inline .form-group{float:left;margin-right:10px}.form-inline .form-group select{width:100px}.form-group{margin-bottom:10px}.table-bordered{width:100%;border:1px solid silver}.table-bordered th{background:#B3D1FD;padding:5px}.table-bordered tr td{border:1px solid silver;padding:5px}.table-bordered .filters{display:none}.formCost label{float:left;width:30px}ul.brends_list{list-style:none;margin:0px;padding:0px}ul.brends_list li{float:left;text-align:center;margin:0px 15px 20px 15px}.compare{text-align:center}.compare a:visited,.compare a:link{font-size:12px;text-decoration:underline}.alert-success{margin:10px 0px;padding:10px;border:1px solid #3ed824;border-radius:5px;background:#c0feb5}.news_item{padding-bottom:20px;margin-bottom:20px;border-bottom:1px solid silver}.news_item img{margin-right:20px}.news_item a{font-size:16px}.pic{width:392px;height:365px}.pic a{width:392px;height:365px;display:table-cell;vertical-align:middle}.pic a img{max-width:392px;max-height:365px;vertical-align:middle}input#subscribe-email::-webkit-input-placeholder{color:#596065}input#subscribe-email::-moz-placeholder{color:#596065}input#subscribe-email:-ms-input-placeholder{color:#596065}input#subscribe-sale::-webkit-input-placeholder{color:#596065}input#subscribe-sale::-moz-placeholder{color:#596065}input#subscribe-sale:-ms-input-placeholder{color:#596065}#subscribe-email,#subscribe-sale{color:#596065}#subscribe-sale{width:100px;float:left;margin-right:20px;height:28px}.saletxt{width:150px;float:left;color:#ffffff;font-size:12px}#subscribe-email{width:370px}.txts{color:#9da9b1;font-size:18px;margin-bottom:20px}.content ul.pagination{list-style:none;text-align:center;margin:0 0 16px 0;padding:0 0 20px 0;border-bottom:1px solid #d2d2d2}.content ul.pagination li{display:inline}.content ul.pagination li a{padding:3px;color:#82a02f;font-size:15px;margin:0;text-decoration:none}.content ul.pagination li a:hover{text-decoration:underline}.content ul.pagination li.active a{color:#333333}.boxitem{height:283px}ul.social{margin-top:20px}.social{list-style:none;margin:10px;padding:0px;height:48px}.social li{display:inline-block;margin-right:7px;padding-bottom:10px}.social li a{width:36px;height:36px;display:block;margin:0;padding:0;text-indent:-9999px;background:#bcbcbc url(../img/social-ico-two.png) no-repeat 0 0;border-radius:48px;-moz-border-radius:48px;-webkit-border-radius:48px;-webkit-transition:all 0.5s ease-out;-moz-transition:all 0.5s ease-out;transition:all 0.5s ease-out}.social .fb{background-position:-44px 0;cursor:pointer}.social .vk{cursor:pointer}.social .vk:hover{background-color:#5B7FA6}.social .fb:hover{background-color:#354f89}.social .gp{background-position:-132px 0;cursor:pointer}.social .gp:hover{background-color:#c72f21}.social .tw{background-position:-144px 0;cursor:pointer}.social .tw:hover{background-color:#6398c9}.social .ok{background-position:-89px 0;cursor:pointer}.social .ok:hover{background-color:#f88f15}.social ul li a:hover{background-color:#065baa}.socialbox{margin:10px 0px}.hide{display:none}.footer .fl{font-size:12px}.fotter{background:#484f55;height:50px;color:#98a3ab}.fotter a{color:#98a3ab;line-height:50px;float:left;font-size:12px}.view_products2{list-style:none;overflow:auto;height:400px}.view_products2 img{float:left;margin-right:20px}.view_products2 li{margin:10px 0px}.pixbox{width:160px;margin:0 auto;height:200px;overflow:hidden;text-align:center}.form-order{background:#f5f5f5;padding:0 20px 20px 20px}#order-payment{float:right;width:280px}#order-delivery{float:right;width:280px}.delivery-data{margin-bottom:27px;position:relative;background:#95ba2f;display:none;border-radius:5px;float:left;box-sizing:border-box;padding:14px 20px;color:#fff;font-size:13px}.jcarousel-next-disabled,.jcarousel-prev-disabled{opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.content2 br{display:none}.pixbox a{width:160px;height:200px;display:table-cell;vertical-align:middle}.pixbox img{max-width:160px;max-height:200px;vertical-align:middle}.pagination li.prev.disabled span{display:none}.pagination li.next.disabled span{display:none}.fr{float:right}.nobottom{border-bottom:none !important}.dotted a{border-bottom:1px dotted #808080}.mycabinet{padding-left:20px;margin-top:20px}.mycabinet .begin{text-transform:uppercase;font-size:13px;font-weight:bold;padding-bottom:15px}.mycabinet ul{margin:0px;padding:0px;list-style:none}.mycabinet ul li{padding-top:10px;padding-bottom:10px}.mycabinet a{color:#799920;text-decoration:none}.lay_title .uppercase{text-transform:uppercase}.lay_title .center{text-align:center}.lay_title{padding-top:15px;font-size:24px}.user_data{width:390px;border-right:1px solid #d2d2d2;float:left}.user_data .col{padding-bottom:35px}.user_data .col.last{padding-bottom:0px}.user_data .title{text-transform:uppercase;font-weight:bold;width:170px;float:left;font-size:13px}.user_data .data{float:left;font-size:13px}.edit_menu{float:left;padding-left:60px;font-size:13px}.edit_menu div{padding-bottom:20px}.edit_menu a{color:#799920;text-decoration:none}.edit_menu .dotted{border-bottom:1px dotted #799920}.user_edit_area{padding-top:30px}.user_data_editing{float:left}.inputs .col{padding-bottom:12px !important}.user_data_editing .col{padding-bottom:35px;width:432px}.user_data_editing .title{text-transform:uppercase;font-weight:bold;width:170px;float:left;font-size:13px}.user_data_editing .data{float:left;font-size:13px;width:262px}.user_data_editing input[type="text"]{padding:0;margin:0;border:1px solid #d2d2d2;padding-top:7px;padding-bottom:7px;padding-left:10px;padding-right:10px;border-radius:4px;font-size:12px;margin-top:-10px;width:240px}.user_data_editing .add{color:#799920;text-decoration:none;border-bottom:1px dotted #799920}.add_more{padding-bottom:24px;padding-left:170px}.delete{float:right}.delete_button{background:url('../img/ico_close.png') right no-repeat;width:16px;height:16px;float:right}.content_area{width:450px}#cancel{text-decoration:none;color:#799920;font-size:13px;border-bottom:1px dotted #799920;float:left;margin-left:40px}.buttons{display:inline-flex;align-items:center}.favorites{background-color:#f5f5f5;padding:5px;font-size:14px}.favorites .fav_point{background-color:#ffffff;border:1px solid #d2d2d2;border-radius:3px;padding-top:10px;padding-bottom:10px;padding-left:20px;padding-right:20px;margin-top:5px}.favorites .fav_point .left{float:left;padding-right:0;width:178px}.favorites .fav_point .right{float:right;padding-right:0;padding-left:0}.favorites .link{color:#799920;text-decoration:none;border-bottom:1px dotted #799920}.redtext{color:#f75d50}.greentext{color:#95ba2f}.hold .orders_view{display:none !important}.orders_view{width:680px;margin-top:13px;padding-top:13px;padding-bottom:5px;border-top:1px solid #d2d2d2;display:block}.orders_view .order{float:left;width:225px;text-align:center}.orders_view .order .order_price{color:#f75d50;font-weight:bold;font-size:15px}.orders_view .order .order_price span{font-size:24px}.orders_view .order img{padding-bottom:22px}.orders_view .order .note{font-size:13px}.orders_view .order .note span{color:#f75d50}.basket_hovered{position:absolute;border:1px solid #d2d2d2;border-radius:5px;padding:15px 20px;background-color:white;right:-1px;margin-top:10px;width:640px;display:none;z-index:1111}.open .basket_hovered{display:block}.open,.open .basket_hovered{-moz-box-shadow:0px 0px 5px rgba(149,149,149,0.75);-webkit-box-shadow:0px 0px 5px rgba(149,149,149,0.75);box-shadow:0px 0px 5px rgba(149,149,149,0.75)}.basket_hovered1:before{position:absolute;left:0;content:' ';width:100%;background-color:white;height:10px;top:45px;z-index:1112}.basket_item input{border:1px solid #d2d2d2;border-radius:4px;padding:9px;width:26px;font-size:18px;font-weight:bold;text-align:center;background-color:white;color:black;margin:7px}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.minus{background:url('../img/minus.png') no-repeat;width:15px;height:15px;display:inline-block;cursor:pointer}.plus{background:url('../img/plus.png') no-repeat;width:15px;height:15px;display:inline-block;cursor:pointer}.basket_sum{padding-top:15px}.basket_sum .sum_text{font-size:15px;text-transform:none;padding-top:12px;float:right !important;padding-top:1px;margin-bottom:11px}.basket_sum .sum_text span{font-size:18px;color:#f75d50;font-weight:bold}.basket_sum a{color:white !important;font-size:15px !important;float:right}.black{z-index:9999;width:100%;height:100%;position:absolute;display:block;padding-top:6%}.black:before{content:'';background-color:rgba(0,0,0,0.5);width:100%;height:100%;position:fixed;top:0}.black.hidden{display:none}.black .item_added_win{background-color:#ffffff;width:640px;margin:auto;position:relative}.black_close{position:absolute;top:30px;right:30px;background:url('../img/ico_close2.png') no-repeat;width:22px;height:22px;display:inline-block;cursor:pointer}.block_content{padding-left:20px;padding-right:20px}.item_added_win h2{text-transform:uppercase;text-align:center;padding:30px}.block_content .item{padding-top:20px;padding-bottom:20px;border-bottom:1px solid #d2d2d2}.uppercase{text-transform:uppercase}.w230{width:230px}.w260{width:260px}.w430{width:430px}.borderbottom{border-bottom:1px solid #d2d2d2}.left_block .begin{text-transform:uppercase;font-size:13px;font-weight:bold;padding-bottom:15px}.color_variants .variant{text-align:center;border:1px solid #d2d2d2;float:left;margin-right:5px;margin-bottom:5px}.variant:hover{cursor:pointer}.color_variants{margin-top:14px;margin-bottom:-5px}.color_variants .variant.active{width:44px;height:44px;border:2px solid #95ba2f}.color_variants .variant.active a{width:44px;height:44px}.tobasket{margin-top:20px;margin-bottom:20px}.tobasket:hover{color:white}.variant{width:46px;height:46px}.variant.active{width:44px;height:44px}.layout{margin-top:15px}.left_block{float:left}.right_block{float:right}.center_block{float:left;margin-left:23px}.left_block .links{margin-top:25px}.left_block .links li{list-style:none;padding-left:25px;display:inline-block;cursor:pointer;height:20px}.left_block .links ul{margin:0;padding:0}.left_block .links a{font-size:13.5px;text-decoration:none;color:#8ba73e}.links .add_bookmarks{background:url('../img/ico_add_bookmark.png') no-repeat center left}.links .what_price{background:url('../img/ico_price.png') no-repeat center left}.links .add_compare{background:url('../img/ico_scales.png') no-repeat center left}.spoiler_one{padding-top:15px;padding-bottom:15px;border-bottom:1px solid #d2d2d2}.spoiler_one .spoiler_content{margin-top:15px;font-size:13px}.spoiler_one .spoiler_content.hidden{display:none}.title_spoiler:hover{cursor:pointer}.title_spoiler{background:url('../img/ico_open.png') no-repeat center left;padding-left:17px;font-size:13px;text-transform:uppercase;color:#333333;font-weight:bold;text-decoration:none}.title_spoiler.closed{background:url('../img/ico_close3.png') no-repeat center left}.features{list-style:none;padding:0;margin:0;font-size:13px}.features a{font-size:13px;text-decoration:none;border-bottom:1px dotted #8ba73e;color:#8ba73e}.features li{padding-top:5px;padding-bottom:4px}.note_prod{width:225px;height:23px;overflow:hidden;border-radius:5px;display:table;text-transform:uppercase;font-size:11px;font-weight:bold}.note_prod .one{z-index:999}.note_prod .two{z-index:998}.note_prod .blue{float:left;padding-top:5px;padding-bottom:5px;background-color:#42b9f6;padding-left:10px;padding-right:5px;position:relative}.note_prod .blue:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #42b9f6;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.note_prod .red{float:left;padding-top:5px;padding-bottom:5px;background-color:#f75d50;padding-left:10px;padding-right:5px;position:relative;color:#ffffff}.note_prod .red:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #f75d50;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.note_prod .yellow{float:left;padding-top:5px;padding-bottom:5px;background-color:#fbc665;padding-left:10px;padding-right:5px;position:relative}.note_prod .yellow:after{content:'';width:0;height:0;border-top:13px solid transparent;border-left:5px solid #fbc665;border-bottom:13px solid transparent;position:absolute;top:-1px;margin-left:5px}.products_block .product{float:left;width:190px;vertical-align:bottom}.product .image{height:225px;position:relative}.product .image img{position:absolute;bottom:0;left:15px}.price{font-size:18px;color:#f75d50;font-weight:bold;text-align:center}.product{padding-bottom:30px;position:relative}.product p{font-size:15px;text-align:center;margin-top:15px}.left52{margin-left:52px}.product a{color:#ffffff}.mrg1{margin-top:25px;margin-bottom:15px}.products_martopbot{margin-top:60px;margin-bottom:100px}.cont_shop_but{display:table-cell;vertical-align:middle;padding:35px}.cont_shop{text-decoration:none;font-size:12px;border-bottom:1px dotted #799920;color:#799920}.icons{width:45px;height:50%;position:absolute;z-index:9;right:0;padding-top:25px;padding-right:15px}.icons a{width:44px;height:44px;float:left;border:1px solid #d2d2d2;margin-bottom:5px;background-color:white}a:hover{cursor:pointer}.basket_item .form-group{display:inline}.basket.open:after{content:'';position:absolute;top:43px;width:100%;height:10px;background-color:white;left:0;z-index:9990}.basket_hovered .basket_sum{float:left}a.active{font-weight:bold;text-decoration:underline}.HOME_RIGHT{display:inline-block;vertical-align:top;margin-left:10px;position:absolute}#HOME_UNDER_SLIDER > div{display:inline-block;margin-right:3px;margin-top:3px}.sort_block{display:inline-block}.sort_block ul{display:inline-block;margin:0;padding:0}.sort_block ul li{display:inline-block;margin:0 0.5em;list-style:none}.sort_block ul li a.asc:after,.sort_block ul li a.desc:after{display:block;width:5px;height:3px;position:absolute;top:50%;margin-top:-1px;right:-10px;content:'';background:url("../img/arrow_sort_asc_desc.png") no-repeat}.sort_block ul li a.asc:after{background-position:0 0}.sort_block ul li a.desc:after{background-position:0 -3px}.home_banner_up{margin-top:20px}.home_banner_up .HOME_RIGHT{display:block;float:right;position:static;margin-left:0}#HOME_SLIDER .jssorb03 div,#HOME_SLIDER .jssorb03 div:hover,#HOME_SLIDER .jssorb03 .av{width:6px;height:6px;border-radius:50%;line-height:6px;background:#fff;border:2px solid #fff;box-shadow:0px 0px 5px 0px rgba(54, 54, 54, 0.75)}#HOME_SLIDER .jssorb03 div.av:hover,#HOME_SLIDER .jssorb03 div.av:active,#HOME_SLIDER .jssorb03 .av{cursor:default;background:#95BA2F}.special-products{padding-top:30px}.special-products .link_buy{margin-bottom:0}.special-products .item{margin-bottom:0 !important;text-align:center}.why_me_{padding-top:30px;overflow:hidden;margin-bottom:60px}.why_me_ .why_list{width:1038px;margin-left:-58px}.seo_text p{margin:12px 0 0 0;font-size:13px !important;color:#333 !important;font-family:Roboto !important}.seo_text p:first-child{margin-top:0}.product-special{position:absolute}.jcarousel-skin-tango .jcarousel-item{width:38px;height:38px;border:1px solid #d2d2d2;text-align:center;background:#fff}.jcarousel-skin-tango .jcarousel-item a{display:table-cell;width:38px;height:38px;vertical-align:middle}.mycarousel img{max-width:38px;max-height:38px;border:0;vertical-align:middle}.jcarousel-skin-tango .jcarousel-clip-vertical,.jcarousel-skin-tango .jcarousel-container-vertical{height:175px}.jcarousel-skin-tango .jcarousel-container-vertical{padding:0}.jcarousel-skin-tango .jcarousel-prev-vertical{top:-13px}.jcarousel-skin-tango .jcarousel-next-vertical{bottom:-13px}.jcarousel-skin-tango .jcarousel-prev-vertical,.jcarousel-skin-tango .jcarousel-next-vertical{left:0;width:42px;background-position:14px 0}.jcarousel-skin-tango .jcarousel-prev-vertical:hover,.jcarousel-skin-tango .jcarousel-next-vertical:hover{background-position:14px 0;left:0}ul.product-special{position:absolute;top:0;left:16px}ul.product-special li{width:100%;float:left}ul.product-special li div{color:#333;font-size:10px;text-transform:uppercase;font-weight:700;height:22px;line-height:24px;padding:0 9px;position:relative;border-top-left-radius:4px;border-bottom-left-radius:4px;margin-top:8px;float:left}ul.product-special li:first-child{margin-top:0}ul.product-special li.top div{background:#fbc665}ul.product-special li.top div:after{content:'';position:absolute;right:-19px;top:3px;border:11px solid transparent;border-top:5px solid #fbc665;transform:rotate(-90deg)}ul.product-special li.new div{background:#42b9f6}ul.product-special li.new div:after{content:'';position:absolute;right:-18px;top:2px;border:11px solid transparent;border-top:5px solid #42b9f6;transform:rotate(-90deg)}ul.product-special li.promo div{background:#f75d50}ul.product-special li.promo div:after{content:'';position:absolute;right:-18px;top:2px;border:11px solid transparent;border-top:5px solid #f75d50;transform:rotate(-90deg)}.cost-block{margin-top:1px}.products.pn a.link_buy{margin-bottom:0}.products.pn{padding-bottom:0}.products.pn>ul{width:100%;float:left;margin-bottom:-3px}._form_checkbox_reset,.sort_block ul li a,.sort_block{font-size:12px}.filter_accept_bloc{margin-top:13px;margin-bottom:0}._form_checkbox_reset{color:#6a6a6a;display:block;width:128px;height:28px;border:1px solid #d2d2d2;line-height:28px;text-align:center;border-radius:4px;text-decoration:none;margin:0 auto}._form_checkbox_reset:hover{border:1px solid #95ba2f;color:#6a6a6a}._form_checkbox_reset:active{border:1px solid #95ba2f;background:#95ba2f;color:#fff}.sort_block ul li a{color:#8fa951;position:relative}.sort_block ul li a:hover{color:#333}#HOME_SLIDER .jssora03l,#HOME_SLIDER .jssora03r{width:36px;height:340px;background:url('../img/new_arrows_.png') no-repeat}#HOME_SLIDER .jssora03l,#HOME_SLIDER .jssora03l:hover{background-position:0 50%;left:0;top:0}#HOME_SLIDER .jssora03r,#HOME_SLIDER .jssora03r:hover{background-position:-36px 50%;right:0;top:0}.loyout ._prd_spec-wr{margin-top:10px}.loyout .special-products:first-child{border-top:0;padding-top:0}.irs-slider{width:13px;height:13px;top:25px;border-radius:100%;box-shadow:none;border:1px solid #d2d2d2;background:#ffffff;background:-moz-linear-gradient(top, #ffffff 0%, #ebebeb 100%);background:-webkit-linear-gradient(top, #ffffff 0%,#ebebeb 100%);background:linear-gradient(to bottom, #ffffff 0%,#ebebeb 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#ebebeb',GradientType=0 )}.irs-slider.state_hover,.irs-slider:hover{background:#ffffff}.irs-slider:after{display:none}.irs-slider:before{content:"";position:absolute;width:5px;height:5px;z-index:2;border:1px solid #d2d2d2;border-radius:100%;background:#799920;top:3px;left:3px}.irs-bar{height:3px;top:30px}.irs-line{height:9px;background:#ebebeb;border:1px solid #d2d2d2;top:27px}.irs-line:before{width:166px;height:5px;position:absolute;content:'';top:2px;left:2px;background:#d2d2d2;border-radius:5px}.irs-min,.irs-max{display:none}.irs{height:49px}.price_filter.first_price_li{margin-top:8px}.product_read_ .w{width:110px;overflow:hidden;margin:0;padding-top:0;display:table-cell;vertical-align:middle;height:32px;float:none}.product_read_ .w strike,.product_read_ .w .cost{width:100%;float:left}.product_read_price .link_buy{width:118px;position:absolute;top:50%;right:0;margin:-16px 0 0 0}.product_read_price{position:relative;min-height:32px;margin-top:10px}.special-products.products h3{margin-bottom:10px}.special-products.products li.item{margin-top:30px}.productLeftBar .cost_box{border-top:0;padding:10px 0 15px 0}.productLeftBar .product_mod{width:100%;float:left;border-bottom:1px solid #d2d2d2;padding-bottom:15px}.field-orders-delivery .control-label,.field-orders-payment .control-label,.field-orders-body .control-label,.textareagroup .control-label{width:100%;float:left}.basket_title_{text-align:center}.cont_shopping-wr{width:100%;float:left;margin-top:10px}.cont_shopping-wr .cont_shopping{float:right}.cont_shopping{display:block !important;border-top:0 !important;border-left:0 !important;border-right:0 !important;border-bottom:1px dashed #799920 !important;color:#799920 !important;margin:0 !important;padding:0 !important;font-size:12px !important;float:left;border-radius:0 !important}.info.product-thumb-video{width:100%;height:100%}.info.product-thumb-video iframe,.info.product-thumb-video embed{width:100% !important;height:auto !important}.input-blocks-wrapper,.input-blocks{width:100%;float:left}.form-order .input-blocks-wrapper{margin-top:6px}.input-blocks label{font-size:13px;color:#333}.basket_input_2 label{height:30px;line-height:30px;float:left;width:70px !important;padding-top:0 !important}.custom-input-2{width:100%;height:30px;box-sizing:border-box;outline:none;line-height:30px;padding-left:8px;margin-top:5px;background:#fff;border-radius:4px}.custom-input-2,.custom-area-2,.textareagroup textarea{border:1px solid #d2d2d2;box-sizing:border-box;font-size:13px;color:#636363}.custom-area-2,.textareagroup textarea{min-height:128px;max-height:128px;resize:none;width:100%;max-width:100%;outline:none;padding-left:8px;padding-top:8px;margin-top:8px}.basket_input_2 .custom-input-2{width:270px;float:right;margin-top:0}.custom-input-2:focus,.custom-area-3:focus,.textareagroup textarea:focus{box-shadow:1px 2px 2px 0px rgba(215, 215, 215, 0.75) inset;transition:0.1s}.textareagroup textarea:focus{border:1px solid #d2d2d2}.title_groups,.radio_grp label.control-label,.textareagroup .control-label{font-size:12px;font-weight:bold;text-transform:uppercase;margin-bottom:12px}.input-blocks-group{width:100%;float:left;border-bottom:1px solid #d2d2d2;padding-bottom:20px;margin-top:18px}.custom-form-buttons{width:100%;float:left}input.custom-radio + label,input.custom-check + label{font-size:13px;cursor:pointer;margin-left:6px}input.custom-radio,input.custom-check{display:none}input.custom-radio + label span{width:16px;height:16px;background:url('../img/radio_new.png') no-repeat;float:left;transition:.2s;margin-top:1px}input.custom-radio:checked + label span,input.custom-radio:checked + label:hover span{background:url('../img/radio_new-active.png') no-repeat}input.custom-radio + label:hover{text-decoration:underline}.custom-form-buttons{margin-top:7px}.custom-form-buttons:first-child{margin-top:0}.delivery-data .field-order-delivery-childs .control-label{display:none}.checkout_basket{width:100%;float:left}.checkout_basket button{margin:0 auto}.input-blocks-wrapper .help-block{padding-left:71px;padding-top:4px;width:100%;float:left;box-sizing:border-box;margin-bottom:0}.cont_shop_but-wr{height:33px;margin-top:35px;padding-bottom:29px}.cont_shop_but-wr .cont_shop{margin-top:8px;float:left}.cont_shop_but-wr .submit4.bottom3{float:right}._qqq_ .params{font-size:12px}.activeShow{border-bottom:0 !important}.delivery-data:after{width:100%;border-bottom:1px solid #d2d2d2;position:absolute;content:'';bottom:-27px;left:0}.img_ajax_basket img{margin-right:0 !important;max-width:90px;max-height:90px;vertical-align:middle}.jcarousel-skin-tango>li{display:none}#login-form{margin:50px auto 0 auto}#bg{top:0 !important;z-index:1 !important}.top,.wrap,.bottom,.fotter{position:relative;z-index:2}.owl-pagination{display:none}.owl-controls .owl-buttons div{width:34px !important;height:50px !important;background:#596065 !important;top:50% !important;margin:-25px 0 0 0 !important;opacity:1 !important;border-radius:0 !important;padding:0 !important;position:absolute}.owl-controls .owl-buttons div:hover{background:#acafb2 !important;transition:0.2s !important}.owl-controls .owl-buttons .owl-prev{border-top-right-radius:4px !important;border-bottom-right-radius:4px !important;left:-20px}.owl-controls .owl-buttons .owl-next{border-top-left-radius:4px !important;border-bottom-left-radius:4px !important;right:-20px}.owl-controls .owl-buttons div:before{position:absolute;content:'';width:8px;height:22px;background:url("../img/arrows_blocks.png") no-repeat;top:50%;margin-top:-11px;left:50%;margin-left:-4px}.owl-controls .owl-buttons .owl-prev:before{background-position:0 0}.owl-controls .owl-buttons .owl-next:before{background-position:-8px 0}.basket_input_2.required .control-label{position:relative}.basket_input_2.required .control-label:before{position:absolute;top:0;content:'*';color:#D60000;left:-11px;padding-top:2px}.float-left{float:left}.blog-show-img{padding-right:20px}.text_seo.hidden_seo{height:178px;overflow:hidden;position:relative}.text_seo.hidden_seo div{height:162px;overflow:hidden;position:relative}.text_seo.hidden_seo a{position:absolute;bottom:0;right:0;font-size:16px}.text_seo.hidden_seo div:before{content:'';display:block;position:absolute;bottom:0;right:0;left:0;height:120px;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,rgba(255,255,255,0)),color-stop(100%,#fff));background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-o-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:-ms-linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%);background:linear-gradient(top,rgba(255,255,255,0) 0%,#fff 100%)}
3 3 \ No newline at end of file
... ...