Skip to content

Instantly share code, notes, and snippets.

@tbjgolden

tbjgolden/1_benchmarks.md

Last active Apr 26, 2021
Embed
What would you like to do?
Benchmarks for CSS minifiers 2021 edition

Article: https://tom.bio/blog/don-t-use-css-minifiers-with-sass

Key benchmarks:

name uncompressed gzip brotli duration (speed)
preprocessors - - - -
sass -27.8% -88.8% -91.2% 491ms (1629kB/s)
less -28.1% -88.8% -91.2% 1009ms (790kB/s)
minifiers - - - -
csso -30.1% -88.8% -91.2% 1939ms (393kB/s)
yui -28.2% -88.8% -91.2% 3141ms (229kB/s)
cssnano -29.5% -88.9% -91.3% 3905ms (204kB/s)
lean minifiers - - - -
csso* -28.5% -88.8% -91.2% 322ms (2741kB/s)
cssnano# -27.3% -88.7% -91.1% 327ms (2584kB/s)

%: percentage reduction from original uncompressed size
*: with restructure: false
#: with cssnano-preset-lite

Test device: AMD Ryzen 7 4700U, Debian (via WSL)


Test files:

  • Bootstrap latest (compiled from less)
  • Foundation latest (compiled from sass)
  • Tachyons v1 (compiled via postcss)
  • a random CSS file from Github (plain handwritten CSS)
  • a random CSS file from a real website based on a WordPress theme (note: it has to be run through Prettier for less to parse it)
