diff --git a/src/Web/WebMVC/Controllers/CartController.cs b/src/Web/WebMVC/Controllers/CartController.cs index 86a856981..49d96d8a4 100644 --- a/src/Web/WebMVC/Controllers/CartController.cs +++ b/src/Web/WebMVC/Controllers/CartController.cs @@ -49,10 +49,10 @@ namespace Microsoft.eShopOnContainers.WebMVC.Controllers return View(vm); } - public async Task AddToCart(string productId) + public async Task AddToCart(CatalogItem productDetails) { var user = await _userManager.GetUserAsync(HttpContext.User); - var productDetails = _catalogSvc.GetCatalogItem(productId); + //var productDetails = _catalogSvc.GetCatalogItem(productId); var product = new BasketItem() { Id = Guid.NewGuid().ToString(), @@ -60,7 +60,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Controllers ProductName = productDetails.Name, PictureUrl = productDetails.PictureUri, UnitPrice = productDetails.Price, - ProductId = productId + ProductId = productDetails.Id }; _basketSvc.AddItemToBasket(user, product); return RedirectToAction("Index", "Catalog"); diff --git a/src/Web/WebMVC/Models/Basket.cs b/src/Web/WebMVC/Models/Basket.cs index 6bd0068c1..09acf1471 100644 --- a/src/Web/WebMVC/Models/Basket.cs +++ b/src/Web/WebMVC/Models/Basket.cs @@ -18,7 +18,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Models public decimal Total() { - return Items.Sum(x => x.UnitPrice * x.Quantity); + return Math.Round(Items.Sum(x => x.UnitPrice * x.Quantity),2); } } } diff --git a/src/Web/WebMVC/Models/CartViewModels/IndexViewModel.cs b/src/Web/WebMVC/Models/CartViewModels/IndexViewModel.cs new file mode 100644 index 000000000..142dfc6a0 --- /dev/null +++ b/src/Web/WebMVC/Models/CartViewModels/IndexViewModel.cs @@ -0,0 +1,15 @@ +using BikeSharing_Private_Web_Site.Services.Pagination; +using Microsoft.AspNetCore.Mvc.Rendering; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +namespace Microsoft.eShopOnContainers.WebMVC.Models.CartViewModels +{ + public class CartComponentViewModel + { + public int ItemsCount { get; set; } + public string Disabled { get { return (ItemsCount == 0) ? "is-disabled" : ""; } } + } +} diff --git a/src/Web/WebMVC/Models/CatalogViewModels/IndexViewModel.cs b/src/Web/WebMVC/Models/CatalogViewModels/IndexViewModel.cs index 9283c8e59..3c0cc8e78 100644 --- a/src/Web/WebMVC/Models/CatalogViewModels/IndexViewModel.cs +++ b/src/Web/WebMVC/Models/CatalogViewModels/IndexViewModel.cs @@ -12,8 +12,8 @@ namespace Microsoft.eShopOnContainers.WebMVC.Models.CatalogViewModels public IEnumerable CatalogItems { get; set; } public IEnumerable Brands { get; set; } public IEnumerable Types { get; set; } - public int BrandFilterApplied { get; set; } - public int TypesFilterApplied { get; set; } + public int? BrandFilterApplied { get; set; } + public int? TypesFilterApplied { get; set; } public PaginationInfo PaginationInfo { get; set; } } } diff --git a/src/Web/WebMVC/Services/CatalogService.cs b/src/Web/WebMVC/Services/CatalogService.cs index 00b24d3b6..55a18ce75 100644 --- a/src/Web/WebMVC/Services/CatalogService.cs +++ b/src/Web/WebMVC/Services/CatalogService.cs @@ -30,7 +30,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services public CatalogService(IOptions settings) { _settings = settings; - _remoteServiceBaseUrl = $"{_settings.Value.CatalogUrl}api/v1/catalog/"; + _remoteServiceBaseUrl = $"{_settings.Value.CatalogUrl}/api/v1/catalog/"; #region fake data _items = new List() @@ -79,7 +79,11 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services var filterQs = ""; if (brand.HasValue || type.HasValue) - filterQs = $"/type/{type ?? null}/brand/{brand ?? null}"; + { + var brandQs = (brand.HasValue) ? brand.Value.ToString() : "null"; + var typeQs = (type.HasValue) ? type.Value.ToString() : "null"; + filterQs = $"/type/{typeQs}/brand/{brandQs}"; + } var catalogUrl = $"{_remoteServiceBaseUrl}items{filterQs}?pageIndex={page}&pageSize={take}"; var dataString = await _apiClient.GetStringAsync(catalogUrl); @@ -98,7 +102,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services var dataString = await _apiClient.GetStringAsync(url); var items = new List(); - items.Add(new SelectListItem() { Value = "0", Text = "All", Selected = true }); + items.Add(new SelectListItem() { Value = null, Text = "All", Selected = true }); JArray brands = JArray.Parse(dataString); foreach (JObject brand in brands.Children()) @@ -117,7 +121,7 @@ namespace Microsoft.eShopOnContainers.WebMVC.Services var dataString = await _apiClient.GetStringAsync(url); var items = new List(); - items.Add(new SelectListItem() { Value = "0", Text = "All", Selected = true }); + items.Add(new SelectListItem() { Value = null, Text = "All", Selected = true }); JArray brands = JArray.Parse(dataString); foreach (JObject brand in brands.Children()) diff --git a/src/Web/WebMVC/ViewComponents/Cart.cs b/src/Web/WebMVC/ViewComponents/Cart.cs index 1f1b4b3de..24e551706 100644 --- a/src/Web/WebMVC/ViewComponents/Cart.cs +++ b/src/Web/WebMVC/ViewComponents/Cart.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.eShopOnContainers.WebMVC.Models; +using Microsoft.eShopOnContainers.WebMVC.Models.CartViewModels; using Microsoft.eShopOnContainers.WebMVC.Services; using System; using System.Collections.Generic; @@ -20,7 +21,11 @@ namespace Microsoft.eShopOnContainers.WebMVC.ViewComponents public async Task InvokeAsync(ApplicationUser user) { var itemsInCart = await ItemsInCartAsync(user); - return View(itemsInCart); + var vm = new CartComponentViewModel() + { + ItemsCount = itemsInCart + }; + return View(vm); } private Task ItemsInCartAsync(ApplicationUser user) { diff --git a/src/Web/WebMVC/Views/Catalog/Index.cshtml b/src/Web/WebMVC/Views/Catalog/Index.cshtml index bb2052f5f..eaec34349 100644 --- a/src/Web/WebMVC/Views/Catalog/Index.cshtml +++ b/src/Web/WebMVC/Views/Catalog/Index.cshtml @@ -24,87 +24,29 @@ -
-
-
-
- -
-
Showing @Html.DisplayFor(modelItem => modelItem.PaginationInfo.ItemsPerPage) of @Html.DisplayFor(modelItem => modelItem.PaginationInfo.TotalItems) products - Page @(Model.PaginationInfo.ActualPage + 1) of @Html.DisplayFor(x => x.PaginationInfo.TotalPages)
-
- -
+ @if (Model.CatalogItems.Count() > 0) + { +
+ @Html.Partial("_pagination", Model)
-
-
- @foreach (var catalogItem in Model.CatalogItems) - { -
-
-
- - -
-
- @catalogItem.Name -
-
- @catalogItem.Price.ToString("N2") -
-
-
- } -
-
-
- -
-
Showing @Html.DisplayFor(modelItem => modelItem.PaginationInfo.ItemsPerPage) of @Html.DisplayFor(modelItem => modelItem.PaginationInfo.TotalItems) products - Page @(Model.PaginationInfo.ActualPage + 1) of @Html.DisplayFor(x => x.PaginationInfo.TotalPages)
-
- -
+ @foreach (var catalogItem in Model.CatalogItems) + { +
+ @Html.Partial("_product", catalogItem) +
+ } +
-
-
+
+ @Html.Partial("_pagination", Model) +
+ } + else + { +
+ THERE ARE NO RESULTS THAT MATCH YOUR SEARCH +
+ } +
\ No newline at end of file diff --git a/src/Web/WebMVC/Views/Catalog/_noResults.cshtml b/src/Web/WebMVC/Views/Catalog/_noResults.cshtml new file mode 100644 index 000000000..50acda679 --- /dev/null +++ b/src/Web/WebMVC/Views/Catalog/_noResults.cshtml @@ -0,0 +1,31 @@ +@model Microsoft.eShopOnContainers.WebMVC.Models.CatalogViewModels.IndexViewModel + +
+
+ +
+
Showing @Html.DisplayFor(modelItem => modelItem.PaginationInfo.ItemsPerPage) of @Html.DisplayFor(modelItem => modelItem.PaginationInfo.TotalItems) products - Page @(Model.PaginationInfo.ActualPage + 1) of @Html.DisplayFor(x => x.PaginationInfo.TotalPages)
+
+ +
+
diff --git a/src/Web/WebMVC/Views/Catalog/_pagination.cshtml b/src/Web/WebMVC/Views/Catalog/_pagination.cshtml new file mode 100644 index 000000000..50acda679 --- /dev/null +++ b/src/Web/WebMVC/Views/Catalog/_pagination.cshtml @@ -0,0 +1,31 @@ +@model Microsoft.eShopOnContainers.WebMVC.Models.CatalogViewModels.IndexViewModel + +
+
+ +
+
Showing @Html.DisplayFor(modelItem => modelItem.PaginationInfo.ItemsPerPage) of @Html.DisplayFor(modelItem => modelItem.PaginationInfo.TotalItems) products - Page @(Model.PaginationInfo.ActualPage + 1) of @Html.DisplayFor(x => x.PaginationInfo.TotalPages)
+
+ +
+
diff --git a/src/Web/WebMVC/Views/Catalog/_product.cshtml b/src/Web/WebMVC/Views/Catalog/_product.cshtml new file mode 100644 index 000000000..241f3a61d --- /dev/null +++ b/src/Web/WebMVC/Views/Catalog/_product.cshtml @@ -0,0 +1,23 @@ +@model CatalogItem + +
+
+ + +
+
+ @Model.Name +
+
+ @Model.Price.ToString("N2") +
+ + + + + + + + + +
diff --git a/src/Web/WebMVC/Views/Order/Detail.cshtml b/src/Web/WebMVC/Views/Order/Detail.cshtml index 198b586f4..49f0f060b 100644 --- a/src/Web/WebMVC/Views/Order/Detail.cshtml +++ b/src/Web/WebMVC/Views/Order/Detail.cshtml @@ -53,9 +53,9 @@ @item.ProductName ROSLYN - $ @item.UnitPrice + $ @Math.Round(item.UnitPrice, 2) @item.Quantity - $ @(item.Quantity * item.UnitPrice) + $ @Math.Round(item.Quantity * item.UnitPrice,2) } diff --git a/src/Web/WebMVC/Views/Shared/Components/Cart/Default.cshtml b/src/Web/WebMVC/Views/Shared/Components/Cart/Default.cshtml index d3f757363..c27028caa 100644 --- a/src/Web/WebMVC/Views/Shared/Components/Cart/Default.cshtml +++ b/src/Web/WebMVC/Views/Shared/Components/Cart/Default.cshtml @@ -1,15 +1,15 @@ -@model System.Int32 +@model Microsoft.eShopOnContainers.WebMVC.Models.CartViewModels.CartComponentViewModel @{ ViewData["Title"] = "My Cart"; }
- + -
- @Model +
+ @Model.ItemsCount
diff --git a/src/Web/WebMVC/Views/Shared/Components/CartList/Default.cshtml b/src/Web/WebMVC/Views/Shared/Components/CartList/Default.cshtml index ee9ac4c39..3b69e39b6 100644 --- a/src/Web/WebMVC/Views/Shared/Components/CartList/Default.cshtml +++ b/src/Web/WebMVC/Views/Shared/Components/CartList/Default.cshtml @@ -43,7 +43,7 @@ - $ @(item.Quantity * item.UnitPrice) + $ @Math.Round(item.Quantity * item.UnitPrice,2) } diff --git a/src/Web/WebMVC/appsettings.json b/src/Web/WebMVC/appsettings.json index a6151b34d..e20c4833f 100644 --- a/src/Web/WebMVC/appsettings.json +++ b/src/Web/WebMVC/appsettings.json @@ -1,9 +1,10 @@ { "ConnectionStrings": { - //"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Microsoft.eShopOnContainers.WebMVC-946ae052-8305-4a99-965b-ec8636ddbae3;Trusted_Connection=True;MultipleActiveResultSets=true;" - "DefaultConnection": "Server=.;Database=aspnet-Microsoft.eShopOnContainers.WebMVC;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False;Trusted_Connection=True;" + //"DefaultConnection": "Server=127.0.0.1,5433;Database=aspnet-Microsoft.eShopOnContainers.WebMVC;User Id=sa;Password=Pass@word" + "DefaultConnection": "Server=identity.data;Database=aspnet-Microsoft.eShopOnContainers.WebMVC;User Id=sa;Password=Pass@word" }, - "CatalogUrl": "http://localhost:5000/", + "CatalogUrl": "http://catalog.api", + //"CatalogUrl": "http://localhost:5001", "OrderingUrl": "http://localhost:2446/", "Logging": { "IncludeScopes": false, diff --git a/src/Web/WebMVC/docker-compose.yml b/src/Web/WebMVC/docker-compose.yml index 0bef718b0..05702a927 100644 --- a/src/Web/WebMVC/docker-compose.yml +++ b/src/Web/WebMVC/docker-compose.yml @@ -10,9 +10,10 @@ services: - CatalogUrl=http://catalog.api - OrderingUrl=http://ordering.api ports: - - "800:80" + - "5000:80" depends_on: - catalog.api + - identity.data catalog.api: image: eshop/catalog.api @@ -20,6 +21,8 @@ services: - ConnectionString=Server=catalogdata;Port=5432;Database=CatalogDB;username=postgres;password=postgres expose: - "80" + ports: + - "5001:80" depends_on: - catalogdata @@ -45,3 +48,11 @@ services: image: eshop/ordering.data.sqlserver.linux ports: - "5432:1433" + + identity.data: + image: eshop/mssql-server-private-preview + environment: + - SA_PASSWORD=Pass@word + - ACCEPT_EULA=Y + ports: + - "5433:1433" \ No newline at end of file diff --git a/src/Web/WebMVC/project.json b/src/Web/WebMVC/project.json index 32cc5184d..7eb70fc16 100644 --- a/src/Web/WebMVC/project.json +++ b/src/Web/WebMVC/project.json @@ -19,10 +19,10 @@ "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", "Microsoft.AspNetCore.StaticFiles": "1.0.0", "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", - //"Microsoft.EntityFrameworkCore.SqlServer.Design": { - // "version": "1.0.0-rc2-final", - // "type": "build" - //}, + "Microsoft.EntityFrameworkCore.SqlServer.Design": { + "version": "1.0.0", + "type": "build" + }, "Microsoft.EntityFrameworkCore.Tools": { "version": "1.0.0-preview2-final", "type": "build" diff --git a/src/Web/WebMVC/wwwroot/css/site.css b/src/Web/WebMVC/wwwroot/css/site.css index 626d91ce0..b29e5cba6 100644 --- a/src/Web/WebMVC/wwwroot/css/site.css +++ b/src/Web/WebMVC/wwwroot/css/site.css @@ -316,7 +316,7 @@ select::-ms-expand { width: 100%; margin-right: 0px; margin-left: 0px; - background-image: url(../images/main_banner.PNG); + background-image: url(../images/main_banner.png); background-size: cover; height: 258px; background-position: center; @@ -364,19 +364,21 @@ select::-ms-expand { .home-catalog-item-image { width: 100%; object-fit: cover; - max-width: 320px; + /* max-width: 320px; */ + text-align: center; } .home-catalog-item-image-addCart { background-color: #83D01B; color: white; - display: block; + display: inline-block; height: 43px; padding: 10px 20px 10px 20px; font-weight: bold; text-align: center; margin-top: 10px; - margin-left: 50px; + margin-left: 60px; + margin-right: 60px; font-size: 16px; font-weight: normal; } @@ -409,6 +411,11 @@ select::-ms-expand { content: '$'; } +.home-catalog-noResults { + text-align:center; + margin-top: 100px; +} + .container .nav .navbar-nav .col-sm-6 ::before { content: 'BRAND'; } @@ -668,7 +675,7 @@ form .col-md-4 { .order-section-total { margin-bottom: 5px; - margin-left: 20px; + margin-left: 40px; text-align: left; } @@ -805,8 +812,13 @@ form .col-md-4 { @media screen and (max-width: 415px) { .btn-brand-small-filter { - width: 65px; + width: 40px; padding:10px 10px 10px 10px; font-size: 10px; } + + .btn-brand-small-filter::before { + content: '->'; + color: white; + } } diff --git a/src/Web/WebMVC/wwwroot/css/site.min.css b/src/Web/WebMVC/wwwroot/css/site.min.css index e19fc65c0..4fcdc3092 100644 --- a/src/Web/WebMVC/wwwroot/css/site.min.css +++ b/src/Web/WebMVC/wwwroot/css/site.min.css @@ -1 +1 @@ -@font-face{font-family:Montserrat;font-weight:400;src:url("/fonts/Montserrat-Regular.eot?") format("eot"),url("/fonts/Montserrat-Regular.woff") format("woff"),url("/fonts/Montserrat-Regular.ttf") format("truetype"),url("/fonts/Montserrat-Regular.svg#Montserrat") format("svg")}@font-face{font-family:Montserrat;font-weight:700;src:url("/fonts/Montserrat-Bold.eot?") format("eot"),url("/fonts/Montserrat-Bold.woff") format("woff"),url("/fonts/Montserrat-Bold.ttf") format("truetype"),url("/fonts/Montserrat-Bold.svg#Montserrat") format("svg")}body{padding-top:80px;font-family:Montserrat,sans-serif}.mt-15{margin-top:15px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.select-filter{background-color:transparent;padding:10px;margin:10px;margin-right:20px;color:#fff;padding-top:20px;padding-bottom:3px;min-width:140px;border-color:#37c7ca;max-height:43px;-webkit-appearance:none}.select-filter option{background-color:#00a69c}select::-ms-expand{display:none}.select-filter-wrapper{z-index:0;display:inline-block;margin-left:-10px}.select-filter-wrapper::before{content:attr(data-name);opacity:.5;z-index:1;text-transform:uppercase;position:absolute;font-size:10px;margin-top:15px;margin-left:21px;color:#fff}.select-filter-arrow{position:absolute;margin-left:130px;margin-top:40px}.btn-brand-small-filter{margin-top:10px;position:absolute;margin-left:15px}.carousel-caption p{font-size:20px;line-height:1.4}.layout-cart-image{height:36px;margin-top:5px}.layout-cart-badge{position:absolute;margin-top:2px;margin-left:14px;background-color:#83d01b;padding:1px;color:#fff;border-radius:50%;width:18px;height:18px;font-size:12px;cursor:pointer}.btn-bracketed:hover:before{display:inline-block;content:"[";padding-right:.5em;color:#7fff00}.btn-bracketed:hover:after{display:inline-block;content:"]";padding-left:.5em;color:#7fff00}.btn-brand{background-color:#83d01b;color:#fff;padding:10px 20px 10px 20px;border-radius:0;border:none;width:255px;display:inline-block;text-align:center;text-transform:uppercase;height:45px;font-size:16px;font-weight:normal}.btn-brand::before{content:'['}.btn-brand::after{content:']'}.btn-brand:hover:before{padding-right:5px}.btn-brand:hover:after{padding-left:5px}.btn-brand-big{width:360px;margin-top:20px}.btn-brand-small{width:120px;font-size:14px}.btn-brand-small::before{content:''}.btn-brand-small::after{content:''}.btn-brand-small:hover:before{content:'';padding:0}.btn-brand-small:hover:after{content:'';padding:0}.btn-brand-dark{background-color:#00a69c}.btn-brand:hover{color:#fff;background-color:#83d01b;text-decoration:none}.btn-brand-dark:hover{background-color:#00a69c}.btn-cart{float:right;margin-top:40px;margin-bottom:40px}.btn-catalog-apply{padding-left:10px;padding-top:13px}.form-label{text-transform:uppercase;font-weight:normal!important;text-align:left;margin-bottom:10px !important;color:#404040}.form-input{border-radius:0;padding:10px;height:45px;width:360px;max-width:360px}.form-input-small{max-width:100px}.form-select{border-radius:0;padding:10px;height:45px;width:150px}.carousel-inner .item img[src$=".svg"]{width:100%}.navbar-inverse{background-color:#fff;border-color:#fff}.navbar-inverse li{margin-top:10px}.btn-login{border:1px solid #00a69c;height:36px!important;margin-right:10px;margin-top:10px;background-color:#fff;color:#00a69c;text-transform:uppercase;max-width:140px;width:140px;padding-top:8px!important}.btn-login{font-weight:normal!important}.btn-login::before{content:'['}.btn-login::after{content:']'}.btn-login:hover:before{content:'[ '}.btn-login:hover:after{content:' ]'}.navbar-inverse li a{height:30px;padding:5px 20px;color:#00a69c !important}.navbar-brand{margin-top:20px;background-image:url(../images/brand.PNG);width:201px;height:44px;margin-left:0 !important}.nav>li>a{color:#fff}.nav>li>a:hover,.nav>li>a:focus{background-color:#00a69c;font-weight:bolder}.container-fluid{padding-left:0;padding-right:0}.home-banner{width:100%;margin-right:0;margin-left:0;background-image:url(../images/main_banner.PNG);background-size:cover;height:258px;background-position:center}.home-banner-text{margin-top:70px}.home-catalog-container{min-height:400px;margin-bottom:20px}.home-catalog-filter-container{background-color:#00a69c;height:63px}.home-catalog-filter-container li a{padding-top:5px !important}.home-catalog-filter-brands::before{content:'BRAND';color:#fff;font-size:x-small;opacity:.5;margin:10px 0 0 15px}.home-catalog-filter-types::before{content:'TYPES';color:#fff;font-size:x-small;opacity:.5;margin:10px 0 0 15px}.home-catalog-item{margin-top:10px;margin-bottom:10px}.home-catalog-item-image{width:100%;object-fit:cover;max-width:320px}.home-catalog-item-image-addCart{background-color:#83d01b;color:#fff;display:block;height:43px;padding:10px 20px 10px 20px;font-weight:bold;text-align:center;margin-top:10px;margin-left:50px;font-size:16px;font-weight:normal}.home-catalog-item-image-addCart:hover{color:#fff;text-decoration:none}.home-catalog-item-image:hover:after{cursor:pointer}.home-catalog-item-title{text-align:center;text-transform:uppercase;font-weight:300;font-size:16px;margin-top:20px}.home-catalog-item-price{text-align:center;font-weight:900;font-size:28px}.home-catalog-item-price::before{content:'$'}.container .nav .navbar-nav .col-sm-6 ::before{content:'BRAND'}.validation-summary-errors li{list-style:none}footer{background-color:#000;height:150px;vertical-align:middle}footer .brand{margin-top:25px;background-image:url(../images/brand_dark.PNG);max-width:231px;height:52px;margin-left:0 !important}footer .text{text-align:right;width:100%;height:100%;color:#83d01b;margin-top:10px}.text{color:#83d01b}.text:hover{color:#83d01b}form .col-md-4{text-align:right}.brand-header-block{background-color:#00a69c;height:63px}.brand-header-block li{list-style:none;display:inline;opacity:.5;margin-top:25px;margin-left:10px;float:right;cursor:pointer;color:#fff}.brand-header-block li a{color:#fff}.brand-header-block li a:hover{text-decoration:none}.brand-header-block .active{opacity:1}.brand-header-block .active::before{content:'[ ';color:#adff2f}.brand-header-block .active::after{content:' ]';color:#adff2f}.brand-header-back{float:left!important;margin-top:20px!important;text-transform:uppercase}.account-login-container{min-height:70vh;text-align:center}.account-register-container{min-height:70vh;text-align:center !important;align-content:center}.cart-index-container{min-height:70vh;padding-top:40px;margin-bottom:30px}.order-create-container{min-height:70vh;padding-top:40px;margin-bottom:30px;padding-left:30px}.cart-product-column{max-width:120px;text-transform:uppercase;vertical-align:middle!important}.cart-subtotal-label{font-size:12px;color:#404040;margin-top:10px}.cart-subtotal-value{font-size:20px;color:#00a69c}.cart-total-label{font-size:14px;color:#404040;margin-top:10px}.cart-total-value{font-size:28px;color:#00a69c;text-align:left}.cart-product-image{max-width:210px}.cart-section-total{margin-bottom:5px;margin-left:175px;text-align:left}.cart-product-column input{width:70px;text-align:center}.cart-refresh-button{margin-top:0;background-image:url('../images/refresh.svg');color:#fff;font-size:8px;width:40px;margin-top:10px;height:40px;background-color:transparent;border:none}.cart-refresh-button:hover{background-color:transparent}.input-validation-error{border:1px solid #fb0d0d}.text-danger{color:#fb0d0d;font-size:12px}.cart{border:none !important}.form-horizontal h4{margin-top:30px}.form-control:focus{border-color:#83d01b}.form-input-center{margin:auto}.order-index-container{min-height:70vh;padding-top:40px;margin-bottom:30px}.order-index-container .table tbody tr{border-bottom:none}.order-index-container .table tbody tr td{border-top:none;padding-top:10px;padding-bottom:10px}.order-index-container .table tbody tr:nth-child(even){background-color:#f5f5f5}.order-create-section-title{margin-left:-15px;text-transform:uppercase}.order-create-section-items{margin-left:-45px;width:102%}.order-detail-button a{color:#83d01b}.order-detail-container{min-height:70vh;padding-top:40px;margin-bottom:30px}.order-detail-container .table tbody tr:first-child td{border-top:none}.order-detail-container .table tr{border-bottom:none}.order-detail-section{margin-top:50px}.order-detail-container .table{margin-left:-7px}.order-section-total{margin-bottom:5px;margin-left:20px;text-align:left}.fr{float:right!important}.down-arrow{background-image:url('../images/arrow-down.png');height:7px;width:10px;display:inline-block;margin-left:20px}.logout-icon{background-image:url('../images/logout.PNG');display:inline-block;height:19px;width:19px;margin-left:15px}.myorders-icon{background-image:url('../images/my_orders.PNG');display:inline-block;height:20px;width:20px;margin-left:15px}.login-user{position:absolute!important;top:30px;right:65px;cursor:pointer}.login-user-dropdown{position:relative;display:inline-block}.login-user-dropdown-content{display:none;position:absolute;background-color:#fff;min-width:160px;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);left:100px}.login-user-dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block;text-align:right;text-transform:uppercase}.login-user:hover .login-user-dropdown-content{display:block}.login-user-dropdown-content a:hover{color:#83d01b}.es-header{min-height:80px!important}.es-pager-bottom{margin-top:40px}.es-pager-top{margin-bottom:20px;margin-top:20px}.es-pager-top ul{list-style:none}.es-pager-bottom ul{list-style:none}.page-item{cursor:pointer}.next{position:absolute;right:0;top:0}.previous{position:absolute;left:0;top:0}.is-disabled{cursor:not-allowed;opacity:.5;pointer-events:none}.table tr{border-bottom:1px solid #ddd}.table th{text-transform:uppercase}@media screen and (max-width:767px){.carousel-caption{display:none}footer .text{text-align:left;margin-top:-15px}}@media screen and (max-width:415px){.btn-brand-small-filter{width:65px;padding:10px 10px 10px 10px;font-size:10px}} \ No newline at end of file +@font-face{font-family:Montserrat;font-weight:400;src:url("/fonts/Montserrat-Regular.eot?") format("eot"),url("/fonts/Montserrat-Regular.woff") format("woff"),url("/fonts/Montserrat-Regular.ttf") format("truetype"),url("/fonts/Montserrat-Regular.svg#Montserrat") format("svg")}@font-face{font-family:Montserrat;font-weight:700;src:url("/fonts/Montserrat-Bold.eot?") format("eot"),url("/fonts/Montserrat-Bold.woff") format("woff"),url("/fonts/Montserrat-Bold.ttf") format("truetype"),url("/fonts/Montserrat-Bold.svg#Montserrat") format("svg")}body{padding-top:80px;font-family:Montserrat,sans-serif}.mt-15{margin-top:15px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.select-filter{background-color:transparent;padding:10px;margin:10px;margin-right:20px;color:#fff;padding-top:20px;padding-bottom:3px;min-width:140px;border-color:#37c7ca;max-height:43px;-webkit-appearance:none}.select-filter option{background-color:#00a69c}select::-ms-expand{display:none}.select-filter-wrapper{z-index:0;display:inline-block;margin-left:-10px}.select-filter-wrapper::before{content:attr(data-name);opacity:.5;z-index:1;text-transform:uppercase;position:absolute;font-size:10px;margin-top:15px;margin-left:21px;color:#fff}.select-filter-arrow{position:absolute;margin-left:130px;margin-top:40px}.btn-brand-small-filter{margin-top:10px;position:absolute;margin-left:15px}.carousel-caption p{font-size:20px;line-height:1.4}.layout-cart-image{height:36px;margin-top:5px}.layout-cart-badge{position:absolute;margin-top:2px;margin-left:14px;background-color:#83d01b;padding:1px;color:#fff;border-radius:50%;width:18px;height:18px;font-size:12px;cursor:pointer}.btn-bracketed:hover:before{display:inline-block;content:"[";padding-right:.5em;color:#7fff00}.btn-bracketed:hover:after{display:inline-block;content:"]";padding-left:.5em;color:#7fff00}.btn-brand{background-color:#83d01b;color:#fff;padding:10px 20px 10px 20px;border-radius:0;border:none;width:255px;display:inline-block;text-align:center;text-transform:uppercase;height:45px;font-size:16px;font-weight:normal}.btn-brand::before{content:'['}.btn-brand::after{content:']'}.btn-brand:hover:before{padding-right:5px}.btn-brand:hover:after{padding-left:5px}.btn-brand-big{width:360px;margin-top:20px}.btn-brand-small{width:120px;font-size:14px}.btn-brand-small::before{content:''}.btn-brand-small::after{content:''}.btn-brand-small:hover:before{content:'';padding:0}.btn-brand-small:hover:after{content:'';padding:0}.btn-brand-dark{background-color:#00a69c}.btn-brand:hover{color:#fff;background-color:#83d01b;text-decoration:none}.btn-brand-dark:hover{background-color:#00a69c}.btn-cart{float:right;margin-top:40px;margin-bottom:40px}.btn-catalog-apply{padding-left:10px;padding-top:13px}.form-label{text-transform:uppercase;font-weight:normal!important;text-align:left;margin-bottom:10px !important;color:#404040}.form-input{border-radius:0;padding:10px;height:45px;width:360px;max-width:360px}.form-input-small{max-width:100px}.form-select{border-radius:0;padding:10px;height:45px;width:150px}.carousel-inner .item img[src$=".svg"]{width:100%}.navbar-inverse{background-color:#fff;border-color:#fff}.navbar-inverse li{margin-top:10px}.btn-login{border:1px solid #00a69c;height:36px!important;margin-right:10px;margin-top:10px;background-color:#fff;color:#00a69c;text-transform:uppercase;max-width:140px;width:140px;padding-top:8px!important}.btn-login{font-weight:normal!important}.btn-login::before{content:'['}.btn-login::after{content:']'}.btn-login:hover:before{content:'[ '}.btn-login:hover:after{content:' ]'}.navbar-inverse li a{height:30px;padding:5px 20px;color:#00a69c !important}.navbar-brand{margin-top:20px;background-image:url(../images/brand.PNG);width:201px;height:44px;margin-left:0 !important}.nav>li>a{color:#fff}.nav>li>a:hover,.nav>li>a:focus{background-color:#00a69c;font-weight:bolder}.container-fluid{padding-left:0;padding-right:0}.home-banner{width:100%;margin-right:0;margin-left:0;background-image:url(../images/main_banner.png);background-size:cover;height:258px;background-position:center}.home-banner-text{margin-top:70px}.home-catalog-container{min-height:400px;margin-bottom:20px}.home-catalog-filter-container{background-color:#00a69c;height:63px}.home-catalog-filter-container li a{padding-top:5px !important}.home-catalog-filter-brands::before{content:'BRAND';color:#fff;font-size:x-small;opacity:.5;margin:10px 0 0 15px}.home-catalog-filter-types::before{content:'TYPES';color:#fff;font-size:x-small;opacity:.5;margin:10px 0 0 15px}.home-catalog-item{margin-top:10px;margin-bottom:10px}.home-catalog-item-image{width:100%;object-fit:cover;text-align:center}.home-catalog-item-image-addCart{background-color:#83d01b;color:#fff;display:inline-block;height:43px;padding:10px 20px 10px 20px;font-weight:bold;text-align:center;margin-top:10px;margin-left:60px;margin-right:60px;font-size:16px;font-weight:normal}.home-catalog-item-image-addCart:hover{color:#fff;text-decoration:none}.home-catalog-item-image:hover:after{cursor:pointer}.home-catalog-item-title{text-align:center;text-transform:uppercase;font-weight:300;font-size:16px;margin-top:20px}.home-catalog-item-price{text-align:center;font-weight:900;font-size:28px}.home-catalog-item-price::before{content:'$'}.home-catalog-noResults{text-align:center;margin-top:100px}.container .nav .navbar-nav .col-sm-6 ::before{content:'BRAND'}.validation-summary-errors li{list-style:none}footer{background-color:#000;height:150px;vertical-align:middle}footer .brand{margin-top:25px;background-image:url(../images/brand_dark.PNG);max-width:231px;height:52px;margin-left:0 !important}footer .text{text-align:right;width:100%;height:100%;color:#83d01b;margin-top:10px}.text{color:#83d01b}.text:hover{color:#83d01b}form .col-md-4{text-align:right}.brand-header-block{background-color:#00a69c;height:63px}.brand-header-block li{list-style:none;display:inline;opacity:.5;margin-top:25px;margin-left:10px;float:right;cursor:pointer;color:#fff}.brand-header-block li a{color:#fff}.brand-header-block li a:hover{text-decoration:none}.brand-header-block .active{opacity:1}.brand-header-block .active::before{content:'[ ';color:#adff2f}.brand-header-block .active::after{content:' ]';color:#adff2f}.brand-header-back{float:left!important;margin-top:20px!important;text-transform:uppercase}.account-login-container{min-height:70vh;text-align:center}.account-register-container{min-height:70vh;text-align:center !important;align-content:center}.cart-index-container{min-height:70vh;padding-top:40px;margin-bottom:30px}.order-create-container{min-height:70vh;padding-top:40px;margin-bottom:30px;padding-left:30px}.cart-product-column{max-width:120px;text-transform:uppercase;vertical-align:middle!important}.cart-subtotal-label{font-size:12px;color:#404040;margin-top:10px}.cart-subtotal-value{font-size:20px;color:#00a69c}.cart-total-label{font-size:14px;color:#404040;margin-top:10px}.cart-total-value{font-size:28px;color:#00a69c;text-align:left}.cart-product-image{max-width:210px}.cart-section-total{margin-bottom:5px;margin-left:175px;text-align:left}.cart-product-column input{width:70px;text-align:center}.cart-refresh-button{margin-top:0;background-image:url('../images/refresh.svg');color:#fff;font-size:8px;width:40px;margin-top:10px;height:40px;background-color:transparent;border:none}.cart-refresh-button:hover{background-color:transparent}.input-validation-error{border:1px solid #fb0d0d}.text-danger{color:#fb0d0d;font-size:12px}.cart{border:none !important}.form-horizontal h4{margin-top:30px}.form-control:focus{border-color:#83d01b}.form-input-center{margin:auto}.order-index-container{min-height:70vh;padding-top:40px;margin-bottom:30px}.order-index-container .table tbody tr{border-bottom:none}.order-index-container .table tbody tr td{border-top:none;padding-top:10px;padding-bottom:10px}.order-index-container .table tbody tr:nth-child(even){background-color:#f5f5f5}.order-create-section-title{margin-left:-15px;text-transform:uppercase}.order-create-section-items{margin-left:-45px;width:102%}.order-detail-button a{color:#83d01b}.order-detail-container{min-height:70vh;padding-top:40px;margin-bottom:30px}.order-detail-container .table tbody tr:first-child td{border-top:none}.order-detail-container .table tr{border-bottom:none}.order-detail-section{margin-top:50px}.order-detail-container .table{margin-left:-7px}.order-section-total{margin-bottom:5px;margin-left:40px;text-align:left}.fr{float:right!important}.down-arrow{background-image:url('../images/arrow-down.png');height:7px;width:10px;display:inline-block;margin-left:20px}.logout-icon{background-image:url('../images/logout.PNG');display:inline-block;height:19px;width:19px;margin-left:15px}.myorders-icon{background-image:url('../images/my_orders.PNG');display:inline-block;height:20px;width:20px;margin-left:15px}.login-user{position:absolute!important;top:30px;right:65px;cursor:pointer}.login-user-dropdown{position:relative;display:inline-block}.login-user-dropdown-content{display:none;position:absolute;background-color:#fff;min-width:160px;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);left:100px}.login-user-dropdown-content a{color:#000;padding:12px 16px;text-decoration:none;display:block;text-align:right;text-transform:uppercase}.login-user:hover .login-user-dropdown-content{display:block}.login-user-dropdown-content a:hover{color:#83d01b}.es-header{min-height:80px!important}.es-pager-bottom{margin-top:40px}.es-pager-top{margin-bottom:20px;margin-top:20px}.es-pager-top ul{list-style:none}.es-pager-bottom ul{list-style:none}.page-item{cursor:pointer}.next{position:absolute;right:0;top:0}.previous{position:absolute;left:0;top:0}.is-disabled{cursor:not-allowed;opacity:.5;pointer-events:none}.table tr{border-bottom:1px solid #ddd}.table th{text-transform:uppercase}@media screen and (max-width:767px){.carousel-caption{display:none}footer .text{text-align:left;margin-top:-15px}}@media screen and (max-width:415px){.btn-brand-small-filter{width:40px;padding:10px 10px 10px 10px;font-size:10px}.btn-brand-small-filter::before{content:'->';color:#fff}} \ No newline at end of file