Source files
const fs = require('fs');
const path = require('path');
const { gzipSync, brotliCompressSync } = require('zlib');
const csso = require('csso');
const yui = require('yuicompressor');
const sass = require('node-sass');
const less = require('less');
async function test(css, compressFn) {
const arr = []
const len = css.byteLength
arr.push(len);
const start = Date.now();
const minified = await compressFn(css);
const duration = Date.now() + 1 - start;
arr.push(Buffer.from(minified).byteLength);
arr.push(gzipSync(minified).byteLength);
arr.push(brotliCompressSync(minified).byteLength);
arr.push(brotliCompressSync(css).byteLength);
arr.push(Math.round(len * 1000 / (duration * 1e3))) // kB/s
arr.push(duration) // ms
return arr;
}
const total = (arr, n) => arr.reduce((sum, x) => sum + x[n], 0)
async function testAll(name = '(name)', compressFn, detailed = false) {
const arr = []
const cssFiles = fs.readdirSync(
path.join(__dirname, `input`), {
withFileTypes: true
}
).filter((o) => o.name.endsWith(".css") && o.isFile()).map(({ name }) => name)
for (const cssFile of cssFiles) {
const css = fs.readFileSync(path.join(__dirname, `input`, cssFile))
arr.push([cssFile.slice(0, -4), ...(await test(css, compressFn))]);
}
if (detailed) {
return arr;
}
const raw = total(arr, 1)
const rawMin = total(arr, 2)
const gzMin = total(arr, 3)
const brMin = total(arr, 4)
const br = total(arr, 5)
const speed = Math.round(total(arr, 6) / cssFiles.length)
const duration = total(arr, 7)
const mean = [
name,
raw,
rawMin,
(Math.round((rawMin - raw) * 1000 / raw) / 10).toFixed(1) + "%",
gzMin,
(Math.round((gzMin - raw) * 1000 / raw) / 10).toFixed(1) + "%",
brMin,
(Math.round((brMin - raw) * 1000 / raw) / 10).toFixed(1) + "%",
br,
(Math.round((br - raw) * 1000 / raw) / 10).toFixed(1) + "%",
speed,
duration
]
return mean;
}
const cssocompress = css => {
return csso.minify(css.toString()).css;
}
const yuicompress = async (css) => {
return new Promise((resolve, reject) => {
yui.compress(css.toString(), {
charset: 'utf8',
type: 'css',
}, (err, data, extra) => {
if (err) {
return reject(err)
} else {
return resolve(data)
}
});
});
}
const sasscompress = async (css) => {
return new Promise((resolve, reject) => {
sass.render({
data: css.toString(),
outputStyle: 'compressed'
}, (err, result) => {
if (err) {
return reject(err)
} else {
return resolve(result.css.toString())
}
});
});
}
const lesscompress = async (css) => {
const { css: output } = await less.render(css.toString(), { compress: true })
return output
}
const cssobasiccompress = css => {
return csso.minify(css.toString(), { restructure: false }).css;
}
//
const formatRow = ([
name,
raw,
rawMin,
rawMinDiff,
gzMin,
gzMinDiff,
brMin,
brMinDiff,
br,
brDiff,
speed,
duration
]) => {
return `| ${name.padEnd(5, ' ')} | ${rawMinDiff.padStart(12, ' ')} | ${gzMinDiff.padStart(6, ' ')} | ${brMinDiff.padStart(6, ' ')} | ${`${duration}ms`.padStart(6, ' ')} ${`(${speed}kB/s)`.padStart(10, ' ')} |`
}
;(async () => {
console.log(`.-------.--------------.--------.--------.-------------------.`)
console.log(`| name | uncompressed | gzip | brotli | duration (speed) |`)
console.log(`|-------|--------------|--------|--------|-------------------|`)
console.log(
formatRow(
await testAll('csso', cssocompress)
)
)
console.log(
formatRow(
await testAll('yui', yuicompress)
)
)
console.log(
formatRow(
await testAll('sass', sasscompress)
)
)
console.log(
formatRow(
await testAll('less', lesscompress)
)
)
console.log(
formatRow(
await testAll('csso*', cssobasiccompress)
)
)
console.log(`'-------'--------------'--------'--------'-------------------'`)
})();
{
"name": "compress-benchmarks",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"cssnano": "^5.0.1",
"cssnano-preset-lite": "^2.0.0",
"csso": "^4.2.0",
"less": "^4.1.1",
"node-sass": "^5.0.0",
"postcss": "^8.2.13",
"yuicompressor": "^2.4.8"
},
"devDependencies": {
"prettier": "^2.2.1"
}
}
/*-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------*/
/* ----------------------------------------------------------------
- Basic
- Typography
- Basic Layout Styles
- Helper Classes
- Sections
- Columns & Grids
- Flex Slider
- Swiper Slider
- Top Bar
- Header
- Logo
- Primary Menu
- Mega Menu
- Top Search
- Top Cart
- Sticky Header
- Page Menu
- Side Header
- Side Panel
- Slider
- Page Title
- Content
- Portfolio
- Blog
- Shop
- Events
- Shortcodes
- Countdown
- Buttons
- Promo Boxes
- Featured Boxes
- Process Steps
- Styled Icons
- Toggles
- Accordions
- Tabs
- Side Navigation
- FAQ List
- Clients
- Testimonials
- Team
- Pricing Boxes
- Counter
- Animated Rounded Skills
- Skills Bar
- Dropcaps & Highlights
- Quotes & Blockquotes
- Text Rotater
- Owl Carousel
- Overlays
- Forms
- Google Maps
- Heading Styles
- Divider
- Magazine Specific Classes
- Go To Top
- Error 404
- Landing Pages
- Preloaders
- Toastr Notifications
- Footer
- Widgets
- Tag Cloud
- Links
- Testimonial & Twitter
- Quick Contact Form
- Newsletter
- Twitter Feed
- Navigation Tree
- Wedding
- Bootstrap Specific
- Cookie Notification
- Stretched Layout
- Page Transitions
- Youtube Video Backgrounds
---------------------------------------------------------------- */
/* ----------------------------------------------------------------
Bootstrap Adjustments
-----------------------------------------------------------------*/
@media (min-width: 576px) {
.container { max-width: 540px; }
}
@media (min-width: 768px) {
.container { max-width: 750px; }
}
@media (min-width: 992px) {
.container { max-width: 970px; }
}
@media (min-width: 1200px) {
.container { max-width: 1170px; }
}
body,
.dropdown-menu { font-size: 0.875rem; }
/* ----------------------------------------------------------------
Basic
-----------------------------------------------------------------*/
dl, dt, dd, ol, ul, li {
margin: 0;
padding: 0;
}
.clear {
clear: both;
display: block;
font-size: 0px;
height: 0px;
line-height: 0;
width: 100%;
overflow:hidden;
}
::selection {
background: Highlight;
color: HighlightText;
}
::-moz-selection {
background: Highlight;
color: HighlightText;
}
::-webkit-selection {
background: Highlight;
color: HighlightText;
}
:active,
:focus { outline: none !important; }
/* ----------------------------------------------------------------
Typography
-----------------------------------------------------------------*/
body {
line-height: 1.5;
color: #555;
font-family: 'Lato', sans-serif;
}
a {
text-decoration: none !important;
color: #b71918;
}
a:hover { color: #222; }
a img { border: none; }
img { max-width: 100%; }
iframe { border: none !important; }
/* ----------------------------------------------------------------
Basic Layout Styles
-----------------------------------------------------------------*/
h1,
h2,
h3,
h4,
h5,
h6 {
color: #444;
font-weight: 600;
line-height: 1.5 !important;;
margin: 0 0 20px 0;
}
h5,
h6 { margin-bottom: 20px; }
h1 { font-size: 36px; }
h2 { font-size: 60px; }
h3 { font-size: 24px; }
h4 { font-size: 35px; }
h5 { font-size: 14px; }
h6 { font-size: 12px; }
h4 { font-weight: 600; }
h5,
h6 { font-weight: bold; }
h1 > span:not(.nocolor):not(.badge),
h2 > span:not(.nocolor):not(.badge),
h3 > span:not(.nocolor):not(.badge),
h4 > span:not(.nocolor):not(.badge),
h5 > span:not(.nocolor):not(.badge),
h6 > span:not(.nocolor):not(.badge) { color: #b71918; }
p,
pre,
ul,
ol,
dl,
dd,
blockquote,
address,
table,
fieldset,
form { margin-bottom: 30px; }
small { font-family: 'Lato', sans-serif; }
/* ----------------------------------------------------------------
Helper Classes
-----------------------------------------------------------------*/
.uppercase { text-transform: uppercase !important; }
.lowercase { text-transform: lowercase !important; }
.capitalize { text-transform: capitalize !important; }
.nott { text-transform: none !important; }
.tright { text-align: right !important; }
.tleft { text-align: left !important; }
.fright { float: right !important; }
.fleft { float: left !important; }
.fnone { float: none !important; }
.ohidden {
position: relative;
overflow: hidden !important;
}
#wrapper {
position: relative;
float: none;
width: 1220px;
margin: 0 auto;
background-color: #FFF;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
-moz-box-shadow: 0 0 10px rgba(0,0,0,0.1);
-webkit-box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
.line,
.double-line {
clear: both;
position: relative;
width: 100%;
margin: 60px 0;
border-top: 1px solid #EEE;
}
.line.line-sm { margin: 30px 0; }
span.middot {
display: inline-block;
margin: 0 5px;
}
.double-line { border-top: 3px double #E5E5E5; }
.emptydiv {
display: block !important;
position: relative !important;
}
.allmargin { margin: 50px !important; }
.leftmargin { margin-left: 50px !important; }
.rightmargin { margin-right: 50px !important; }
.topmargin { margin-top: 50px !important; }
.bottommargin { margin-bottom: 50px !important; }
.clear-bottommargin { margin-bottom: -50px !important; }
.allmargin-sm { margin: 30px !important; }
.leftmargin-sm { margin-left: 30px !important; }
.rightmargin-sm { margin-right: 30px !important; }
.topmargin-sm { margin-top: 30px !important; }
.bottommargin-sm { margin-bottom: 30px !important; }
.clear-bottommargin-sm { margin-bottom: -30px !important; }
.allmargin-lg { margin: 80px !important; }
.leftmargin-lg { margin-left: 80px !important; }
.rightmargin-lg { margin-right: 80px !important; }
.topmargin-lg { margin-top: 80px !important; }
.bottommargin-lg { margin-bottom: 80px !important; }
.clear-bottommargin-lg { margin-bottom: -80px !important; }
.nomargin {margin: 0 !important; }
.noleftmargin { margin-left: 0 !important; }
.norightmargin { margin-right: 0 !important; }
.notopmargin { margin-top: 0 !important; }
.nobottommargin { margin-bottom: 0 !important; }
.header-stick { margin-top: -50px !important; }
.content-wrap .header-stick { margin-top: -80px !important; }
.footer-stick { margin-bottom: -50px !important; }
.content-wrap .footer-stick { margin-bottom: -80px !important; }
.noborder { border: none !important; }
.noleftborder { border-left: none !important; }
.norightborder { border-right: none !important; }
.notopborder { border-top: none !important; }
.nobottomborder { border-bottom: none !important; }
.noradius { -webkit-border-radius: 0 !important; -moz-border-radius: 0 !important; -ms-border-radius: 0 !important; -o-border-radius: 0 !important; border-radius: 0 !important; }
.col-padding { padding: 60px; }
.nopadding { padding: 0 !important; }
.noleftpadding { padding-left: 0 !important; }
.norightpadding { padding-right: 0 !important; }
.notoppadding { padding-top: 0 !important; }
.nobottompadding { padding-bottom: 0 !important; }
.noabsolute { position: relative !important; }
.noshadow { box-shadow: none !important; }
.notextshadow { text-shadow: none !important; }
.hidden { display: none !important; }
.nothidden { display: block !important; }
.inline-block {
float: none !important;
display: inline-block !important;
}
.center { text-align: center !important; }
.divcenter {
position: relative !important;
float: none !important;
margin-left: auto !important;
margin-right: auto !important;
}
.bgcolor,
.bgcolor #header-wrap { background-color: #b71918 !important; }
.color { color: #b71918 !important; }
.border-color { border-color: #b71918 !important; }
.nobg { background: none !important; }
.nobgcolor { background-color: transparent !important; }
.t300 { font-weight: 300 !important; }
.t400 { font-weight: 400 !important; }
.t500 { font-weight: 500 !important; }
.t600 { font-weight: 600 !important; }
.t700 { font-weight: 700 !important; }
.ls0 { letter-spacing: 0px !important; }
.ls1 { letter-spacing: 1px !important; }
.ls2 { letter-spacing: 2px !important; }
.ls3 { letter-spacing: 3px !important; }
.ls4 { letter-spacing: 4px !important; }
.ls5 { letter-spacing: 5px !important; }
.noheight { height: 0 !important; }
.nolineheight { line-height: 0 !important; }
.font-body { font-family: 'Lato', sans-serif; }
.font-primary { font-family: 'Raleway', sans-serif; }
.font-secondary { font-family: 'Crete Round', serif; }
.bgicon {
display: block;
position: absolute;
bottom: -60px;
right: -50px;
font-size: 210px;
color: rgba(0,0,0,0.1);
}
.imagescale,
.imagescalein {
display: block;
overflow: hidden;
}
.imagescale img,
.imagescalein img {
-webkit-transform: scale(1.1);
transform: scale(1.1);
-webkit-transition: all 1s ease;
transition: all 1s ease;
}
.imagescale:hover img {
-webkit-transform: scale(1);
transform: scale(1);
}
.imagescalein img {
-webkit-transform: scale(1);
transform: scale(1);
}
.imagescalein:hover img {
-webkit-transform: scale(1.1);
transform: scale(1.1);
}
.grayscale {
filter: brightness(80%) grayscale(1) contrast(90%);
-webkit-filter: brightness(80%) grayscale(1) contrast(90%);
-moz-filter: brightness(80%) grayscale(1) contrast(90%);
-o-filter: brightness(80%) grayscale(1) contrast(90%);
-ms-filter: brightness(80%) grayscale(1) contrast(90%);
transition: 1s filter ease;
-webkit-transition: 1s -webkit-filter ease;
-moz-transition: 1s -moz-filter ease;
-ms-transition: 1s -ms-filter ease;
-o-transition: 1s -o-filter ease;
}
.grayscale:hover {
filter: brightness(100%) grayscale(0);
-webkit-filter: brightness(100%) grayscale(0);
-moz-filter: brightness(100%) grayscale(0);
-o-filter: brightness(100%) grayscale(0);
-ms-filter: brightness(100%) grayscale(0);
}
/* MOVING BG - TESTIMONIALS */
.bganimate {
-webkit-animation:BgAnimated 30s infinite linear;
-moz-animation:BgAnimated 30s infinite linear;
-ms-animation:BgAnimated 30s infinite linear;
-o-animation:BgAnimated 30s infinite linear;
animation:BgAnimated 30s infinite linear;
}
@-webkit-keyframes BgAnimated {
from {background-position:0 0;}
to {background-position:0 400px;}
}
@-moz-keyframes BgAnimated {
from {background-position:0 0;}
to {background-position:0 400px;}
}
@-ms-keyframes BgAnimated {
from {background-position:0 0;}
to {background-position:0 400px;}
}
@-o-keyframes BgAnimated {
from {background-position:0 0;}
to {background-position:0 400px;}
}
@keyframes BgAnimated {
from {background-position:0 0;}
to {background-position:0 400px;}
}
.input-block-level {
display: block;
width: 100% !important;
min-height: 30px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.vertical-middle {
height: auto !important;
left: 0;
max-width: none !important;
z-index: 2;
}
.vertical-middle + .video-wrap { z-index: 1 !important; }
.magnific-max-width .mfp-content { max-width: 800px; }
/* ----------------------------------------------------------------
Sections
-----------------------------------------------------------------*/
.section {
position: relative;
margin: 60px 0;
padding: 60px 0;
background-color: #F9F9F9;
overflow: hidden;
}
.parallax {
background-color: transparent;
background-attachment: fixed;
background-position: 50% 0;
background-repeat: no-repeat;
overflow: hidden;
will-change: transform;
}
.mobile-parallax,
.video-placeholder {
background-size: cover !important;
background-attachment: scroll !important;
background-position: center center !important;
}
.section .container { z-index: 2; }
.section .container + .video-wrap { z-index: 1; }
.revealer-image {
position: relative;
bottom: -100px;
transition: bottom .3s ease-in-out;
-webkit-transition: bottom .3s ease-in-out;
-o-transition: bottom .3s ease-in-out;
}
.section:hover .revealer-image { bottom: -50px; }
/* ----------------------------------------------------------------
Columns & Grids
-----------------------------------------------------------------*/
.col_full { width: 100%; }
.col_half,
.postcontent.bothsidebar { width: 48%; }
.col_one_third { width: 30.63%; }
.col_two_third { width: 65.33%; }
.col_one_fourth,
.sidebar { width: 22%; }
.col_three_fourth,
.postcontent { width: 74%; }
.col_one_fifth { width: 16.8%; }
.col_two_fifth { width: 37.6%; }
.col_three_fifth { width: 58.4%; }
.col_four_fifth { width: 79.2%; }
.col_one_sixth { width: 13.33%; }
.col_five_sixth { width: 82.67%; }
body.stretched .container-fullwidth {
position: relative;
padding: 0 60px;
width: 100%;
}
.postcontent,
.sidebar,
.col_full,
.col_half,
.col_one_third,
.col_two_third,
.col_three_fourth,
.col_one_fourth,
.col_one_fifth,
.col_two_fifth,
.col_three_fifth,
.col_four_fifth,
.col_one_sixth,
.col_five_sixth {
display: block;
position: relative;
margin-right: 4%;
margin-bottom: 50px;
float: left;
}
.col_full {
clear: both;
float: none;
margin-right: 0;
}
.col_last {
margin-right: 0 !important;
float: right;
clear: right;
}
/* ----------------------------------------------------------------
Flex Slider
-----------------------------------------------------------------*/
.fslider,
.fslider .flexslider,
.fslider .slider-wrap,
.fslider .slide,
.fslider .slide > a,
.fslider .slide > img,
.fslider .slide > a > img {
position: relative;
display: block;
width: 100%;
height: auto;
overflow: hidden;
-webkit-backface-visibility: hidden;
}
.fslider { min-height: 32px; }
.flex-container a:active,
.flexslider a:active,
.flex-container a:focus,
.flexslider a:focus { outline: none; border: none; }
.slider-wrap,
.flex-control-nav,
.flex-direction-nav {margin: 0; padding: 0; list-style: none; border: none;}
.flexslider {position: relative;margin: 0; padding: 0;}
.flexslider .slider-wrap > .slide {display: none; -webkit-backface-visibility: hidden;}
.flexslider .slider-wrap img {width: 100%; display: block;}
.flex-pauseplay span {text-transform: capitalize;}
.slider-wrap:after {content: "\0020"; display: block; clear: both; visibility: hidden; line-height: 0; height: 0;}
html[xmlns] .slider-wrap {display: block;}
* html .slider-wrap {height: 1%;}
.no-js .slider-wrap > .slide:first-child {display: block;}
.flex-viewport {
max-height: 2000px;
-webkit-transition: all 1s ease;
-o-transition: all 1s ease;
transition: all 1s ease;
}
.flex-control-nav {
position: absolute;
z-index: 10;
text-align: center;
top: 14px;
right: 10px;
margin: 0;
}
.flex-control-nav li {
float: left;
display: block;
margin: 0 3px;
width: 10px;
height: 10px;
}
.flex-control-nav li a {
display: block;
cursor: pointer;
text-indent: -9999px;
width: 10px !important;
height: 10px !important;
border: 1px solid #FFF;
border-radius: 50%;
transition: all .3s ease-in-out;
-webkit-transition: all .3s ease-in-out;
-o-transition: all .3s ease-in-out;
}
.flex-control-nav li:hover a,
.flex-control-nav li a.flex-active { background-color: #FFF; }
/* ----------------------------------------------------------------
Top Bar
-----------------------------------------------------------------*/
#top-bar {
position: relative;
border-bottom: 1px solid #EEE;
height: 45px;
line-height: 44px;
font-size: 13px;
}
#top-bar .col_half { width: auto; }
/* Top Links
---------------------------------*/
.top-links {
position: relative;
float: left;
}
.top-links ul {
margin: 0;
list-style: none;
}
.top-links ul li {
float: left;
position: relative;
height: 44px;
border-left: 1px solid #EEE;
}
.top-links ul li:first-child,
.top-links ul ul li { border-left: 0 !important; }
.top-links li > a {
display: block;
padding: 0 12px;
font-size: 12px;
font-weight: 700;
text-transform: uppercase;
height: 44px;
color: #666;
}
.top-links li i { vertical-align: top; }
.top-links li i.icon-angle-down { margin: 0 0 0 5px !important; }
.top-links li i:first-child { margin-right: 3px; }
.top-links li.full-icon i {
top: 2px;
font-size: 14px;
margin: 0;
}
.top-links li:hover { background-color: #EEE; }
.top-links ul ul,
.top-links ul div.top-link-section {
display: none;
pointer-events: none;
position: absolute;
z-index: 210;
line-height: 1.5;
background: #FFF;
border: 0;
top: 44px;
left: 0;
width: 140px;
margin: 0;
border-top: 1px solid #b71918;
border-bottom: 1px solid #EEE;
box-shadow: 0 0 5px -1px rgba(0,0,0,0.2);
-moz-box-shadow: 0 0 5px -1px rgba(0,0,0,0.2);
-webkit-box-shadow: 0 0 5px -1px rgba(0,0,0,0.2);
}
.top-links li:hover ul,
.top-links li:hover div.top-link-section { pointer-events: auto; }
.top-links ul ul li {
float: none;
height: 36px;
border-top: 1px solid #F5F5F5;
border-left: 1px solid #EEE;
}
.top-links ul ul li:hover { background-color: #F9F9F9; }
.top-links ul ul li:first-child {
border-top: none !important;
border-left: 1px solid #EEE;
}
.top-links ul ul a {
height: 36px;
line-height: 36px;
font-size: 12px;
}
.top-links ul ul img {
display: inline-block;
position: relative;
top: -1px;
width: 16px;
height: 16px;
margin-right: 4px;
}
.top-links ul ul.top-demo-lang img {
top: 4px;
width: 16px;
height: 16px;
}
.top-links ul div.top-link-section {
padding: 25px;
left: 0;
width: 280px;
}
.fright .top-links ul div.top-link-section,
.top-links.fright ul div.top-link-section {
left: auto;
right: 0;
}
/* Top Social
-----------------------------------------------------------------*/
#top-social,
#top-social ul { margin: 0; }
#top-social li,
#top-social li a,
#top-social li .ts-icon,
#top-social li .ts-text {
display: block;
position: relative;
float: left;
width: auto;
overflow: hidden;
height: 44px;
line-height: 44px;
}
#top-social li { border-left: 1px solid #EEE; }
#top-social li:first-child { border-left: 0 !important; }
#top-social li a {
float: none;
width: 40px;
font-weight: bold;
color: #666;
-webkit-transition: color .3s ease-in-out, background-color .3s ease-in-out, width .3s ease-in-out;
-o-transition: color .3s ease-in-out, background-color .3s ease-in-out, width .3s ease-in-out;
transition: color .3s ease-in-out, background-color .3s ease-in-out, width .3s ease-in-out;
}
#top-social li a:hover {
color: #FFF !important;
text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
}
#top-social li .ts-icon {
width: 40px;
text-align: center;
font-size: 14px;
}
/* Top Login
-----------------------------------------------------------------*/
#top-login { margin-bottom: 0; }
#top-login .checkbox { margin-bottom: 10px; }
#top-login .form-control { position: relative; }
#top-login .form-control:focus { border-color: #CCC; }
#top-login .input-group#top-login-username { margin-bottom: -1px; }
#top-login #top-login-username input,
#top-login #top-login-username .input-group-addon {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
#top-login .input-group#top-login-password { margin-bottom: 10px; }
#top-login #top-login-password input,
#top-login #top-login-password .input-group-addon {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
/* ----------------------------------------------------------------
Header
-----------------------------------------------------------------*/
#header {
position: relative;
background-color: #FFF;
border-bottom: 1px solid #F5F5F5;
}
#header .container { position: relative; }
#header.transparent-header {
background: transparent;
border-bottom: none;
z-index: 199;
}
#header.semi-transparent { background-color: rgba(255,255,255,0.8); }
#header.transparent-header.floating-header { margin-top: 60px; }
#header.transparent-header.floating-header .container {
width: 1190px;
max-width: 1190px;
background-color: #FFF;
padding: 0 40px;
border-radius: 2px;
}
#header.transparent-header.floating-header.sticky-header .container {
width: 1140px;
max-width: 1140px;
padding: 0 15px;
}
#header.transparent-header + #slider,
#header.transparent-header + #page-title.page-title-parallax,
#header.transparent-header + #google-map,
#slider + #header.transparent-header {
top: -100px;
margin-bottom: -100px;
}
#header.transparent-header.floating-header + #slider,
#header.transparent-header.floating-header + #google-map {
top: -160px;
margin-bottom: -160px;
}
#header.transparent-header + #page-title.page-title-parallax .container {
z-index: 5;
padding-top: 100px;
}
#header.full-header { border-bottom-color: #EEE; }
body.stretched #header.full-header .container {
width: 100%;
max-width: none;
padding: 0 30px;
}
#header.transparent-header.full-header #header-wrap { border-bottom: 1px solid rgba(0,0,0,0.1); }
#slider + #header.transparent-header.full-header #header-wrap {
border-top: 1px solid rgba(0,0,0,0.1);
border-bottom: none;
}
/* ----------------------------------------------------------------
Logo
-----------------------------------------------------------------*/
#logo {
position: relative;
float: left;
font-family: 'Raleway', sans-serif;
font-size: 36px;
line-height: 100%;
margin-right: 40px;
}
#header.full-header #logo {
padding-right: 30px;
margin-right: 30px;
border-right: 1px solid #EEE;
}
#header.transparent-header.full-header #logo { border-right-color: rgba(0,0,0,0.1); }
#logo a {
display: block;
color: #000;
}
#logo img {
display: block;
max-width: 100%;
}
#logo a.standard-logo { display: block; }
#logo a.retina-logo { display: none; }
/* ----------------------------------------------------------------
Header Right Area
-----------------------------------------------------------------*/
.header-extras {
float: right;
margin: 30px 0 0;
}
.header-extras li {
float: left;
margin-left: 20px;
height: 40px;
overflow: hidden;
list-style: none;
}
.header-extras li i { margin-top: 3px !important; }
.header-extras li:first-child { margin-left: 0; }
.header-extras li .he-text {
float: left;
padding-left: 10px;
font-weight: bold;
font-size: 14px;
line-height: 1.43;
}
.header-extras li .he-text span {
display: block;
font-weight: 400;
color: #b71918;
}
/* ----------------------------------------------------------------
Primary Menu
-----------------------------------------------------------------*/
#primary-menu { float: right; }
#primary-menu ul.mobile-primary-menu { display: none; }
#header.full-header #primary-menu > ul {
float: left;
padding-right: 15px;
margin-right: 15px;
border-right: 1px solid #EEE;
}
#header.transparent-header.full-header #primary-menu > ul { border-right-color: rgba(0,0,0,0.1); }
#primary-menu-trigger,
#page-submenu-trigger {
opacity: 0;
pointer-events: none;
cursor: pointer;
font-size: 14px;
position: absolute;
top: 50%;
margin-top: -25px;
width: 50px;
height: 50px;
line-height: 50px;
text-align: center;
-webkit-transition: opacity .3s ease;
-o-transition: opacity .3s ease;
transition: opacity .3s ease;
}
#primary-menu ul {
list-style: none;
margin: 0;
}
#primary-menu > ul { float: left; }
#primary-menu ul li { position: relative; }
#primary-menu ul li.mega-menu { position: inherit; }
#primary-menu ul > li {
float: left;
margin-left: 2px;
}
#primary-menu > ul > li:first-child { margin-left: 0; }
#primary-menu ul li > a {
display: block;
line-height: 22px;
padding: 39px 15px;
color: #444;
font-weight: bold;
font-size: 13px;
letter-spacing: 1px;
text-transform: uppercase;
font-family: 'Raleway', sans-serif;
-webkit-transition: margin .4s ease, padding .4s ease;
-o-transition: margin .4s ease, padding .4s ease;
transition: margin .4s ease, padding .4s ease;
}
#primary-menu ul li > a span { display: none; }
#primary-menu ul li > a i {
position: relative;
top: -1px;
font-size: 14px;
width: 16px;
text-align: center;
margin-right: 6px;
vertical-align: top;
}
#primary-menu ul li > a i.icon-angle-down:last-child {
font-size: 12px;
margin: 0 0 0 5px;
}
#primary-menu ul li:hover > a,
#primary-menu ul li.current > a { color: #b71918; }
#primary-menu > ul > li.sub-menu > a > div { }
body.no-superfish #primary-menu li:hover > ul:not(.mega-menu-column),
body.no-superfish #primary-menu li:hover > .mega-menu-content { display: block; }
#primary-menu ul ul:not(.mega-menu-column),
#primary-menu ul li .mega-menu-content {
display: none;
position: absolute;
width: 220px;
background-color: #FFF;
box-shadow: 0px 13px 42px 11px rgba(0, 0, 0, 0.05);
border: 1px solid #EEE;
border-top: 2px solid #b71918;
height: auto;
z-index: 199;
top: 100%;
left: 0;
margin: 0;
}
#primary-menu ul li .mega-menu-content {
display: -ms-flex;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-ms-flex-align: stretch;
align-items: stretch;
}
#primary-menu.on-click ul li .mega-menu-content { display: none; }
#primary-menu.on-click ul li .mega-menu-content.d-block {
display: -ms-flex !important;
display: flex !important;
}
#primary-menu ul ul:not(.mega-menu-column) ul {
top: -2px !important;
left: 218px;
}
#primary-menu ul ul.menu-pos-invert:not(.mega-menu-column),
#primary-menu ul li .mega-menu-content.menu-pos-invert {
left: auto;
right: 0;
}
#primary-menu ul ul:not(.mega-menu-column) ul.menu-pos-invert { right: 218px; }
#primary-menu ul ul li {
float: none;
margin: 0;
}
#primary-menu ul ul li:first-child { border-top: 0; }
#primary-menu ul ul li > a {
font-size: 12px;
font-weight: 700;
color: #666;
padding-top: 10px;
padding-bottom: 10px;
border: 0;
letter-spacing: 0;
font-family: 'Lato', sans-serif;
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
#primary-menu ul ul li > a i { vertical-align: middle; }
#primary-menu ul ul li:hover > a {
background-color: #F9F9F9;
padding-left: 18px;
color: #b71918;
}
#primary-menu ul ul > li.sub-menu > a,
#primary-menu ul ul > li.sub-menu:hover > a {
background-image: url("images/icons/submenu.png");
background-position: right center;
background-repeat: no-repeat;
}
/* ----------------------------------------------------------------
Mega Menu
-----------------------------------------------------------------*/
#primary-menu ul li .mega-menu-content,
#primary-menu ul li.mega-menu-small .mega-menu-content {
width: 720px;
max-width: 400px;
}
#primary-menu ul li.mega-menu .mega-menu-content,
.floating-header.sticky-header #primary-menu ul li.mega-menu .mega-menu-content {
margin: 0 15px;
width: 1140px;
max-width: none;
}
.floating-header #primary-menu ul li.mega-menu .mega-menu-content {
margin: 0;
width: 1190px;
}
body.stretched .container-fullwidth #primary-menu ul li.mega-menu .mega-menu-content { margin: 0 60px; }
body.stretched #header.full-header #primary-menu ul li.mega-menu .mega-menu-content { margin: 0 30px; }
#primary-menu ul li.mega-menu .mega-menu-content.style-2 { padding: 0 10px; }
#primary-menu ul li .mega-menu-content ul {
display: block;
position: relative;
top: 0;
min-width: inherit;
border: 0;
box-shadow: none;
background-color: transparent;
}
#primary-menu ul li .mega-menu-content ul:not(.megamenu-dropdown) {
display: block !important;
opacity: 1 !important;
top: 0;
left: 0;
}
#primary-menu ul li .mega-menu-content ul.mega-menu-column {
float: left;
margin: 0;
padding-left: 0;
padding-right: 0;
}
#primary-menu ul li .mega-menu-content ul.mega-menu-column.col-5 {
width: 20%;
-ms-flex: 0 0 20%;
flex: 0 0 20%;
max-width: 20%;
}
#primary-menu ul li .mega-menu-content ul:not(.mega-menu-column) { width: 100%; }
#primary-menu ul li .mega-menu-content ul.mega-menu-column:not(:first-child) { border-left: 1px solid #F2F2F2; }
#primary-menu ul li .mega-menu-content.style-2 ul.mega-menu-column { padding: 30px 20px; }
#primary-menu ul li .mega-menu-content.style-2 ul.mega-menu-column > li.mega-menu-title { margin-top: 20px; }
#primary-menu ul li .mega-menu-content.style-2 ul.mega-menu-column > li.mega-menu-title:first-child { margin-top: 0; }
#primary-menu ul li .mega-menu-content.style-2 ul.mega-menu-column > li.mega-menu-title > a {
font-size: 13px;
font-weight: bold;
font-family: 'Raleway', sans-serif;
letter-spacing: 1px;
text-transform: uppercase !important;
margin-bottom: 15px;
color: #444;
padding: 0 !important;
line-height: 1.3 !important;
}
#primary-menu ul li .mega-menu-content.style-2 ul.mega-menu-column > li.mega-menu-title:hover > a { background-color: transparent; }
#primary-menu ul li .mega-menu-content.style-2 ul.mega-menu-column > li.mega-menu-title > a:hover { color: #b71918; }
#primary-menu ul li .mega-menu-content.style-2 ul.mega-menu-column > li.mega-menu-title.sub-menu > a,
#primary-menu ul li .mega-menu-content.style-2 ul.mega-menu-column > li.mega-menu-title.sub-menu:hover > a { background: none; }
#primary-menu ul li .mega-menu-content.style-2 li { border: 0; }
#primary-menu ul li .mega-menu-content.style-2 ul li > a {
padding-left: 5px;
padding-top: 7px;
padding-bottom: 7px;
}
#primary-menu ul li .mega-menu-content.style-2 ul li > a:hover { padding-left: 12px; }
.mega-menu-column .entry-meta {
margin: 8px -10px 0 0 !important;
border: none !important;
padding: 0 !important;
}
.mega-menu-column .entry-meta li {
float: left !important;
border: none !important;
margin: 0 10px 0 0 !important;
}
/* Primary Menu - Style 2
-----------------------------------------------------------------*/
#primary-menu.style-2 {
float: none;
max-width: none;
border-top: 1px solid #F5F5F5;
}
#primary-menu.style-2 > div > ul { float: left; }
#primary-menu.style-2 > div > ul > li > a {
padding-top: 19px;
padding-bottom: 19px;
}
#logo + #primary-menu.style-2 { border-top: 0; }
#primary-menu.style-2 > div #top-search,
#primary-menu.style-2 > div #top-cart,
#primary-menu.style-2 > div #side-panel-trigger {
margin-top: 20px;
margin-bottom: 20px;
}
body:not(.device-md):not(.device-sm):not(.device-xs) #primary-menu.style-2.center > ul,
body:not(.device-md):not(.device-sm):not(.device-xs) #primary-menu.style-2.center > div {
float: none;
display: inline-block !important;
width: auto;
text-align: left;
}
/* Primary Menu - Style 3
-----------------------------------------------------------------*/
#primary-menu.style-3 > ul > li > a {
margin: 28px 0;
padding-top: 11px;
padding-bottom: 11px;
border-radius: 2px;
}
#primary-menu.style-3 > ul > li:hover > a {
color: #444;
background-color: #F5F5F5;
}
#primary-menu.style-3 > ul > li.current > a {
color: #FFF;
text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
background-color: #b71918;
}
/* Primary Menu - Style 4
-----------------------------------------------------------------*/
#primary-menu.style-4 > ul > li > a {
margin: 28px 0;
padding-top: 10px;
padding-bottom: 10px;
border-radius: 2px;
border: 1px solid transparent;
}
#primary-menu.style-4 > ul > li:hover > a,
#primary-menu.style-4 > ul > li.current > a { border-color: #b71918; }
/* Primary Menu - Style 5
-----------------------------------------------------------------*/
#primary-menu.style-5 > ul {
padding-right: 10px;
margin-right: 5px;
border-right: 1px solid #EEE;
}
#primary-menu.style-5 > ul > li:not(:first-child) { margin-left: 15px; }
#primary-menu.style-5 > ul > li > a {
padding-top: 25px;
padding-bottom: 25px;
line-height: 14px;
}
#primary-menu.style-5 > ul > li > a i {
display: block;
width: auto;
margin: 0 0 8px;
font-size: 28px;
line-height: 1;
}
/* Primary Menu - Style 6
-----------------------------------------------------------------*/
#primary-menu.style-6 ul > li > a { position: relative; }
#primary-menu.style-6 > ul > li > a:after,
#primary-menu.style-6 > ul > li.current > a:after,
#primary-menu.style-6 > div > ul > li > a:after,
#primary-menu.style-6 > div > ul > li.current > a:after {
content: '';
position: absolute;
top: 0;
left: 0;
height: 2px;
width: 0;
border-top: 2px solid #b71918;
-webkit-transition: width .3s ease;
-o-transition: width .3s ease;
transition: width .3s ease;
}
#primary-menu.style-6 > ul > li.current > a:after,
#primary-menu.style-6 > ul > li:hover > a:after,
#primary-menu.style-6 > div > ul > li.current > a:after,
#primary-menu.style-6 > div > ul > li:hover > a:after { width: 100%; }
/* Primary Menu - Sub Title
-----------------------------------------------------------------*/
#primary-menu.sub-title > ul > li,
#primary-menu.sub-title.style-2 > div > ul > li {
background: url("images/icons/menu-divider.png") no-repeat right center;
margin-left: 1px;
}
#primary-menu.sub-title ul li:first-child {
padding-left: 0;
margin-left: 0;
}
#primary-menu.sub-title > ul > li > a,
#primary-menu.sub-title > div > ul > li > a {
line-height: 14px;
padding: 27px 20px 32px;
text-transform: uppercase;
border-top: 5px solid transparent;
}
#primary-menu.sub-title > ul > li > a span,
#primary-menu.sub-title > div > ul > li > a span {
display: block;
margin-top: 10px;
line-height: 12px;
font-size: 11px;
font-weight: 400;
color: #888;
text-transform: capitalize;
}
#primary-menu.sub-title > ul > li:hover > a,
#primary-menu.sub-title > ul > li.current > a,
#primary-menu.sub-title > div > ul > li:hover > a,
#primary-menu.sub-title > div > ul > li.current > a {
background-color: #b71918;
color: #FFF;
text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
border-top-color: rgba(0,0,0,0.1);
}
#primary-menu.sub-title > ul > li:hover > a span,
#primary-menu.sub-title > ul > li.current > a span,
#primary-menu.sub-title.style-2 > div > ul > li:hover > a span,
#primary-menu.sub-title.style-2 > div > ul > li.current > a span { color: #EEE; }
#primary-menu.sub-title.style-2 ul ul span { display: none; }
/* Primary Menu - Style 2 with Sub Title
-----------------------------------------------------------------*/
#primary-menu.sub-title.style-2 > div > ul > li { background-position: left center; }
#primary-menu.sub-title.style-2 > div #top-search,
#primary-menu.sub-title.style-2 > div #top-cart,
#primary-menu.sub-title.style-2 > div #side-panel-trigger {
float: right;
margin-top: 30px;
margin-bottom: 30px;
}
#primary-menu.sub-title.style-2 div ul li:first-child,
#primary-menu.sub-title.style-2 > div > ul > li:hover + li,
#primary-menu.sub-title.style-2 > div > ul > li.current + li { background-image: none; }
#primary-menu.sub-title.style-2 > div > ul > li > a {
padding-top: 17px;
padding-bottom: 22px;
}
/* Primary Menu - Split Menu
-----------------------------------------------------------------*/
@media (min-width: 992px) {
#header.split-menu #logo {
position: absolute;
width: 100%;
text-align: center;
margin: 0;
float: none;
height: 100px;
}
#header.split-menu #logo a.standard-logo { display: inline-block; }
}
#header.split-menu #primary-menu {
float: none;
margin: 0;
}
#header.split-menu #primary-menu > ul { z-index: 199; }
#header.split-menu #primary-menu > ul:nth-child(1) { float: left; }
#header.split-menu #primary-menu > ul:nth-child(2) { float: right; }
/* Primary Menu - Overlay Menu
-----------------------------------------------------------------*/
@media (min-width: 992px) {
.overlay-menu:not(.top-search-open) #primary-menu-trigger {
opacity: 1;
pointer-events: auto;
left: auto;
right: 75px;
width: 20px;
height: 20px;
line-height: 20px;
margin-top: -10px;
}
.overlay-menu:not(.top-search-open) .full-header #primary-menu-trigger { right: 90px; }
.overlay-menu #primary-menu > #overlay-menu-close {
opacity: 0;
pointer-events: none;
position: fixed;
top: 25px;
left: auto;
right: 25px;
width: 48px;
height: 48px;
line-height: 48px;
font-size: 24px;
text-align: center;
color: #444;
z-index: 300;
-webkit-transform: translateY(-80px);
-ms-transform: translateY(-80px);
-o-transform: translateY(-80px);
transform: translateY(-80px);
-webkit-transition: opacity .4s ease, transform .45s .15s ease;
-o-transition: opacity .4s ease, transform .45s .15s ease;
transition: opacity .4s ease, transform .45s .15s ease;
}
.overlay-menu #primary-menu > ul {
opacity: 0 !important;
pointer-events: none;
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100% !important;
z-index: 299;
background: rgba(255,255,255,0.95);
-webkit-transition: opacity .7s ease;
-o-transition: opacity .7s ease;
transition: opacity .7s ease;
}
.overlay-menu #primary-menu > ul.d-block {
opacity: 1 !important;
display: inherit !important;
pointer-events: auto;
}
.overlay-menu #primary-menu > ul.d-block ~ #overlay-menu-close {
opacity: 1;
-webkit-transition: opacity .7s .4s ease, transform .45s .15s ease;
-o-transition: opacity .7s .4s ease, transform .45s .15s ease;
transition: opacity .7s .4s ease, transform .45s .15s ease;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0);
pointer-events: auto;
}
.overlay-menu #primary-menu > ul > li {
float: none;
text-align: center;
max-width: 400px;
margin: 0 auto;
}
.overlay-menu #primary-menu > ul > li > a {
font-size: 24px;
padding-top: 19px;
padding-bottom: 19px;
letter-spacing: 2px;
text-transform: none;
opacity: 0;
-webkit-transform: translateY(-80px);
-ms-transform: translateY(-80px);
-o-transform: translateY(-80px);
transform: translateY(-80px);
-webkit-transition: opacity .7s .15s ease, transform .45s .15s ease, color .2s linear;
-o-transition: opacity .7s .15s ease, transform .45s .15s ease, color .2s linear;
transition: opacity .7s .15s ease, transform .45s .15s ease, color .2s linear;
}
.overlay-menu #primary-menu > ul.d-block > li > a {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0);
}
}
/* ----------------------------------------------------------------
Top Search
-----------------------------------------------------------------*/
#top-search,
#top-cart,
#side-panel-trigger,
#top-account {
float: right;
margin: 40px 0 40px 15px;
}
#top-cart { position: relative; }
#top-search a,
#top-cart > a,
#side-panel-trigger a {
display: block;
position: relative;
width: 14px;
height: 14px;
font-size: 14px;
line-height: 20px;
text-align: center;
color: #333;
-webkit-transition: color .3s ease-in-out;
-o-transition: color .3s ease-in-out;
transition: color .3s ease-in-out;
}
#top-search a { z-index: 11; }
#top-search a i {
position: absolute;
top: 0;
left: 0;
-webkit-transition: opacity .3s ease;
-o-transition: opacity .3s ease;
transition: opacity .3s ease;
}
body.top-search-open #top-search a i.icon-search3,
#top-search a i.icon-line-cross { opacity: 0; }
body.top-search-open #top-search a i.icon-line-cross {
opacity: 1;
z-index: 11;
font-size: 16px;
}
#top-cart > a:hover { color: #b71918; }
#top-search form {
opacity: 0;
z-index: -2;
position: absolute;
width: 100% !important;
height: 100% !important;
padding: 0 15px;
margin: 0;
top: 0;
left: 0;
-webkit-transition: opacity .3s ease-in-out;
-o-transition: opacity .3s ease-in-out;
transition: opacity .3s ease-in-out;
}
body.top-search-open #top-search form {
opacity: 1;
z-index: 10;
}
#top-search form input {
box-shadow: none !important;
pointer-events: none;
border-radius: 0;
border: 0;
outline: 0 !important;
font-size: 32px;
padding: 10px 80px 10px 0;
height: 100%;
background-color: transparent;
color: #333;
font-weight: 700;
margin-top: 0 !important;
font-family: 'Raleway', sans-serif;
letter-spacing: 2px;
}
body:not(.device-md):not(.device-sm):not(.device-xs) #header.full-header #top-search form input { padding-left: 40px; }
body:not(.device-md):not(.device-sm):not(.device-xs) .container-fullwidth #top-search form input { padding-left: 60px; }
body.top-search-open #top-search form input { pointer-events: auto; }
body:not(.device-md):not(.device-sm):not(.device-xs) #header.transparent-header:not(.sticky-header):not(.full-header):not(.floating-header) #top-search form input { border-bottom: 2px solid rgba(0,0,0,0.1); }
#top-search form input::-moz-placeholder {
color: #555;
opacity: 1;
text-transform: uppercase;
}
#top-search form input:-ms-input-placeholder {
color: #555;
text-transform: uppercase;
}
#top-search form input::-webkit-input-placeholder {
color: #555;
text-transform: uppercase;
}
#primary-menu .container #top-search form input,
.sticky-header #top-search form input { border: none !important; }
/* ----------------------------------------------------------------
Top Cart
-----------------------------------------------------------------*/
#top-cart { margin-right: 0; }
#top-cart > a > span {
display: block;
position: absolute;
top: -7px;
left: auto;
right: -14px;
font-size: 10px;
color: #FFF;
text-shadow: 1px 1px 1px rgba(0,0,0,0.2);
width: 16px;
height: 16px;
line-height: 16px;
text-align: center;
background-color: #b71918;
border-radius: 50%;
}
#top-cart .top-cart-content {
opacity: 0;
z-index: -2;
position: absolute;
width: 280px;
background-color: #FFF;
box-shadow: 0px 20px 50px 10px rgba(0, 0, 0, 0.05);
border: 1px solid #EEE;
border-top: 2px solid #b71918;
top: 60px;
right: -15px;
left: auto;
margin: -10000px 0 0;
-webkit-transition: opacity .5s ease, top .4s ease;
-o-transition: opacity .5s ease, top .4s ease;
transition: opacity .5s ease, top .4s ease;
}
.style-2 .container #top-cart .top-cart-content { top: 40px; }
.style-2.sub-title .container #top-cart .top-cart-content { top: 50px; }
#top-cart.top-cart-open .top-cart-content {
opacity: 1;
z-index: 11;
margin-top: 0;
}
.top-cart-title {
padding: 12px 15px;
border-bottom: 1px solid #EEE;
}
.top-cart-title h4 {
margin-bottom: 0;
font-size: 15px;
font-weight: bold;
text-transform: uppercase;
letter-spacing: 1px;
}
.top-cart-items { padding: 15px; }
.top-cart-item {
padding-top: 15px;
margin-top: 15px;
border-top: 1px solid #F5F5F5;
}
.top-cart-item:first-child {
padding-top: 0;
margin-top: 0;
border-top: 0;
}
.top-cart-item-image {
float: left;
margin-right: 15px;
width: 48px !important;
height: 48px !important;
border: 2px solid #EEE;
-webkit-transition: border-color .2s linear;
-o-transition: border-color .2s linear;
transition: border-color .2s linear;
}
.top-cart-item-image a,
.top-cart-item-image img {
display: block;
width: 44px !important;
height: 44px !important;
}
.top-cart-item-image:hover { border-color: #b71918; }
.top-cart-item-desc {
position: relative;
overflow: hidden;
}
.top-cart-item-desc a {
max-width: 85%;
display: block;
text-align: left !important;
font-size: 13px !important;
width: auto !important;
height: auto !important;
color: #333;
font-weight: 700;
}
.top-cart-item-desc a:hover { color: #b71918 !important; }
.top-cart-item-desc span.top-cart-item-price {
display: block;
line-height: 20px;
font-size: 12px !important;
color: #999;
}
.top-cart-item-desc span.top-cart-item-quantity {
display: block;
position: absolute;
font-size: 12px !important;
right: 0;
top: 2px;
color: #444;
}
.top-cart-action {
padding: 15px;
border-top: 1px solid #EEE;
}
.top-cart-action span.top-checkout-price {
font-size: 20px;
color: #b71918;
}
/* ----------------------------------------------------------------
Top Account
-----------------------------------------------------------------*/
#top-account { margin: 35px 0 34px 20px; }
#top-account a {
-webkit-transition: color .3s ease-in-out;
-o-transition: color .3s ease-in-out;
transition: color .3s ease-in-out;
}
#top-account a span {
margin-left: 5px;
font-weight: 700;
}
#top-account a i.icon-angle-down {
margin-left: 5px;
font-size: 12px;
}
#top-account .dropdown-menu { padding: 10px 0; }
#top-account .dropdown-menu li a {
font-family: 'Lato', sans-serif;
font-weight: 400;
text-align: left;
line-height: 22px;
}
#top-account .dropdown-menu li a .badge {
display: block;
float: right;
margin: 2px 0 0 0;
}
#top-account .dropdown-menu li a i:last-child {
position: relative;
top: 1px;
margin-left: 5px;
}
/* ----------------------------------------------------------------
Sticky Header
-----------------------------------------------------------------*/
#header,
#header-wrap,
#logo img {
-webkit-transition: height .4s ease, opacity .3s ease;
-o-transition: height .4s ease, opacity .3s ease;
transition: height .4s ease, opacity .3s ease;
}
#header.sticky-style-2 { height: 161px; }
#header.sticky-style-3 { height: 181px; }
#header.sticky-style-2 #header-wrap { height: 100px; }
#header.sticky-style-3 #header-wrap { height: 80px; }
#primary-menu > ul > li > ul,
#primary-menu > ul > li > .mega-menu-content,
#primary-menu > ul > li.mega-menu > .mega-menu-content {
-webkit-transition: top .4s ease;
-o-transition: top .4s ease;
transition: top .4s ease;
}
#top-search,
#top-cart {
-webkit-transition: margin .4s ease, opacity .3s ease;
-o-transition: margin .4s ease, opacity .3s ease;
transition: margin .4s ease, opacity .3s ease;
}
body:not(.top-search-open) #header-wrap #logo,
body:not(.top-search-open) #primary-menu > ul,
body:not(.top-search-open) #primary-menu > .container > ul,
body:not(.top-search-open) #top-cart,
body:not(.top-search-open) #side-panel-trigger,
body:not(.top-search-open) #top-account {
opacity: 1;
-webkit-transition: height .4s ease, margin .4s ease, opacity .2s .2s ease;
-o-transition: height .4s ease, margin .4s ease, opacity .2s .2s ease;
transition: height .4s ease, margin .4s ease, opacity .2s .2s ease;
}
body.top-search-open #header-wrap #logo,
body.top-search-open #primary-menu > ul,
body.top-search-open #primary-menu > .container > ul,
body.top-search-open #top-cart,
body.top-search-open #side-panel-trigger,
body.top-search-open #top-account { opacity: 0; }
#header.sticky-header.semi-transparent { background-color: transparent; }
#header-wrap {
position: relative;
z-index: 199;
-webkit-backface-visibility: hidden;
}
#header.sticky-header #header-wrap {
position: fixed;
top: 0;
left: 0;
width: 100%;
background-color: #333333;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
#header.semi-transparent.sticky-header #header-wrap { background-color: rgba(255,255,255,0.8) }
#header.sticky-header:not(.static-sticky),
#header.sticky-header:not(.static-sticky) #header-wrap,
#header.sticky-header:not(.static-sticky):not(.sticky-style-2):not(.sticky-style-3) #logo img { height: 100px; }
#header.sticky-header:not(.static-sticky) #primary-menu > ul > li > a {
padding-top: 19px;
padding-bottom: 19px;
}
#header.sticky-header:not(.static-sticky).sticky-style-2,
#header.sticky-header:not(.static-sticky).sticky-style-3 { height: 161px; }
#header.sticky-header:not(.static-sticky).sticky-style-2 #primary-menu,
#header.sticky-header:not(.static-sticky).sticky-style-3 #primary-menu { border-top: 0; }
#header.sticky-header:not(.static-sticky) #top-search,
#header.sticky-header:not(.static-sticky) #top-cart,
#header.sticky-header:not(.static-sticky) #side-panel-trigger {
margin-top: 20px !important;
margin-bottom: 20px !important;
}
#header.sticky-header:not(.static-sticky) #top-account {
margin-top: 15px !important;
margin-bottom: 14px !important;
}
#header.sticky-header:not(.static-sticky) #top-cart .top-cart-content { top: 40px; }
#header.sticky-header.sticky-style-2 #primary-menu { border-top: 0; }
/* Primary Menu - Style 3
-----------------------------------------------------------------*/
#header.sticky-header:not(.static-sticky) #primary-menu.style-3 > ul > li > a {
margin: 0;
border-radius: 0;
}
/* Primary Menu - Style 4
-----------------------------------------------------------------*/
#header.sticky-header:not(.static-sticky) #primary-menu.style-4 > ul > li > a {
padding-top: 8px;
padding-bottom: 8px;
margin: 10px 0;
}
/* Primary Menu - Style 5
-----------------------------------------------------------------*/
#header.sticky-header:not(.static-sticky) #primary-menu.style-5 > ul > li { margin-left: 2px; }
#header.sticky-header:not(.static-sticky) #primary-menu.style-5 > ul > li:first-child { margin-left: 0; }
#header.sticky-header:not(.static-sticky) #primary-menu.style-5 > ul > li > a {
line-height: 22px;
padding-top: 19px;
padding-bottom: 19px;
}
#header.sticky-header:not(.static-sticky) #primary-menu.style-5 > ul > li > a > div { padding: 0; }
#header.sticky-header:not(.static-sticky) #primary-menu.style-5 > ul > li > a i {
display: inline-block;
width: 16px;
top: -1px;
margin: 0 6px 0 0;
font-size: 14px;
line-height: 22px;
}
/* Primary Menu - Sub Title
-----------------------------------------------------------------*/
#header.sticky-header:not(.static-sticky) #primary-menu.sub-title > ul > li,
#header.sticky-header:not(.static-sticky) #primary-menu.sub-title.style-2 > div > ul > li {
background: none !important;
margin-left: 2px;
}
#header.sticky-header:not(.static-sticky) #primary-menu.sub-title > ul > li:first-child,
#header.sticky-header:not(.static-sticky) #primary-menu.sub-title.style-2 > div > ul > li:first-child { margin-left: 0; }
#header.sticky-header:not(.static-sticky) #primary-menu.sub-title > ul > li > a,
#header.sticky-header:not(.static-sticky) #primary-menu.sub-title > div > ul > li > a {
line-height: 22px;
padding: 19px 15px;
text-transform: none;
font-size: 14px;
border-top: 0;
}
#header.sticky-header:not(.static-sticky) #primary-menu.sub-title ul li span { display: none; }
/* ----------------------------------------------------------------
Page Menu
-----------------------------------------------------------------*/
#page-menu,
#page-menu-wrap {
position: relative;
height: 44px;
line-height: 44px;
text-shadow: 1px 1px 1px rgba(0,0,0,0.1);
}
#page-menu-wrap {
color: black;
z-index: 99;
background-color: #f8f4eb;
-webkit-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
-webkit-backface-visibility: hidden; }
#page-menu.sticky-page-menu #page-menu-wrap {
position: fixed;
z-index: 99;
left: 0;
width: 100%;
box-shadow: 0 0 15px rgba(0,0,0,0.3);
}
#header.static-sticky ~ #page-menu.sticky-page-menu #page-menu-wrap,
#header.static-sticky ~ #content #page-menu.sticky-page-menu #page-menu-wrap { top: 100px; }
#header ~ #page-menu.sticky-page-menu #page-menu-wrap,
#header.no-sticky ~ #page-menu.sticky-page-menu #page-menu-wrap,
#header ~ #content #page-menu.sticky-page-menu #page-menu-wrap,
#header.no-sticky ~ #content #page-menu.sticky-page-menu #page-menu-wrap { top: 0; }
#header.sticky-header ~ #page-menu.sticky-page-menu #page-menu-wrap,
#header.sticky-header ~ #content #page-menu.sticky-page-menu #page-menu-wrap { top: 100px; }
#page-submenu-trigger {
top: 0;
margin-top: 0;
left: auto;
right: 15px;
width: 40px;
height: 44px;
line-height: 44px;
}
#page-menu .menu-title {
float: left;
color: #222;
font-weight: 300;
text-transform:uppercase;
}
#page-menu .menu-title span { font-weight: 700; }
#page-menu nav {
position: relative;
float: right;
}
#page-menu nav ul {
margin-bottom: 0;
height: 44px;
}
#page-menu nav li {
position: relative;
float: left;
list-style: none;
}
#page-menu nav li a {
display: block;
height: 28px;
line-height: 28px;
margin: 8px 4px;
padding: 0 14px;
color: #FFF;
font-size: 14px;
border-radius: 14px;
}
#page-menu nav li a .icon-angle-down { margin-left: 5px; }
body:not(.device-touch) #page-menu nav li a {
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
#page-menu nav li:hover a,
#page-menu nav li.current a { background-color: rgba(0,0,0,0.15); }
#page-menu li:hover ul { display: block; }
#page-menu ul ul {
display: none;
position: absolute;
width: 150px;
top: 44px;
left: 0;
z-index: 149;
height: auto;
background-color: #b71918;
}
#page-menu ul ul ul { display: none !important; } /* Disable Multi-Level Links */
#page-menu ul ul li { float: none; }
#page-menu ul ul a {
height: auto;
line-height: 22px;
margin: 0;
padding: 8px 14px;
border-radius: 0;
background-color: rgba(0,0,0,0.15);
}
#page-menu ul ul li:hover a,
#page-menu ul ul li.current a { background-color: rgba(0,0,0,0.3); }
/* Page Menu - Dots Style
-----------------------------------------------------------------*/
@media (min-width: 992px) {
#page-menu.dots-menu,
#page-menu.dots-menu #page-menu-wrap {
position: fixed;
z-index: 99;
top: 50%;
left: auto;
right: 20px;
width: 24px;
height: auto;
line-height: 1.5;
background-color: transparent;
text-shadow: none;
}
#page-menu.dots-menu #page-menu-wrap {
position: relative;
box-shadow: none;
}
#page-menu.dots-menu .menu-title { display: none; }
#page-menu.dots-menu nav {
float: none;
width: 24px;
}
#page-menu.dots-menu nav ul { height: auto; }
#page-menu.dots-menu nav ul li {
float: none;
width: 14px;
height: 14px;
margin: 10px 6px;
}
#page-menu.dots-menu nav li a {
position: relative;
width: 10px;
height: 10px;
line-height: 1.5;
padding: 0;
margin: 0 2px;
background-color: rgba(0,0,0,0.4);
border-radius: 50%;
color: #777;
}
#page-menu.dots-menu nav li a:hover { background-color: rgba(0,0,0,0.7) }
#page-menu.dots-menu nav li.current a { background-color: #b71918; }
#page-menu.dots-menu nav li div {
position: absolute;
width: auto;
top: -11px;
right: 25px;
background-color: #b71918;
color: #FFF;
padding: 5px 14px;
white-space: nowrap;
pointer-events: none;
text-shadow: 1px 1px 1px rgba(0,0,0,0.15);
border-radius: 2px;
opacity: 0;
}
body:not(.device-touch) #page-menu.dots-menu nav li div {
-webkit-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
#page-menu.dots-menu nav li div:after {
position: absolute;
content: '';
top: 50%;
margin-top: -6px;
left: auto;
right: -5px;
width: 0;
height: 0;
border-top: 7px solid transparent;
border-bottom: 7px solid transparent;
border-left: 6px solid #b71918;
}
#page-menu.dots-menu nav li a:hover div {
opacity: 1;
right: 30px;
}
}
/* ----------------------------------------------------------------
One Page
-----------------------------------------------------------------*/
.one-page-arrow {
position: absolute;
z-index: 3;
bottom: 20px;
left: 50%;
margin-left: -16px;
width: 32px;
height: 32px;
font-size: 32px;
text-align: center;
color: #222;
}
/* ----------------------------------------------------------------
Side Header
-----------------------------------------------------------------*/
@media (min-width: 992px) {
.side-header #header {
position: fixed;
top: 0;
left: 0;
z-index: 10;
width: 260px;
height: 100%;
height: calc(100vh);
background-color: #FFF;
border: none;
border-right: 1px solid #EEE;
overflow: hidden;
box-shadow: 0 0 15px rgba(0, 0, 0, 0.065);
}
.side-header #header-wrap {
width: 300px;
height: 100%;
overflow: auto;
padding-right: 40px;
}
.side-header #header .container {
width: 260px !important;
padding: 0 30px !important;
margin: 0 !important;
}
.side-header #logo {
float: none;
margin: 60px 0 40px;
}
.side-header #logo img { height: auto !important; }
.side-header #logo:not(.nobottomborder):after,
.side-header #primary-menu:not(.nobottomborder):after {
display: block;
content: '';
width: 20%;
border-bottom: 1px solid #E5E5E5;
}
.side-header .center #logo:after { margin: 0 auto; }
.side-header #primary-menu { margin-bottom: 30px; }
.side-header #primary-menu:not(.nobottomborder):after { margin-top: 40px; }
.side-header #primary-menu,
.side-header #primary-menu ul {
float: none;
height: auto;
}
.side-header #primary-menu ul li {
float: none;
margin: 15px 0 0;
}
.side-header #primary-menu ul li:first-child { margin-top: 0; }
.side-header #primary-menu ul li a {
height: 25px;
line-height: 25px;
padding: 0;
text-transform: uppercase;
}
.side-header #primary-menu ul li i { line-height: 24px; }
.side-header #primary-menu ul ul {
position: relative;
width: 100%;
background-color: transparent;
box-shadow: none;
border: none;
height: auto;
z-index: 1;
top: 0;
left: 0;
margin: 5px 0;
padding-left: 12px;
}
.side-header #primary-menu ul ul ul {
top: 0 !important;
left: 0;
}
.side-header #primary-menu ul ul.menu-pos-invert {
left: 0;
right: auto;
}
.side-header #primary-menu ul ul ul.menu-pos-invert { right: auto; }
.side-header #primary-menu ul ul li {
margin: 0;
border: 0;
}
.side-header #primary-menu ul ul li:first-child { border-top: 0; }
.side-header #primary-menu ul ul a {
font-size: 12px;
height: auto !important;
line-height: 24px !important;
padding: 2px 0 !important;
}
.side-header #primary-menu ul ul li:hover > a {
background-color: transparent !important;
color: #444 !important;
}
.side-header #primary-menu ul > li.sub-menu > a,
.side-header #primary-menu ul > li.sub-menu:hover > a { background-image: none !important; }
.side-header #primary-menu ul > li.sub-menu > a:after {
position: absolute;
content: '\e7a5';
top: 1px;
right: 0;
-webkit-transition: transform .2s linear;
-o-transition: transform .2s linear;
transition: transform .2s linear;
}
.side-header #primary-menu ul > li.sub-menu:hover > a:after {
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
.side-header:not(.open-header) #wrapper {
margin: 0 0 0 260px !important;
width: auto !important;
}
.side-header:not(.open-header) #wrapper .container {
width: auto;
max-width: none;
margin: 0 40px;
}
/* Side Header - Push Header
-----------------------------------------------------------------*/
.side-header.open-header.push-wrapper { overflow-x: hidden; }
.side-header.open-header #header { left: -260px; }
.side-header.open-header.side-header-open #header { left: 0; }
.side-header.open-header #wrapper { left: 0; }
.side-header.open-header.push-wrapper.side-header-open #wrapper { left: 260px; }
#header-trigger { display: none; }
.side-header.open-header #header-trigger {
display: block;
position: fixed;
cursor: pointer;
top: 20px;
left: 20px;
z-index: 11;
font-size: 16px;
width: 32px;
height: 32px;
line-height: 32px;
background-color: #FFF;
text-align: center;
border-radius: 2px;
}
.side-header.open-header.side-header-open #header-trigger { left: 280px; }
.side-header.open-header #header-trigger i:nth-child(1),
.side-header.open-header.side-header-open #header-trigger i:nth-child(2) { display: block; }
.side-header.open-header.side-header-open #header-trigger i:nth-child(1),
.side-header.open-header #header-trigger i:nth-child(2) { display: none; }
.side-header.open-header #header,
.side-header.open-header #header-trigger,
.side-header.open-header.push-wrapper #wrapper {
-webkit-transition: left .4s ease;
-o-transition: left .4s ease;
transition: left .4s ease;
}
/* Side Header - Right Aligned
-----------------------------------------------------------------*/
.side-header.side-header-right #header {
left: auto;
right: 0;
border: none;
border-left: 1px solid #EEE;
}
.side-header.side-header-right:not(.open-header) #wrapper { margin: 0 260px 0 0 !important; }
.side-header.side-header-right.open-header #header {
left: auto;
right: -260px;
}
.side-header.side-header-right.open-header.side-header-open #header {
left: auto;
right: 0;
}
.side-header.side-header-right.open-header.push-wrapper.side-header-open #wrapper { left: -260px; }
.side-header.side-header-right.open-header #header-trigger {
left: auto;
right: 20px;
}
.side-header.side-header-right.open-header.side-header-open #header-trigger {
left: auto;
right: 280px;
}
.side-header.side-header-right.open-header #header,
.side-header.side-header-right.open-header #header-trigger {
-webkit-transition: right .4s ease;
-o-transition: right .4s ease;
transition: right .4s ease;
}
}
/* ----------------------------------------------------------------
Side Push Panel
-----------------------------------------------------------------*/
body.side-push-panel { overflow-x: hidden; }
#side-panel {
position: fixed;
top: 0;
right: -300px;
z-index: 399;
width: 300px;
height: 100%;
background-color: #f5eedf;
overflow: hidden;
-webkit-backface-visibility: hidden;
}
body.side-panel-left #side-panel {
left: -300px;
right: auto;
}
body.side-push-panel.stretched #wrapper,
body.side-push-panel.stretched #header.sticky-header .container { right: 0; }
body.side-panel-left.side-push-panel.stretched #wrapper,
body.side-panel-left.side-push-panel.stretched #header.sticky-header .container {
left: 0;
right: auto;
}
#side-panel .side-panel-wrap {
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 330px;
height: 100%;
overflow: auto;
padding: 50px 70px 50px 40px;
}
body.device-touch #side-panel .side-panel-wrap { overflow-y: scroll; }
#side-panel .widget {
margin-top: 40px;
padding-top: 40px;
width: 300px;
border-top: 1px solid #E5E5E5;
}
#side-panel .widget:first-child {
padding-top: 0;
border-top: 0;
margin: 0;
}
body.side-panel-open #side-panel { right: 0; }
body.side-panel-left.side-panel-open #side-panel {
left: 0;
right: auto;
}
body.side-push-panel.side-panel-open.stretched #wrapper,
body.side-push-panel.side-panel-open.stretched #header.sticky-header .container { right: 300px; }
body.side-push-panel.side-panel-open.stretched.device-xl .slider-parallax-inner,
body.side-push-panel.side-panel-open.stretched.device-lg .slider-parallax-inner { left: -300px; }
body.side-panel-left.side-push-panel.side-panel-open.stretched #wrapper,
body.side-panel-left.side-push-panel.side-panel-open.stretched #header.sticky-header .container,
body.side-panel-left.side-push-panel.side-panel-open.stretched .slider-parallax-inner {
left: 300px;
right: auto;
}
#side-panel-trigger {
display: block;
cursor: pointer;
z-index