diff --git a/app/config/parameters.yml b/app/config/parameters.yml index e7b6487c2..9631d44c6 100755 --- a/app/config/parameters.yml +++ b/app/config/parameters.yml @@ -1 +1 @@ -parameters: \ No newline at end of file +parameters: diff --git a/themes/cadouri/_dev/css/cadouri/_main.scss b/themes/cadouri/_dev/css/cadouri/_main.scss index b6ef90a74..385834f62 100644 --- a/themes/cadouri/_dev/css/cadouri/_main.scss +++ b/themes/cadouri/_dev/css/cadouri/_main.scss @@ -126,6 +126,7 @@ a { &:hover { outline: 0; } + color: $lightcoral; } @@ -447,6 +448,7 @@ a { figure { margin: 0 !important; + img { -webkit-filter: grayscale(0) blur(0); -webkit-transition: .3s ease-in-out; @@ -878,6 +880,7 @@ a { background-color: transparent; color: $lightcoral; } + line-height: 1.2; } } @@ -1262,7 +1265,7 @@ a { .icon-telegram { &:before { content: '\f1d8'; - margin-left: -1.5px; + margin-left: -0.3px !important; } } @@ -1330,9 +1333,11 @@ h5 { align-items: center; grid-template-rows: 100%; grid-template-columns: 100%; + &:hover { box-shadow: 1px 0 2px rgba(0, 0, 0, .36); } + i { position: relative; color: $white; @@ -1340,15 +1345,18 @@ h5 { text-align: center; vertical-align: middle; padding: 0 0 0 1px !important; + &::before { margin: 0 !important; width: auto !important; } } + .icon-instagram, .icon-viber, .icon-youtube-play { line-height: 30px; font-size: 19px; } + .icon-viber { top: 1px; } @@ -1359,8 +1367,13 @@ h5 { .social-block-inline > a .icon-instagram { padding-left: 0px !important; } + .social-block-inline > a .icon-telegram { padding-left: 0px !important; + &:before + { + margin-left: -.3px!important; + } } } @@ -1369,10 +1382,16 @@ h5 { padding-left: 0px !important; } - .social-block-inline>a .icon-viber - { + + .social-block-inline > a .icon-viber { left: 1px; } + .social-block-inline > a .icon-telegram { + &:before + { + margin-left: -.3px!important; + } + } } #_mobile_nav { @@ -1465,6 +1484,7 @@ h5 { text-transform: uppercase; color: #000; } + .banner-item.policies { @media (min-width: 768px) { height: max-content; @@ -1496,6 +1516,7 @@ h5 { display: inline-block; width: 30px; } + border-bottom: 1px solid $lightgray; &:last-child { @@ -1567,6 +1588,7 @@ h5 { white-space: nowrap; width: 100%; } + display: inline-block; color: $lightcoral; padding: 10px 0; @@ -1586,6 +1608,7 @@ h5 { } } } + background-color: $mistyrose; padding-top: 3px; padding-bottom: 3px; @@ -1613,6 +1636,7 @@ h5 { white-space: nowrap; width: 100%; } + font-family: "Nickainley Normal", cursive; font-size: 4em; text-align: center; @@ -1622,6 +1646,7 @@ h5 { padding: 0 0 20px; margin: 0 0 20px; } + text-align: center; margin: .7em 0 .9em 0; } @@ -2309,6 +2334,7 @@ button { .first-in-line { clear: left; } + clear: both; } @@ -2536,6 +2562,7 @@ button { position: relative; margin: auto; min-width: 80px; + &:before { position: absolute; content: ""; @@ -2573,6 +2600,7 @@ button { width: 12px; height: 12px; font-size: 10px; + &::before { } @@ -2584,6 +2612,7 @@ button { .ps_breadcumb { margin-bottom: 40px; } + .breadcrumb { display: none !important; } diff --git a/themes/cadouri/_dev/css/theme.scss b/themes/cadouri/_dev/css/theme.scss index e1430aacd..2a91989e2 100755 --- a/themes/cadouri/_dev/css/theme.scss +++ b/themes/cadouri/_dev/css/theme.scss @@ -1,3 +1,5 @@ +@import url(/themes/cadouri/assets/fonts/fontello/css/fontello.css); + @import "./partials/_variables"; @import "~bootstrap/scss/bootstrap"; @import "./cadouri/vars"; diff --git a/themes/cadouri/assets/css/theme.css b/themes/cadouri/assets/css/theme.css index be8202d60..bed4b6719 100644 --- a/themes/cadouri/assets/css/theme.css +++ b/themes/cadouri/assets/css/theme.css @@ -4,4 +4,4 @@ * Copyright 2011-2016 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ -/*! normalize.css v4.2.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}@media print{*,:after,:before,:first-letter,blockquote:first-line,div:first-line,li:first-line,p:first-line{text-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.tag{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}@-ms-viewport{width:device-width}html{font-size:16px;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}[tabindex="-1"]:focus{outline:none!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{color:#d07676;text-decoration:none}a:focus,a:hover{color:#ba4040;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:none}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#999;caption-side:bottom}caption,th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:700;line-height:1.1;color:inherit}.h1,h1{font-size:1.375rem}.h2,h2{font-size:1.25rem}.h3,.h4,h3,h4{font-size:1.125rem}.h5,h5{font-size:1rem}.h6,h6{font-size:.9375rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:3.125rem;font-weight:600}.display-2{font-size:2.188rem;font-weight:400}.display-3{font-size:1.563rem;font-weight:400}.display-4{font-size:1.25rem;font-weight:400}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;color:#818a91}.blockquote-footer:before{content:"\2014 \A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer:before{content:""}.blockquote-reverse .blockquote-footer:after{content:"\A0 \2014"}dl.row>dd+dt{clear:left}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img,.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#818a91}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}code{color:#bd4147;background-color:#f7f7f9;border-radius:0}code,kbd{padding:.2rem .4rem;font-size:90%}kbd{color:#fff;background-color:#333;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#373a3c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}.container:after{content:"";display:table;clear:both}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}.container-fluid:after{content:"";display:table;clear:both}.row{margin-right:-15px;margin-left:-15px}.row:after{content:"";display:table;clear:both}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{padding-right:15px;padding-left:15px}}.col-xs-1{float:left;width:8.33333%}.col-xs-2{float:left;width:16.66667%}.col-xs-3{float:left;width:25%}.col-xs-4{float:left;width:33.33333%}.col-xs-5{float:left;width:41.66667%}.col-xs-6{float:left;width:50%}.col-xs-7{float:left;width:58.33333%}.col-xs-8{float:left;width:66.66667%}.col-xs-9{float:left;width:75%}.col-xs-10{float:left;width:83.33333%}.col-xs-11{float:left;width:91.66667%}.col-xs-12{float:left;width:100%}.pull-xs-0{right:auto}.pull-xs-1{right:8.33333%}.pull-xs-2{right:16.66667%}.pull-xs-3{right:25%}.pull-xs-4{right:33.33333%}.pull-xs-5{right:41.66667%}.pull-xs-6{right:50%}.pull-xs-7{right:58.33333%}.pull-xs-8{right:66.66667%}.pull-xs-9{right:75%}.pull-xs-10{right:83.33333%}.pull-xs-11{right:91.66667%}.pull-xs-12{right:100%}.push-xs-0{left:auto}.push-xs-1{left:8.33333%}.push-xs-2{left:16.66667%}.push-xs-3{left:25%}.push-xs-4{left:33.33333%}.push-xs-5{left:41.66667%}.push-xs-6{left:50%}.push-xs-7{left:58.33333%}.push-xs-8{left:66.66667%}.push-xs-9{left:75%}.push-xs-10{left:83.33333%}.push-xs-11{left:91.66667%}.push-xs-12{left:100%}.offset-xs-1{margin-left:8.33333%}.offset-xs-2{margin-left:16.66667%}.offset-xs-3{margin-left:25%}.offset-xs-4{margin-left:33.33333%}.offset-xs-5{margin-left:41.66667%}.offset-xs-6{margin-left:50%}.offset-xs-7{margin-left:58.33333%}.offset-xs-8{margin-left:66.66667%}.offset-xs-9{margin-left:75%}.offset-xs-10{margin-left:83.33333%}.offset-xs-11{margin-left:91.66667%}@media (min-width:576px){.col-sm-1{float:left;width:8.33333%}.col-sm-2{float:left;width:16.66667%}.col-sm-3{float:left;width:25%}.col-sm-4{float:left;width:33.33333%}.col-sm-5{float:left;width:41.66667%}.col-sm-6{float:left;width:50%}.col-sm-7{float:left;width:58.33333%}.col-sm-8{float:left;width:66.66667%}.col-sm-9{float:left;width:75%}.col-sm-10{float:left;width:83.33333%}.col-sm-11{float:left;width:91.66667%}.col-sm-12{float:left;width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.33333%}.pull-sm-2{right:16.66667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.33333%}.pull-sm-5{right:41.66667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.33333%}.pull-sm-8{right:66.66667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.33333%}.pull-sm-11{right:91.66667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.33333%}.push-sm-2{left:16.66667%}.push-sm-3{left:25%}.push-sm-4{left:33.33333%}.push-sm-5{left:41.66667%}.push-sm-6{left:50%}.push-sm-7{left:58.33333%}.push-sm-8{left:66.66667%}.push-sm-9{left:75%}.push-sm-10{left:83.33333%}.push-sm-11{left:91.66667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md-1{float:left;width:8.33333%}.col-md-2{float:left;width:16.66667%}.col-md-3{float:left;width:25%}.col-md-4{float:left;width:33.33333%}.col-md-5{float:left;width:41.66667%}.col-md-6{float:left;width:50%}.col-md-7{float:left;width:58.33333%}.col-md-8{float:left;width:66.66667%}.col-md-9{float:left;width:75%}.col-md-10{float:left;width:83.33333%}.col-md-11{float:left;width:91.66667%}.col-md-12{float:left;width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.33333%}.pull-md-2{right:16.66667%}.pull-md-3{right:25%}.pull-md-4{right:33.33333%}.pull-md-5{right:41.66667%}.pull-md-6{right:50%}.pull-md-7{right:58.33333%}.pull-md-8{right:66.66667%}.pull-md-9{right:75%}.pull-md-10{right:83.33333%}.pull-md-11{right:91.66667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.33333%}.push-md-2{left:16.66667%}.push-md-3{left:25%}.push-md-4{left:33.33333%}.push-md-5{left:41.66667%}.push-md-6{left:50%}.push-md-7{left:58.33333%}.push-md-8{left:66.66667%}.push-md-9{left:75%}.push-md-10{left:83.33333%}.push-md-11{left:91.66667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg-1{float:left;width:8.33333%}.col-lg-2{float:left;width:16.66667%}.col-lg-3{float:left;width:25%}.col-lg-4{float:left;width:33.33333%}.col-lg-5{float:left;width:41.66667%}.col-lg-6{float:left;width:50%}.col-lg-7{float:left;width:58.33333%}.col-lg-8{float:left;width:66.66667%}.col-lg-9{float:left;width:75%}.col-lg-10{float:left;width:83.33333%}.col-lg-11{float:left;width:91.66667%}.col-lg-12{float:left;width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.33333%}.pull-lg-2{right:16.66667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.33333%}.pull-lg-5{right:41.66667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.33333%}.pull-lg-8{right:66.66667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.33333%}.pull-lg-11{right:91.66667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.33333%}.push-lg-2{left:16.66667%}.push-lg-3{left:25%}.push-lg-4{left:33.33333%}.push-lg-5{left:41.66667%}.push-lg-6{left:50%}.push-lg-7{left:58.33333%}.push-lg-8{left:66.66667%}.push-lg-9{left:75%}.push-lg-10{left:83.33333%}.push-lg-11{left:91.66667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl-1{float:left;width:8.33333%}.col-xl-2{float:left;width:16.66667%}.col-xl-3{float:left;width:25%}.col-xl-4{float:left;width:33.33333%}.col-xl-5{float:left;width:41.66667%}.col-xl-6{float:left;width:50%}.col-xl-7{float:left;width:58.33333%}.col-xl-8{float:left;width:66.66667%}.col-xl-9{float:left;width:75%}.col-xl-10{float:left;width:83.33333%}.col-xl-11{float:left;width:91.66667%}.col-xl-12{float:left;width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.33333%}.pull-xl-2{right:16.66667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.33333%}.pull-xl-5{right:41.66667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.33333%}.pull-xl-8{right:66.66667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.33333%}.pull-xl-11{right:91.66667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.33333%}.push-xl-2{left:16.66667%}.push-xl-3{left:25%}.push-xl-4{left:33.33333%}.push-xl-5{left:41.66667%}.push-xl-6{left:50%}.push-xl-7{left:58.33333%}.push-xl-8{left:66.66667%}.push-xl-9{left:75%}.push-xl-10{left:83.33333%}.push-xl-11{left:91.66667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th,.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.thead-inverse th{color:#fff;background-color:#373a3c}.thead-default th{color:#999;background-color:#eceeef}.table-inverse{color:#eceeef;background-color:#373a3c}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#999}.table-inverse.table-bordered{border:0}.table-responsive{display:block;width:100%;min-height:0;overflow-x:auto}.table-reflow thead{float:left}.table-reflow tbody{display:block;white-space:nowrap}.table-reflow td,.table-reflow th{border-top:1px solid #eceeef;border-left:1px solid #eceeef}.table-reflow td:last-child,.table-reflow th:last-child{border-right:1px solid #eceeef}.table-reflow tbody:last-child tr:last-child td,.table-reflow tbody:last-child tr:last-child th,.table-reflow tfoot:last-child tr:last-child td,.table-reflow tfoot:last-child tr:last-child th,.table-reflow thead:last-child tr:last-child td,.table-reflow thead:last-child tr:last-child th{border-bottom:1px solid #eceeef}.table-reflow tr{float:left}.table-reflow tr td,.table-reflow tr th{display:block!important;border:1px solid #eceeef}.form-control{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.25;color:#999;background-color:#fff;background-image:none;background-clip:padding-box;border:1px solid rgba(0,0,0,.25);border-radius:0}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#999;background-color:#fff;border-color:#66afe9;outline:none}.form-control::-webkit-input-placeholder{color:#999;opacity:1}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999;opacity:1}.form-control::placeholder{color:#999;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}.form-control:disabled{cursor:not-allowed}select.form-control:not([size]):not([multiple]){height:calc(2.5rem - 2px)}select.form-control:focus::-ms-value{color:#999;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0}.col-form-label-lg{padding-top:.75rem;padding-bottom:.75rem;font-size:.9375rem}.col-form-label-sm{padding-top:.25rem;padding-bottom:.25rem;font-size:.875rem}.col-form-legend{margin-bottom:0;font-size:1rem}.col-form-legend,.form-control-static{padding-top:.5rem;padding-bottom:.5rem}.form-control-static{line-height:1.25;border:solid transparent;border-width:1px 0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:1.8125rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.75rem 1.5rem;font-size:.9375rem;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:2.75rem}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-check{position:relative;display:block;margin-bottom:.75rem}.form-check+.form-check{margin-top:-.25rem}.form-check.disabled .form-check-label{color:#999;cursor:not-allowed}.form-check-label{padding-left:1.25rem;margin-bottom:0;cursor:pointer}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-input:only-child{position:static}.form-check-inline{position:relative;display:inline-block;padding-left:1.25rem;margin-bottom:0;vertical-align:middle;cursor:pointer}.form-check-inline+.form-check-inline{margin-left:.75rem}.form-check-inline.disabled{color:#999;cursor:not-allowed}.form-control-feedback{margin-top:.25rem}.form-control-danger,.form-control-success,.form-control-warning{padding-right:2.25rem;background-repeat:no-repeat;background-position:center right .625rem;background-size:1.25rem 1.25rem}.has-success .custom-control,.has-success .form-check-inline,.has-success .form-check-label,.has-success .form-control-feedback,.has-success .form-control-label{color:#4cbb6c}.has-success .form-control{border-color:#4cbb6c}.has-success .form-control:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #96d7a9}.has-success .input-group-addon{color:#4cbb6c;border-color:#4cbb6c;background-color:#e0f3e5}.has-success .form-control-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#4cbb6c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E")}.has-warning .custom-control,.has-warning .form-check-inline,.has-warning .form-check-label,.has-warning .form-control-feedback,.has-warning .form-control-label{color:#ff9a52}.has-warning .form-control{border-color:#ff9a52}.has-warning .form-control:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffd6b8}.has-warning .input-group-addon{color:#ff9a52;border-color:#ff9a52;background-color:#fff}.has-warning .form-control-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#ff9a52' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E")}.has-danger .custom-control,.has-danger .form-check-inline,.has-danger .form-check-label,.has-danger .form-control-feedback,.has-danger .form-control-label{color:#ff4c4c}.has-danger .form-control{border-color:#ff4c4c}.has-danger .form-control:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffb2b2}.has-danger .input-group-addon{color:#ff4c4c;border-color:#ff4c4c;background-color:#fff}.has-danger .form-control-danger{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#ff4c4c' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E")}@media (min-width:576px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;width:auto;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .form-check,.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .form-check{display:inline-block;margin-top:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;border-radius:0}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0}.btn.disabled,.btn:disabled{cursor:not-allowed;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#d07676;border-color:transparent}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#c35050;border-color:transparent}.btn-primary.active,.btn-primary:active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#c35050;border-color:transparent;background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#b23d3d;border-color:transparent}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary:disabled.focus,.btn-primary:disabled:focus,.btn-primary:disabled:hover{background-color:#d07676;border-color:transparent}.btn-secondary,.btn-tertiary{color:#232323;background-color:#dfe1e6;border-color:transparent}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover,.btn-tertiary:focus,.btn-tertiary:hover,.focus.btn-tertiary{color:#232323;background-color:#c2c6d0;border-color:transparent}.active.btn-tertiary,.btn-secondary.active,.btn-secondary:active,.btn-tertiary:active,.open>.btn-secondary.dropdown-toggle,.open>.dropdown-toggle.btn-tertiary{color:#232323;background-color:#c2c6d0;border-color:transparent;background-image:none}.active.btn-tertiary:focus,.active.btn-tertiary:hover,.active.focus.btn-tertiary,.btn-secondary.active.focus,.btn-secondary.active:focus,.btn-secondary.active:hover,.btn-secondary:active.focus,.btn-secondary:active:focus,.btn-secondary:active:hover,.btn-tertiary:active.focus,.btn-tertiary:active:focus,.btn-tertiary:active:hover,.open>.btn-secondary.dropdown-toggle.focus,.open>.btn-secondary.dropdown-toggle:focus,.open>.btn-secondary.dropdown-toggle:hover,.open>.dropdown-toggle.btn-tertiary:focus,.open>.dropdown-toggle.btn-tertiary:hover,.open>.dropdown-toggle.focus.btn-tertiary{color:#232323;background-color:#aeb3c0;border-color:transparent}.btn-secondary.disabled.focus,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary:disabled.focus,.btn-secondary:disabled:focus,.btn-secondary:disabled:hover,.btn-tertiary:disabled.focus,.btn-tertiary:disabled:focus,.btn-tertiary:disabled:hover,.disabled.btn-tertiary:focus,.disabled.btn-tertiary:hover,.disabled.focus.btn-tertiary{background-color:#dfe1e6;border-color:transparent}.btn-info{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#ff1919;border-color:#ff0f0f}.btn-info.active,.btn-info:active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#ff1919;border-color:#ff0f0f;background-image:none}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#f40000;border-color:#c00}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info:disabled.focus,.btn-info:disabled:focus,.btn-info:disabled:hover{background-color:#ff4c4c;border-color:#ff4c4c}.btn-success{color:#fff;background-color:#4cbb6c;border-color:#4cbb6c}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#3a9a56;border-color:#389252}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#3a9a56;border-color:#389252;background-image:none}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#318047;border-color:#256237}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success:disabled.focus,.btn-success:disabled:focus,.btn-success:disabled:hover{background-color:#4cbb6c;border-color:#4cbb6c}.btn-warning{color:#fff;background-color:#ff9a52;border-color:#ff9a52}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#fff;background-color:#ff7c1f;border-color:#ff7615}.btn-warning.active,.btn-warning:active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ff7c1f;border-color:#ff7615;background-image:none}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#fa6800;border-color:#d25700}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning:disabled.focus,.btn-warning:disabled:focus,.btn-warning:disabled:hover{background-color:#ff9a52;border-color:#ff9a52}.btn-danger{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#ff1919;border-color:#ff0f0f}.btn-danger.active,.btn-danger:active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff1919;border-color:#ff0f0f;background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#f40000;border-color:#c00}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger:disabled.focus,.btn-danger:disabled:focus,.btn-danger:disabled:hover{background-color:#ff4c4c;border-color:#ff4c4c}.btn-outline-primary{color:#d07676;background-image:none;background-color:transparent;border-color:#d07676}.btn-outline-primary.active,.btn-outline-primary.focus,.btn-outline-primary:active,.btn-outline-primary:focus,.btn-outline-primary:hover,.open>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#d07676;border-color:#d07676}.btn-outline-primary.active.focus,.btn-outline-primary.active:focus,.btn-outline-primary.active:hover,.btn-outline-primary:active.focus,.btn-outline-primary:active:focus,.btn-outline-primary:active:hover,.open>.btn-outline-primary.dropdown-toggle.focus,.open>.btn-outline-primary.dropdown-toggle:focus,.open>.btn-outline-primary.dropdown-toggle:hover{color:#fff;background-color:#b23d3d;border-color:#943333}.btn-outline-primary.disabled.focus,.btn-outline-primary.disabled:focus,.btn-outline-primary.disabled:hover,.btn-outline-primary:disabled.focus,.btn-outline-primary:disabled:focus,.btn-outline-primary:disabled:hover{border-color:#eac2c2}.btn-outline-secondary{color:transparent;background-image:none;background-color:transparent;border-color:transparent}.btn-outline-secondary.active,.btn-outline-secondary.active.focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.active:hover,.btn-outline-secondary.focus,.btn-outline-secondary:active,.btn-outline-secondary:active.focus,.btn-outline-secondary:active:focus,.btn-outline-secondary:active:hover,.btn-outline-secondary:focus,.btn-outline-secondary:hover,.open>.btn-outline-secondary.dropdown-toggle,.open>.btn-outline-secondary.dropdown-toggle.focus,.open>.btn-outline-secondary.dropdown-toggle:focus,.open>.btn-outline-secondary.dropdown-toggle:hover{color:#fff;background-color:transparent;border-color:transparent}.btn-outline-secondary.disabled.focus,.btn-outline-secondary.disabled:focus,.btn-outline-secondary.disabled:hover,.btn-outline-secondary:disabled.focus,.btn-outline-secondary:disabled:focus,.btn-outline-secondary:disabled:hover{border-color:rgba(51,51,51,0)}.btn-outline-info{color:#ff4c4c;background-image:none;background-color:transparent;border-color:#ff4c4c}.btn-outline-info.active,.btn-outline-info.focus,.btn-outline-info:active,.btn-outline-info:focus,.btn-outline-info:hover,.open>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c}.btn-outline-info.active.focus,.btn-outline-info.active:focus,.btn-outline-info.active:hover,.btn-outline-info:active.focus,.btn-outline-info:active:focus,.btn-outline-info:active:hover,.open>.btn-outline-info.dropdown-toggle.focus,.open>.btn-outline-info.dropdown-toggle:focus,.open>.btn-outline-info.dropdown-toggle:hover{color:#fff;background-color:#f40000;border-color:#c00}.btn-outline-info.disabled.focus,.btn-outline-info.disabled:focus,.btn-outline-info.disabled:hover,.btn-outline-info:disabled.focus,.btn-outline-info:disabled:focus,.btn-outline-info:disabled:hover{border-color:#ffb2b2}.btn-outline-success{color:#4cbb6c;background-image:none;background-color:transparent;border-color:#4cbb6c}.btn-outline-success.active,.btn-outline-success.focus,.btn-outline-success:active,.btn-outline-success:focus,.btn-outline-success:hover,.open>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#4cbb6c;border-color:#4cbb6c}.btn-outline-success.active.focus,.btn-outline-success.active:focus,.btn-outline-success.active:hover,.btn-outline-success:active.focus,.btn-outline-success:active:focus,.btn-outline-success:active:hover,.open>.btn-outline-success.dropdown-toggle.focus,.open>.btn-outline-success.dropdown-toggle:focus,.open>.btn-outline-success.dropdown-toggle:hover{color:#fff;background-color:#318047;border-color:#256237}.btn-outline-success.disabled.focus,.btn-outline-success.disabled:focus,.btn-outline-success.disabled:hover,.btn-outline-success:disabled.focus,.btn-outline-success:disabled:focus,.btn-outline-success:disabled:hover{border-color:#96d7a9}.btn-outline-warning{color:#ff9a52;background-image:none;background-color:transparent;border-color:#ff9a52}.btn-outline-warning.active,.btn-outline-warning.focus,.btn-outline-warning:active,.btn-outline-warning:focus,.btn-outline-warning:hover,.open>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#ff9a52;border-color:#ff9a52}.btn-outline-warning.active.focus,.btn-outline-warning.active:focus,.btn-outline-warning.active:hover,.btn-outline-warning:active.focus,.btn-outline-warning:active:focus,.btn-outline-warning:active:hover,.open>.btn-outline-warning.dropdown-toggle.focus,.open>.btn-outline-warning.dropdown-toggle:focus,.open>.btn-outline-warning.dropdown-toggle:hover{color:#fff;background-color:#fa6800;border-color:#d25700}.btn-outline-warning.disabled.focus,.btn-outline-warning.disabled:focus,.btn-outline-warning.disabled:hover,.btn-outline-warning:disabled.focus,.btn-outline-warning:disabled:focus,.btn-outline-warning:disabled:hover{border-color:#ffd6b8}.btn-outline-danger{color:#ff4c4c;background-image:none;background-color:transparent;border-color:#ff4c4c}.btn-outline-danger.active,.btn-outline-danger.focus,.btn-outline-danger:active,.btn-outline-danger:focus,.btn-outline-danger:hover,.open>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c}.btn-outline-danger.active.focus,.btn-outline-danger.active:focus,.btn-outline-danger.active:hover,.btn-outline-danger:active.focus,.btn-outline-danger:active:focus,.btn-outline-danger:active:hover,.open>.btn-outline-danger.dropdown-toggle.focus,.open>.btn-outline-danger.dropdown-toggle:focus,.open>.btn-outline-danger.dropdown-toggle:hover{color:#fff;background-color:#f40000;border-color:#c00}.btn-outline-danger.disabled.focus,.btn-outline-danger.disabled:focus,.btn-outline-danger.disabled:hover,.btn-outline-danger:disabled.focus,.btn-outline-danger:disabled:focus,.btn-outline-danger:disabled:hover{border-color:#ffb2b2}.btn-link{font-weight:400;color:#d07676;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#ba4040;text-decoration:underline;background-color:transparent}.btn-link:disabled:focus,.btn-link:disabled:hover{color:#818a91;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.5rem;font-size:.9375rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;-webkit-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height;transition-property:height}.collapsing,.dropdown,.dropup{position:relative}.dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.3em;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropup .dropdown-toggle:after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#373a3c;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:0}.dropdown-divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#e5e5e5}.dropdown-item{display:block;width:100%;padding:3px 1.5rem;clear:both;font-weight:400;color:#373a3c;text-align:inherit;white-space:nowrap;background:none;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#2b2d2f;text-decoration:none;background-color:#f5f5f5}.dropdown-item.active,.dropdown-item.active:focus,.dropdown-item.active:hover{color:#fff;text-decoration:none;background-color:#d07676;outline:0}.dropdown-item.disabled,.dropdown-item.disabled:focus,.dropdown-item.disabled:hover{color:#818a91}.dropdown-item.disabled:focus,.dropdown-item.disabled:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:"progid:DXImageTransform.Microsoft.gradient(enabled = false)"}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#818a91;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:.3em solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:.125rem}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left;margin-bottom:0}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-.5rem}.btn-toolbar:after{content:"";display:table;clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:.5rem}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn+.dropdown-toggle-split:after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn .caret{margin-left:0}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:.3em .3em 0;border-bottom-width:0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 .3em .3em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after{content:"";display:table;clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;width:100%;display:table;border-collapse:separate}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#999;text-align:center;background-color:#eceeef;border:1px solid rgba(0,0,0,.25);border-radius:0}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:.9375rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle,.input-group .form-control:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn:not(:first-child),.input-group .form-control:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover{z-index:3}.custom-control{position:relative;display:inline-block;padding-left:1.5rem;cursor:pointer}.custom-control+.custom-control{margin-left:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#0074d9}.custom-control-input:focus~.custom-control-indicator{box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#84c6ff}.custom-control-input:disabled~.custom-control-indicator{cursor:not-allowed;background-color:#eee}.custom-control-input:disabled~.custom-control-description{color:#767676;cursor:not-allowed}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:50%;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:0}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#0074d9;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#fff'/%3E%3C/svg%3E")}.custom-controls-stacked .custom-control{float:left;clear:left}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.5rem - 2px);padding:.375rem 1.75rem .375rem .75rem;padding-right:.75rem\9;color:#999;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-image:none\9;background-size:8px 10px;border:1px solid rgba(0,0,0,.25);border-radius:0;-moz-appearance:none;-webkit-appearance:none}.custom-select:focus{border-color:#51a7e8;outline:none}.custom-select:focus::-ms-value{color:#999;background-color:#fff}.custom-select:disabled{color:#818a91;cursor:not-allowed;background-color:#eceeef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;cursor:pointer}.custom-file-input{min-width:14rem;max-width:100%;margin:0;filter:alpha(opacity=0);opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid #ddd;border-radius:0}.custom-file-control:lang(en):after{content:"Choose file..."}.custom-file-control:before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;background-color:#eee;border:1px solid #ddd;border-radius:0 0 0 0}.custom-file-control:lang(en):before{content:"Browse"}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:inline-block}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#818a91}.nav-link.disabled,.nav-link.disabled:focus,.nav-link.disabled:hover{color:#818a91;cursor:not-allowed;background-color:transparent}.nav-inline .nav-item{display:inline-block}.nav-inline .nav-item+.nav-item,.nav-inline .nav-link+.nav-link{margin-left:1rem}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs:after{content:"";display:table;clear:both}.nav-tabs .nav-item{float:left;margin-bottom:-1px}.nav-tabs .nav-item+.nav-item{margin-left:.2rem}.nav-tabs .nav-link{display:block;padding:.5em 1em;border:1px solid transparent;border-top-right-radius:0;border-top-left-radius:0}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:focus,.nav-tabs .nav-link.disabled:hover{color:#818a91;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover{color:#999;background-color:#fff;border-color:#ddd #ddd transparent}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.nav-pills:after{content:"";display:table;clear:both}.nav-pills .nav-item{float:left}.nav-pills .nav-item+.nav-item{margin-left:.2rem}.nav-pills .nav-link{display:block;padding:.5em 1em;border-radius:0}.nav-pills .nav-item.open .nav-link,.nav-pills .nav-item.open .nav-link:focus,.nav-pills .nav-item.open .nav-link:hover,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover{color:#fff;cursor:default;background-color:#d07676}.nav-stacked .nav-item{display:block;float:none}.nav-stacked .nav-item+.nav-item{margin-top:.2rem;margin-left:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar:after{content:"";display:table;clear:both}@media (min-width:576px){.navbar{border-radius:0}}.navbar-full{z-index:1000}@media (min-width:576px){.navbar-full{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:576px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar-sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030;width:100%}@media (min-width:576px){.navbar-sticky-top{border-radius:0}}.navbar-brand{float:left;padding-top:.25rem;padding-bottom:.25rem;margin-right:1rem;font-size:.9375rem;line-height:inherit}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-divider{float:left;width:1px;padding-top:.425rem;padding-bottom:.425rem;margin-right:1rem;margin-left:1rem;overflow:hidden}.navbar-divider:before{content:"\A0"}.navbar-text{display:inline-block;padding-top:.425rem;padding-bottom:.425rem}.navbar-toggler{width:2.5em;height:2em;padding:.5rem .75rem;font-size:.9375rem;line-height:1;background:transparent no-repeat 50%;background-size:24px 24px;border:1px solid transparent;border-radius:0}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}@media (max-width:575px){.navbar-toggleable-xs .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-xs .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-xs .navbar-nav .dropdown-menu{position:static;float:none}}@media (min-width:576px){.navbar-toggleable-xs{display:block}}@media (max-width:767px){.navbar-toggleable-sm .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-sm .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-sm .navbar-nav .dropdown-menu{position:static;float:none}}@media (min-width:768px){.navbar-toggleable-sm{display:block}}@media (max-width:991px){.navbar-toggleable-md .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-md .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-md .navbar-nav .dropdown-menu{position:static;float:none}}@media (min-width:992px){.navbar-toggleable-md{display:block}}.navbar-toggleable-lg:after{content:"";display:table;clear:both}@media (max-width:1199px){.navbar-toggleable-lg .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-lg .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-lg .navbar-nav .dropdown-menu{position:static;float:none}}@media (min-width:1200px){.navbar-toggleable-lg{display:block}}.navbar-toggleable-xl{display:block}.navbar-toggleable-xl:after{content:"";display:table;clear:both}.navbar-toggleable-xl .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-xl .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-xl .navbar-nav .dropdown-menu{position:static;float:none}.navbar-nav .nav-item{float:left}.navbar-nav .nav-link{display:block;padding-top:.425rem;padding-bottom:.425rem}.navbar-nav .nav-item+.nav-item,.navbar-nav .nav-link+.nav-link{margin-left:1rem}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover,.navbar-light .navbar-toggler,.navbar-light .navbar-toggler:focus,.navbar-light .navbar-toggler:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .active>.nav-link:focus,.navbar-light .navbar-nav .active>.nav-link:hover,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.active:focus,.navbar-light .navbar-nav .nav-link.active:hover,.navbar-light .navbar-nav .nav-link.open,.navbar-light .navbar-nav .nav-link.open:focus,.navbar-light .navbar-nav .nav-link.open:hover,.navbar-light .navbar-nav .open>.nav-link,.navbar-light .navbar-nav .open>.nav-link:focus,.navbar-light .navbar-nav .open>.nav-link:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");border-color:rgba(0,0,0,.1)}.navbar-light .navbar-divider{background-color:rgba(0,0,0,.075)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-toggler,.navbar-dark .navbar-toggler:focus,.navbar-dark .navbar-toggler:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .active>.nav-link:focus,.navbar-dark .navbar-nav .active>.nav-link:hover,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.active:focus,.navbar-dark .navbar-nav .nav-link.active:hover,.navbar-dark .navbar-nav .nav-link.open,.navbar-dark .navbar-nav .nav-link.open:focus,.navbar-dark .navbar-nav .nav-link.open:hover,.navbar-dark .navbar-nav .open>.nav-link,.navbar-dark .navbar-nav .open>.nav-link:focus,.navbar-dark .navbar-nav .open>.nav-link:hover{color:#fff}.navbar-dark .navbar-toggler{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-divider{background-color:hsla(0,0%,100%,.075)}.navbar-toggleable-xs:after{content:"";display:table;clear:both}@media (max-width:575px){.navbar-toggleable-xs .navbar-nav .nav-item{float:none;margin-left:0}}@media (min-width:576px){.navbar-toggleable-xs{display:block!important}}.navbar-toggleable-sm:after{content:"";display:table;clear:both}@media (max-width:767px){.navbar-toggleable-sm .navbar-nav .nav-item{float:none;margin-left:0}}@media (min-width:768px){.navbar-toggleable-sm{display:block!important}}.navbar-toggleable-md:after{content:"";display:table;clear:both}@media (max-width:991px){.navbar-toggleable-md .navbar-nav .nav-item{float:none;margin-left:0}}@media (min-width:992px){.navbar-toggleable-md{display:block!important}}#main,.card{position:relative;display:block;margin-bottom:.75rem;background-color:#fff;border-radius:0;border:1px solid rgba(0,0,0,.125)}#main:after,.card-block:after{content:"";display:table;clear:both}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}#main>.list-group:first-child .list-group-item:first-child,.card>.list-group:first-child .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}#main>.list-group:last-child .list-group-item:last-child,.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f5f5f5;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:after{content:"";display:table;clear:both}.card-header:first-child{border-radius:-1px -1px 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f5f5f5;border-top:1px solid rgba(0,0,0,.125)}.card-footer:after{content:"";display:table;clear:both}.card-footer:last-child{border-radius:0 0 -1px -1px}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-primary{background-color:#d07676;border-color:#d07676}.card-primary .card-footer,.card-primary .card-header{background-color:transparent}.card-success{background-color:#4cbb6c;border-color:#4cbb6c}.card-success .card-footer,.card-success .card-header{background-color:transparent}.card-info{background-color:#ff4c4c;border-color:#ff4c4c}.card-info .card-footer,.card-info .card-header{background-color:transparent}.card-warning{background-color:#ff9a52;border-color:#ff9a52}.card-warning .card-footer,.card-warning .card-header{background-color:transparent}.card-danger{background-color:#ff4c4c;border-color:#ff4c4c}.card-danger .card-footer,.card-danger .card-header,.card-outline-primary{background-color:transparent}.card-outline-primary{border-color:#d07676}.card-outline-secondary{background-color:transparent;border-color:transparent}.card-outline-info{background-color:transparent;border-color:#ff4c4c}.card-outline-success{background-color:transparent;border-color:#4cbb6c}.card-outline-warning{background-color:transparent;border-color:#ff9a52}.card-outline-danger{background-color:transparent;border-color:#ff4c4c}.card-inverse .card-footer,.card-inverse .card-header{border-color:hsla(0,0%,100%,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote .blockquote-footer,.card-inverse .card-link,.card-inverse .card-subtitle,.card-inverse .card-text{color:hsla(0,0%,100%,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{border-radius:-1px}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{border-top-right-radius:-1px;border-top-left-radius:-1px}.card-img-bottom{border-bottom-right-radius:-1px;border-bottom-left-radius:-1px}@media (min-width:576px){.card-deck{display:table;width:100%;margin-bottom:.75rem;table-layout:fixed;border-spacing:1.25rem 0}.card-deck #main,.card-deck .card{display:table-cell;margin-bottom:0;vertical-align:top}.card-deck-wrapper{margin-right:-1.25rem;margin-left:-1.25rem}}@media (min-width:576px){.card-group{display:table;width:100%;table-layout:fixed}.card-group #main,.card-group .card{display:table-cell;vertical-align:top}.card-group #main+#main,.card-group #main+.card,.card-group .card+#main,.card-group .card+.card{margin-left:0;border-left:0}.card-group #main:first-child,.card-group .card:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.card-group #main:first-child .card-img-top,.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group #main:first-child .card-img-bottom,.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group #main:last-child,.card-group .card:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.card-group #main:last-child .card-img-top,.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group #main:last-child .card-img-bottom,.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group #main:not(:first-child):not(:last-child),.card-group #main:not(:first-child):not(:last-child) .card-img-bottom,.card-group #main:not(:first-child):not(:last-child) .card-img-top,.card-group .card:not(:first-child):not(:last-child),.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns #main,.card-columns .card{display:inline-block;width:100%}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:0}.breadcrumb:after{content:"";display:table;clear:both}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#818a91;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#818a91}.pagination{display:inline-block;padding-left:0;margin-top:1rem;margin-bottom:1rem;border-radius:0}.page-item{display:inline}.page-item:first-child .page-link{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.page-item:last-child .page-link{border-bottom-right-radius:0;border-top-right-radius:0}.page-item.active .page-link,.page-item.active .page-link:focus,.page-item.active .page-link:hover{z-index:2;color:#fff;cursor:default;background-color:#d07676;border-color:#d07676}.page-item.disabled .page-link,.page-item.disabled .page-link:focus,.page-item.disabled .page-link:hover{color:#818a91;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.page-link{position:relative;float:left;padding:.5rem .75rem;margin-left:-1px;color:#d07676;text-decoration:none;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#ba4040;background-color:#eceeef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:.9375rem}.pagination-lg .page-item:first-child .page-link{border-bottom-left-radius:.3rem;border-top-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-bottom-right-radius:.3rem;border-top-right-radius:.3rem}.pagination-sm .page-link{padding:.275rem .75rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-bottom-left-radius:.2rem;border-top-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-bottom-right-radius:.2rem;border-top-right-radius:.2rem}.tag{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0}.tag:empty{display:none}.btn .tag{position:relative;top:-1px}a.tag:focus,a.tag:hover{color:#fff;text-decoration:none;cursor:pointer}.tag-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.tag-default{background-color:#818a91}.tag-default[href]:focus,.tag-default[href]:hover{background-color:#687077}.tag-primary{background-color:#d07676}.tag-primary[href]:focus,.tag-primary[href]:hover{background-color:#c35050}.tag-success{background-color:#4cbb6c}.tag-success[href]:focus,.tag-success[href]:hover{background-color:#3a9a56}.tag-info{background-color:#ff4c4c}.tag-info[href]:focus,.tag-info[href]:hover{background-color:#ff1919}.tag-warning{background-color:#ff9a52}.tag-warning[href]:focus,.tag-warning[href]:hover{background-color:#ff7c1f}.tag-danger{background-color:#ff4c4c}.tag-danger[href]:focus,.tag-danger[href]:hover{background-color:#ff1919}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-hr{border-top-color:#d0d5d8}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:0}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:2.5rem}.alert-dismissible .close{position:relative;top:-.125rem;right:-1.25rem;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d0e9c6;color:#3c763d}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bcdff1;color:#31708f}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:rgba(255,154,82,.3);border-color:#ff9a52;color:#232323}.alert-warning hr{border-top-color:#ff8b39}.alert-warning .alert-link{color:#0a0a0a}.alert-danger{background-color:#f2dede;border-color:#ebcccc;color:#a94442}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{display:block;width:100%;height:1rem;margin-bottom:1rem}.progress[value]{background-color:#eee;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}.progress[value]::-ms-fill{background-color:#0074d9;border:0}.progress[value]::-moz-progress-bar{background-color:#0074d9;border-bottom-left-radius:0;border-top-left-radius:0}.progress[value]::-webkit-progress-value{background-color:#0074d9;border-bottom-left-radius:0;border-top-left-radius:0}.progress[value="100"]::-moz-progress-bar{border-bottom-right-radius:0;border-top-right-radius:0}.progress[value="100"]::-webkit-progress-value{border-bottom-right-radius:0;border-top-right-radius:0}.progress[value]::-webkit-progress-bar{background-color:#eee;border-radius:0}.progress[value],base::-moz-progress-bar{background-color:#eee;border-radius:0}@media screen and (min-width:0\0){.progress{background-color:#eee;border-radius:0}.progress-bar{display:inline-block;height:1rem;text-indent:-999rem;background-color:#0074d9;border-bottom-left-radius:0;border-top-left-radius:0}.progress[width="100%"]{border-bottom-right-radius:0;border-top-right-radius:0}}.progress-striped[value]::-webkit-progress-value{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-striped[value]::-moz-progress-bar{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-striped[value]::-ms-fill{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}@media screen and (min-width:0\0){.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}}.progress-animated[value]::-webkit-progress-value{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-animated[value]::-moz-progress-bar{animation:progress-bar-stripes 2s linear infinite}@media screen and (min-width:0\0){.progress-animated .progress-bar-striped{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}}.progress-success[value]::-webkit-progress-value{background-color:#4cbb6c}.progress-success[value]::-moz-progress-bar{background-color:#4cbb6c}.progress-success[value]::-ms-fill{background-color:#4cbb6c}@media screen and (min-width:0\0){.progress-success .progress-bar{background-color:#4cbb6c}}.progress-info[value]::-webkit-progress-value{background-color:#ff4c4c}.progress-info[value]::-moz-progress-bar{background-color:#ff4c4c}.progress-info[value]::-ms-fill{background-color:#ff4c4c}@media screen and (min-width:0\0){.progress-info .progress-bar{background-color:#ff4c4c}}.progress-warning[value]::-webkit-progress-value{background-color:#ff9a52}.progress-warning[value]::-moz-progress-bar{background-color:#ff9a52}.progress-warning[value]::-ms-fill{background-color:#ff9a52}@media screen and (min-width:0\0){.progress-warning .progress-bar{background-color:#ff9a52}}.progress-danger[value]::-webkit-progress-value{background-color:#ff4c4c}.progress-danger[value]::-moz-progress-bar{background-color:#ff4c4c}.progress-danger[value]::-ms-fill{background-color:#ff4c4c}@media screen and (min-width:0\0){.progress-danger .progress-bar{background-color:#ff4c4c}}.media,.media-body{overflow:hidden}.media-body{width:10000px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right{padding-left:10px}.media-left{padding-right:10px}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:0}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#818a91;cursor:not-allowed;background-color:#eceeef}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#818a91}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;text-decoration:none;background-color:#d07676;border-color:#d07676}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-item-action{width:100%;color:#555;text-align:inherit}.list-group-item-action .list-group-item-heading{color:#333}.list-group-item-action:focus,.list-group-item-action:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9{padding-bottom:42.85714%}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.embed-responsive-1by1{padding-bottom:100%}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal,.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-25%);transform:translateY(-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0);transform:translate(0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header:after{content:"";display:table;clear:both}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.5}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after{content:"";display:table;clear:both}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:600px;margin:30px auto}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.in{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-inner:before,.tooltip.tooltip-top .tooltip-inner:before{bottom:0;left:50%;margin-left:-5px;content:"";border-width:5px 5px 0;border-top-color:#ff4c4c}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-inner:before,.tooltip.tooltip-right .tooltip-inner:before{top:50%;left:0;margin-top:-5px;content:"";border-width:5px 5px 5px 0;border-right-color:#ff4c4c}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-inner:before,.tooltip.tooltip-bottom .tooltip-inner:before{top:0;left:50%;margin-left:-5px;content:"";border-width:0 5px 5px;border-bottom-color:#ff4c4c}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-inner:before,.tooltip.tooltip-left .tooltip-inner:before{top:50%;right:0;margin-top:-5px;content:"";border-width:5px 0 5px 5px;border-left-color:#ff4c4c}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#ff4c4c;border-radius:0}.tooltip-inner:before{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom:after,.popover.bs-tether-element-attached-bottom:before,.popover.popover-top:after,.popover.popover-top:before{left:50%;border-bottom-width:0}.popover.bs-tether-element-attached-bottom:before,.popover.popover-top:before{bottom:-11px;margin-left:-11px;border-top-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-bottom:after,.popover.popover-top:after{bottom:-10px;margin-left:-10px;border-top-color:#fff}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left:after,.popover.bs-tether-element-attached-left:before,.popover.popover-right:after,.popover.popover-right:before{top:50%;border-left-width:0}.popover.bs-tether-element-attached-left:before,.popover.popover-right:before{left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-left:after,.popover.popover-right:after{left:-10px;margin-top:-10px;border-right-color:#fff}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top:after,.popover.bs-tether-element-attached-top:before,.popover.popover-bottom:after,.popover.popover-bottom:before{left:50%;border-top-width:0}.popover.bs-tether-element-attached-top:before,.popover.popover-bottom:before{top:-11px;margin-left:-11px;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top:after,.popover.popover-bottom:after{top:-10px;margin-left:-10px;border-bottom-color:#f7f7f7}.popover.bs-tether-element-attached-top .popover-title:before,.popover.popover-bottom .popover-title:before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right:after,.popover.bs-tether-element-attached-right:before,.popover.popover-left:after,.popover.popover-left:before{top:50%;border-right-width:0}.popover.bs-tether-element-attached-right:before,.popover.popover-left:before{right:-11px;margin-top:-11px;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right:after,.popover.popover-left:after{right:-10px;margin-top:-10px;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:.2375rem .2375rem 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover:after,.popover:before{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover:before{content:"";border-width:11px}.popover:after{content:"";border-width:10px}.carousel,.carousel-inner{position:relative}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.carousel-item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img{line-height:1}@media (-webkit-transform-3d),all and (transform-3d){.carousel-inner>.carousel-item{-webkit-transition:-webkit-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.carousel-item.active.right,.carousel-inner>.carousel-item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.carousel-item.active.left,.carousel-inner>.carousel-item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.carousel-item.active,.carousel-inner>.carousel-item.next.left,.carousel-inner>.carousel-item.prev.right{left:0;-webkit-transform:translateZ(0);transform:translateZ(0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),rgba(0,0,0,.0001));background-image:linear-gradient(90deg,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001));background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001),rgba(0,0,0,.5));background-image:linear-gradient(90deg,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5));background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1)}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203A"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media (min-width:576px){.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .icon-prev{margin-left:-15px}.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-faded{background-color:#f7f7f9}.bg-primary{background-color:#d07676!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#c35050!important}.bg-success{background-color:#4cbb6c!important}a.bg-success:focus,a.bg-success:hover{background-color:#3a9a56!important}.bg-info{background-color:#ff4c4c!important}a.bg-info:focus,a.bg-info:hover{background-color:#ff1919!important}.bg-warning{background-color:#ff9a52!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#ff7c1f!important}.bg-danger{background-color:#ff4c4c!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#ff1919!important}.bg-inverse{background-color:#373a3c!important}a.bg-inverse:focus,a.bg-inverse:hover{background-color:#1f2021!important}.rounded{border-radius:0}.rounded-top{border-top-right-radius:0;border-top-left-radius:0}.rounded-right{border-bottom-right-radius:0;border-top-right-radius:0}.rounded-bottom{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-left{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-circle{border-radius:50%}.clearfix:after{content:"";display:table;clear:both}.d-block{display:block!important}.d-inline-block{display:inline-block!important}.d-inline{display:inline!important}.float-xs-left{float:left!important}.float-xs-right{float:right!important}.float-xs-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.w-100{width:100%!important}.h-100{height:100%!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.mx-0{margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:1rem!important}.mt-1{margin-top:1rem!important}.mr-1{margin-right:1rem!important}.mb-1{margin-bottom:1rem!important}.ml-1,.mx-1{margin-left:1rem!important}.mx-1{margin-right:1rem!important}.my-1{margin-top:1rem!important;margin-bottom:1rem!important}.m-2{margin:1.5rem!important}.mt-2{margin-top:1.5rem!important}.mr-2{margin-right:1.5rem!important}.mb-2{margin-bottom:1.5rem!important}.ml-2,.mx-2{margin-left:1.5rem!important}.mx-2{margin-right:1.5rem!important}.my-2{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-3{margin:3rem!important}.mt-3{margin-top:3rem!important}.mr-3{margin-right:3rem!important}.mb-3{margin-bottom:3rem!important}.ml-3,.mx-3{margin-left:3rem!important}.mx-3{margin-right:3rem!important}.my-3{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.px-0{padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:1rem!important}.pt-1{padding-top:1rem!important}.pr-1{padding-right:1rem!important}.pb-1{padding-bottom:1rem!important}.pl-1,.px-1{padding-left:1rem!important}.px-1{padding-right:1rem!important}.py-1{padding-top:1rem!important;padding-bottom:1rem!important}.p-2{padding:1.5rem!important}.pt-2{padding-top:1.5rem!important}.pr-2{padding-right:1.5rem!important}.pb-2{padding-bottom:1.5rem!important}.pl-2,.px-2{padding-left:1.5rem!important}.px-2{padding-right:1.5rem!important}.py-2{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-3{padding:3rem!important}.pt-3{padding-top:3rem!important}.pr-3{padding-right:3rem!important}.pb-3{padding-bottom:3rem!important}.pl-3,.px-3{padding-left:3rem!important}.px-3{padding-right:3rem!important}.py-3{padding-top:3rem!important;padding-bottom:3rem!important}.pos-f-t{position:fixed;top:0;right:0;left:0;z-index:1030}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-xs-left{text-align:left!important}.text-xs-right{text-align:right!important}.text-xs-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-white{color:#fff!important}.text-muted{color:#999!important}a.text-muted:focus,a.text-muted:hover{color:gray!important}.text-primary{color:#d07676!important}a.text-primary:focus,a.text-primary:hover{color:#c35050!important}.text-success{color:#4cbb6c!important}a.text-success:focus,a.text-success:hover{color:#3a9a56!important}.text-info{color:#ff4c4c!important}a.text-info:focus,a.text-info:hover{color:#ff1919!important}.text-warning{color:#ff9a52!important}a.text-warning:focus,a.text-warning:hover{color:#ff7c1f!important}.text-danger{color:#ff4c4c!important}a.text-danger:focus,a.text-danger:hover{color:#ff1919!important}.text-gray-dark{color:#373a3c!important}a.text-gray-dark:focus,a.text-gray-dark:hover{color:#1f2021!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.invisible{visibility:hidden!important}.hidden-xs-up{display:none!important}@media (max-width:575px){.hidden-xs-down{display:none!important}}@media (min-width:576px){.hidden-sm-up{display:none!important}}@media (max-width:767px){.hidden-sm-down{display:none!important}}@media (min-width:768px){.hidden-md-up{display:none!important}}@media (max-width:991px){.hidden-md-down{display:none!important}}@media (min-width:992px){.hidden-lg-up{display:none!important}}@media (max-width:1199px){.hidden-lg-down{display:none!important}}@media (min-width:1200px){.hidden-xl-up{display:none!important}}.hidden-xl-down,.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}@font-face{font-family:Nickainley Normal;font-display:swap;src:url(/themes/cadouri/assets/fonts/nickainley-normal.otf)}@font-face{font-family:Basil Regular;font-display:swap;src:url(/themes/cadouri/assets/fonts/basil-regular.ttf)}body,html{height:100%}body{direction:ltr;font-family:Basil Regular,sans-serif;font-size:1rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#232323;line-height:1.25em}ul{list-style:none;padding-left:0}a:hover{color:#d07676;text-decoration:none}p{font-size:.9375rem;color:#999;font-weight:400}.dropdown-item:focus,.dropdown-item:hover{background:none}.color,.custom-checkbox input[type=checkbox]+span.color{width:1.25rem;height:1.25rem;display:inline-block;margin:.3125rem;box-shadow:2px 2px 4px 0 rgba(0,0,0,.2);border:1px solid rgba(0,0,0,.05);cursor:pointer;background-size:contain}.color.active,.color:hover,.custom-checkbox input[type=checkbox]+span.color.active,.custom-checkbox input[type=checkbox]+span.color:hover,.facet-label.active .custom-checkbox span.color,.facet-label:hover .custom-checkbox span.color{border:2px solid #232323}.h1,.h2,.h3{text-transform:uppercase;color:#232323}.h4{font-weight:700;color:#232323}.btn-primary,.btn-secondary,.btn-tertiary{box-shadow:2px 2px 4px 0 rgba(0,0,0,.2);text-transform:uppercase;font-weight:600;padding:.5rem 1.25rem}.btn-primary .material-icons,.btn-secondary .material-icons,.btn-tertiary .material-icons{margin-right:.625rem}.btn-tertiary{background-color:#f7f7f7;text-transform:lowercase;color:#999;box-shadow:.0625rem .0625rem .0625rem 0 rgba(0,0,0,.1);padding:.25rem;margin:.25rem 0;font-weight:400;font-size:.875rem}.btn-tertiary .material-icons{font-size:1rem}.btn-tertiary:hover{box-shadow:.0625rem .0625rem .0625rem 0 rgba(0,0,0,.2);border:1px solid rgba(35,35,35,.2)}.btn-unstyle:focus .expand-more{color:#d07676}#main,.card{box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)"}.label,label{color:#232323;text-align:right;font-size:.875rem}small.label,small.value{font-size:.8125rem}.form-control-label{padding-top:.625rem}.form-control{background:#dfe1e6;color:#999;border:1px solid rgba(0,0,0,.25);padding:.5rem 1rem}.form-control:focus{background-color:#fff;color:#232323}.form-control:focus,.input-group.focus{outline:.1875rem solid #d07676}.input-group .form-control:focus{outline:none}.input-group .input-group-btn{height:100%}.input-group .input-group-btn>.btn{border:0;box-shadow:none;color:#fff;font-size:.6875rem;font-weight:400;margin-left:0;padding:.625rem 1rem;text-transform:uppercase}.input-group .input-group-btn>.btn[data-action=show-password]{background:#999;padding:.78rem 1rem}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}input::-moz-placeholder,textarea::-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:active::-webkit-input-placeholder,textarea:active::-webkit-input-placeholder{color:#232323}input:active::-moz-placeholder,textarea:active::-moz-placeholder{color:#232323}input:active:-ms-input-placeholder,textarea:active:-ms-input-placeholder{color:#232323}input:active:-moz-placeholder,textarea:active:-moz-placeholder{color:#232323}.form-control-select{height:2.625rem;-moz-appearance:none;-webkit-appearance:none;background:#dfe1e6 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAQAAAD9CzEMAAAAPklEQVR4Ae3TwREAEBQD0V/6do4SXPZg7EsBhsQ8IEmSMOsiuEfg3gL3oXC7wK0bd1G4o8X9F4yIkyQfSrIByQBjp7QuND8AAAAASUVORK5CYII=") no-repeat scroll right .5rem center/1.25rem 1.25rem!important;padding:0 .5rem}.form-control-select:focus{outline-color:#d07676!important}.form-control-valign{padding-top:.5rem}.form-control-comment{font-size:.875rem;padding-top:.5rem;color:#999}.form-control-submit.disabled{background:#ff4c4c;color:#fff}.form-group.has-error input,.form-group.has-error select{outline:.1875rem solid #ff4c4c}.form-group.has-error .help-block{color:#ff4c4c}.group-span-filestyle label{margin:0}.group-span-filestyle .btn-default{background:#d07676;color:#fff;text-transform:uppercase;border-radius:0;font-size:.875rem;padding:.5rem 1rem}.custom-radio{display:inline-block;position:relative;width:20px;height:20px;vertical-align:middle;cursor:pointer;border-radius:50%;border:2px solid #999;background:#fff;margin-right:1.25rem}.custom-radio input[type=radio]{opacity:0;cursor:pointer}.custom-radio input[type=radio]:checked+span{display:block;background-color:#d07676;width:12px;height:12px;border-radius:50%;position:absolute;left:.125rem;top:.125rem}.custom-radio input[type=radio]:focus+span{border-color:#999}.custom-checkbox{position:relative}.custom-checkbox input[type=checkbox]{margin-top:.25rem;opacity:0;cursor:pointer;position:absolute}.custom-checkbox input[type=checkbox]+span{margin-right:3px;display:inline-block;width:.9375rem;height:.9375rem;vertical-align:middle;cursor:pointer;border:2px solid #232323}.custom-checkbox input[type=checkbox]+span .checkbox-checked{display:none;margin:-.3rem;font-size:1.1rem;color:#232323}.custom-checkbox input[type=checkbox]:checked+span .checkbox-checked{display:block}.custom-checkbox input[type=checkbox]:focus+span{border-color:#999}.custom-checkbox label{text-align:left}.text-muted{font-size:.875rem}.done{color:#4cbb6c;display:inline-block;padding:0 .8125rem;margin-right:1.563rem}.thumb-mask>.mask{position:relative;width:3.438rem;height:3.438rem;overflow:hidden;border:1px solid #dfe1e6;margin:.625rem 0}.thumb-mask>.mask img{width:55px;height:55px}.definition-list dl{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.definition-list dl dt{font-weight:400}.definition-list dl dd,.definition-list dl dt{-webkit-box-flex:0;-ms-flex:0 0 45%;flex:0 0 45%;background:#dfe1e6;padding:.625rem;margin:.125rem}.definition-list dl dd:nth-of-type(even),.definition-list dl dt:nth-of-type(even){background:#dfe1e6}.help-block{margin-top:.625rem}.btn.disabled,.btn.disabled:hover{background:#999}.alert-warning .material-icons{color:#ff9a52;font-size:2rem;margin-right:.625rem;padding-top:.3125rem}.alert-warning .alert-text{font-size:.9375rem;padding-top:.625rem}.alert-warning .alert-link{border-radius:2px;border-width:2px;margin-left:.625rem;padding:.3125rem 1.25rem;font-weight:600;font-size:.8125rem;color:#6c868e}.alert-warning ul li:last-child .alert-link{color:#fff}.alert-warning .warning-buttons{margin-top:.3125rem}.btn-tertiary-outline{color:#6c868e;background-image:none;background-color:transparent;border-color:#6c868e;border:.15rem solid #6c868e}.btn-tertiary-outline:hover{border-color:#bbcdd2;color:#bbcdd2}.alert{font-size:.8125rem}.nav-item .nav-link,.nav-item .nav-separtor{color:#999;font-weight:700}.nav-item .nav-link.active,.nav-item .nav-separtor.active{color:#232323}.separator{margin:0;border-color:rgba(0,0,0,.25)}.bootstrap-touchspin{border:1px solid #dfe1e6}.bootstrap-touchspin input:focus{outline:none}.bootstrap-touchspin input.form-control{border:0}.bootstrap-touchspin .btn-touchspin{position:absolute;top:0;background-color:transparent;text-align:center;padding:0;color:#a9b1c0}.bootstrap-touchspin .btn-touchspin:hover{color:#d07676}.bootstrap-touchspin .btn-touchspin.bootstrap-touchspin-up{right:5px}.rtl .bootstrap-touchspin .btn-touchspin.bootstrap-touchspin-up{left:5px;right:auto}.bootstrap-touchspin .btn-touchspin.bootstrap-touchspin-down{left:5px}.rtl .bootstrap-touchspin .btn-touchspin.bootstrap-touchspin-down{right:5px;left:auto}.bootstrap-touchspin .btn-touchspin .touchspin-up{font-style:normal}.bootstrap-touchspin .btn-touchspin .touchspin-up:after{content:"+";font-size:20px!important;font-weight:600!important}.bootstrap-touchspin .btn-touchspin .touchspin-down:after{font-style:normal;font-size:20px!important;content:"-";font-weight:600!important}.ps-alert-error{margin-bottom:0}.ps-alert-error .item,.ps-alert-success .item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:2px solid #ff4c4c;display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#ff4c4c;margin-bottom:1rem}.ps-alert-error .item i,.ps-alert-success .item i{border:15px solid #ff4c4c;display:-webkit-box;display:-ms-flexbox;display:flex}.ps-alert-error .item i svg,.ps-alert-success .item i svg{background-color:#ff4c4c;width:24px;height:24px}.ps-alert-error .item p,.ps-alert-success .item p{background-color:#fff;margin:0;padding:18px 20px;width:100%}.ps-alert-success{padding:.25rem .25rem 2.75rem}.ps-alert-success .item{border-color:#4cbb6c;background-color:#4cbb6c}.ps-alert-success .item i{border-color:#4cbb6c}.ps-alert-success .item i svg{background-color:#4cbb6c}.dropdown:hover .expand-more{color:#d07676}.dropdown .expand-more{color:#232323;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dropdown .active{max-height:200px;overflow-y:hidden;visibility:visible}.dropdown select{-moz-appearance:none;border:0 none;outline:0 none;color:#232323;background:#fff}.dropdown-item:focus,.dropdown-item:hover{background:none;text-decoration:none;color:#d07676}body#checkout{color:#232323}body#checkout #header .header-nav{max-height:none;padding:5rem 0 .9375rem;border:none;margin-bottom:0;box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)"}body#checkout #header .header-nav .logo{max-height:4.375rem;width:auto}body#checkout .custom-checkbox{display:-webkit-box;display:-ms-flexbox;display:flex}body#checkout .custom-checkbox span{-webkit-box-flex:0;-ms-flex:0 0 15px;flex:0 0 15px;margin-top:.1875rem}body#checkout a:hover{color:#1a8196}body#checkout section#content{margin-bottom:1.563rem}body#checkout .container{min-height:100%}body#checkout section.checkout-step{box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)";background-color:#fff;border-bottom:1px solid rgba(0,0,0,.25);padding:.9375rem}body#checkout section.checkout-step:last-child{border:0}body#checkout section.checkout-step .step-title{text-transform:uppercase;cursor:pointer;margin-bottom:0}body#checkout section.checkout-step .content{padding:0 2.313rem}body#checkout section.checkout-step .step-edit{text-transform:lowercase;font-weight:400}body#checkout section.checkout-step .step-edit .edit{font-size:1rem}body#checkout section.checkout-step .not-allowed{cursor:not-allowed;opacity:.5}body#checkout section.checkout-step .content,body#checkout section.checkout-step .done,body#checkout section.checkout-step .step-edit{display:none}body#checkout section.checkout-step.-current .content{display:block}body#checkout section.checkout-step.-current.-reachable.-complete .done,body#checkout section.checkout-step.-current.-reachable.-complete .step-edit{display:none}body#checkout section.checkout-step.-current.-reachable.-complete .step-number{display:inline-block}body#checkout section.checkout-step.-current.-reachable.-complete .content{display:block}body#checkout section.checkout-step.-reachable.-complete h1 .done{display:inline-block}body#checkout section.checkout-step.-reachable.-complete h1 .step-number{display:none}body#checkout section.checkout-step.-reachable.-complete h1 .step-edit{cursor:pointer;display:block;float:right;margin-right:.125rem;color:#999}body#checkout section.checkout-step.-reachable.-complete .content{display:none}body#checkout section.checkout-step small{color:#999}body#checkout section.checkout-step .default-input{min-width:40%}body#checkout section.checkout-step .default-input[name=address1],body#checkout section.checkout-step .default-input[name=address2]{min-width:60%}body#checkout section.checkout-step .radio-field{margin-top:1.875rem}body#checkout section.checkout-step .radio-field label{display:inline}body#checkout section.checkout-step .checkbox-field div{margin-top:3.75rem}body#checkout section.checkout-step .checkbox-field+.checkbox-field div{margin-top:0}body#checkout section.checkout-step .select-field div{background:#dfe1e6;padding:.625rem 3.125rem}body#checkout section.checkout-step .form-footer{text-align:center}body#checkout section.checkout-step #conditions-to-approve{padding-top:1rem}body#checkout section.checkout-step .payment-options label{display:table-cell}body#checkout section.checkout-step .payment-options .custom-radio{margin-right:1.25rem}body#checkout section.checkout-step .payment-options .payment-option{margin-bottom:.5rem}body#checkout section.checkout-step .step-number{display:inline-block;padding:.625rem}body#checkout section.checkout-step .address-selector{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap}body#checkout section.checkout-step .address-item{background:#dfe1e6;-webkit-box-flex:0;-ms-flex:0 0 49%;flex:0 0 49%;margin-bottom:.625rem;border:3px solid transparent}body#checkout section.checkout-step .address-item.selected{background:#fff;border:3px solid #d07676}body#checkout section.checkout-step .address-alias{display:inline-block;font-weight:600;margin-bottom:.625rem}body#checkout section.checkout-step .address{margin-left:1.563rem;font-weight:400}body#checkout section.checkout-step .radio-block{padding:.9375rem;text-align:left;cursor:pointer}body#checkout section.checkout-step .custom-radio{margin-right:0}body#checkout section.checkout-step .custom-radio input[type=radio]{height:1.25rem;width:1.25rem}body#checkout section.checkout-step .delete-address,body#checkout section.checkout-step .edit-address{color:#999;display:inline-block;margin:0 .3125rem}body#checkout section.checkout-step .delete-address .delete,body#checkout section.checkout-step .delete-address .edit,body#checkout section.checkout-step .edit-address .delete,body#checkout section.checkout-step .edit-address .edit{font-size:1rem}body#checkout section.checkout-step hr{margin:0}body#checkout section.checkout-step .address-footer{text-align:center;padding:.625rem}body#checkout section.checkout-step #delivery-addresses,body#checkout section.checkout-step #invoice-addresses,body#checkout section.checkout-step .add-address{margin-top:1.25rem}body#checkout section.checkout-step .add-address a{color:#232323}body#checkout section.checkout-step .add-address a i{font-size:.9375rem}body#checkout section.checkout-step .delivery-option{background:#dfe1e6;padding:.9375rem 0;margin-bottom:.9375rem}body#checkout section.checkout-step .delivery-option label{text-align:inherit}body#checkout section.checkout-step .carrier-delay,body#checkout section.checkout-step .carrier-name{display:inline-block;word-break:break-word;text-align:left}body#checkout section.checkout-step #customer-form,body#checkout section.checkout-step #delivery-address,body#checkout section.checkout-step #invoice-address,body#checkout section.checkout-step #login-form{margin-left:.3125rem;margin-top:1.563rem}body#checkout section.checkout-step #customer-form .form-control-label,body#checkout section.checkout-step #delivery-address .form-control-label,body#checkout section.checkout-step #invoice-address .form-control-label,body#checkout section.checkout-step #login-form .form-control-label{text-align:left}body#checkout section.checkout-step #customer-form .radio-inline,body#checkout section.checkout-step #delivery-address .radio-inline,body#checkout section.checkout-step #invoice-address .radio-inline,body#checkout section.checkout-step #login-form .radio-inline{padding:0}body#checkout section.checkout-step .sign-in{font-size:.875rem}body#checkout section.checkout-step .forgot-password{margin-left:14.38rem}body#checkout .additional-information{font-size:.875rem;margin-left:2.875rem;margin-top:1.25rem}body#checkout .condition-label{margin-left:2.5rem;margin-top:.625rem}body#checkout .condition-label label{text-align:inherit}body#checkout .cancel-address{margin:.625rem;display:block;color:#999;text-decoration:underline}body#checkout .modal-content{padding:1.25rem;background-color:#dfe1e6}body#checkout #cart-summary-product-list{font-size:.875rem}body#checkout #cart-summary-product-list img{border:1px solid #dfe1e6;width:3.125rem}body#checkout #cart-summary-product-list .media-body{vertical-align:middle}body#checkout #order-summary-content{padding-top:.9375rem}body#checkout #order-summary-content h4.h4{margin-top:.625rem;margin-bottom:1.25rem;color:#232323}body#checkout #order-summary-content h4.black{color:#000}body#checkout #order-summary-content h4.addresshead{margin-top:.1875rem}body#checkout #order-summary-content .noshadow{box-shadow:none}body#checkout #order-summary-content #order-items{border-right:0}body#checkout #order-summary-content #order-items h3.h3{color:#232323;margin-top:1.25rem}body#checkout #order-summary-content #order-items table tr:first-child td{border-top:0}body#checkout #order-summary-content .order-confirmation-table{padding:1rem;margin-bottom:2rem;background-color:#fff;border:3px solid #e5e5e5;border-radius:0}body#checkout #order-summary-content .summary-selected-carrier{margin-bottom:.75rem;background-color:#fff;border:1px solid #e5e5e5;border-radius:0;padding:1rem}body#checkout #order-summary-content .step-edit{display:inline;color:#999}body#checkout #order-summary-content .step-edit:hover{cursor:pointer}body#checkout #order-summary-content a .step-edit{color:#999}body#checkout #delivery,body#checkout #gift_message{max-width:100%;border-color:#232323}body#checkout #delivery textarea,body#checkout #gift_message textarea{max-width:100%;margin-bottom:10px}body#checkout #footer{box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)";padding:.9375rem;background:#fff;color:#999}#order-details{padding-left:1.875rem}#order-details>.card-title{margin-bottom:1.875rem}#order-details ul{margin-bottom:1.25rem}#order-details ul li{margin-bottom:.625rem}#order-items{border-right:1px solid #dfe1e6}#order-items hr{border-top-color:#232323}#order-items table{width:100%}#order-items table tr{height:1.875rem}#order-items table tr td:last-child{text-align:right}#order-items .order-line{margin-top:1rem}#order-items .image img{width:100%;border:1px solid gray-lighter;margin-bottom:1rem}#order-items .details{margin-bottom:1rem}#order-items .details .customizations{margin-top:.625rem}#order-items .qty{margin-bottom:1rem}#order-confirmation #registration-form{width:50%;margin:0 auto 1rem}@media (max-width:991px){.done{margin:0;padding:0}body#checkout section.checkout-step .address-item{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}body#checkout section.checkout-step .delivery-option-2{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.delivery-option{display:-webkit-box;display:-ms-flexbox;display:flex;margin:auto}.delivery-option .custom-radio{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.condition-label label[for="conditions_to_approve[terms-and-conditions]"]{text-align:left}#order-confirmation #registration-form{width:100%}}@media (max-width:767px){body#checkout section.checkout-step.-reachable.-complete h1 .step-edit{float:none;margin-top:.25rem;margin-left:1.25rem}body#checkout #header .header-nav{max-height:none;padding:0}body#checkout section.checkout-step .content{padding:.9375rem}body#checkout .form-group{margin-bottom:.5rem}#order-items{border-right:0;margin-bottom:2.5rem}#order-items .card-title{border-bottom:1px solid #dfe1e6;margin-bottom:1rem;padding-bottom:1rem}#order-items hr{border-top-color:#dfe1e6}.bold{font-weight:700}#order-details{padding-left:.9375rem}#order-details .card-title{border-bottom:1px solid #dfe1e6;margin-bottom:1rem;padding-bottom:1rem}}@media (max-width:575px){body#checkout section.checkout-step .content{padding:.9375rem 0}#payment-confirmation button{font-size:.875rem}#payment-confirmation button.btn{white-space:normal}}.js-payment-binary,.js-payment-binary .accept-cgv{display:none}.js-payment-binary.disabled{opacity:.6;cursor:not-allowed}.js-payment-binary.disabled:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.js-payment-binary.disabled .accept-cgv{display:block}.carousel{box-shadow:1px 1px 7px 0 rgba(0,0,0,.15);margin-bottom:1.5rem}.carousel .direction{z-index:auto}.carousel .carousel-inner{height:275px}@media (max-width:767px){.carousel .carousel-inner{height:auto}}.carousel .carousel-item{height:100%}@media (max-width:767px){.carousel .carousel-item img{max-width:100%;height:auto}}@media (min-width:768px){.carousel .carousel-item img{width:100%;margin-left:0}}.carousel .carousel-item .caption{position:absolute;color:#fff;max-width:340px}@media (min-width:768px){.carousel .carousel-item .caption{bottom:28px;left:90px}}@media (max-width:767px){.carousel .carousel-item .caption{bottom:5px;left:40px}}.carousel .carousel-item .caption .caption-description p{color:#fff}@media (max-width:767px){.carousel .carousel-item figure{margin:0}}.carousel .carousel-control{opacity:1}.carousel .carousel-control .icon-next:before,.carousel .carousel-control .icon-prev:before{content:""}.carousel .carousel-control .icon-next i,.carousel .carousel-control .icon-prev i{position:relative;top:-25px;font-size:2rem;color:#fff}.carousel .carousel-control .icon-next:hover i,.carousel .carousel-control .icon-prev:hover i{color:#d07676}.carousel .carousel-control .icon-prev{left:1rem}.carousel .carousel-control .icon-next{right:2rem}.carousel .carousel-control.left,.carousel .carousel-control.right{background:none}#products{float:left;width:100%}#products .products-select{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:baseline;-ms-align-items:baseline;-o-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#products .up{margin-bottom:.88889rem}#products .up .btn-secondary,#products .up .btn-tertiary{color:#999;text-transform:inherit}#products .up .btn-secondary .material-icons,#products .up .btn-tertiary .material-icons{margin-right:0}.rtl #products .up .btn-secondary .material-icons,.rtl #products .up .btn-tertiary .material-icons{margin-left:0;margin-right:inherit}.blockCategory{margin-bottom:15px}.block-category{margin-bottom:1.66667rem}.block-category #category-description p{margin-bottom:0}.block-category .category-cover{display:block;margin-bottom:10px}.products-selection .sort-by-row{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.products-selection .sort-by{white-space:normal;word-break:break-word;text-align:right}.rtl .products-selection .sort-by{text-align:left}.products-selection .total-products p{margin-bottom:0;line-height:2.22222rem;color:#999}.products-selection h1{padding-top:.55556rem}.products-sort-order{color:#252525;position:relative}.products-sort-order .select-title{display:block;width:100%;cursor:pointer;border:0;color:#999;padding:0;white-space:nowrap;font-size:1rem;text-align:left;font-weight:500}.rtl .products-sort-order .select-title{text-align:right}.products-sort-order .select-title .material-icons{font-size:.88889rem;margin:5px -10px}.products-sort-order .select-list{display:block;color:#232323;padding:.625rem 1.25rem}.products-sort-order .select-list:hover{background:#d07676;color:#fff;text-decoration:none}.products-sort-order .dropdown-menu{margin:0 10px;background:#dfe1e6;border:none;border-radius:0;font-size:18px;width:calc(100% - 20px)}#search_filters{margin-bottom:1.38889rem;background:#fff;padding:1.38889rem 1.11111rem}#search_filters .block_content{padding:20px}#search_filters .facet .collapse{display:block}#search_filters .facet .collapse li{display:block;clear:both!important}#search_filters .facet .collapse .dropdown-menu{padding:10px 20px}#search_filters .facet .collapse .select-list{color:#999;display:block;font-size:12px}#search_filters .facet .collapse .select-list:hover{color:#000}#search_filters .facet .collapse .select-title{color:#000;cursor:pointer}#search_filters .facet .facet-title{font-size:16px;color:#000;font-family:Basil Regular,serif;font-weight:400;padding:10px 0;margin-bottom:0}#search_filters .facet .facet-title span{position:relative;border-bottom:1px solid #333}#search_filters .facet .custom-checkbox input[type=checkbox]+span{border-color:#fff;box-shadow:0 0 0 1px #ccc;width:12px;height:12px;margin-right:7px}.rtl #search_filters .facet .custom-checkbox input[type=checkbox]+span{margin-left:7px;margin-right:inherit}#search_filters .facet .custom-checkbox input[type=checkbox]:hover+span{box-shadow:0 0 0 1px #000}#search_filters .facet .facet-label{margin-bottom:0;display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#search_filters .facet .facet-label.active a,#search_filters .facet .facet-label:hover a{color:#000}#search_filters .facet .facet-label.active .custom-checkbox input[type=checkbox]+span{box-shadow:0 0 0 1px #000}#search_filters .facet .facet-label a{margin-top:.38889rem;color:#999;display:inline-block;font-size:.77778rem}.pagination{vertical-align:middle;text-align:center}.pagination>div:first-child{line-height:1.66667rem}.pagination .page-list{margin:0;text-align:center}.pagination .page-list:after{content:"";display:table;clear:both}.pagination .page-list li{display:inline-block;margin:0 15px;line-height:1.11111rem;position:relative}.pagination .page-list li>span,.pagination .page-list li a{color:#a9b1c0;font-size:18px;text-transform:uppercase;display:block;text-align:center;background:#fff;padding:0 5px;font-weight:600;line-height:30px}.pagination .page-list li>span.disabled,.pagination .page-list li a.disabled{cursor:no-drop}.pagination .page-list li>span.next,.pagination .page-list li>span.previous,.pagination .page-list li a.next,.pagination .page-list li a.previous{color:#000;font-size:12px;font-weight:700}.pagination .page-list li>span.next:hover,.pagination .page-list li>span.previous:hover,.pagination .page-list li a.next:hover,.pagination .page-list li a.previous:hover{color:#d07676}.pagination .page-list li>span.next.disabled,.pagination .page-list li>span.previous.disabled,.pagination .page-list li a.next.disabled,.pagination .page-list li a.previous.disabled{color:#a9b1c0}.pagination .page-list li.current a{color:#000;font-weight:700}.pagination .page-list .previous .fa{margin-right:5px}.rtl .pagination .page-list .previous .fa{margin-left:5px;margin-right:inherit}.pagination .page-list .next .fa{margin-left:5px}.rtl .pagination .page-list .next .fa{margin-right:5px;margin-left:inherit}.pagination .page-list .disabled{cursor:no-drop}.pagination .product-count{font-weight:600;color:#d07676}.ps_sortPagiBar.bottom-line .showing{line-height:30px}.ps_sortPagiBar.products-selection{margin-bottom:20px}.ps_sortPagiBar.products-selection .nopadding{white-space:nowrap!important;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:2.22222rem}@media (min-width:766px){.ps_sortPagiBar.products-selection .nopadding{width:-webkit-max-content;width:-moz-max-content;width:max-content}}.ps_sortPagiBar.products-selection .sort-by{white-space:nowrap!important;-webkit-box-flex:33%;-ms-flex:33%;flex:33%}.ps_sortPagiBar.products-selection .row{border-top:1px solid #dfe1e6;border-bottom:1px solid #dfe1e6;margin:5px 0;padding:5px 0}.ps_sortPagiBar .product-count{color:#000}.ps_sortPagiBar .pagination{border-top:1px solid #dfe1e6;border-bottom:1px solid #dfe1e6;margin:5px 0;padding:5px 0;width:100%;display:block}.active_filters{background:#dededd;padding:.625rem 1.875rem 0;margin-bottom:1.25rem}.active_filters .active-filter-title{display:inline;margin-right:.625rem;font-weight:600}.active_filters ul{display:inline}.active_filters .filter-block{color:#232323;margin-right:.625rem;margin-bottom:.625rem;background:#fff;padding:.55556rem;display:inline-block;font-size:.8125rem}.rtl .active_filters .filter-block{margin-left:.625rem;margin-right:inherit}.active_filters .filter-block .close{color:#232323;font-size:.9375rem;opacity:1;margin-top:.33333rem;margin-left:.27778rem}.rtl .active_filters .filter-block .close{margin-right:.27778rem;margin-left:inherit}.block-categories{font-size:14px}.block-categories .category-top-menu{padding:0 18px;margin-bottom:0}.block-categories .category-sub-menu li{position:relative;display:block;border-top:1px solid #dfe1e6}.block-categories .category-sub-menu li:first-child{border-top:0}.block-categories .category-sub-menu a{padding:8px 0;display:block;color:#000}.block-categories .category-sub-menu a:hover{color:#d07676}.block-categories .category-sub-menu .category-sub-menu{margin-left:15px}.rtl .block-categories .category-sub-menu .category-sub-menu{margin-right:15px;margin-left:inherit}.block-categories .category-sub-menu .category-sub-menu li{border:0}.block-categories .arrows,.block-categories .collapse-icons{position:absolute;right:-5px;top:14px;padding:0;cursor:pointer;width:20px;height:20px;display:block;line-height:12px}.rtl .block-categories .arrows,.rtl .block-categories .collapse-icons{left:-5px;right:auto}.block-categories .arrows[aria-expanded=true] .add,.block-categories .collapse-icons[aria-expanded=true] .add{display:none}.block-categories .arrows[aria-expanded=true] .remove,.block-categories .collapse-icons[aria-expanded=true] .remove{display:block}.block-categories .arrows .add:hover,.block-categories .arrows .remove:hover,.block-categories .collapse-icons .add:hover,.block-categories .collapse-icons .remove:hover{color:#d07676}.block-categories .arrows .arrow-down,.block-categories .arrows .remove,.block-categories .arrows[aria-expanded=true] .fa-plus,.block-categories .collapse-icons .remove{display:none}.block-categories .arrows[aria-expanded=true] .fa-minus{display:inline-block}.facets-title{color:#232323}.products-selection{clear:both;position:relative}.products-selection .filter-button .btn-secondary,.products-selection .filter-button .btn-tertiary{padding:.66667rem .44444rem .61111rem}.products-selection .total-products{line-height:1.66667rem}@media (max-width:767px){#category #left-column{width:100%}#category #left-column #search_filters_wrapper{margin-left:-30px;margin-right:-30px}#category #left-column #search_filter_controls{text-align:center;margin-bottom:.88889rem}#category #left-column #search_filter_controls button{margin:0 .44444rem}#category #left-column #search_filters{margin-bottom:0;box-shadow:none;padding:0;border-top:1px solid #dfe1e6}#category #left-column #search_filters .facet{padding-top:0;border-bottom:1px solid #dfe1e6}#category #left-column #search_filters .facet .title{cursor:pointer}#category #left-column #search_filters .facet .title .collapse-icons .remove,#category #left-column #search_filters .facet .title[aria-expanded=true] .collapse-icons .add{display:none}#category #left-column #search_filters .facet .title[aria-expanded=true] .collapse-icons .remove{display:block}#category #left-column #search_filters .facet .facet-title{color:#232323;text-transform:uppercase}#category #left-column #search_filters .facet .h6{margin-bottom:0;padding:.55556rem;display:inline-block}#category #left-column #search_filters .facet .navbar-toggler{display:inline-block;padding:.55556rem .55556rem 0 0}#category #left-column #search_filters .facet .collapse.in{display:block}#category #left-column #search_filters .facet .facet-label a{margin-top:0}#category #left-column #search_filters .facet ul{margin-bottom:0}#category #left-column #search_filters .facet ul li{border-top:1px solid #dfe1e6;padding:.55556rem}#category #content-wrapper,#category #search_filter_toggler{width:100%}.products-sort-order{margin-top:6px}.products-sort-order .select-title{white-space:nowrap;margin-left:0}.rtl .products-sort-order .select-title{margin-right:0;margin-left:inherit}.products-selection h1{padding-top:0;text-align:center;margin-bottom:.88889rem}.products-selection .showing{padding-top:.88889rem}#best-sales #content-wrapper,#new-products #content-wrapper,#prices-drop #content-wrapper{width:100%}}@media (max-width:575px){.products-selection .filter-button{padding-left:0}.rtl .products-selection .filter-button{padding-right:0;padding-left:inherit}#category #left-column #search_filters_wrapper{margin-left:-15px;margin-right:-15px}}.ps-desktop-megamenu .megamenu>li>a{position:relative;display:block;line-height:1.55556rem;margin:15px;padding:2px 15px;font-size:18px;font-family:Basil Regular,serif;font-weight:700;text-transform:uppercase;color:#000}.ps-desktop-megamenu .megamenu>li>a:after,.ps-desktop-megamenu .megamenu>li>a:before{content:"";width:0;top:0;position:absolute}.ps-desktop-megamenu .megamenu>li>a:before{border-left:10px solid transparent;border-right:0;left:-10px}.ps-desktop-megamenu .megamenu>li>a:after{border-right:10px solid transparent;border-left:0;right:-10px}.ps-desktop-megamenu .megamenu>li>a .menu-title{display:inline-block;margin-top:4px}.ps-desktop-megamenu .megamenu>li>a .sub-title{display:block;text-transform:uppercase;font-size:10px;position:absolute;bottom:50%;margin-bottom:17px;background:#c2c6d0;padding:0 8px;text-align:center;left:15px;line-height:18px;font-weight:500;border-radius:2px;color:#fff}.rtl .ps-desktop-megamenu .megamenu>li>a .sub-title{right:15px;left:auto}.ps-desktop-megamenu .megamenu>li>a .sub-title:before{position:absolute;bottom:-5px;right:0;content:"";border-right:5px solid #c2c6d0;border-top:5px solid transparent;border-bottom:5px solid transparent}.rtl .ps-desktop-megamenu .megamenu>li>a .sub-title:before{left:0;right:auto;border-left:5px solid #c2c6d0;border-right:0}.ps-desktop-megamenu .megamenu>li.dropdown:before{bottom:25px;border-bottom:10px solid rgba(0,0,0,.09)}.ps-desktop-megamenu .megamenu>li.dropdown:after,.ps-desktop-megamenu .megamenu>li.dropdown:before{position:absolute;content:"";border-left:10px solid transparent;border-right:10px solid transparent;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0}.ps-desktop-megamenu .megamenu>li.dropdown:after{bottom:24px;border-bottom:10px solid #fff}.ps-desktop-megamenu .megamenu>li.dropdown>.material-icons{position:absolute;top:10px;right:10px}.rtl .ps-desktop-megamenu .megamenu>li.dropdown>.material-icons{left:10px;right:auto}@media (min-width:576px){.ps-desktop-megamenu .megamenu>li.dropdown>a .menu-title:after{font-family:fontello;content:"\F004";display:inline-block;line-height:10px;margin-left:5px;font-size:10px;position:relative;top:-3px}}@media (min-width:768px){.ps-desktop-megamenu .megamenu>li.aligned-fullwidth{position:static}.ps-desktop-megamenu .megamenu>li.aligned-fullwidth>.dropdown-menu{box-shadow:1px -1px 3px #888;width:110%!important}}.ps-desktop-megamenu .megamenu>li.aligned-right>.dropdown-menu,.rtl .ps-desktop-megamenu .megamenu>li.aligned-left>.dropdown-menu{right:0;left:auto}.rtl .ps-desktop-megamenu .megamenu>li.aligned-left>.dropdown-menu{left:auto;right:auto}.ps-desktop-megamenu .megamenu>li.aligned-center .dropdown-menu{left:50%}.rtl .ps-desktop-megamenu .megamenu>li.aligned-center .dropdown-menu{right:50%;left:auto}.ps-desktop-megamenu .megamenu>li.hot>a .sub-title{background-color:#d07676}.ps-desktop-megamenu .megamenu>li.hot>a .sub-title:before{border-right:5px solid #d07676}.rtl .ps-desktop-megamenu .megamenu>li.hot>a .sub-title:before{border-left:5px solid #d07676;border-right:0}.ps-desktop-megamenu .megamenu>li>.dropdown-menu{top:150%;display:block;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;box-shadow:1px 0 2px rgba(0,0,0,.16);border-radius:5px;border:1px solid rgba(0,0,0,.05);visibility:hidden;z-index:1002}.ps-desktop-megamenu .megamenu>li:focus>a,.ps-desktop-megamenu .megamenu>li:hover>a{color:#d07676;background-color:#f8d4ce}.ps-desktop-megamenu .megamenu>li:focus>a:after,.ps-desktop-megamenu .megamenu>li:focus>a:before,.ps-desktop-megamenu .megamenu>li:hover>a:after,.ps-desktop-megamenu .megamenu>li:hover>a:before{border-top:18px solid #f8d4ce;border-bottom:18px solid #f8d4ce}.ps-desktop-megamenu .megamenu>li:focus.dropdown:before,.ps-desktop-megamenu .megamenu>li:hover.dropdown:before{bottom:5px;z-index:1002;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1}.ps-desktop-megamenu .megamenu>li:focus.dropdown:after,.ps-desktop-megamenu .megamenu>li:hover.dropdown:after{bottom:4px;z-index:1003;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1}.ps-desktop-megamenu .megamenu>li:focus>.dropdown-menu,.ps-desktop-megamenu .megamenu>li:hover>.dropdown-menu{top:60px;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible}.ps-desktop-megamenu .dropdown-menu{box-shadow:1px 0 2px rgba(0,0,0,.16);top:100%;left:0;margin:0;height:auto;min-width:250px;color:#999;background-color:#fff;font-family:Basil Regular,serif;padding:10px 30px;border:0;text-align:left;z-index:1002}.rtl .ps-desktop-megamenu .dropdown-menu{text-align:right}.ps-desktop-megamenu .dropdown-menu li a{color:#999;padding:4px 0;display:block;font-size:18px}.ps-desktop-megamenu .dropdown-menu li a:hover .caret:before{color:#d07676}.ps-desktop-megamenu .dropdown-menu .menubuilder{padding-top:15px;padding-bottom:15px;margin-left:-10px;margin-right:-10px}.ps-desktop-megamenu .dropdown-menu .dropdown>.material-icons{float:right}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown>.material-icons{float:left}.ps-desktop-megamenu .dropdown-menu .dropdown:hover>.dropdown-menu{display:block;left:0}.ps-desktop-megamenu .dropdown-menu .dropdown:hover>a{color:#d07676;display:block}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>a:after{font-family:fontello;content:"\EA1C";display:inline-block;vertical-align:middle;float:right;font-size:13px;position:relative;top:2px}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu>a:after{float:left}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.material-icons{position:absolute;top:20px;right:10px}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.material-icons{left:10px;right:auto}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.dropdown-menu{display:block;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;visibility:hidden;left:150%;top:-5px}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.dropdown-menu{right:150%;left:auto}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu.open>.dropdown-menu,.ps-desktop-megamenu .dropdown-menu .dropdown-submenu:hover>.dropdown-menu{left:100%;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu.open>.dropdown-menu,.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu:hover>.dropdown-menu{right:100%;left:auto}.megamenu .container{width:100%!important}.megamenu .widget .title_block{font-family:Basil Regular,serif;font-size:20px;color:#000;margin:0 0 5px;padding:0 0 .55556rem;font-weight:600;background-color:transparent;position:relative}.megamenu .widget .widget-products .product-block{padding:10px 0}.megamenu .widget .widget-products .product-block .product-image-container{padding:0;border:0}.megamenu .widget .widget-products .product-block .name{margin-top:0}.megamenu .widget .widget-products .product-block .name a{height:auto;text-transform:none}.megamenu .widget .widget-products .product-block .product_img_link{padding:0}.megamenu .widget-inner .nav-links li a{padding:5px 0}.megamenu .widget-products .product-miniature .product-title a{color:#999}.megamenu .widget-products .product-miniature .product-title a:hover{color:#d07676}.megamenu .widget-subcategories{background:transparent!important}.megamenu .widget-subcategories .media .image{max-width:8.88889rem}.megamenu .widget-subcategories .media .list-style a:before{content:"\F105";display:inline-block;font-family:fontello;margin:0 2px}@media (max-width:991px){.row-offcanvas{position:relative}.row-offcanvas .menuOffcanvas{left:-15.83333rem;z-index:1002}.rtl .row-offcanvas .menuOffcanvas{right:-15.83333rem;left:auto}.row-offcanvas.menuOffcanvasActive .btn-offcanvas-mobile{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible;z-index:1001}.row-offcanvas.menuOffcanvasActive .menuOffcanvas{left:0}.rtl .row-offcanvas.menuOffcanvasActive .menuOffcanvas{right:0;left:auto}.row-offcanvas .sidebarOffcanvas{right:-15.83333rem;z-index:1002}.rtl .row-offcanvas .sidebarOffcanvas{left:-15.83333rem;right:auto}.row-offcanvas.sidebarOffcanvasActive .btn-sidebarOffCanvas-mobile{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible;z-index:1001}.row-offcanvas.sidebarOffcanvasActive .sidebarOffcanvas{right:0}.rtl .row-offcanvas.sidebarOffcanvasActive .sidebarOffcanvas{left:0;right:auto}.btn-offcanvas-mobile,.btn-sidebarOffCanvas-mobile{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:hidden;position:absolute;width:100%;left:0;bottom:0;right:0;top:0;height:100%;background-color:rgba(0,0,0,.3)}.sidebarOffcanvas{background:#292b32}.menuOffcanvas,.sidebarOffcanvas{position:absolute;top:0;width:15.55556rem;height:100%}.menuOffcanvas{background:#fff}.bottom-offcanvas{border-top:1px solid #ebebeb;padding:10px 0}.offcanvas-heading .btn-mobile{width:100%;background-color:#d07676;color:#fff;padding:.55556rem 0;border:0;cursor:pointer}.offcanvas-heading .btn-mobile .material-icons{font-size:1rem}.canvas-menu{padding:5px;font-size:20px!important;border-radius:3px;background-color:#333;color:#fff}.canvas-menu .material-icons{font-size:1.05556rem}.ps-mobile-megamenu .dropdown-menu{position:relative!important;box-shadow:none!important;border:0;width:100%!important}.ps-mobile-megamenu .click-canavs-menu{position:absolute;right:.55556rem;top:.61111rem;z-index:10;cursor:pointer;background-color:#d07676;color:#fff}.rtl .ps-mobile-megamenu .click-canavs-menu{left:.55556rem;right:auto}.ps-mobile-megamenu .megamenu>li{border-top:1px solid #e1e1e1;padding:5px 0;clear:both}.ps-mobile-megamenu .megamenu>li>a{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:70%;font-size:1rem;padding:.33333rem .83333rem;display:block;font-weight:600;position:relative}.ps-mobile-megamenu .megamenu>li>a .hasicon{display:none}.ps-mobile-megamenu .megamenu>li>a .sub-title{display:block;text-transform:uppercase;font-size:10px;position:absolute;bottom:50%;margin-bottom:17px;background:#c2c6d0;padding:0 8px;text-align:center;left:15px;line-height:18px;font-weight:500;border-radius:2px;color:#fff}.rtl .ps-mobile-megamenu .megamenu>li>a .sub-title{right:15px;left:auto}.ps-mobile-megamenu .megamenu>li>a .sub-title:before{position:absolute;bottom:-5px;left:0;content:"";border-left:5px solid #c2c6d0;border-top:5px solid transparent;border-bottom:5px solid transparent}.rtl .ps-mobile-megamenu .megamenu>li>a .sub-title:before{right:0;left:auto;border-right:5px solid #c2c6d0;border-left:0}.ps-mobile-megamenu .megamenu>li.hot>a .sub-title{background-color:#d07676}.ps-mobile-megamenu .megamenu>li.hot>a .sub-title:before{border-left:5px solid #d07676}.rtl .ps-mobile-megamenu .megamenu>li.hot>a .sub-title:before{border-right:5px solid #d07676;border-left:0}.ps-mobile-megamenu .megamenu>li .menubuilder{margin-left:.83333rem}.rtl .ps-mobile-megamenu .megamenu>li .menubuilder{margin-right:.83333rem;margin-left:inherit}.ps-mobile-megamenu .megamenu>li .menubuilder .block .title_block{border-bottom:1px solid #e1e1e1;padding-bottom:.27778rem;margin-bottom:.55556rem;color:#222}.ps-mobile-megamenu .megamenu .dropdown-menu-inner>ul{margin-left:.83333rem;border-left:1px dotted #e1e1e1}.rtl .ps-mobile-megamenu .megamenu .dropdown-menu-inner>ul{margin-right:.83333rem;margin-left:inherit;border-right:1px dotted #e1e1e1;border-left:0}.ps-mobile-megamenu .megamenu .dropdown-menu-inner>ul>li{position:relative}.ps-mobile-megamenu .megamenu .dropdown-menu-inner>ul>li>a{padding:5px 10px;display:block}.ps-mobile-megamenu .megamenu .dropdown-menu li a{color:#999;font-size:16px}.ps-mobile-megamenu .megamenu .dropdown-menu li a:hover{color:#d07676}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu>a:after{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg)}.search-widget{width:90%;margin-left:10%!important}}.dropdown-menu.level2{left:110%!important;box-shadow:-1px 0 2px rgba(0,0,0,.16);border-radius:5px;border:1px solid rgba(0,0,0,.05)}.material-icons.click-canavs-menu:before{text-indent:0;font-family:fontello;content:"\F004";font-style:normal;font-weight:400;speak:none;position:absolute;right:0;text-decoration:inherit;width:30px;text-align:center;font-variant:normal;text-transform:none;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.flexRow{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-ms-flex-flow:row wrap;margin-left:-15px;margin-right:-15px}.price,.regular-price{font-family:Basil Regular,serif}.price,.regular-price{color:#999;font-size:16px;font-weight:600}.regular-price{text-decoration:line-through;margin-left:5px}.rtl .regular-price{margin-right:5px;margin-left:inherit}.product-miniature .variant-links{text-align:center}.product-miniature .variant-links .color{display:inline-block;width:15px;height:15px;border:1px solid #fff;box-shadow:0 0 0 1px #dfe1e6}.product-miniature .product-description-short{margin-bottom:.83333em;overflow:hidden;display:none;max-height:3rem;line-height:22px}.product-miniature .comments_note{display:inline-block}.product-miniature .comments_note>*{float:left}.rtl .product-miniature .comments_note>*{float:right}.product-miniature .comments_note .nb-comments{font-size:11px;padding-left:7px;position:relative;color:#bebebe;line-height:.66667rem;font-style:italic;display:none}.rtl .product-miniature .comments_note .nb-comments{padding-right:7px;padding-left:inherit}.product-miniature .comments_note .nb-comments span{font-size:11px}.product-miniature .condition{font-size:.66667rem;text-transform:uppercase;color:#666;letter-spacing:2px}.product-miniature .product-title{margin:.66667rem 0 .44444rem;display:block;position:relative}.product-miniature .product-title a{color:#000;font-size:18px;font-family:Basil Regular,serif;font-weight:600;line-height:18px;display:block;max-height:40px;letter-spacing:.25px}.product-miniature .variant-links{position:absolute;left:0;right:0;top:5px}.product-miniature .variant-links ul{display:inline-block;margin-top:10px}.product-miniature .variant-links ul li{border:1px solid #dfe1e6;float:left;margin:0 2px}.rtl .product-miniature .variant-links ul li{float:right}.product-miniature .variant-links ul li a{display:block;width:5px;height:5px;border-radius:50%;margin:1px}.product-flags{position:absolute;left:0;right:0;top:0;margin:0}.product-flags>li{color:#fff;font-size:14px;font-family:Basil Regular,serif;font-weight:500;z-index:5;position:absolute;line-height:.66667rem;border:1px solid transparent;padding:6px 10px;top:.55556rem!important;text-align:center;overflow:hidden;border-radius:30px}.product-flags>li.new{background-color:#dfe1e6;border-color:#dfe1e6;right:.55556rem;display:none!important}.rtl .product-flags>li.new{left:.55556rem;right:auto}.product-flags>li.discount,.product-flags>li.discount-percentage,.product-flags>li.on-sale,.product-flags>li.online-only{border-color:#d07676;background-color:#d07676;left:.55556rem;color:#fff}.rtl .product-flags>li.discount,.rtl .product-flags>li.discount-percentage,.rtl .product-flags>li.on-sale,.rtl .product-flags>li.online-only{right:.55556rem;left:auto}.product-flags>li.online-only{top:40px!important}.product-flags>li.on-sale{top:70px!important}.product-flags>li.discount{display:none!important}.gallery-carousel{position:relative}.products-block .wrap_thumbnail{margin:0;position:relative}.products-block .wrap_thumbnail .carousel-controls{display:none!important}.products-block .wrap_thumbnail .carousel-controls .carousel-control{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;width:.77778rem;height:.77778rem;line-height:.77778rem;text-align:center;top:50%;margin-top:-.38889rem;font-size:.66667rem}.products-block .wrap_thumbnail .carousel-controls .carousel-control.left{left:0}.products-block .wrap_thumbnail .carousel-controls .carousel-control.right{right:0}.products-block .thumbs_list_frame{position:relative;margin:10px 0 5px}.products-block .thumbs_list_frame .item{padding:0}.products-block .thumbs_list_frame .item a{padding:1px;margin:1px 2px;border:1px solid #dfe1e6;display:block}.products-block .thumbs_list_frame .item a.shown,.products-block .thumbs_list_frame .item a:hover{border-color:#f44336}.style1 .product-miniature figure img{-webkit-filter:grayscale(0) blur(0);filter:grayscale(0) blur(0);-webkit-transition:.3s ease-in-out;transition:.3s ease-in-out}.style1 .product-miniature .product-image-container{position:relative}.style1 .product-miniature .product-price-and-shipping{position:absolute;left:0;bottom:0;right:0;margin:auto;line-height:20px}.style1 .product-miniature .ps_group{position:absolute;left:0;right:0;bottom:-80px;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;background-color:#fff;visibility:hidden}.rtl .style1 .product-miniature .btn-action>div{float:right}.style1 .product-miniature .cart{margin:10px 0}.style1 .product-miniature .button-container{display:block}.style1 .product-miniature .variant-links{top:-40px;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;visible:hidden}.style1 .product-miniature:hover .ps_group{bottom:0}.style1 .product-miniature:hover .ps_group,.style1 .product-miniature:hover .variant-links{visibility:visible;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1}.style1 .product-miniature:hover .variant-links{top:10px}.style1 .product-miniature:hover figure img{-webkit-filter:grayscale(100%) blur(3px);filter:grayscale(100%) blur(3px)}.list1 .owl-item .item{border-top:1px solid #dfe1e6;padding:10px 0}.list1 .owl-item:first-child .item{border-top:0}.list1 .product-miniature .media-object{max-width:5rem}.list2 .owl-item .item{border-top:1px solid #dfe1e6;padding:20px}.list2 .owl-item:first-child .item{border-top:0}.list2 .owl-item .add-to-cart .material-icons{border-radius:50%;color:transparent;display:inline-block;height:30px;margin:-4px 5px -4px -10px;width:30px}.rtl .list2 .owl-item .add-to-cart .material-icons{margin:-4px -10px -4px 5px}.list2 .owl-item .product-price-and-shipping{margin:10px 0 20px}@media (min-width:992px) and (max-width:1199px){.list2 .owl-item .product-thumbnail img{max-width:5.55556rem}}@media (max-width:575px){.list2 .owl-item .product-thumbnail img{max-width:5.55556rem}}.home2 .widget-testimonial .style1 .t-profile{padding:15px 0}.style1 .product-miniature .ps_group{margin:10px 0;-khtml-opacity:0;-moz-opacity:0;-o-transition:all .3s ease-in-out 0s;-webkit-transition:all .3s ease-in-out 0s;background-color:#fff;bottom:-80px;left:0;opacity:0;position:absolute;right:0;transition:all .3s ease-in-out 0s;visibility:hidden}#product #content{position:relative;margin:0 auto}.pts-product{border-bottom:1px solid #dfe1e6}.pts-product .page-content .product-flags{display:none}.prodetail-tile{color:#000;font-size:2rem;margin:0 0 1.11111rem;font-family:Basil Regular,serif;text-transform:none}.product-price{display:inline-block}.proShortDesc{padding-top:1.11111rem;border-top:1px solid #dfe1e6}.proShortDesc p span{font-family:Basil Regular,serif}.proShortDesc ul{list-style:inherit;padding-left:20px}.rtl .proShortDesc ul{padding-right:20px;padding-left:inherit}.product-information{margin-bottom:2.55556rem}.product-information .manufacturer-logo{height:35px}.input-color{position:absolute;opacity:0;cursor:pointer;height:1.11111rem;width:1.11111rem}.input-container{position:relative}.radio-label{display:inline-block;font-weight:600}.product-actions .control-label{display:block;color:#000;font-size:18px;min-width:2.77778rem;vertical-align:middle;margin-bottom:10px}.product-actions .add-to-cart .material-icons{display:none}.product-actions .list-color,.product-actions .product-quantity{margin-bottom:0}.product-variants .list-color .color{width:20px;height:20px;display:inline-block}.product-quantity .qty{height:2.77778rem;padding:0 1.66667rem;margin-bottom:15px;float:left;position:relative;display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;margin-right:.55556rem;border:2px solid #d5dbe6}.rtl .product-quantity .qty{float:right;margin-left:.55556rem;margin-right:inherit}@media (max-width:508px){.product-quantity .qty{margin-right:30%}}.product-quantity .qty>*{display:inline-block;vertical-align:middle;min-width:auto;font-size:12px;text-transform:uppercase;color:#a9b1c0;letter-spacing:3px;line-height:3rem;font-weight:500}.product-quantity .qty .bootstrap-touchspin{position:static;border:0}.product-quantity .qty .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin{width:1.66667rem;height:2.66667rem;background-color:transparent;top:0;text-align:center;padding:0}.product-quantity .add{margin-bottom:.83333rem}.product-quantity .add>*{float:left}.rtl .product-quantity .add>*{float:right}.product-quantity .add .add-to-cart{font-size:21px;font-family:Basil Regular,serif;margin:0}.product-quantity .add .btn-product{width:2.22222rem;height:2.77778rem;font-size:16px;text-align:center;background-color:transparent;color:#dfe1e6;padding:16px 10px;margin-left:10px}.rtl .product-quantity .add .btn-product{margin-right:10px;margin-left:inherit}.product-quantity .add .btn-product.added,.product-quantity .add .btn-product:hover{color:#d07676}.product-quantity .add .btn-product .material-icons{font-size:1.11111rem;margin-top:-2px}.product-quantity #quantity_wanted{border:0;background-color:transparent;height:2.55556rem;padding:0;font-weight:600;width:40px;color:#000;font-size:1rem;text-align:center}.product-description ul{list-style:inherit;padding-left:20px}.rtl .product-description ul{padding-right:20px;padding-left:inherit}.product-discounts{display:block;vertical-align:middle;margin-bottom:1.33333rem}.product-discounts>.product-discounts-title{font-weight:400;font-size:.875rem}.product-discounts>.table-product-discounts thead tr th{width:33%;padding:.625rem 1.25rem;background:#fff;border:.27778rem solid #dfe1e6;text-align:center}.product-discounts>.table-product-discounts tbody tr{background:#dfe1e6}.product-discounts>.table-product-discounts tbody tr:nth-of-type(even){background:#fff}.product-discounts>.table-product-discounts tbody tr td{padding:.625rem 1.25rem;text-align:center;border:.27778rem solid #dfe1e6}.product-prices{margin:0 0 1.66667rem}.product-prices .current-price{font-size:1.66667rem;color:#d07676;font-family:Basil Regular,serif;font-weight:600}.product-prices .tax-shipping-delivery-label{font-size:.72222rem;color:#373a3c;display:inline-block}.product-discount{display:inline-block}.product-discount .regular-price{font-size:1.11111rem;font-weight:400;margin-left:5px;text-decoration:line-through}.rtl .product-discount .regular-price{margin-right:5px;margin-left:inherit}.has-discount{display:inline-block;font-size:1.11111rem;font-weight:400}.has-discount .discount{color:#fff;font-weight:600;padding:.27778rem .625rem;font-size:1rem;margin-left:.625rem;text-transform:uppercase;display:none}.product-unit-price{font-size:.8125rem;margin-bottom:0}.product-cover{margin-bottom:.72222rem;position:relative;-moz-order:2;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-ms-order:2}.product-cover img{background:#fff}.product-cover .layer{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;background:#fff;position:absolute;left:0;top:0;opacity:0;background:hsla(0,0%,100%,.7);text-align:center;cursor:pointer}.product-cover .layer:hover{opacity:1}.product-cover .layer .zoom-in{font-size:5.55556rem;color:#fff}#product-modal .modal-content{background:transparent;border:none;padding:0}#product-modal .modal-content .modal-body{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;background-color:#fff}#product-modal .modal-content .modal-body .product-cover-modal{max-width:100%;background:#fff}#product-modal .modal-content .modal-body .image-caption{padding-top:.83333rem}#product-modal .modal-content .modal-body .image-caption p{margin-bottom:0}#product-modal .modal-content .modal-body .thumbnails{position:relative;margin-left:.83333rem}.rtl #product-modal .modal-content .modal-body .thumbnails{margin-right:.83333rem;margin-left:inherit}#product-modal .modal-content .modal-body .mask{position:relative;overflow:hidden;height:100%;z-index:1;margin-top:20px}#product-modal .modal-content .modal-body .mask.nomargin{margin-top:0}#product-modal .modal-content .modal-body .product-images img{max-width:100%;cursor:pointer}#product-modal .modal-content .modal-body .arrows i{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;cursor:pointer;width:1.38889rem;height:1.38889rem;line-height:1.33333rem;border-radius:50%;border:0;left:0;right:0;font-size:.88889rem;color:#666;margin:auto;position:absolute;background-color:#ebebeb;z-index:99}#product-modal .modal-content .modal-body .arrows i:hover{background-color:#d07676;color:#fff}#product-modal .modal-content .modal-body .arrows i.arrow-up{top:-5px}#product-modal .modal-content .modal-body .arrows i.arrow-down{bottom:-5px}#blockcart-modal{color:#232323}#blockcart-modal .modal-header{background:#4cbb6c}#blockcart-modal .modal-body{background:#dfe1e6;padding:2.77778rem 1.66667rem}#blockcart-modal .modal-body .divide-right span{display:inline-block;margin-bottom:.27778rem}#blockcart-modal .modal-dialog{max-width:63.33333rem;width:100%}#blockcart-modal .product-image{width:11.66667rem}#blockcart-modal .modal-title{font-weight:600;color:#fff;font-size:1rem}#blockcart-modal .modal-title i.material-icons{margin-right:1.875rem}#blockcart-modal .product-name{color:#d07676;font-size:1rem}#blockcart-modal .cart-products-count{font-size:1rem}#blockcart-modal .cart-content{padding-left:2.5rem}.rtl #blockcart-modal .cart-content{padding-right:2.5rem;padding-left:inherit}#blockcart-modal .cart-content button{margin-right:.27778rem;line-height:1rem}.rtl #blockcart-modal .cart-content button{margin-left:.27778rem;margin-right:inherit}#blockcart-modal .divide-right{border-right:1px solid #999}.rtl #blockcart-modal .divide-right{border-left:1px solid #999;border-right:0}.product-images>li.thumb-container{display:block;padding:0;margin-bottom:10px}.product-images>li.thumb-container>.thumb{max-width:100%;cursor:pointer;filter:alpha(opacity=50);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";-moz-opacity:.5;-khtml-opacity:.5;opacity:.5}.product-images>li.thumb-container>.thumb.selected,.product-images>li.thumb-container>.thumb:hover{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1}@media (min-width:576px){#main .images-container{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex}}#main .images-container .js-qv-mask{overflow:hidden;text-align:center}@media (min-width:576px){#main .images-container .js-qv-mask{height:520px;-moz-order:1;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-ms-order:1;margin-right:10px}.rtl #main .images-container .js-qv-mask{margin-left:10px;margin-right:inherit}}#main .images-container .js-qv-mask .product-images{display:block}@media (max-width:575px){#main .images-container .js-qv-mask .product-images>li.thumb-container{width:20%;float:left;border:2px solid #fff}}.scroll-box-arrows{display:none}.scroll-box-arrows.scroll{display:block;position:absolute;left:40px;height:30rem}.rtl .scroll-box-arrows.scroll{right:40px;left:auto}.scroll-box-arrows i{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;cursor:pointer;width:1.33333rem;height:1.33333rem;line-height:1.33333rem;border-radius:50%;border:0;font-size:.88889rem;color:#666;margin-left:-12px;left:50%;position:absolute;background-color:#ebebeb;z-index:9;text-align:center}.scroll-box-arrows i:focus,.scroll-box-arrows i:hover{color:#fff;background-color:#d07676}.scroll-box-arrows .left{bottom:0;display:none}@media (min-width:576px){.scroll-box-arrows .left{display:block}}.scroll-box-arrows .right{right:0;display:none}#product-availability{display:inline-block;font-weight:400;line-height:48px;margin-left:.625rem}.rtl #product-availability{margin-right:.625rem;margin-left:inherit}#product-availability .material-icons{line-height:inherit}#product-availability .product-available{color:#4cbb6c;line-height:16px}#product-availability .product-unavailable{color:#ff9a52;line-height:16px}#product-availability .product-last-items{color:#ff9a52}#product-details .label{font-size:1rem;color:#232323;font-weight:700}#product-details>div{margin-bottom:15px}.product-features{margin-top:1.25rem;margin-left:.27778rem}.rtl .product-features{margin-right:.27778rem;margin-left:inherit}.product-features>dl.data-sheet{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-moz-align-items:flex-start;-ms-align-items:flex-start;-o-align-items:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.product-features>dl.data-sheet dd.value,.product-features>dl.data-sheet dt.name{-moz-flex:1 0 40%;-ms-flex:1 0 40%;-webkit-box-flex:1;flex:1 0 40%;font-weight:400;background:#dfe1e6;padding:.625rem;margin-right:.625rem;min-height:2.22222rem;word-break:break-all}.product-features>dl.data-sheet dd.value:nth-of-type(even),.product-features>dl.data-sheet dt.name:nth-of-type(even){background:#dfe1e6}.product-features>dl.data-sheet dt.name{text-transform:capitalize}.product-variants>.product-variants-item{margin:0 0 1.11111rem}.product-variants>.product-variants-item select{border:1px solid #dfe1e6;height:2.22222rem;width:100%;display:inline-block;padding:5px 15px;background-color:transparent}.product-variants>.product-variants-item ul li{margin-right:1.11111rem}.rtl .product-variants>.product-variants-item ul li{margin-left:1.11111rem;margin-right:inherit}.product-variants>.product-variants-item ul.list-color li{margin-right:.55556rem}.rtl .product-variants>.product-variants-item ul.list-color li{margin-left:.55556rem;margin-right:inherit}.product-variants>.product-variants-item ul.list-color .input-color+span{border:2px solid #fff;font-weight:700;padding:5px 15px;cursor:pointer;box-shadow:0 0 0 1px #dfe1e6}.product-variants>.product-variants-item ul.list-color .input-color+span .sr-only{height:auto;margin:0;overflow:hidden;position:relative;width:auto}.product-variants>.product-variants-item ul.list-color .input-color+span.color{padding:0}.product-variants>.product-variants-item ul.list-color .input-color+span.color .sr-only{width:0;height:0;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;font-size:0}.product-variants>.product-variants-item ul.list-color .input-color:checked+span,.product-variants>.product-variants-item ul.list-color .input-color:hover+span{box-shadow:0 0 0 1px #d07676;position:relative;color:#d07676}.product-variants>.product-variants-item .color{margin-right:0;margin-top:0}.rtl .product-variants>.product-variants-item .color{margin-left:0;margin-right:inherit}.product-add-to-cart{position:relative;padding-top:2.22222rem}.product-add-to-cart:before{content:"............................................................................................................................................................................................................................................................................................................................................................................";position:absolute;left:0;top:-5px;line-height:0;font-size:30px;width:100%;height:10px;overflow:hidden;white-space:nowrap;letter-spacing:4px;color:#b7c1d4}.product-add-to-cart #product-availability{display:none}.product-customization{margin:2.5rem 0}.product-customization .product-customization-item{margin:1.25rem 0}.product-customization .product-message{background:#dfe1e6;border:none;width:100%;height:2.77778rem;resize:none;padding:.55556rem}.product-customization .file-input{width:100%;opacity:0;left:0;z-index:1;cursor:pointer;overflow:hidden;position:absolute}.rtl .product-customization .file-input{right:0;left:auto}.product-customization .custom-file{position:relative;background:#dfe1e6;width:100%;text-indent:.55556rem;display:block;color:#999;padding:5px 10px}.product-customization .custom-file button{z-index:0;position:absolute;right:0;line-height:.83333rem;top:0;height:2.5rem}.rtl .product-customization .custom-file button{left:0;right:auto}.product-customization small{color:#999}.product-accessories{margin-bottom:2.77778rem}.product-pack{margin-top:2.5rem}.product-pack .pack-product-container{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.product-pack .pack-product-container .pack-product-name{-moz-flex:0 0 50%;-ms-flex:0 0 50%;-webkit-box-flex:0;flex:0 0 50%;font-size:.77778rem;color:#999}.product-pack .pack-product-container .pack-product-quantity{border-left:2px solid #dfe1e6;padding-left:.625rem}.product-pack .pack-product-container .pack-product-name,.product-pack .pack-product-container .pack-product-price,.product-pack .pack-product-container .pack-product-quantity{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.product-refresh{margin-top:1.25rem}.social-sharing{display:block;margin-top:1.33333rem;margin-bottom:2.55556rem}.social-sharing ul{margin-bottom:0}.social-sharing li{display:inline-block;vertical-align:middle}.social-sharing li a{height:1.44444rem;width:1.38889rem;display:block;position:relative;color:#999;font-weight:400}.social-sharing li a:before{display:inline-block;content:"";width:1.38889rem;height:1.44444rem;position:absolute;left:0;right:0;top:0;bottom:0;font-family:fontello;background-image:none;font-size:.77778rem}.social-sharing li a:hover{color:#d07676}.social-sharing li a span{display:none}.social-sharing li.facebook a:before{content:"\F09A"}.social-sharing li.twitter a:before{content:"\F099 "}.social-sharing li.googleplus a:before{content:"\F0D5"}.social-sharing li.pinterest a:before{content:"\F231 "}.products-selection .title{color:#373a3c}#blockcart-modal .cart-content .btn{margin-bottom:.625rem;line-height:1.11111rem}@media (max-width:991px){.product-cover img{width:100%}#product-modal .modal-content .modal-body{-moz-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-ms-flex-direction:column;margin-left:0}#product-modal .modal-content .modal-body img.product-cover-modal{width:100%}#product-modal .modal-content .modal-body .arrows{display:none}#product-modal .modal-content .modal-body .image-caption{width:100%}#blockcart-modal .modal-dialog{width:calc(100% - 20px)}#blockcart-modal .modal-body{padding:1.66667rem}}@media (max-width:767px){#blockcart-modal .divide-right{border-right:none}#blockcart-modal .modal-body{padding:.88889rem}}.cart-grid{margin-bottom:1rem}.cart-item{padding:1rem 0}.cart-summary-line:after{content:"";display:table;clear:both}.cart-summary-line .value{color:#232323;float:right}.cart-grid-body{margin-bottom:.75rem}.cart-grid-body #main,.cart-grid-body .card-block,.cart-grid-body .cart-overview{padding:1rem}.cart-grid-right .promo-discounts .cart-summary-line .label{color:#999}.cart-grid-right .promo-discounts .cart-summary-line .label .code{text-decoration:underline;cursor:pointer}.block-promo .promo-code .alert-danger{position:relative;margin-top:1.25rem;background:#ff4c4c;color:#fff;display:none}.block-promo .promo-code form{text-align:center}.block-promo .promo-input{color:#232323;border:1px solid #999;height:2.5rem;text-indent:.625rem;width:50%}.block-promo .promo-code-button{padding-left:1.25rem;margin-bottom:1.25rem;display:inline-block}.block-promo.promo-highlighted{padding:1.25rem;padding-bottom:0;margin-bottom:0}.product-line-grid-body>.product-line-info>.label{padding:0;line-height:inherit;text-align:left;white-space:inherit;color:#be7374}.product-line-grid-body>.product-line-info>.unit-price-cart{padding-left:.3125rem;font-size:.875rem;color:#999}.product-line-grid-right .cart-line-product-actions,.product-line-grid-right .product-price{color:#a9b1c0;font-weight:700;letter-spacing:1px;line-height:36px}.product-line-grid-right .cart-line-product-actions .remove-from-cart,.product-line-grid-right .product-price .remove-from-cart{color:#232323;display:inline-block;margin-top:.3125rem}@media (max-width:767px){.product-line-grid-body{margin-bottom:1rem}}@media (max-width:575px){.cart-items{padding:1rem 0}.cart-item{border-bottom:1px solid #dfe1e6}.cart-item:last-child{border-bottom:0}.cart-grid-body .cart-overview{padding:0}.cart-grid-body .no-items{padding:1rem;display:inline-block}.product-line-grid-left{padding-right:0!important}}@media (max-width:360px){.product-line-grid-right .price,.product-line-grid-right .qty{width:100%}}.quickview .modal-dialog{width:calc(100% - 30px);max-width:64rem}.quickview .modal-content{background:#dfe1e6;min-height:28.13rem}.quickview .modal-header{border:none;padding:.625rem}.quickview .modal-body{min-height:23.75rem}.quickview .modal-footer{border-top:1px solid hsla(0,0%,60%,.3)}.quickview .layer{display:none}.quickview .product-cover img{width:95%}.quickview .images-container{display:-webkit-box;display:-ms-flexbox;display:flex;z-index:1;min-height:21.88rem}.quickview .images-container .product-images>li.thumb-container>.thumb{width:100%;max-width:4.938rem;margin-bottom:.8125rem;background:#fff}.quickview .mask{width:35%;max-height:22.5rem;overflow:hidden;margin-left:.625rem}.quickview .arrows{position:absolute;top:0;bottom:0;max-height:22.5rem;right:5rem;z-index:0}.quickview .arrows .arrow-up{margin-top:-3.125rem;cursor:pointer;opacity:.2}.quickview .arrows .arrow-down{position:absolute;bottom:-1.875rem;cursor:pointer}.quickview .social-sharing{margin-top:0;margin-left:2.5rem}.quickview .product-quantity .buy-now{height:44px;line-height:40px;margin:0 10px 0 0;padding:0 20px;text-transform:uppercase;font-size:21px}.contact-rich{color:#999;margin-bottom:2rem;word-wrap:break-word}.contact-rich h4{text-transform:uppercase;color:#232323;margin-bottom:2rem}.contact-rich .block{height:auto;overflow:hidden}.contact-rich .block .icon{float:left;width:3.5rem}.contact-rich .block .icon i{font-size:2rem}.contact-rich .block .data{color:#232323;font-size:.875rem;width:auto;overflow:hidden}.contact-rich .block .data.email{padding-top:.375rem}.contact-form{background:#fff;padding:1rem;color:#999;width:100%}.contact-form h3{text-transform:uppercase;color:#232323}#pagenotfound #main .page-header,#products #main .page-header{margin:2rem 0 3rem}#pagenotfound #main .page-content,#products #main .page-content{margin-bottom:10rem}#pagenotfound .page-not-found,#products .page-not-found{box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)";background:#fff;padding:1rem;font-size:.875rem;color:#999;max-width:570px;margin:0 auto}#pagenotfound .page-not-found h4,#products .page-not-found h4{font-size:1rem;font-weight:700;margin:.5rem 0 1rem}#pagenotfound .page-not-found .search-widget,#products .page-not-found .search-widget{float:none}#pagenotfound .page-not-found .search-widget input,#products .page-not-found .search-widget input{width:100%}.customization-modal .modal-content{border-radius:0;border:1px solid #dfe1e6}.customization-modal .modal-content .modal-body{padding-top:0}.customization-modal .modal-content .modal-body .product-customization-line{padding-bottom:.9375rem;padding-top:.9375rem;border-bottom:1px solid #dfe1e6}.customization-modal .modal-content .modal-body .product-customization-line .label{font-weight:700;text-align:right}.customization-modal .modal-content .modal-body .product-customization-line:last-child{padding-bottom:0;border-bottom:0}.btn{font-size:.77778rem}.btn-default{border:2px solid #dfe1e6;background:#fff;color:#222;padding:.65rem 1.3rem}.btn-default:hover{background-color:#d07676;border-color:#d07676;color:#fff}.btn-primary{border:0}.btn-primary:hover{border-color:#dfe1e6;background-color:#dfe1e6}.btn-black{background-color:#000;color:#fff}.btn-black:hover{background-color:#d07676;color:#fff}.btn-outline-pink{background:transparent;font-size:12px;text-transform:uppercase;font-weight:700;letter-spacing:2px;font-family:Basil Regular,serif;padding:4px 8px;position:relative;margin:auto;text-align:center;min-width:80px}.btn-outline-pink:before{position:absolute;content:"";width:80px;height:0;border-bottom:2px dashed #f8d4ce;left:0;right:0;bottom:0;margin:auto}.rtl .fa.icon-left,.rtl .fa.icon-right,.rtl .material-icons.icon-left,.rtl .material-icons.icon-right{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg)}sup{color:red}#search_filters form{padding-top:5px}#search_filters.block .title_block{margin-bottom:5px}#search_filters .btn-holder .btn{margin-top:10px}.af_filter,.af_filter.type-3.closed{margin-bottom:5px;border-bottom:1px solid #dadada;padding-bottom:5px}.af_filter.type-3{padding-bottom:10px}.af_filter li{padding:5px 0;margin:0;position:relative}.af_filter li,.hide-zero-matches .no-matches.active,.hide-zero-matches .no-matches.has-customer-filter{display:block}.hide-zero-matches .no-matches{display:none}.af_filter label{font-weight:400;text-align:left;cursor:pointer;display:block}.af_filter ul{margin:0}.af_filter.color-group ul{overflow:visible;max-height:none}.af-parent-category>ul{margin:0 0 0 15px;max-height:100%}.af_filter .af-toggle-child{padding:5px;font:700 18px/0 monospace;display:none}.af_filter.foldered .af-parent-category.open>label .af-toggle-child .hidden-on-open,.af_filter.foldered .af-parent-category>label .af-toggle-child .visible-on-open,.af_filter.foldered .af-parent-category>ul{display:none}.af_filter.foldered .af-parent-category.open>ul{display:block}.af_filter.foldered .af-parent-category.open>label .af-toggle-child .visible-on-open,.af_filter.foldered .af-toggle-child{display:inline-block}.af_filter .name{padding-left:5px}.af_filter .count{color:#ccc}.af-total-count{opacity:.5}.af-total-count:before,.af_filter .count:before{content:"("}.af-total-count:after,.af_filter .count:after{content:")"}.af.checkbox,.af.radio,.af_filter .checker{display:inline-block;vertical-align:top;margin:2px 0 0}.af_filter select{width:100%;padding:5px;border:1px solid #dadada}.dim-zero-matches .no-matches>label{opacity:.4}.color_attribute .checkbox,.color_attribute .styled-checkbox{display:none}.af_filter .color_attribute{padding:1px;float:left;margin:2px 4px 2px 0;position:relative;border:1px solid #dadada}.dim-zero-matches .af_filter .color_attribute.no-matches:before{content:"";position:absolute;background:#fff;height:2px;display:block;left:8px;right:8px;top:50%;margin-top:-1px;-webkit-transform:rotate(45deg);transform:rotate(45deg);z-index:10}.dim-zero-matches .af_filter .color_attribute.no-matches:after{content:"";position:absolute;display:block;border:2px solid #fff;border-radius:100%;left:7px;right:7px;top:7px;bottom:7px;z-index:10}.af_filter li.color_attribute label{float:left;cursor:pointer;width:25px;height:25px;margin:0}.af_filter li.color_attribute label *{display:none}.af_filter li.color_attribute.active{border:3px solid #bbb}.af_filter li.color_attribute.active label{width:21px;height:21px}.color_attribute input{visibility:hidden;position:absolute}.af_filter .slider{margin-bottom:10px}.af_filter .slider-bar{margin:5px 0 14px;padding:0 7px;clear:both}.slider .slider_value{display:inline-block;float:left;margin-bottom:5px;border:1px solid transparent;padding:1px 3px;cursor:pointer;position:relative}.af_filter:hover .slider_value,.slider .slider_value.edit{border-color:#ddd}.slider .slider_value.to_display{float:right}.slider .slider_value.edit>span,.slider .slider_value .input-text{display:none}.slider .slider_value.edit .input-text{display:inline-block;border:0;padding:0;max-width:50px;outline:none;line-height:1em}.selectedFilters>div{background:#eee;padding:5px 15px 5px 5px;position:relative}.selectedFilters .clearAll{background:#e1e1e1}.selectedFilters a{cursor:pointer;position:absolute;right:0;top:0;padding:7px;color:#666;font-size:1em}#search_filters .unlocked,#search_filters .unlocked a{color:#999}.dynamic-loading{text-align:center;margin-bottom:2em;position:relative}.dynamic-loading.infinite-scroll{margin:0}.loading-indicator{position:absolute;left:0;right:0;bottom:1em}.dynamic-loading.infinite-scroll .loadMore{display:none}.dynamic-loading.loading .loading-indicator,.dynamic-loading .loadMore{visibility:visible}.dynamic-loading .loading-indicator,.dynamic-loading.loading .loadMore{visibility:hidden}.hidden-name .name{display:none}.customer-filter-label.for-select{float:left;line-height:30px}.selector-with-customer-filter{padding-left:15px}.btn.full-width{width:100%}.force-hidden{display:none}.af-basic-layout{margin-top:15px}.af-basic-layout .showall,.dim-zero-matches .no-matches>label .count,.hide-counters .count{display:none}#search_filters a,#search_filters a:focus{text-decoration:none}.af_filter{position:relative}.af_filter.type-1 .af_filter_content,.af_filter.type-2 .af_filter_content{max-height:300px;overflow-y:auto}.af_filter.foldered .af_filter_content,.af_filter.full .af_filter_content{max-height:none}.af_filter .toggle-cut-off{position:absolute;bottom:-1em;font-size:1em;text-align:center;display:none;left:0;right:0;line-height:2em}.af_filter .toggle-cut-off span{padding:0 5px;background:#fff;color:#999}.af_filter.expandable .toggle-cut-off{display:block}.af_filter.expandable:not(.full) .af_filter_content{margin-bottom:10px}.full .toggle-cut-off .less,.toggle-cut-off .more{display:inline-block}.full .toggle-cut-off .more,.toggle-cut-off .less{display:none}.af_subtitle{cursor:pointer;position:relative;margin:0;padding:10px 0;font-size:1.1em;font-weight:700}.af_subtitle:before{content:"";position:absolute;top:15px;right:10px;border:2px solid #ccc;width:7px;height:7px;border-width:2px 0 0 2px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.af_filter.expandable.closed .toggle-cut-off,.closed .af_filter_content{display:none}.closed .af_subtitle:before{border-width:0 2px 2px 0;top:13px}.special .af_filter_content{display:block;margin-top:5px}@media (min-width:480px){.horizontal-layout{margin-bottom:15px}.horizontal-layout .block_content{margin:0 -15px}.horizontal-layout:after{content:"";display:block;clear:both}.horizontal-layout .af_subtitle:before,.horizontal-layout .from_display .suffix,.horizontal-layout .selectedFilters,.horizontal-layout .title_block,.horizontal-layout .to_display .prefix{display:none}.horizontal-layout .from_display{margin-right:10px}.horizontal-layout .from_display:after{content:"-";position:absolute;top:0;right:-9px}.horizontal-layout .slider-values{float:right;margin-top:-60px}.horizontal-layout .af_filter .slider{margin:11px 0}.horizontal-layout .af_filter{float:left;width:50%;padding:0 15px;border:0;height:75px;overflow-y:auto}.horizontal-layout .af_filter.special{padding-top:32px}#search_filters.horizontal-layout .btn-holder{float:left;width:50%;padding:35px 15px 0}#search_filters.horizontal-layout .btn-holder .btn{margin:0}}@media (min-width:768px){#search_filters.horizontal-layout .btn-holder,.horizontal-layout .af_filter{width:33%}}@media (min-width:1200px){#search_filters.horizontal-layout .btn-holder,.horizontal-layout .af_filter{width:25%}}.has-compact-filter.show-filter{overflow:hidden;position:fixed;width:100%}.has-compact-filter #search_filters{opacity:1;z-index:10001;top:0;width:100%;right:0;-webkit-transform:translateX(100%);transform:translateX(100%);background:#fff;border-left:1px solid #ddd;height:100%;padding:0;overflow:visible}.has-compact-filter #search_filters.animation-ready{-webkit-transition:all .2s;transition:all .2s}.has-compact-filter.show-filter #search_filters{-webkit-transform:translateX(40px);transform:translateX(40px)}.has-compact-filter .block_content{padding:10px 50px 10px 10px;max-height:100%;overflow-y:auto}.has-compact-filter.show-filter .af_filter.type-1 .af_filter_content,.has-compact-filter.show-filter .af_filter.type-2 .af_filter_content,.has-compact-filter.show-filter .block_content{-webkit-overflow-scrolling:touch}.has-compact-filter .block_content form{padding-bottom:60px}.has-compact-filter #search_filters .btn-holder{position:absolute;bottom:0;left:0;right:40px;padding:15px 10px;background:#eee;z-index:10}#search_filters .compact-toggle{position:absolute;left:-41px;top:50%;margin-top:-20px;width:40px;height:40px;line-height:42px;text-align:center;font-size:21px;padding:0;box-shadow:none;display:none}.has-compact-filter #search_filters .compact-toggle{display:block}.has-compact-filter.show-filter .icon-filter.compact-toggle:before{content:"";border:2px solid #fff;border-width:2px 2px 0 0;display:block;height:12px;width:12px;margin:14px 10px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.af-compact-overlay{display:none}.has-compact-filter .af-compact-overlay{display:block;position:fixed;opacity:0;margin:0;-webkit-transition:all .3s;transition:all .3s}.has-compact-filter.show-filter .af-compact-overlay{background:#333;opacity:.3;top:0;right:0;bottom:0;left:0;z-index:10000}.has-compact-filter #search_filters .title_block{display:none}.btn-bounce{-webkit-animation:btn-bounce .2s;animation:btn-bounce .2s}@-webkit-keyframes btn-bounce{20%{-webkit-transform:translate3d(0,-2px,0);transform:translate3d(0,-2px,0)}40%{-webkit-transform:translateZ(0);transform:translateZ(0)}60%{-webkit-transform:translate3d(0,2px,0);transform:translate3d(0,2px,0)}80%{-webkit-transform:translate3d(0,-2px,0);transform:translate3d(0,-2px,0)}}@keyframes btn-bounce{20%{-webkit-transform:translate3d(0,-2px,0);transform:translate3d(0,-2px,0)}40%{-webkit-transform:translateZ(0);transform:translateZ(0)}60%{-webkit-transform:translate3d(0,2px,0);transform:translate3d(0,2px,0)}80%{-webkit-transform:translate3d(0,-2px,0);transform:translate3d(0,-2px,0)}}.icon-times:before{content:"\F00D"}.pull-left{float:left}.pull-right{float:right}.hidden{display:none}.clear-both{clear:both}#search_filters{box-shadow:2px 2px 11px 0 rgba(0,0,0,.1);margin-bottom:1.5625rem;background:#fff;padding:1.25rem}.af_subtitle{font-size:1rem}.dynamic-product-count{display:block;margin:10px 0}.manage-permanent-filters{font-size:12px;border:1px solid;text-overflow:ellipsis;overflow:hidden}@media (min-width:480px){.horizontal-layout .af_filter{height:76px}.horizontal-layout .af_filter.special{padding-top:38px;line-height:1}.horizontal-layout .af_filter .slider{margin-top:15px}.horizontal-layout .slider-values{margin-top:-67px}}.page-my-account #content .links a.af i{height:0}.slider-container .back-bar{height:7px;position:relative;background:#eee;border-radius:5px}.slider-container .back-bar .selected-bar{position:absolute;height:100%;background:#ccc}.slider-container .back-bar .pointer{position:absolute;top:-5px;margin-left:-1px;width:16px;height:16px;border-radius:100%;background:#e7e7e7;cursor:pointer;z-index:2;border:1px solid #aaa;-ms-touch-action:none;touch-action:none}.slider-container .back-bar .pointer:before{content:"";position:absolute;width:40px;height:40px;top:-12px;right:-12px}.slider-container .back-bar .pointer.last-active{z-index:3}.slider-container .clickable-dummy{cursor:pointer;position:absolute;width:100%;height:100%;z-index:1}.slider-container .scale{display:none}.slider-container.slider-readonly .clickable-dummy,.slider-container.slider-readonly .pointer{cursor:auto}#search_filters.block .title_block{font-family:Sacramento,cursive;font-size:60px;text-align:center;font-weight:300;line-height:80px;padding:20px 0;margin:0}#search_filters.vertical-layout{box-shadow:none;border-radius:10px}.has-compact-filter #search_filters.vertical-layout{border-radius:0}.has-compact-filter ._show_1e.wrap_mW{z-index:1000}.selectedFilters{border:3px solid #fbe6ce;line-height:1.5}.selectedFilters .clearAll{background:#fbe6ce}.selectedFilters .clearAll,.selectedFilters .clearAll a{color:#d07676;letter-spacing:1px}.selectedFilters>div.cf{background:none}.af_subtitle{color:#afb1c0;text-transform:uppercase;font-size:16px;letter-spacing:1px}.af_filter,.af_filter.type-3.closed{border:0}.af_filter.type-3.closed:after,.af_filter:after{content:"............................................";font-family:monospace;line-height:1;font-size:18px;color:#b7c1d4;overflow:hidden;display:block}.af_filter .count{float:right;color:#afb1c0}.af_filter .count:after,.af_filter .count:before{content:""}.af_filter li{padding:0}.af_subtitle:before{right:3px}#search_filters .compact-toggle{border:0}.af-checkbox-label,.af-radio-label{padding-left:18px;position:relative;line-height:1.5}.af.checkbox,.af.radio{display:none}.active>.af-checkbox-label:before,.active>.af-radio-label:before{font-family:fontello;content:"\F004";color:#be7374;z-index:1;position:absolute;left:3px;top:6px;font-size:10px;line-height:10px;-webkit-animation:checkbox-bounce .3s;animation:checkbox-bounce .3s}.active>.af-radio-label:before{content:"";width:7px;height:7px;border-radius:100%;display:block;background:#be7374;top:8px;left:4px;-webkit-animation:radio-bounce .3s;animation:radio-bounce .3s}.af-checkbox-label:after,.af-radio-label:after{content:"";position:absolute;width:15px;height:15px;left:0;top:4px;background:#fbe6ce;border-radius:3px}.af-radio-label:after{border-radius:100%}.af_filter .customer-filter-label{padding-left:4px}.slider-container .back-bar .pointer{background:#fbe6ce;border:3px solid #d07676}.slider-container .back-bar .selected-bar{background:#d07676}.block_newsletter form{display:block;width:100%;margin:9px 0}.block_newsletter .form-control{font-size:.77778rem;background:transparent;border-width:2px;margin-bottom:20px}.block_newsletter .alert{margin-top:.55556rem;width:100%;clear:both}.block_newsletter .description{color:#999}.block_newsletter .btn-outline-pink{display:inline-block}.block_newsletter .btn-outline-pink .btn{display:block;text-transform:uppercase;font-weight:100;background:transparent;color:#000;letter-spacing:2px;padding:0}.block_newsletter .btn-outline-pink .btn:hover{color:#d07676}#fancybox-map{text-transform:uppercase;font-weight:900;color:#d07676!important;font-size:11px}#fancybox-map span{font-size:9px;margin-right:5px}.rtl #fancybox-map span{margin-left:5px;margin-right:inherit}.pts-contact-footer h5{color:#bbb;text-transform:uppercase;font-size:13px;font-weight:500;padding-top:10px}.ptsmaplocator{margin-bottom:30px}.ptsmaplocator .page-subheading{font-size:36px;line-height:38px;background-color:transparent;padding:0;text-align:center}.ptsmaplocator .page-subheading span{color:#333;display:inline-block;line-height:18px;padding:20px 15px;position:relative}.ptsmaplocator .page-subheading span:before{background-color:#4f4f4f;bottom:-1px;content:"";height:3px;left:50%;margin-left:-15px;position:absolute;width:30px}.ptsmaplocator .box-content{padding:0}.ptsmaplocator .page-subheading{display:none}.ptsmaplocator .maplocator{margin-bottom:0}.blockcart .header{display:inline-block;position:relative}.ps_categoryproducts{margin-bottom:2.77778rem!important;border-top:1px solid #dfe1e6;padding-top:15px}#contact-link{text-align:center}#contact-link>.media{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#contact-link .fa{color:#d07676;border:1px solid #d07676;font-size:15px;width:30px;height:30px;text-align:center;border-radius:50%;line-height:30px}#contact-link .media-body{padding-top:5px;width:auto}#contact-link .text{font-size:12px;color:#999;display:block;line-height:.77778rem}#contact-link .phone{color:#000;font-size:.88889rem;font-weight:500;line-height:.88889rem}.block-lastest-cms{display:block;width:100%;padding:15px 0}.rtl #to_top{left:40px;right:auto}#to_top:focus,#to_top:hover{text-decoration:inherit}#to_top:before{content:"\EA08";font-family:fontello;font-size:1rem;top:-20px;position:absolute;-webkit-animation:totop 1s linear 1s infinite alternate;animation:totop 1s linear 1s infinite alternate;left:50%;margin-left:-8px}#to_top span{display:block;text-align:center;color:#000;font-size:1.88889rem;position:relative}#psstaticcontents{color:#000}#psstaticcontents p{margin-bottom:0}#psstaticcontents .feature-box .fa{width:50px;height:50px;display:block;font-size:0}#psstaticcontents .feature-box .fa:before{display:none}#psstaticcontents .feature-box .fbox-title{color:#999;margin-bottom:0;padding-top:10px}#psstaticcontents .feature-box .description{font-size:20px;line-height:24px}#header .cart_block{top:auto!important}.blockcart .header{display:inline-block;position:relative;padding-left:65px;background-image:url(../css/52b68ebefba9b93dbb07cf5f144c1b8b.png);background-repeat:no-repeat;background-position:left 0}.rtl .blockcart .header{padding-right:65px;padding-left:inherit;background-position:right 0}.blockcart .shopping-cart-group{border:1px solid #dfe1e6;position:relative;padding:.44444rem .66667rem;display:inline-block}.blockcart .shopping-cart-group span{display:block;border-radius:10px;background-color:#d07676;color:#fff;position:absolute;right:-.33333rem;top:-.27778rem;line-height:.55556rem;font-size:.55556rem;text-align:center;padding:.16667rem .27778rem}.rtl .blockcart .shopping-cart-group span{left:-.33333rem;right:auto}.blockcart .shopping-cart{display:none}.blockcart .cart-title{font-family:Basil Regular,serif;color:#d07676;line-height:20px;display:block}.blockcart .cart-products-count{border-radius:50%;width:18px;height:18px;line-height:18px;position:absolute;top:12px;left:15px;font-size:12px;text-align:center;color:#fff;background:#d07676}.rtl .blockcart .cart-products-count{right:15px;left:auto}.blockcart .space-line{margin:0 2px}.blockcart .cart-products-price{font-size:1.11111rem;display:block;line-height:1.33333rem;color:#000}.blockcart .ps_cartcontent{position:absolute;right:0;visibility:hidden;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;background:#fff;border:1px solid #dfe1e6;padding:1.11111rem;width:16.66667rem;top:5.55556rem;z-index:10;box-shadow:0 0 2px #ccc;font-size:16px}.rtl .blockcart .ps_cartcontent{left:0;right:auto}.blockcart .ps_cartcontent .cart-name{margin-bottom:5px;font-size:14px}.blockcart .ps_cartcontent .cart-name a{color:#aaa;font-weight:400}.blockcart .ps_cartcontent .cart-name a:hover{color:#d07676}.blockcart .ps_cartcontent .cart-price{font-size:.88889rem}.blockcart .ps_cartcontent .car-product{position:relative;padding-right:.55556rem;padding-top:.55556rem;padding-bottom:.55556rem}.rtl .blockcart .ps_cartcontent .car-product{padding-left:.55556rem;padding-right:inherit}.blockcart .ps_cartcontent .car-product>*{display:block}.blockcart .ps_cartcontent .car-product .cart-image{margin-right:15px}.rtl .blockcart .ps_cartcontent .car-product .cart-image{margin-left:15px;margin-right:inherit}.blockcart .ps_cartcontent .remove-from-cart{position:absolute;right:-5px;top:.27778rem;color:red;font-size:12px}.rtl .blockcart .ps_cartcontent .remove-from-cart{left:-5px;right:auto}.blockcart .ps_cartcontent .cart-quantity label{margin-right:.27778rem}.rtl .blockcart .ps_cartcontent .cart-quantity label{margin-left:.27778rem;margin-right:inherit}.blockcart .ps_cartcontent .cart-group{border-top:1px solid #dfe1e6;border-bottom:1px solid #dfe1e6;padding:.55556rem 0;margin-bottom:.83333rem}.blockcart .ps_cartcontent .cart_total{font-weight:700}.blockcart .ps_cartcontent .cart-buttons a{display:block}.blockcart:hover .ps_cartcontent{visibility:visible;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;top:2.22222rem}.block{margin-bottom:30px;position:relative}.block .title_block{position:relative;margin:0;line-height:20px;background:transparent;color:#000;font-family:Basil Regular,serif;font-size:rem(18px);padding:rem(12px) rem(0);font-weight:700;border-bottom:0}.block .block_content:after{content:"";display:table;clear:both}.page_title,.title-sidebar,.title_homepage{font-family:Nickainley Normal;font-size:60px;text-align:center;font-weight:400;position:relative;line-height:80px;padding:20px 0}.page_title:before,.title-sidebar:before,.title_homepage:before{content:"...............................................................................................................................................";position:absolute;line-height:0;font-size:48px;color:#d5dbe6;overflow:hidden;white-space:nowrap;width:230px;bottom:0;margin:auto;left:0;right:0;height:15px;max-width:100%}.blog-title{font-size:1.66667rem}.block-header-primary .widget-heading{padding:10px 0;margin-top:20px}.block-header-primary .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-primary .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-primary .title_block{color:#fff;background-color:#d07676;border-color:#d07676;padding:20px;font-size:18px}.block-header-primary .block-item2 .title_block{background-color:#cb6767}.block-header-primary .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-primary .owl-carousel-play.carousel_style1>.carousel-controls .carousel-control{background-color:transparent;color:#fff}.block-header-primary .title-sidebar{padding:15px 20px;font-size:20px}.block-header-primary .list1{padding:0 15px}.block-header-primary .tabs .nav-tabs{background-color:#d07676}.block-header-primary .tabs .nav-tabs li a.active:before,.block-header-primary .tabs .nav-tabs li a:focus:before{border-top-color:#d07676}.block-header-primary .tabs .tab-content{padding:0}.block-header-success .widget-heading{padding:10px 0;margin-top:20px}.block-header-success .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-success .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-success .title_block{color:#fff;background-color:#4cbb6c;border-color:#4cbb6c;padding:20px;font-size:18px}.block-header-success .block-item2 .title_block{background-color:#43b062}.block-header-success .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-success .owl-carousel-play.carousel_style1>.carousel-controls .carousel-control{background-color:transparent;color:#fff}.block-header-success .title-sidebar{padding:15px 20px;font-size:20px}.block-header-success .list1{padding:0 15px}.block-header-success .tabs .nav-tabs{background-color:#4cbb6c}.block-header-success .tabs .nav-tabs li a.active:before,.block-header-success .tabs .nav-tabs li a:focus:before{border-top-color:#4cbb6c}.block-header-success .tabs .tab-content{padding:0}.block-header-info .widget-heading{padding:10px 0;margin-top:20px}.block-header-info .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-info .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-info .title_block{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c;padding:20px;font-size:18px}.block-header-info .block-item2 .title_block{background-color:#ff3838}.block-header-info .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-info .owl-carousel-play.carousel_style1>.carousel-controls .carousel-control{background-color:transparent;color:#fff}.block-header-info .title-sidebar{padding:15px 20px;font-size:20px}.block-header-info .list1{padding:0 15px}.block-header-info .tabs .nav-tabs{background-color:#ff4c4c}.block-header-info .tabs .nav-tabs li a.active:before,.block-header-info .tabs .nav-tabs li a:focus:before{border-top-color:#ff4c4c}.block-header-info .tabs .tab-content{padding:0}.block-header-warning .widget-heading{padding:10px 0;margin-top:20px}.block-header-warning .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-warning .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-warning .title_block{color:#fff;background-color:#ff9a52;border-color:#ff9a52;padding:20px;font-size:18px}.block-header-warning .block-item2 .title_block{background-color:#ff8e3e}.block-header-warning .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-warning .owl-carousel-play.carousel_style1>.carousel-controls .carousel-control{background-color:transparent;color:#fff}.block-header-warning .title-sidebar{padding:15px 20px;font-size:20px}.block-header-warning .list1{padding:0 15px}.block-header-warning .tabs .nav-tabs{background-color:#ff9a52}.block-header-warning .tabs .nav-tabs li a.active:before,.block-header-warning .tabs .nav-tabs li a:focus:before{border-top-color:#ff9a52}.block-header-warning .tabs .tab-content{padding:0}.block-header-danger .widget-heading{padding:10px 0;margin-top:20px}.block-header-danger .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-danger .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-danger .title_block{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c;padding:20px;font-size:18px}.block-header-danger .block-item2 .title_block{background-color:#ff3838}.block-header-danger .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-danger .owl-carousel-play.carousel_style1>.carousel-controls .carousel-control{background-color:transparent;color:#fff}.block-header-danger .title-sidebar{padding:15px 20px;font-size:20px}.block-header-danger .list1{padding:0 15px}.block-header-danger .tabs .nav-tabs{background-color:#ff4c4c}.block-header-danger .tabs .nav-tabs li a.active:before,.block-header-danger .tabs .nav-tabs li a:focus:before{border-top-color:#ff4c4c}.block-header-danger .tabs .tab-content{padding:0}.block-header-highlighted .widget-heading{padding:10px 0;margin-top:20px}.block-header-highlighted .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-highlighted .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-highlighted .title_block{color:#fff;background-color:#d07676;border-color:#d07676;padding:20px;font-size:18px}.block-header-highlighted .block-item2 .title_block{background-color:#cb6767}.block-header-highlighted .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-highlighted .owl-carousel-play.carousel_style1>.carousel-controls .carousel-control{background-color:transparent;color:#fff}.block-header-highlighted .title-sidebar{padding:15px 20px;font-size:20px}.block-header-highlighted .list1{padding:0 15px}.block-header-highlighted .tabs .nav-tabs{background-color:#d07676}.block-header-highlighted .tabs .nav-tabs li a.active:before,.block-header-highlighted .tabs .nav-tabs li a:focus:before{border-top-color:#d07676}.block-header-highlighted .tabs .tab-content{padding:0}.block-header-default .widget-heading{padding:10px 0;margin-top:20px}.block-header-default .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-default .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-default .title_block{color:#fff;background-color:#333;border-color:#333;padding:20px;font-size:18px}.block-header-default .block-item2 .title_block{background-color:#292929}.block-header-default .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-default .owl-carousel-play.carousel_style1>.carousel-controls .carousel-control{background-color:transparent;color:#fff}.block-header-default .title-sidebar{padding:15px 20px;font-size:20px}.block-header-default .list1{padding:0 15px}.block-header-default .tabs .nav-tabs{background-color:#333}.block-header-default .tabs .nav-tabs li a.active:before,.block-header-default .tabs .nav-tabs li a:focus:before{border-top-color:#333}.block-header-default .tabs .tab-content{padding:0}.block.block-borderbox .title_block{color:#000;background-color:transparent;border:1px solid #dfe1e6;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-borderbox .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-borderbox .list1{padding:0 15px}.block.block-borderbox .widget-inner{padding:10px 15px}.block.block-borderbox .title_block{padding:20px 15px}.block.block-borderbox .block_content{border-style:solid;border-width:1px}.block.block-primary .title_block{color:#fff;background-color:#d07676;border:1px solid #d07676;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-primary .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-primary .list1{padding:0 15px}.block.block-primary .widget-inner{padding:15px}.block.block-primary .block_content{border-style:solid;border-width:1px}.block.block-success .title_block{color:#fff;background-color:#4cbb6c;border:1px solid #4cbb6c;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-success .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-success .list1{padding:0 15px}.block.block-success .widget-inner{padding:15px}.block.block-success .block_content{border-style:solid;border-width:1px}.block.block-info .title_block{color:#fff;background-color:#ff4c4c;border:1px solid #ff4c4c;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-info .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-info .list1{padding:0 15px}.block.block-info .widget-inner{padding:15px}.block.block-info .block_content{border-style:solid;border-width:1px}.block.block-warning .title_block{color:#fff;background-color:#ff9a52;border:1px solid #ff9a52;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-warning .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-warning .list1{padding:0 15px}.block.block-warning .widget-inner{padding:15px}.block.block-warning .block_content{border-style:solid;border-width:1px}.block.block-danger .title_block{color:#fff;background-color:#ff4c4c;border:1px solid #ff4c4c;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-danger .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-danger .list1{padding:0 15px}.block.block-danger .widget-inner{padding:15px}.block.block-danger .block_content{border-style:solid;border-width:1px}.block.block-highlighted .title_block{color:#fff;background-color:#d07676;border:1px solid #d07676;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-highlighted .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-highlighted .list1{padding:0 15px}.block.block-highlighted .widget-inner{padding:15px}.block.block-highlighted .block_content{border-style:solid;border-width:1px}.sidebar>div{margin-bottom:1.66667rem}.breadcrumb{background:transparent!important;padding:10px 0;margin-bottom:0!important}.breadcrumb[data-depth="1"]{margin-top:0}.breadcrumb ol{padding-left:0;margin-bottom:0;list-style:none}.breadcrumb li{display:inline-block;color:#000;position:relative;line-height:24px;margin-right:22px}.rtl .breadcrumb li{margin-left:22px;margin-right:inherit}.breadcrumb li:after{content:"\EA1C";font-family:fontello;color:#999;font-size:.66667rem;position:absolute;right:-15px;top:0}.rtl .breadcrumb li:after{left:-15px;right:auto}.breadcrumb li:last-child:after{display:none}.breadcrumb li a{color:#999}.rtl .breadcrumb li:after{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg)}.cart-grid{margin-bottom:.88889rem}.cart-items{margin-bottom:0}.cart-item{padding:.88889rem 0}.cart-summary-line{clear:both}.cart-summary-line .label{padding-left:0;font-weight:400;white-space:inherit}.rtl .cart-summary-line .label{padding-right:0;padding-left:inherit}.cart-summary-line .value{color:#999}.cart-summary-line.cart-summary-subtotals .label,.cart-summary-line.cart-summary-subtotals .value{font-weight:400}.cart-grid-body{margin-bottom:.66667rem}.cart-grid-body a.label:hover{color:#d07676}.cart-grid-body #main,.cart-grid-body .card-block{padding:.88889rem}.cart-grid-body #main h1,.cart-grid-body .card-block h1{margin-bottom:0}.cart-grid-body hr{margin:0}.cart-grid-body .cart-overview{padding:.88889rem}.cart-grid-right #block-reassurance{background-color:#fff;padding:1.11111rem}.cart-grid-right hr{margin:0}.cart-grid-right .promo-discounts{margin-bottom:0}.cart-grid-right .promo-discounts .cart-summary-line .label{color:#373a3c}.cart-grid-right .promo-discounts .cart-summary-line .label .code{text-decoration:none;cursor:pointer}.block-promo .promo-code{padding:1.6rem;background:#dfe1e6}.block-promo .promo-code .alert-danger{position:relative;margin-top:1.11111rem;background:#ff4c4c;color:#fff;display:none}.block-promo .promo-code .alert-danger:after{bottom:100%;left:10%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-bottom-color:#ff4c4c;border-width:10px;margin-left:-10px}.rtl .block-promo .promo-code .alert-danger:after{margin-right:-10px;margin-left:inherit}.block-promo .promo-input{color:#232323;border:1px solid #999;height:2.22222rem;text-indent:.55556rem;width:60%}.block-promo .promo-input+button{margin-top:-4px;text-transform:capitalize}.block-promo .cart-summary-line .label,.block-promo .promo-name{color:#ff9a52;font-weight:600}.block-promo .cart-summary-line .label a,.block-promo .promo-name a{font-weight:400;color:#232323;display:inline-block}.block-promo .promo-code-button{padding-left:1.11111rem;margin-bottom:1.11111rem;display:inline-block}.rtl .block-promo .promo-code-button{padding-right:1.11111rem;padding-left:inherit}.block-promo.promo-highlighted{padding:1.11111rem;padding-bottom:0;margin-bottom:0}.product-line-grid-left img{max-width:100%}.product-line-grid-body>.product-line-info>.label{padding:0;line-height:inherit;text-align:left;white-space:inherit}.product-line-grid-body>.product-line-info>.out-of-stock{color:red}.product-line-grid-body>.product-line-info>.available{color:#4cbb6c}.product-line-grid-body>.product-line-info>.unit-price-cart{padding-left:.3125rem;font-size:.875rem;color:#373a3c}.rtl .product-line-grid-body>.product-line-info>.unit-price-cart{padding-right:.3125rem;padding-left:inherit}.product-line-grid-right .bootstrap-touchspin{width:3.77778rem;border:2px solid #dfe1e6;overflow:hidden}.product-line-grid-right .bootstrap-touchspin>.form-control,.product-line-grid-right .bootstrap-touchspin>.input-group{color:#232323;background-color:#f6f3f3;height:2rem;padding:.175rem .5rem;text-align:center;font-size:.88889rem;border:0}.product-line-grid-right .bootstrap-touchspin>.input-group-btn-vertical{width:auto}.product-line-grid-right .bootstrap-touchspin .btn-touchspin{top:2.5px;z-index:9}.product-line-grid-right .cart-line-product-actions,.product-line-grid-right .product-price{line-height:36px}.product-line-grid-right .cart-line-product-actions .remove-from-cart,.product-line-grid-right .product-price .remove-from-cart{color:#232323;display:inline-block;margin-top:-.02rem}@media (max-width:767px){.product-line-grid-body{margin-bottom:.88889rem}}@media (max-width:575px){.cart-items{padding:.88889rem 0}.cart-item{border-bottom:1px solid #dfe1e6}.cart-item:last-child{border-bottom:0}.cart-grid-body .cart-overview{padding:0}.cart-grid-body .no-items{padding:.88889rem;display:inline-block}.product-line-grid-left{padding-right:0!important}.rtl .product-line-grid-left{padding-left:0!important;padding-right:inherit}}@media (max-width:575px){.product-line-grid-right .price,.product-line-grid-right .qty{width:100%}}body{-webkit-overflow-scrolling:touch;font-size:14px}body,h1{font-weight:300}h1{font-size:2rem}.h1,h6{font-weight:300}.h1{font-size:2rem}.h2,.h3,.h4,.h5,.h6,.price,.product-miniature .product-title a,.regular-price{font-weight:300}.style1 .product-miniature .product-price-and-shipping{position:relative}@media (max-width:990px){.style1 .product-miniature:hover .ps_group{bottom:20px!important}}.social-block-inline{display:inline-block}.social-block-inline>a{display:-ms-inline-grid;display:inline-grid;width:38px;height:37px;background:#d07676;border-radius:50%;margin:5px;-ms-grid-column-align:center;justify-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-grid-rows:100%;grid-template-rows:100%;-ms-grid-columns:100%;grid-template-columns:100%}.social-block-inline>a i{color:#fff;line-height:30px;text-align:center;vertical-align:middle;font-size:16px}.social-block-inline>a .gplus{position:relative;top:-1px}.contact-phone-block{font-size:18px}.contact-phone-block i{color:#dfe1e6}#_mobile_nav .contact-phone-block{color:#dfe1e6;float:left;padding:10px 20px;width:100%}#_mobile_nav ul .current a{font-weight:700;color:#292b32}#_mobile_menu input.ps_search{max-width:95%}.currency-selector .material-icons,.language-selector .material-icons{color:#dfe1e6}#_mobile_cart .blockcart .header,.blockcart .header{background:none;padding-right:5px}.ps-desktop-megamenu .dropdown-menu li a{line-height:1.2;padding:5px 0}.ps-desktop-megamenu .megamenu>li>a{margin:15px 5px}.ps-desktop-megamenu .megamenu>li>a .menu-title{font-size:16px;font-weight:300;margin:2px 0}.ps-desktop-megamenu .megamenu>li.dropdown:before{border-bottom:10px solid rgba(0,0,0,.1)}.breadcrumb{padding:10px 0;margin-bottom:0!important}@media (max-width:1199px){.headerCenter{min-width:65%}.headerCenter .search-widget{margin-top:15px;max-width:150px}.ps-desktop-megamenu .megamenu>li>a{margin:10px 0}.ps-desktop-megamenu .megamenu>li>a .menu-title{font-size:14px}}#footer .title_block{font-size:18px;margin:0 0 10px;text-transform:uppercase}#footer .block-contactinfo .nav-item{border-bottom:1px solid #ebebeb}@media (max-width:991px){.ps-mobile-megamenu .click-canavs-menu:after{content:"";display:block;height:40px;left:-15px;position:absolute;top:-10px;width:40px}}.footer-block .carousel-inner>.carousel-item>a>img,.footer-block .carousel-inner>.carousel-item>img,.footer-block .img-fluid{margin-top:5px}.footer-bottom{border-top:1px solid #dfe1e6;color:#000;font-size:1.1em;margin-top:10px;padding-top:30px}.prodetail-tile{font-size:2.1rem;margin-bottom:.7rem}.product-prices{margin-bottom:.5rem}.product-discount .regular-price{font-size:1rem}.proShortDesc{border:0;font-size:1.2em;line-height:1.7}.product-add-to-cart{margin:0;padding:0}.product-add-to-cart:before{content:""}.product-quantity .add .add-to-cart{height:44px;line-height:40px;margin:0 10px 0 0;padding:0 20px;text-transform:uppercase}.product-quantity .add .add-to-cart i{display:none}.product-quantity .buy-now{height:44px;line-height:42px;margin:0 10px 0 0;padding:0 20px;text-transform:uppercase}.product-quantity .add-to-cart,.product-quantity .buy-now{font-size:16px!important}@media (max-width:402px){.product-quantity .add-to-cart,.product-quantity .buy-now{font-size:15px!important}}.product-quantity .qty .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin{top:-2px}#product-details>div,.product-information{margin:0}.tabs-v1.tabs-info .nav-tabs{border:none;border-top:1.5px dashed #b7c1d4;padding:0}.tabs-v1.tabs-info .nav-tabs:before{bottom:auto;top:-20px}.tabs-v1.tabs-info .nav-tabs a{padding:22px 15px 0 0;font-weight:300}.tabs-v1.tabs-info .nav-tabs a.active{border:0}.tabs-v1.tabs-info .nav-tabs .nav-link{font-weight:500;font-size:18px;text-transform:uppercase}.tabs-v1.tabs-info .tab-content{margin:0;padding:10px 0}.product-reference{color:#999;font-size:1.1em;margin-top:7px}.product-reference label{color:#a9b1c0;font-weight:400}.product-features{font-size:1.1em;margin:0}#leo_product_reviews_block_extra{margin:0}.btn-primary{border:2px solid #d07676}.btn-default,.btn-primary{padding:.65rem 1.3rem}.twa_in_hook.carousel{margin:15px 0!important}.pts-parallax{background-attachment:fixed;background-position:50%;background-size:cover;position:relative}.widget-inner>[class*=col-]{padding-left:0!important;padding-right:0!important;width:100%!important}.widget-separator .w_text_separator{float:left;height:2px;position:relative;width:100%;background-color:#777}.widget-separator .w_text_separator .text_separ{background-color:#fff;font-family:monospace;font-size:15px;margin:0 auto;padding:0 1px;position:absolute;text-align:center;top:-9px;width:50px}.widget-separator .separator_align_center{left:0;right:0}.widget-separator .separator_align_left{left:0}.widget-separator .separator_align_right{right:0}.grabbing{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAO0lEQVQ4y2NgGHbgPxTjY+PWDAP42PgM+k8IwNRQZAg+A/5TYsB/UgBFBtDM/0QZQkxawGsI3QygLwAAbjZlqS88cqkAAAAASUVORK5CYII=) 8 8,move}.owl-carousel-play .item{padding-left:12px;padding-right:12px}.owl-carousel-play:hover .carousel-control{filter:alpha(opacity=100);-moz-opacity:1;opacity:1;visibility:visible}.owl-carousel-play:hover .carousel-control.left{left:10px}.owl-carousel-play:hover .carousel-control.right{right:10px}.owl-carousel-play.carousel_style1>.carousel-controls{top:-2.5rem;width:3rem;height:1.38889rem;right:10px;position:absolute;border-radius:30px;overflow:hidden}.owl-carousel-play.carousel_style1>.carousel-controls .carousel-control{visibility:visible;filter:alpha(opacity=100);-moz-opacity:1;opacity:1;width:1.38889rem;height:1.38889rem;line-height:1.22222rem;margin-top:0;top:0;font-size:.77778rem;color:#414141;background-color:#dfe1e6;border:1px solid hsla(0,0%,95%,.4);border-radius:50%}.owl-carousel-play.carousel_style1>.carousel-controls .carousel-control.left{left:0}.owl-carousel-play.carousel_style1>.carousel-controls .carousel-control.right{right:0}.owl-carousel-play.carousel_style1>.carousel-controls .carousel-control:hover{background-color:#d07676;color:#fff}@media (max-width:575px){.owl-carousel-play{margin-left:-10px;margin-right:-10px;position:relative}.owl-carousel-play .item{padding-left:10px;padding-right:10px}}.owl-nav.disabled{display:none!important;visibility:hidden!important}.border-image{position:relative}.border-image:before{content:"............................................................................................................................................................................................................................................................................................................................................................................";font-family:Sacramento,cursive;font-size:48px;font-weight:400;height:15px;left:0;line-height:0;overflow:hidden;position:absolute;top:-5px;white-space:nowrap;width:100%}.photo-banner-citrine .banner-item-content .custom-html h3{font-size:23px;color:#232323;text-align:center;margin:0}.photo-banner-citrine .banner-item-content .custom-html h4{margin:5px 0 0;font:100 9px/20px Basil Regular,serif;text-transform:uppercase;letter-spacing:2.5px;color:#777}.photo-banner-citrine .banner-item-content:hover .img{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important}.photo-banner-azalea .banner-item-content:hover .custom-html h3,.photo-banner-azalea .banner-item-content:hover .custom-html h4,.photo-banner-azalea .banner-item-content:hover a,.photo-banner-citrine .banner-item-content:hover .custom-html,.photo-banner-citrine .banner-item-content:hover a{-webkit-transform:scale(1.05);-moz-transform:scale(1.05);-ms-transform:scale(1.05);-o-transform:scale(1.05);-webkit-transition:all .35s ease 0s;transition:all .35s ease 0s}.photo-banner-azalea .banner-item-content .custom-html h3{font-size:25px;line-height:35px;color:#232323;text-align:center;margin:0}.photo-banner-azalea .banner-item-content .custom-html h4{margin:5px 0 0;font:100 9px/10px Basil Regular,serif;text-transform:uppercase;letter-spacing:2.5px;color:#232323}.photo-banner-azalea .banner-item-content:hover .img{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important}.photo-banner-azalea .banner-item-content:hover .custom-html h3,.photo-banner-azalea .banner-item-content:hover .custom-html h4,.photo-banner-azalea .banner-item-content:hover a{-webkit-transform:scale(1.01);-moz-transform:scale(1.01);-ms-transform:scale(1.01);-o-transform:scale(1.01);-webkit-transition:all .35s ease 0s;transition:all .35s ease 0s}.photo-banner-horizontal .banner-item-content a{padding:0;display:block;margin:0;width:60%}.photo-banner-horizontal .banner-item-content .custom-html{max-height:none;-webkit-box-flex:0;-ms-flex:0 0 40%;flex:0 0 40%;width:40%;padding:0;text-align:center}.photo-banner-horizontal .banner-item-content .custom-html h3{text-align:center;margin:0;font-size:28px;font-family:Basil Regular,serif;line-height:40px;text-transform:none}.photo-banner-horizontal .banner-item-content .custom-html h3,.photo-banner-horizontal .banner-item-content .custom-html h4{color:#232323;height:50%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.photo-banner-horizontal .banner-item-content .custom-html h4{margin:5px 0 0;text-transform:uppercase;letter-spacing:2.5px;line-height:30px;font:100 18px/25px Basil Regular,serif}.photo-banner-horizontal .banner-item-content:hover .img{-webkit-transform:none!important;-moz-transform:none!important;-ms-transform:none!important;-o-transform:none!important}.photo-banner-horizontal .banner-item-content:hover .custom-html h3,.photo-banner-horizontal .banner-item-content:hover .custom-html h4,.photo-banner-horizontal .banner-item-content:hover a{-webkit-transform:scale(1.05);-moz-transform:scale(1.05);-ms-transform:scale(1.05);-o-transform:scale(1.05);-webkit-transition:all .35s ease 0s;transition:all .35s ease 0s}.widget-ourservice .banner-item-content h3{font-size:1.11111rem;margin-top:12px;margin-bottom:1rem}.widget-ourservice .banner-item-content h4{line-height:1.33333rem;color:#a9b1c0;font-size:14px}.widget-ourservice .banner-item-content img{-webkit-transform:rotate(0);-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);-webkit-transition:all .3s ease-in-out 0s;transition:all .3s ease-in-out 0s}.widget-ourservice .banner-item-content:hover img{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}.style1 .product-miniature .btn-product{color:#dfe1e6;display:block;background:transparent;line-height:38px;text-align:center;width:40px;height:40px;border:0;padding:0;font-size:16px}.custombanners.displayHome{margin-bottom:0!important}.custombanners.displayHome .bx-wrapper .banner-img{border-radius:10px}@media (max-width:650px){.home-top-left .banner-item{clear:both}.home-top-left .banner-item .banner-item-content{padding:40px 50px 20px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.home-top-left .banner-item .banner-item-content .custom-html,.home-top-left .banner-item .banner-item-content a{width:auto}.home-top-left .banner-item .banner-item-content .custom-html h3{font-size:23px;color:#232323;text-align:center;margin:0}.home-top-left .banner-item .banner-item-content .custom-html h4{margin:5px 0 0;font:100 9px/10px Basil Regular,serif;text-transform:uppercase;letter-spacing:2.5px;color:#232323}.bx-wrapper{max-width:100%;margin:0 auto 24px!important}.widget-ourservice{margin:0 12px}.widget-ourservice .banner-item-content img{width:35%}.custombanners.displayHome{margin:24px 0 0!important}.custombanners.displayCustomBanners1 .banner-item{padding:30px}.banner-item-content .banner-img{width:100%}.photo-banner-citrine .banner-item-content{padding:70px 50px 30px!important}.photo-banner-citrine .banner-item-content .custom-html{padding:0!important;width:100%!important;left:0}.photo-banner-citrine .banner-item-content .custom-html h3{margin:0 0 5px}.photo-banner-citrine .banner-item-content a{padding:0}.photo-banner-horizontal .banner-item-content{padding-top:30px!important}.photo-banner-horizontal .banner-item-content .custom-html h3{white-space:nowrap}.photo-banner-azalea .banner-item-content{padding:0 0 30px!important}.grey-note{display:block}}.easycarousels,.home-top-right{overflow:hidden}.post-views i,.views-num i{display:inline-block;width:30px}.left-column,.right-column{padding-left:0}.sidebar-canvas i{position:relative;left:-1px}@media (max-width:990px){#cavas_menu .nav-item .dropdown-menu.level2{left:0!important;border:none!important}#cavas_menu .dropdown-submenu>.click-canavs-menu{top:6px}}.nav-tabs .nav-link,.nav-tabs .nav-link:active,.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border:none!important}.modal-body p,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:active,.nav-tabs .nav-link.active:focus{color:#232323}.icon-phone{display:inline-block;-webkit-transform:rotate(90deg) translateX(3px) translateY(2px);transform:rotate(90deg) translateX(3px) translateY(2px)}.layout-boxed-md{background:#fff}.layout-boxed-md #page{box-shadow:0 0 10px rgba(0,0,0,.3);margin:0 auto;background:#fff;max-width:960px}.layout-boxed-md #page .container{max-width:960px}.layout-boxed-lg #page{margin:0 auto;background:#fff;max-width:1440px}.row-offcanvas{max-width:1920px;margin:0 auto}.headerFixed{left:0;right:0;position:fixed;top:0;z-index:101;width:100%;box-shadow:0 0 5px #ccc;-webkit-animation:fadeInDown .9s ease-in-out;animation:fadeInDown .9s ease-in-out}.toogle_content{background-color:#fff;position:absolute;top:100%;min-width:9.44444rem;z-index:115;display:none;border:1px solid #dfe1e6;padding:.27778rem .55556rem}.toogle_content a{color:#292733}.toogle_content li{display:block}.toogle_content li.selected a,.toogle_content li.selected span,.toogle_content li a:active,.toogle_content li a:focus,.toogle_content li a:hover{color:#ba4040}.logo-theme{background:none;position:relative;z-index:99;display:block}.logo-theme a{vertical-align:middle;width:rem(275px);height:rem(100px);background-repeat:no-repeat;background-position:50%;display:inline-block}#pts-mainnav{background-color:#333;min-height:50px}#wrapper{padding-bottom:1.66667rem}.footer-top{background-color:#dfe1e6;position:relative}.footer-top,.footer-top a{color:#414141}.footer-top a:hover{color:#d07676}.footer-top .block_newsletter .input-wrapper{background-color:#fff;height:2.66667rem}.footer-top .block_newsletter .form-control{padding:12px 0;text-indent:30px}.footer-top .block_newsletter .h2{color:#fff;margin-bottom:5px;letter-spacing:-1px;font-size:2rem}.footer-top .block_newsletter .description{margin-bottom:0;color:#fff;letter-spacing:.5px}.footer-top .block_newsletter .input-group-addon{position:relative}.footer-top .block_newsletter .input-group-addon .fa{width:55px;height:48px;line-height:48px;text-align:center;background-color:#d07676;color:#fff}.footer-top .block_newsletter .input-group-addon:hover .fa{background-color:#000}.footer-top .block_newsletter .btn{width:55px;height:48px;position:absolute;left:0;top:0}.footer-center a:hover{color:#a6a6a6}.footer-center .widget-links{margin-bottom:0}.footer-center .widget-links .list-item{display:block;padding:5px 0}.footer-center .block .title_block{text-transform:uppercase;font-size:1rem}.footer-center .block-contactinfo .material-icons{font-size:1.33333rem;margin-right:20px}.rtl .footer-center .block-contactinfo .material-icons{margin-left:20px;margin-right:inherit}.footer-center .block-contactinfo .nav-item{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.footer-center .block-contactinfo .nav-item .adress{border-bottom:1px solid #dfe1e6}.footer-center .block-contactinfo .nav-item .email{border-bottom:1px solid #dfe1e6;color:#d07676}.footer-center .block-contactinfo .nav-item .email .title{color:#000}.footer-center .block-contactinfo .nav-item div{width:100%;padding:12px 0}.footer-bottom{position:relative;background-color:transparent;color:#999}.footer-bottom a{color:#999}.footer-bottom a:hover{color:#d07676}.footer-bottom .block .title_block{font-size:18px;font-weight:600;color:#fff;display:block;margin-bottom:0;background:transparent;position:relative;padding:.55556rem 0}.pts-copyright{font-family:Basil Regular;position:relative;padding:0;background-color:#fff;color:#000}.pts-copyright a{color:#333}.pts-copyright a:hover{color:#d07676}.pts-copyright ul.links li a{color:#000}.pts-copyright .widget-html a,.pts-copyright ul.links li a:hover{color:#d07676}.pts-copyright .widget-html p{margin-bottom:0}@media (min-width:576px){.container{width:560px;max-width:100%}}@media (min-width:768px){.container{width:760px;max-width:100%}}@media (min-width:992px){.container{width:990px;max-width:100%}}@media (min-width:1200px){.container{width:1440px;max-width:100%}}@media (max-width:767px){#wrapper{box-shadow:none}#checkout-cart-summary{float:none;width:100%;margin-top:1rem}section.checkout-step{width:100%}.default-input{min-width:100%}label{clear:both}#products .product-miniature,.featured-products .product-miniature{margin:0 auto}.block-contact{padding-left:.9375rem;border:none}.header-bottom .wrapper{position:relative}.header-bottom .wrapper #pts-verticalmenu{position:static;width:2.77778rem}.header-bottom .wrapper #pts-verticalmenu>.title_block{padding:.55556rem .83333rem}html{overflow-x:hidden}}@media (max-width:991px){.container{max-width:100%}#header .logo{width:auto}#products .product-miniature,.featured-products .product-miniature{margin:0 auto}.sub-menu{left:0;min-width:100%}.rtl .sub-menu{right:0;left:auto}#blockcart-modal .product-image{width:100%;display:block;max-width:250px;margin:0 auto .83333rem}#blockcart-modal .cart-content{padding-left:0}#blockcart-modal .product-name,#product-availability{margin-top:.625rem}#search_filters .facet .facet-label{text-align:left}.rtl #search_filters .facet .facet-label{text-align:right}.block-category .category-cover{position:relative;text-align:center}.block-category{padding-bottom:0}.widget-categoriestabs .nav-tabs li{margin-right:10px}.rtl .widget-categoriestabs .nav-tabs li{margin-left:10px;margin-right:inherit}.block .title_block{letter-spacing:2px}.accordion .title_block{margin-bottom:0;cursor:pointer}.accordion .title_block:after{font-family:fontello;content:"\E145";position:absolute;right:0;text-align:center;width:40px;height:40px;top:12px;font-size:1.44444rem}.rtl .accordion .title_block:after{left:0;right:auto}.accordion .title_block.active:after{content:"-"}.headerMobile{background-color:#fff;padding:15px 0}.headerMobile .flexRow{-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sidebarOffcanvas .blockcart{padding:15px;border-bottom:1px solid #454545}.sidebarOffcanvas .blockcart .cart-products-price{color:#d07676}.sidebarOffcanvas .social-block-inline{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-ms-flex-pack:distribute;justify-content:space-around;padding:20px 10px;margin:0}.sidebarOffcanvas .currency-selector,.sidebarOffcanvas .language-selector{width:100%}.sidebarOffcanvas .currency-selector .btn-unstyle,.sidebarOffcanvas .language-selector .btn-unstyle{display:none}.sidebarOffcanvas .currency-selector .dropdown-menu,.sidebarOffcanvas .language-selector .dropdown-menu{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;position:static;margin:0;padding:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#b37676}.sidebarOffcanvas .currency-selector .dropdown-menu .dropdown-item,.sidebarOffcanvas .language-selector .dropdown-menu .dropdown-item{padding:0;color:#fff}.sidebarOffcanvas .user-info li{display:block;padding:10px 15px;border-bottom:1px solid #454545}.sidebarOffcanvas .user-info li a{display:block;color:#dedede;padding:0!important;margin:0!important}.sidebarOffcanvas .user-info li a:before{display:none}.sidebarOffcanvas .user-info li a:hover{color:#d07676}.sidebarOffcanvas .contact-phone-block{font-size:18px;float:none!important;display:block;text-align:center;color:#fff;margin:10px 0}.sidebarOffcanvas .js-dropdown{float:left}.rtl .sidebarOffcanvas .js-dropdown{float:right}.sidebarOffcanvas .btn-unstyle{color:#dedede;padding:8px 15px;cursor:pointer}.sidebarOffcanvas .btn-unstyle .expand-more{color:#d07676}}@media (max-width:575px){.logo-theme a{background-size:cover;width:10rem;height:3.22222rem}}@media (max-width:991px){#footer .social-block-inline>a{width:38px;height:38px;background:#d07676;border-radius:50%;margin:4px}#search_filters_wrapper .facet-title{float:left}#search_filters_wrapper .facet-title+span{margin:10px 0}#search_filters_wrapper .add,#search_filters_wrapper .collapsed .remove{display:none}#search_filters_wrapper .collapsed .add{display:inline-block}#search_filters_wrapper #search_filter_controls{padding:15px 0}#search_filters_wrapper #search_filter_controls .btn.btn-secondary.ok,#search_filters_wrapper #search_filter_controls .btn.ok.btn-tertiary{padding:.25rem}.product-line-grid-right .bootstrap-touchspin .btn-touchspin{top:0}.alert{margin:20px 0 10px}}@-webkit-keyframes fadeInUp{0%{-webkit-transform:translateY(20px);opacity:0;transform:translateY(20px)}to{-webkit-transform:translateY(0);opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{-ms-transform:translateY(20px);-webkit-transform:translateY(20px);opacity:0;transform:translateY(20px)}to{-ms-transform:translateY(0);-webkit-transform:translateY(0);opacity:1;transform:translateY(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}body{-webkit-overflow-scrolling:touch;background-image:url(../css/dd647d40cc3c09264af1936d5cf62d6c.jpg);background-position:top;background-size:cover;color:#000;display:block;font-family:Basil Regular,serif;font-size:14px;font-weight:300;line-height:1.6666666667rem;overflow-x:hidden}body,html{height:100%}html{margin:0}html,ul{padding:0}ul{list-style:none}.dropdown-item:focus,.dropdown-item:hover{background:0 0;color:#d07676;text-decoration:none}.btn-unstyle{background-color:transparent;border:none;padding:0;text-align:inherit}.btn-unstyle:focus{outline:0}.form-control{background:#fff;color:#999}.form-control:focus{background-color:#fff;outline:1px solid red}input:-webkit-input-placeholder{color:#999}input:-moz-placeholder{color:#999}input:-ms-input-placeholder{color:#999}input:active:-webkit-input-placeholder{color:#414141}input:active:-moz-placeholder{color:#414141}input:active:-ms-input-placeholder{color:#414141}a{color:#d07676}a:hover{outline:0}.row-offcanvas{margin:0 auto;max-width:1920px}#wrapper{padding-bottom:1.6666666667rem}#index #wrapper{padding-bottom:0}#main,.card{background-color:#fff;border:0 solid rgba(0,0,0,.125);border-radius:10px;display:block;margin-bottom:24px;position:relative}#main,.card-block{padding:1.25rem}#main:after,.card-block:after{clear:both;content:"";display:table}.footer-center{position:relative;background-color:#fff;color:#999}.footer-center a{color:#999}.footer-center a:hover{color:#d07676}.footer-center .block-contactinfo .nav-item{display:-webkit-box;display:-ms-flexbox;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.footer-center .block-contactinfo .nav-item div{padding:12px 0;width:100%}.footer-center .block-contactinfo .title{color:#000}.footer-bottom{background-color:transparent;border-top:1px solid #dfe1e6;color:#000;font-size:1.1em;margin-top:10px;padding-top:30px;position:relative}.block{margin-bottom:24px;position:relative}.block .title_block{background:0 0;border-bottom:0;color:#000;font-family:Basil Regular,serif;font-size:1rem;font-weight:700;line-height:20px;margin:0;padding:.6666666667rem 0;position:relative}.block .block_content:after{clear:both;content:"";display:table}.block .block{margin-bottom:0}.blockcart{position:relative}.blockcart .header{display:inline-block;position:relative;padding-left:65px;padding-right:5px}.blockcart .header:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#d07676;content:"\EA1A";font-family:fontello;font-size:32px;left:15px;position:absolute;speak:none;top:5px}.blockcart .cart-title{color:#d07676;display:block;font-family:Basil Regular,serif;line-height:20px}.blockcart .cart-products-price{color:#000;display:block;font-size:1.1111111111rem;line-height:1.3333333333rem}#to_top{bottom:40px;display:none;position:fixed;right:40px;z-index:90}#to_top:focus,#to_top:hover{text-decoration:inherit}#to_top:before{-webkit-animation:totop 1s linear 1s infinite alternate;animation:totop 1s linear 1s infinite alternate;content:"\EA08";font-family:fontello;font-size:1rem;left:50%;margin-left:-8px;position:absolute;top:-20px}#to_top span{color:#000;display:block;font-size:1.8888888889rem;position:relative;text-align:center}@-webkit-keyframes totop{0%{-khtml-opacity:0;-moz-opacity:0;opacity:0}25%{-khtml-opacity:.3;-moz-opacity:.3;opacity:.3}50%{-khtml-opacity:.5;-moz-opacity:.5;opacity:.5}75%{-khtml-opacity:.7;-moz-opacity:.7;opacity:.7}to{-khtml-opacity:1;-moz-opacity:1;opacity:1}}@keyframes totop{0%{-khtml-opacity:0;-moz-opacity:0;opacity:0}25%{-khtml-opacity:.3;-moz-opacity:.3;opacity:.3}50%{-khtml-opacity:.5;-moz-opacity:.5;opacity:.5}75%{-khtml-opacity:.7;-moz-opacity:.7;opacity:.7}to{-khtml-opacity:1;-moz-opacity:1;opacity:1}}.flexRow{-ms-flex-flow:row wrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;margin-left:-12px;margin-right:-12px}.price{color:#999;font-family:Basil Regular,serif;font-size:16px;font-weight:300}.product-miniature .product-description .product-meta{margin-bottom:10px;padding-bottom:10px}.product-miniature .product-title{margin:.6666666667rem 0 .4444444444rem;display:block;position:relative}.product-miniature .product-title a{color:#000;font-size:18px;font-family:Basil Regular,serif;font-weight:300;line-height:18px;display:block;max-height:40px;letter-spacing:.25px}.product-miniature .product-title a:hover{color:#d07676;text-decoration:none}.product-miniature .product-availability{display:none}.product-flags{left:0;margin:0;position:absolute;right:0;top:0}.style1 .product-miniature{overflow:hidden;position:relative}.style1 .product-miniature .left-block{position:relative}.style1 .product-miniature figure{margin:0!important}.style1 .product-miniature figure img{-webkit-filter:grayscale(0) blur(0);-webkit-transition:.3s ease-in-out;filter:grayscale(0) blur(0);transition:.3s ease-in-out}.style1 .product-miniature .product-price-and-shipping{bottom:0;left:0;line-height:20px;margin:auto;position:relative;right:0}.style1 .product-miniature .ps_group{-khtml-opacity:0;-moz-opacity:0;-o-transition:all .3s ease-in-out 0s;-webkit-transition:all .3s ease-in-out 0s;background-color:#fff;bottom:-80px;left:0;opacity:0;position:absolute;right:0;transition:all .3s ease-in-out 0s;visibility:hidden}@media (max-width:990px){.style1 .product-miniature .ps_group{bottom:20px;opacity:1;margin:0;position:relative;visibility:visible}.style1 .product-miniature .ps_group:hover{bottom:20px!important}}.style1 .product-miniature .btn-action{display:inline-block}.style1 .product-miniature .btn-action>div{float:left;margin:0 2px}.style1 .product-miniature .btn-action .flex-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;float:none;-ms-flex-pack:distribute;justify-content:space-around;width:100%}.style1 .product-miniature .btn-product{color:#dfe1e6;display:block;background:0 0;line-height:38px;text-align:center;width:40px;height:40px;border:0;padding:0;font-size:16px}.style1 .product-miniature .btn-product:hover{color:#d07676}.style1 .product-miniature:hover .ps_group{-khtml-opacity:1;-moz-opacity:1;bottom:0;opacity:1;visibility:visible}.style1 .product-miniature:hover figure img{-webkit-filter:none;filter:none}.header-default{background:#fff}.header-default .btn-unstyle{cursor:pointer;margin:0 5px}.header-default .js-dropdown{font-size:.7777777778rem}.header-default .js-dropdown .current a{color:#d07676}.header-default .js-dropdown .dropdown-menu{left:auto;right:0}.btn{font-size:.7777777778rem}.btn:active:focus,.btn:focus{outline:0}.btn-outline-pink{background:0 0;font-size:12px;text-transform:uppercase;font-weight:700;letter-spacing:2px;font-family:Basil Regular,serif;padding:4px 8px;position:relative;margin:auto;text-align:center;min-width:80px}.btn-outline-pink:before{border-bottom:2px dashed #f8d4ce;bottom:0;content:"";height:0;left:0;margin:auto;position:absolute;right:0;width:80px}.btn-outline-pink:hover{color:#d07676}.dropdown{color:#999}.ps_search{background:0 0;border:0;color:#999;font-family:Basil Regular,serif;font-size:18px;letter-spacing:2px}.search-widget{background:0 0;-webkit-transition:all .3s ease-in-out 0s;transition:all .3s ease-in-out 0s;margin:15px}.search-widget form{display:block;height:100%;padding-left:1.3888888889rem;position:relative}.search-widget .btnsearch{position:absolute;border:0;top:0;cursor:pointer;background-color:transparent;padding:0;left:0;color:#d07676}.search-widget .btnsearch:hover{color:#000}.ps-desktop-megamenu .megamenu>li{display:inline-block;vertical-align:middle}.ps-desktop-megamenu .megamenu>li>a{position:relative;display:block;line-height:1.5555555556rem;margin:15px 5px;padding:3px 15px;font-size:18px;font-family:Basil Regular,serif;font-weight:700;text-transform:uppercase;color:#000}.ps-desktop-megamenu .megamenu>li>a:after{border-left:0;border-right:10px solid transparent;content:"";position:absolute;right:-10px;top:0;width:0}.ps-desktop-megamenu .megamenu>li>a:before{border-left:10px solid transparent;border-right:0;content:"";left:-10px;position:absolute;top:0;width:0}.ps-desktop-megamenu .megamenu>li>a .menu-title{display:inline-block;font-size:16px;font-weight:300;margin:2px 0;margin-top:4px}.ps-desktop-megamenu .megamenu>li.dropdown:before{border-bottom:10px solid rgba(0,0,0,.1);bottom:25px}.ps-desktop-megamenu .megamenu>li.dropdown:after,.ps-desktop-megamenu .megamenu>li.dropdown:before{-khtml-opacity:0;-moz-opacity:0;-o-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;border-left:10px solid transparent;border-right:10px solid transparent;content:"";opacity:0;position:absolute;transition:all .2s ease-in-out}.ps-desktop-megamenu .megamenu>li.dropdown:after{border-bottom:10px solid #fff;bottom:24px}.ps-desktop-megamenu .megamenu>li.dropdown>.material-icons{position:absolute;right:10px;top:10px}.ps-desktop-megamenu .megamenu>li.aligned-left>.dropdown-menu{left:0;right:auto}.ps-desktop-megamenu .megamenu>li>.dropdown-menu{-khtml-opacity:0;-moz-opacity:0;-o-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;border:1px solid rgba(0,0,0,.05);border-radius:5px;box-shadow:1px 0 2px rgba(0,0,0,.16);display:block;opacity:0;top:150%;transition:all .2s ease-in-out;visibility:hidden;z-index:1002}.ps-desktop-megamenu .megamenu>li:focus>a{color:#d07676;background-color:#f8d4ce}.ps-desktop-megamenu .megamenu>li:focus>a:after,.ps-desktop-megamenu .megamenu>li:focus>a:before{border-bottom:18px solid #f8d4ce;border-top:18px solid #f8d4ce}.ps-desktop-megamenu .megamenu>li:focus.dropdown:before{-khtml-opacity:1;-moz-opacity:1;bottom:5px;opacity:1;z-index:1002}.ps-desktop-megamenu .megamenu>li:focus.dropdown:after{-khtml-opacity:1;-moz-opacity:1;bottom:4px;opacity:1;z-index:1003}.ps-desktop-megamenu .megamenu>li:focus>.dropdown-menu{-khtml-opacity:1;-moz-opacity:1;opacity:1;top:60px;visibility:visible}.ps-desktop-megamenu .megamenu>li:hover>a{color:#d07676;background-color:#f8d4ce}.ps-desktop-megamenu .megamenu>li:hover>a:after,.ps-desktop-megamenu .megamenu>li:hover>a:before{border-bottom:18px solid #f8d4ce;border-top:18px solid #f8d4ce}.ps-desktop-megamenu .megamenu>li:hover.dropdown:before{-khtml-opacity:1;-moz-opacity:1;bottom:5px;opacity:1;z-index:1002}.ps-desktop-megamenu .megamenu>li:hover.dropdown:after{-khtml-opacity:1;-moz-opacity:1;bottom:4px;opacity:1;z-index:1003}.ps-desktop-megamenu .megamenu>li:hover>.dropdown-menu{-khtml-opacity:1;-moz-opacity:1;opacity:1;top:60px;visibility:visible}.ps-desktop-megamenu .dropdown-menu{top:100%;left:0;margin:0;height:auto;min-width:250px;color:#999;background-color:#fff;font-family:Basil Regular,serif;padding:10px 30px;border:0;text-align:left;z-index:1002;-webkit-transition:opacity .2s linear 0s;transition:opacity .2s linear 0s}.ps-desktop-megamenu .dropdown-menu li a{color:#999;padding:5px 0;display:block;font-size:18px;line-height:1.2}.ps-desktop-megamenu .dropdown-menu li a:hover{background-color:transparent;color:#d07676}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu{position:relative}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>a:after{content:"\EA1C";display:inline-block;float:right;font-family:fontello;font-size:13px;position:relative;top:2px;vertical-align:middle}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.material-icons{position:absolute;right:10px;top:20px}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.dropdown-menu{-khtml-opacity:0;-moz-opacity:0;-o-transition:all .2s ease-in-out 0s;-webkit-transition:all .2s ease-in-out 0s;display:block;left:150%;opacity:0;top:-5px;transition:all .2s ease-in-out 0s;visibility:hidden}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu:hover>.dropdown-menu{-khtml-opacity:1;-moz-opacity:1;left:100%;opacity:1;visibility:visible}@media (min-width:576px){.ps-desktop-megamenu .megamenu>li.dropdown>a .menu-title:after{content:"\F004";display:inline-block;font-family:fontello;font-size:10px;line-height:10px;margin-left:5px;position:relative;top:-3px}}@media (max-width:991px){.row-offcanvas{position:relative}.row-offcanvas .menuOffcanvas{left:-15.8333333333rem}.row-offcanvas .menuOffcanvas,.row-offcanvas .sidebarOffcanvas{-o-transition:all .25s ease-out;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;z-index:1002}.row-offcanvas .sidebarOffcanvas{right:-15.8333333333rem}.btn-offcanvas-mobile,.btn-sidebarOffCanvas-mobile{-khtml-opacity:1;-moz-opacity:1;background-color:rgba(0,0,0,.3);bottom:0;height:100%;left:0;opacity:1;position:absolute;right:0;top:0;visibility:hidden;width:100%}.sidebarOffcanvas{background:#232323}.menuOffcanvas,.sidebarOffcanvas{height:100%;position:absolute;top:0;width:15.5555555556rem}.menuOffcanvas{background:#fff}.offcanvas-heading .btn-mobile{background-color:#d07676;border:0;color:#fff;cursor:pointer;padding:.5555555556rem 0;width:100%}.ps-mobile-megamenu{box-shadow:1px -1px 3px #777}.container{max-width:100%}#header .logo{width:auto}.block .title_block{letter-spacing:2px}.headerMobile{background-color:#fff;padding:15px 0}.headerMobile .flexRow{-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.simple-grid.m-1 .c_col{width:100%}}.material-icons.click-canavs-menu{text-indent:-999px;overflow:hidden;width:30px}.material-icons.click-canavs-menu:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;content:"\F004";font-family:fontello;font-style:normal;font-variant:normal;font-weight:400;margin-left:.2em;position:absolute;right:0;speak:none;text-align:center;text-decoration:inherit;text-indent:0;text-transform:none;width:30px}@media (max-width:768px){#wrapper{box-shadow:none}html{overflow-x:hidden}}[class*=" icon-"]:before,[class^=icon-]:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-family:fontello;font-style:normal;font-variant:normal;font-weight:400;line-height:1em;margin-left:.2em;margin-right:.2em;speak:none;text-align:center;text-decoration:inherit;text-transform:none;width:1em}.icon-geo:before{content:"\E802"}.icon-search:before{content:"\E803"}.icon-menu:before{content:"\E810"}.icon-viber:before{content:"\E81B"}.icon-arrowright:before{content:"\EA02"}.icon-heart-solid:before{content:"\EA09"}.icon-mail:before{content:"\EA0C"}.icon-phone:before{content:"\EA15"}.icon-search-plus:before{content:"\EA18"}.icon-shortarrowleft:before{content:"\EA1B"}.icon-update:before{content:"\EA21"}.icon-user:before{content:"\EA22"}.icon-schevron-down:before{content:"\F004"}.icon-schevron-up:before{content:"\F005"}.icon-facebook:before{content:"\F09A"}.icon-gplus:before{content:"\F0D5";margin-left:-2.2px}.icon-instagram:before{content:"\F16D"}.icon-telegram:before{content:"\F1D8";margin-left:-1.5px}h2,h3,h4,h5{font-weight:300}.headerCenter{min-width:75%}.headerCenter .search-widget{margin:20px 0 0 15px}.headerCenter .ps_search{font-size:14px;padding:0 5px}#_desktop_logo{margin-top:10px}.headerRight{background:#fff;margin-top:40px}.nav-top{padding:15px 20px}.nav-top .float-xs-left,.nav-top .float-xs-right{margin-top:8px}.social-block-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.social-block-inline>a{display:-webkit-box;display:-ms-flexbox;display:flex;width:38px;height:38px;background:#d07676;border-radius:50%;margin:5px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-grid-rows:100%;grid-template-rows:100%;-ms-grid-columns:100%;grid-template-columns:100%}.social-block-inline>a:hover{box-shadow:1px 0 2px rgba(0,0,0,.36)}.social-block-inline>a i{position:relative;color:#fff;font-size:16px;text-align:center;vertical-align:middle;padding:0 0 0 1px!important}.social-block-inline>a i:before{margin:0!important;width:auto!important}.social-block-inline>a .icon-instagram,.social-block-inline>a .icon-viber,.social-block-inline>a .icon-youtube-play{line-height:30px;font-size:19px}.social-block-inline>a .icon-viber{top:1px}#footer .social-block-inline>a i,#header .social-block-inline>a .icon-instagram,#header .social-block-inline>a .icon-telegram{padding-left:0!important}#footer .social-block-inline>a .icon-viber{left:1px}#_mobile_nav .social-block-inline a{margin:3px}.language-selector,.language-selector button{text-transform:uppercase}.language-selector img{margin:-3px 3px 0 0}.language-selector .dropdown-menu{min-width:100px}.currency-selector,.currency-selector button{text-transform:uppercase}.currency-selector .dropdown-menu{min-width:100px}#_desktop_menu .ps-megamenu{display:inline-block}#_desktop_nav button:active{color:initial}@media (max-width:1199px){.headerCenter{min-width:65%}.headerCenter .search-widget{margin-top:15px;max-width:150px}.ps-desktop-megamenu .megamenu>li>a{margin:10px 0}.ps-desktop-megamenu .megamenu>li>a .menu-title{font-size:14px}.simple-grid.l-1 .c_col{width:100%}}#footer{padding:30px 0}#footer .title_block{font-size:18px;margin:0 0 10px;text-transform:uppercase;color:#000}@media (min-width:768px){#footer .banner-item.policies{height:-webkit-max-content;height:-moz-max-content;height:max-content}}@media (min-width:767px){#footer .banner-item.policies{height:220px}}@media (min-width:992px){#footer .banner-item.policies{height:155px}}#footer .paytypes{font-size:35px;color:#d07676}#footer .paytypes i{margin-right:10px}#footer .paytypes i:last-child{margin-right:0}#footer .block-contactinfo .nav-item{border-bottom:1px solid #dfe1e6}#footer .block-contactinfo .nav-item i{display:inline-block;width:30px}#footer .block-contactinfo .nav-item:last-child{border-bottom:none!important}.text-center{text-align:center}.inline-block{display:inline-block}.border-bottom{position:relative}.border-bottom:after{bottom:-8px;left:0;width:100%}.border-bottom:after,.carousel_title:after{color:#999;content:"...............................................................................................";font-family:monospace;font-size:18px;height:10px;line-height:0;overflow:hidden;position:absolute;white-space:nowrap}.carousel_title:after{bottom:0;left:50%;margin-left:-115px;max-width:100%;width:230px}.pink-block{background-color:#f8d4ce;padding-top:3px;padding-bottom:3px}.pink-block a{display:inline-block;color:#d07676;padding:10px 0;line-height:1.1}.pink-block a:after{bottom:-8px;color:rgba(0,0,0,.2);content:"...............................................................................................";font-family:monospace;font-size:22px;height:10px;left:0;line-height:0;overflow:hidden;position:absolute;white-space:nowrap;width:100%}.pink-block a:hover{color:#d07676}.pink-block .c_col:last-child a:after{content:""}.pink-block .one_by_one .nav_without_name{padding:0}.block-title{text-align:center;margin:.7em 0 .9em}.block-title h2{font-family:Nickainley Normal,cursive;font-size:4em;text-align:center;font-weight:300;position:relative;line-height:1.3;padding:0 0 20px;margin:0 0 20px}.block-title h2:after{bottom:-8px;color:#999;content:"...............................................................................................";font-family:monospace;font-size:18px;height:10px;left:0;line-height:0;overflow:hidden;position:absolute;white-space:nowrap;width:100%}.footer-block{margin-bottom:24px}.grey-note{color:#999}.b{font-weight:700}.i{font-style:italic}.u{text-decoration:underline}.twa_in_hook{margin:15px 0;clear:both}.twa_in_hook.carousel{margin:15px 0!important;margin-left:-10px;margin-right:-10px;box-shadow:none}.twa_in_hook.carousel .twa_posts{margin:0;opacity:0}.twa_in_hook.carousel h2{margin-left:10px;margin-right:10px}button:-moz-focus-inner{border:0;padding:0}.add_to_cart_form button{display:inline-block;line-height:1rem;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;background:0 0;font-size:12px;text-transform:uppercase;font-weight:700;letter-spacing:2px;font-family:Basil Regular,serif;padding:4px 8px;position:relative;margin:auto;min-width:80px}.add_to_cart_form button:before{border-bottom:2px dashed #f8d4ce;bottom:0;content:"";height:0;left:0;margin:auto;position:absolute;right:0;width:80px}.photo-banner-citrine .banner-item-content{border-radius:10px;background:-webkit-linear-gradient(bottom,#f8e7d1 50%,#fff 0);background:linear-gradient(0deg,#f8e7d1 50%,#fff 0);text-align:center}.photo-banner-citrine .banner-item-content a{padding:75px 50px 40px}.photo-banner-citrine .banner-item-content .custom-html{position:absolute;top:0;margin:15px auto;text-align:center;width:100%}.photo-banner-citrine .banner-item-content .custom-html h3{color:#232323;font-size:23px;margin:0;text-align:center}.photo-banner-citrine .banner-item-content .custom-html h4{color:#777;font:100 9px/20px Basil Regular,serif;letter-spacing:2.5px;margin:5px 0 0;text-transform:uppercase}.photo-banner-citrine .banner-item-content:hover .custom-html,.photo-banner-citrine .banner-item-content:hover a{-moz-transform:scale(1.05);-ms-transform:scale(1.05);-o-transform:scale(1.05);-webkit-transform:scale(1.05);-webkit-transition:all .35s ease 0s;transition:all .35s ease 0s}.photo-banner-azalea .banner-item-content{border-radius:10px;padding-bottom:20px;background:#fff}.photo-banner-azalea .banner-item-content a{padding:10px 55px}.photo-banner-azalea .banner-item-content .custom-html{background:#f8d4ce;height:70px;margin:0;padding:10px 0;text-align:center;width:100%}.photo-banner-azalea .banner-item-content .custom-html h3{color:#232323;font-size:25px;line-height:35px;margin:0;text-align:center}.photo-banner-azalea .banner-item-content .custom-html h4{color:#232323;font:100 9px/10px Basil Regular,serif;letter-spacing:2.5px;margin:5px 0 0;text-transform:uppercase}.photo-banner-azalea .banner-item-content:hover .custom-html h3,.photo-banner-azalea .banner-item-content:hover .custom-html h4,.photo-banner-azalea .banner-item-content:hover a{-moz-transform:scale(1.01);-ms-transform:scale(1.01);-o-transform:scale(1.01);-webkit-transform:scale(1.01);-webkit-transition:all .35s ease 0s;transition:all .35s ease 0s}.photo-banner-horizontal .banner-item-content{min-height:300px;border-radius:10px;position:relative;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;background:-webkit-linear-gradient(bottom,#f8e7d1 50%,#fff 0);background:linear-gradient(0deg,#f8e7d1 50%,#fff 0);-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:40px 0 40px 50px}.photo-banner-horizontal .banner-item-content a{display:block;margin:0;padding:0;width:60%}.photo-banner-horizontal .banner-item-content:hover a{-moz-transform:scale(1.05);-ms-transform:scale(1.05);-o-transform:scale(1.05);-webkit-transform:scale(1.05);-webkit-transition:all .35s ease 0s;transition:all .35s ease 0s}.widget-ourservice .banner-item-content{margin:12px 0}.widget-ourservice .banner-item-content h3{font-size:1.11111rem;margin-bottom:1rem;margin-top:12px}.widget-ourservice .banner-item-content h4{color:#999;font-size:14px;line-height:1.33333rem}.widget-ourservice .banner-item-content img{-moz-transform:rotate(0);-ms-transform:rotate(0);-o-transform:rotate(0);-o-transition:all .3s ease-in-out 0s;-webkit-transform:rotate(0);-webkit-transition:all .3s ease-in-out 0s;transition:all .3s ease-in-out 0s}.widget-ourservice .banner-item-content:hover img{-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);-webkit-transform:rotate(45deg)}.custombanners.displayHome{margin:24px -12px -23px;margin-bottom:0!important}.custombanners .carousel{display:none}.custombanners.displayCustomBanners1{margin:0 -12px -24px}.custombanners.displayCustomBanners1 .banner-item{background:#fff;border-radius:10px;margin-bottom:24px;padding:2.5rem}.custombanners.displayCustomBanners1 .custom-html a{display:block;font-size:14px;margin:10px 0 -40px;text-decoration:underline;text-transform:uppercase}@media (max-width:1000px){#page.row-offcanvas{overflow:hidden}}@media (min-width:1100px){.home-top-left .banner-item:last-child{margin-bottom:0}}@media (max-width:650px){.home-top-left .banner-item{clear:both}.home-top-left .banner-item .banner-item-content{padding:40px 50px 20px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.home-top-left .banner-item .banner-item-content .custom-html{width:auto}.home-top-left .banner-item .banner-item-content .custom-html h3{color:#232323;font-size:23px;margin:0;text-align:center}.home-top-left .banner-item .banner-item-content .custom-html h4{color:#232323;font:100 9px/10px Basil Regular,serif;letter-spacing:2.5px;margin:5px 0 0;text-transform:uppercase}.home-top-left .banner-item .banner-item-content a{width:auto}.widget-ourservice{margin:0 12px}.widget-ourservice .banner-item-content img{width:35%}.custombanners.displayHome{margin:24px 0 0!important}.custombanners.displayCustomBanners1 .banner-item{padding:30px}.banner-item-content .banner-img{width:100%}.photo-banner-citrine .banner-item-content{padding:70px 50px 30px!important}.photo-banner-citrine .banner-item-content .custom-html{padding:0!important;width:100%!important;left:0}.photo-banner-citrine .banner-item-content .custom-html h3{margin:0 0 5px}.photo-banner-citrine .banner-item-content a{padding:0}.photo-banner-horizontal .banner-item-content{padding-top:30px!important}.photo-banner-azalea .banner-item-content{padding:0 0 30px!important}.grey-note{display:block}}@supports (-webkit-overflow-scrolling:touch){#to_top{display:none}}.easycarousels{overflow:hidden;position:relative;padding:0;clear:both;display:block}.easycarousels h3{line-height:42px;margin:15px 0;overflow:hidden;padding-right:93px;text-overflow:ellipsis;white-space:nowrap}.easycarousels .product-miniature .product-title{margin:0}.easycarousels .style1 .product-miniature .product-price-and-shipping{margin-bottom:5px}.home-top-right{overflow:hidden}.c_container{visibility:hidden}.c_col,.c_item{text-align:center}.c_item{padding:5px 15px;position:relative}.c_item .item-title{font-size:1.1em;padding:5px 0}.c_item img{display:block;height:auto;margin:0 auto;max-width:100%}.c_item .nowrap{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.one_by_one .nav_without_name{padding-top:52px}@media (max-width:767px){.easycarousels h3{font-size:18px}.simple-grid.s-1 .c_col{width:100%}.title_block.carousel_title{font-size:3em}}.simple-grid .c_col{display:inline-block;vertical-align:top}.simple-grid.xl-1 .c_col{width:100%}@media (max-width:480px){.simple-grid.xs-1 .c_col{width:100%}}.banner-item{text-align:center;position:relative}.banner-item.text-left{text-align:left}.banner-item-content{position:relative}.banner-item-content .banner-img{display:inline-block;height:auto;max-width:100%}.home-top-left .banner-item{margin-bottom:24px}.cb-wrapper.home-top-left{padding:0}.zoom-on-hover .banner-item-content>a{border-radius:10px;display:block;overflow:hidden}.zoom-on-hover .banner-item-content img{-webkit-transition:all .35s ease 0s;transition:all .35s ease 0s}.zoom-on-hover .banner-item-content:hover img{-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);-webkit-transform:scale(1.1)}.title_block.carousel_title{font-family:Nickainley Normal,cursive;font-size:4em;font-weight:300;line-height:1.3;margin:0 0 20px;padding:0 0 20px;position:relative;text-align:center}.c-wrapper.w-9 .c_item{line-height:1.1;text-align:left}.c-wrapper.w-9 .item-image{float:left;margin:0 7px 0 0}.c-wrapper.w-9 .item-matches{color:#999;font-size:.9em;margin-top:5px}.c-wrapper.w-9 .item-matches:before{content:"("}.c-wrapper.w-9 .item-matches:after{content:")"}.ab.block h2{margin:0}.ab.block h2,.block-viewall{display:inline-block;vertical-align:middle}.block-viewall{border-left:1px solid #dfe1e6;color:#999;font-size:.8em;line-height:1;margin-left:10px;padding:4px 0 2px 10px;text-transform:uppercase}.item-list{clear:both}.item-list .first-in-line{clear:left}.post-item-info{margin-right:10px}.post-item-compact{font-size:12px;line-height:1.2;margin-bottom:15px}.post-item-cover-compact img{border:1px solid #dfe1e6;margin:0 0 5px;padding:5px}.post-item-title-compact{font-size:14px;margin:0 0 3px}.post-item-infos-compact{color:#999;font-size:11px;margin:5px 0}.amazzingblog img{height:auto;max-width:100%}.amazzingblog a,.amazzingblog a:active,.amazzingblog a:hover{text-decoration:none}.overflow-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.twa_posts{margin:0 -10px}.twa_posts .post{padding:10px;box-sizing:border-box}.twa_posts .post h5{font-size:1.3em;margin:.6em 0}.twa_posts .post .less{display:none}.twa_posts .content_wrapper{background:#dfe1e6;border:1px solid #dfe1e6;border-radius:5px;padding:30px 15px 45px;position:relative}.twa_posts .post_content{max-height:130px;overflow:hidden}.twa_posts .post_avatar img{background:#fff;border:1px solid #dfe1e6;border-radius:100%;display:inline-block;height:70px;margin:0 0 -35px!important;padding:5px;position:relative;width:70px;z-index:1}.twa_posts .expand{display:none}.post_content img{margin:0 3px;vertical-align:top}.post_footer{bottom:0;margin:15px;position:absolute;right:0;z-index:1}.middle-line{display:block;overflow:hidden;text-align:center}.middle-line:after{left:.5em;margin-right:-50%}.middle-line:after,.middle-line:before{background-color:#dfe1e6;content:"";display:inline-block;height:1px;position:relative;vertical-align:middle;width:50%}.middle-line:before{margin-left:-50%;right:.5em}.post_rating{float:right;margin-right:-3px}.rating-star{color:#dfe1e6;font-size:15px;float:left;padding-right:3px}.rating-star.on{color:#fc0}.unicode-star:before{content:"\2605";font-style:normal}.widget-testimonial .block.style1{background-image:url(../css/067afa1e533d45c3bac3b5e1d527d618.jpg);background-position:top;background-repeat:repeat-x}.add_to_cart_form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:hsla(0,0%,100%,.3);padding:10px}.add_to_cart_form input[type=number]{display:none;padding:9px 10px;width:30%}.add_to_cart_form button{display:inline-block;line-height:1rem;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:0;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;background:transparent;font-size:12px;text-transform:uppercase;font-weight:700;letter-spacing:2px;font-family:Basil Regular,serif;padding:4px 8px;position:relative;margin:auto;min-width:80px}.add_to_cart_form button:before{position:absolute;content:"";width:80px;height:0;border-bottom:2px dashed #fed2cc;left:0;right:0;bottom:0;margin:auto}.style1 .product-miniature .btn-action .flex-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;width:100%;float:none}.breadcrumb{margin-bottom:0!important}#search_filters .custom-checkbox span i{top:2px;position:absolute;left:0;margin:0;width:12px;height:12px;font-size:10px}#index .ps_breadcumb{margin-bottom:40px}#index .breadcrumb{display:none!important}#block-reassurance,.modal-footer{display:none}body{opacity:1} \ No newline at end of file +/*! normalize.css v4.2.0 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}progress{vertical-align:baseline}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}button,input,optgroup,select,textarea{font:inherit;margin:0}optgroup{font-weight:700}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}@media print{*,:after,:before,:first-letter,blockquote:first-line,div:first-line,li:first-line,p:first-line{text-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}abbr[title]:after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.tag{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}@-ms-viewport{width:device-width}html{font-size:16px;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.5;color:#373a3c;background-color:#fff}[tabindex="-1"]:focus{outline:none!important}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{font-style:normal;line-height:inherit}address,dl,ol,ul{margin-bottom:1rem}dl,ol,ul{margin-top:0}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}a{text-decoration:none}a:focus,a:hover{color:#ba4040;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:not([href]):not([tabindex]),a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:none}pre{overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle}[role=button]{cursor:pointer}[role=button],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse;background-color:transparent}caption{padding-top:.75rem;padding-bottom:.75rem;color:#999;caption-side:bottom}caption,th{text-align:left}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,select,textarea{line-height:inherit}input[type=checkbox]:disabled,input[type=radio]:disabled{cursor:not-allowed}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit}input[type=search]{-webkit-appearance:none}output{display:inline-block}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:700;line-height:1.1;color:inherit}.h1,h1{font-size:1.375rem}.h2,h2{font-size:1.25rem}.h3,.h4,h3,h4{font-size:1.125rem}.h5,h5{font-size:1rem}.h6,h6{font-size:.9375rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:3.125rem;font-weight:600}.display-2{font-size:2.188rem;font-weight:400}.display-3{font-size:1.563rem;font-weight:400}.display-4{font-size:1.25rem;font-weight:400}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:5px}.initialism{font-size:90%;text-transform:uppercase}.blockquote{padding:.5rem 1rem;margin-bottom:1rem;font-size:1.25rem;border-left:.25rem solid #eceeef}.blockquote-footer{display:block;font-size:80%;color:#818a91}.blockquote-footer:before{content:"\2014 \A0"}.blockquote-reverse{padding-right:1rem;padding-left:0;text-align:right;border-right:.25rem solid #eceeef;border-left:0}.blockquote-reverse .blockquote-footer:before{content:""}.blockquote-reverse .blockquote-footer:after{content:"\A0 \2014"}dl.row>dd+dt{clear:left}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img,.img-fluid,.img-thumbnail{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #ddd;border-radius:0;transition:all .2s ease-in-out}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#818a91}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}code{color:#bd4147;background-color:#f7f7f9;border-radius:0}code,kbd{padding:.2rem .4rem;font-size:90%}kbd{color:#fff;background-color:#333;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;margin-top:0;margin-bottom:1rem;font-size:90%;color:#373a3c}pre code{padding:0;font-size:inherit;color:inherit;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}.container:after{content:"";display:table;clear:both}@media (min-width:576px){.container{width:540px;max-width:100%}}@media (min-width:768px){.container{width:720px;max-width:100%}}@media (min-width:992px){.container{width:960px;max-width:100%}}@media (min-width:1200px){.container{width:1140px;max-width:100%}}.container-fluid{margin-left:auto;margin-right:auto;padding-left:15px;padding-right:15px}.container-fluid:after{content:"";display:table;clear:both}.row{margin-right:-15px;margin-left:-15px}.row:after{content:"";display:table;clear:both}@media (min-width:576px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:768px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:992px){.row{margin-right:-15px;margin-left:-15px}}@media (min-width:1200px){.row{margin-right:-15px;margin-left:-15px}}.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}@media (min-width:576px){.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{padding-right:15px;padding-left:15px}}@media (min-width:768px){.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{padding-right:15px;padding-left:15px}}@media (min-width:992px){.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{padding-right:15px;padding-left:15px}}@media (min-width:1200px){.col-lg,.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12,.col-md,.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12,.col-sm,.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12,.col-xl,.col-xl-1,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-10,.col-xl-11,.col-xl-12,.col-xs,.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{padding-right:15px;padding-left:15px}}.col-xs-1{float:left;width:8.33333%}.col-xs-2{float:left;width:16.66667%}.col-xs-3{float:left;width:25%}.col-xs-4{float:left;width:33.33333%}.col-xs-5{float:left;width:41.66667%}.col-xs-6{float:left;width:50%}.col-xs-7{float:left;width:58.33333%}.col-xs-8{float:left;width:66.66667%}.col-xs-9{float:left;width:75%}.col-xs-10{float:left;width:83.33333%}.col-xs-11{float:left;width:91.66667%}.col-xs-12{float:left;width:100%}.pull-xs-0{right:auto}.pull-xs-1{right:8.33333%}.pull-xs-2{right:16.66667%}.pull-xs-3{right:25%}.pull-xs-4{right:33.33333%}.pull-xs-5{right:41.66667%}.pull-xs-6{right:50%}.pull-xs-7{right:58.33333%}.pull-xs-8{right:66.66667%}.pull-xs-9{right:75%}.pull-xs-10{right:83.33333%}.pull-xs-11{right:91.66667%}.pull-xs-12{right:100%}.push-xs-0{left:auto}.push-xs-1{left:8.33333%}.push-xs-2{left:16.66667%}.push-xs-3{left:25%}.push-xs-4{left:33.33333%}.push-xs-5{left:41.66667%}.push-xs-6{left:50%}.push-xs-7{left:58.33333%}.push-xs-8{left:66.66667%}.push-xs-9{left:75%}.push-xs-10{left:83.33333%}.push-xs-11{left:91.66667%}.push-xs-12{left:100%}.offset-xs-1{margin-left:8.33333%}.offset-xs-2{margin-left:16.66667%}.offset-xs-3{margin-left:25%}.offset-xs-4{margin-left:33.33333%}.offset-xs-5{margin-left:41.66667%}.offset-xs-6{margin-left:50%}.offset-xs-7{margin-left:58.33333%}.offset-xs-8{margin-left:66.66667%}.offset-xs-9{margin-left:75%}.offset-xs-10{margin-left:83.33333%}.offset-xs-11{margin-left:91.66667%}@media (min-width:576px){.col-sm-1{float:left;width:8.33333%}.col-sm-2{float:left;width:16.66667%}.col-sm-3{float:left;width:25%}.col-sm-4{float:left;width:33.33333%}.col-sm-5{float:left;width:41.66667%}.col-sm-6{float:left;width:50%}.col-sm-7{float:left;width:58.33333%}.col-sm-8{float:left;width:66.66667%}.col-sm-9{float:left;width:75%}.col-sm-10{float:left;width:83.33333%}.col-sm-11{float:left;width:91.66667%}.col-sm-12{float:left;width:100%}.pull-sm-0{right:auto}.pull-sm-1{right:8.33333%}.pull-sm-2{right:16.66667%}.pull-sm-3{right:25%}.pull-sm-4{right:33.33333%}.pull-sm-5{right:41.66667%}.pull-sm-6{right:50%}.pull-sm-7{right:58.33333%}.pull-sm-8{right:66.66667%}.pull-sm-9{right:75%}.pull-sm-10{right:83.33333%}.pull-sm-11{right:91.66667%}.pull-sm-12{right:100%}.push-sm-0{left:auto}.push-sm-1{left:8.33333%}.push-sm-2{left:16.66667%}.push-sm-3{left:25%}.push-sm-4{left:33.33333%}.push-sm-5{left:41.66667%}.push-sm-6{left:50%}.push-sm-7{left:58.33333%}.push-sm-8{left:66.66667%}.push-sm-9{left:75%}.push-sm-10{left:83.33333%}.push-sm-11{left:91.66667%}.push-sm-12{left:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333%}.offset-sm-2{margin-left:16.66667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333%}.offset-sm-5{margin-left:41.66667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333%}.offset-sm-8{margin-left:66.66667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333%}.offset-sm-11{margin-left:91.66667%}}@media (min-width:768px){.col-md-1{float:left;width:8.33333%}.col-md-2{float:left;width:16.66667%}.col-md-3{float:left;width:25%}.col-md-4{float:left;width:33.33333%}.col-md-5{float:left;width:41.66667%}.col-md-6{float:left;width:50%}.col-md-7{float:left;width:58.33333%}.col-md-8{float:left;width:66.66667%}.col-md-9{float:left;width:75%}.col-md-10{float:left;width:83.33333%}.col-md-11{float:left;width:91.66667%}.col-md-12{float:left;width:100%}.pull-md-0{right:auto}.pull-md-1{right:8.33333%}.pull-md-2{right:16.66667%}.pull-md-3{right:25%}.pull-md-4{right:33.33333%}.pull-md-5{right:41.66667%}.pull-md-6{right:50%}.pull-md-7{right:58.33333%}.pull-md-8{right:66.66667%}.pull-md-9{right:75%}.pull-md-10{right:83.33333%}.pull-md-11{right:91.66667%}.pull-md-12{right:100%}.push-md-0{left:auto}.push-md-1{left:8.33333%}.push-md-2{left:16.66667%}.push-md-3{left:25%}.push-md-4{left:33.33333%}.push-md-5{left:41.66667%}.push-md-6{left:50%}.push-md-7{left:58.33333%}.push-md-8{left:66.66667%}.push-md-9{left:75%}.push-md-10{left:83.33333%}.push-md-11{left:91.66667%}.push-md-12{left:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333%}.offset-md-2{margin-left:16.66667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333%}.offset-md-5{margin-left:41.66667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333%}.offset-md-8{margin-left:66.66667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333%}.offset-md-11{margin-left:91.66667%}}@media (min-width:992px){.col-lg-1{float:left;width:8.33333%}.col-lg-2{float:left;width:16.66667%}.col-lg-3{float:left;width:25%}.col-lg-4{float:left;width:33.33333%}.col-lg-5{float:left;width:41.66667%}.col-lg-6{float:left;width:50%}.col-lg-7{float:left;width:58.33333%}.col-lg-8{float:left;width:66.66667%}.col-lg-9{float:left;width:75%}.col-lg-10{float:left;width:83.33333%}.col-lg-11{float:left;width:91.66667%}.col-lg-12{float:left;width:100%}.pull-lg-0{right:auto}.pull-lg-1{right:8.33333%}.pull-lg-2{right:16.66667%}.pull-lg-3{right:25%}.pull-lg-4{right:33.33333%}.pull-lg-5{right:41.66667%}.pull-lg-6{right:50%}.pull-lg-7{right:58.33333%}.pull-lg-8{right:66.66667%}.pull-lg-9{right:75%}.pull-lg-10{right:83.33333%}.pull-lg-11{right:91.66667%}.pull-lg-12{right:100%}.push-lg-0{left:auto}.push-lg-1{left:8.33333%}.push-lg-2{left:16.66667%}.push-lg-3{left:25%}.push-lg-4{left:33.33333%}.push-lg-5{left:41.66667%}.push-lg-6{left:50%}.push-lg-7{left:58.33333%}.push-lg-8{left:66.66667%}.push-lg-9{left:75%}.push-lg-10{left:83.33333%}.push-lg-11{left:91.66667%}.push-lg-12{left:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333%}.offset-lg-2{margin-left:16.66667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333%}.offset-lg-5{margin-left:41.66667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333%}.offset-lg-8{margin-left:66.66667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333%}.offset-lg-11{margin-left:91.66667%}}@media (min-width:1200px){.col-xl-1{float:left;width:8.33333%}.col-xl-2{float:left;width:16.66667%}.col-xl-3{float:left;width:25%}.col-xl-4{float:left;width:33.33333%}.col-xl-5{float:left;width:41.66667%}.col-xl-6{float:left;width:50%}.col-xl-7{float:left;width:58.33333%}.col-xl-8{float:left;width:66.66667%}.col-xl-9{float:left;width:75%}.col-xl-10{float:left;width:83.33333%}.col-xl-11{float:left;width:91.66667%}.col-xl-12{float:left;width:100%}.pull-xl-0{right:auto}.pull-xl-1{right:8.33333%}.pull-xl-2{right:16.66667%}.pull-xl-3{right:25%}.pull-xl-4{right:33.33333%}.pull-xl-5{right:41.66667%}.pull-xl-6{right:50%}.pull-xl-7{right:58.33333%}.pull-xl-8{right:66.66667%}.pull-xl-9{right:75%}.pull-xl-10{right:83.33333%}.pull-xl-11{right:91.66667%}.pull-xl-12{right:100%}.push-xl-0{left:auto}.push-xl-1{left:8.33333%}.push-xl-2{left:16.66667%}.push-xl-3{left:25%}.push-xl-4{left:33.33333%}.push-xl-5{left:41.66667%}.push-xl-6{left:50%}.push-xl-7{left:58.33333%}.push-xl-8{left:66.66667%}.push-xl-9{left:75%}.push-xl-10{left:83.33333%}.push-xl-11{left:91.66667%}.push-xl-12{left:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333%}.offset-xl-2{margin-left:16.66667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333%}.offset-xl-5{margin-left:41.66667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333%}.offset-xl-8{margin-left:66.66667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333%}.offset-xl-11{margin-left:91.66667%}}.table{width:100%;max-width:100%;margin-bottom:1rem}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #eceeef}.table thead th{vertical-align:bottom;border-bottom:2px solid #eceeef}.table tbody+tbody{border-top:2px solid #eceeef}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered,.table-bordered td,.table-bordered th{border:1px solid #eceeef}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-active,.table-active>td,.table-active>th,.table-hover .table-active:hover,.table-hover .table-active:hover>td,.table-hover .table-active:hover>th,.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-success,.table-success>td,.table-success>th{background-color:#dff0d8}.table-hover .table-success:hover,.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#d0e9c6}.table-info,.table-info>td,.table-info>th{background-color:#d9edf7}.table-hover .table-info:hover,.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#c4e3f3}.table-warning,.table-warning>td,.table-warning>th{background-color:#fcf8e3}.table-hover .table-warning:hover,.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#faf2cc}.table-danger,.table-danger>td,.table-danger>th{background-color:#f2dede}.table-hover .table-danger:hover,.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#ebcccc}.thead-inverse th{color:#fff;background-color:#373a3c}.thead-default th{color:#999;background-color:#eceeef}.table-inverse{color:#eceeef;background-color:#373a3c}.table-inverse td,.table-inverse th,.table-inverse thead th{border-color:#999}.table-inverse.table-bordered{border:0}.table-responsive{display:block;width:100%;min-height:0;overflow-x:auto}.table-reflow thead{float:left}.table-reflow tbody{display:block;white-space:nowrap}.table-reflow td,.table-reflow th{border-top:1px solid #eceeef;border-left:1px solid #eceeef}.table-reflow td:last-child,.table-reflow th:last-child{border-right:1px solid #eceeef}.table-reflow tbody:last-child tr:last-child td,.table-reflow tbody:last-child tr:last-child th,.table-reflow tfoot:last-child tr:last-child td,.table-reflow tfoot:last-child tr:last-child th,.table-reflow thead:last-child tr:last-child td,.table-reflow thead:last-child tr:last-child th{border-bottom:1px solid #eceeef}.table-reflow tr{float:left}.table-reflow tr td,.table-reflow tr th{display:block!important;border:1px solid #eceeef}.form-control{display:block;width:100%;padding:.5rem .75rem;font-size:1rem;line-height:1.25;background-color:#fff;background-image:none;background-clip:padding-box;border-radius:0}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#999;border-color:#66afe9;outline:none}.form-control::-webkit-input-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999;opacity:1}.form-control::placeholder{color:#999;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#eceeef;opacity:1}.form-control:disabled{cursor:not-allowed}select.form-control:not([size]):not([multiple]){height:calc(2.5rem - 2px)}select.form-control:focus::-ms-value{color:#999;background-color:#fff}.form-control-file,.form-control-range{display:block}.col-form-label{padding-top:.5rem;padding-bottom:.5rem;margin-bottom:0}.col-form-label-lg{padding-top:.75rem;padding-bottom:.75rem;font-size:.9375rem}.col-form-label-sm{padding-top:.25rem;padding-bottom:.25rem;font-size:.875rem}.col-form-legend{margin-bottom:0;font-size:1rem}.col-form-legend,.form-control-static{padding-top:.5rem;padding-bottom:.5rem}.form-control-static{line-height:1.25;border:solid transparent;border-width:1px 0}.form-control-static.form-control-lg,.form-control-static.form-control-sm,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-sm>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),.input-group-sm>select.input-group-addon:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:1.8125rem}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{padding:.75rem 1.5rem;font-size:.9375rem;border-radius:.3rem}.input-group-lg>.input-group-btn>select.btn:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),.input-group-lg>select.input-group-addon:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:2.75rem}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-check{position:relative;display:block;margin-bottom:.75rem}.form-check+.form-check{margin-top:-.25rem}.form-check.disabled .form-check-label{color:#999;cursor:not-allowed}.form-check-label{padding-left:1.25rem;margin-bottom:0;cursor:pointer}.form-check-input{position:absolute;margin-top:.25rem;margin-left:-1.25rem}.form-check-input:only-child{position:static}.form-check-inline{position:relative;display:inline-block;padding-left:1.25rem;margin-bottom:0;vertical-align:middle;cursor:pointer}.form-check-inline+.form-check-inline{margin-left:.75rem}.form-check-inline.disabled{color:#999;cursor:not-allowed}.form-control-feedback{margin-top:.25rem}.form-control-danger,.form-control-success,.form-control-warning{padding-right:2.25rem;background-repeat:no-repeat;background-position:center right .625rem;background-size:1.25rem 1.25rem}.has-success .custom-control,.has-success .form-check-inline,.has-success .form-check-label,.has-success .form-control-feedback,.has-success .form-control-label{color:#4cbb6c}.has-success .form-control{border-color:#4cbb6c}.has-success .form-control:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #96d7a9}.has-success .input-group-addon{color:#4cbb6c;border-color:#4cbb6c;background-color:#e0f3e5}.has-success .form-control-success{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#4cbb6c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E")}.has-warning .custom-control,.has-warning .form-check-inline,.has-warning .form-check-label,.has-warning .form-control-feedback,.has-warning .form-control-label{color:#ff9a52}.has-warning .form-control{border-color:#ff9a52}.has-warning .form-control:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffd6b8}.has-warning .input-group-addon{color:#ff9a52;border-color:#ff9a52;background-color:#fff}.has-warning .form-control-warning{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#ff9a52' d='M4.4 5.324h-.8v-2.46h.8zm0 1.42h-.8V5.89h.8zM3.76.63L.04 7.075c-.115.2.016.425.26.426h7.397c.242 0 .372-.226.258-.426C6.726 4.924 5.47 2.79 4.253.63c-.113-.174-.39-.174-.494 0z'/%3E%3C/svg%3E")}.has-danger .custom-control,.has-danger .form-check-inline,.has-danger .form-check-label,.has-danger .form-control-feedback,.has-danger .form-control-label{color:#ff4c4c}.has-danger .form-control{border-color:#ff4c4c}.has-danger .form-control:focus{box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ffb2b2}.has-danger .input-group-addon{color:#ff4c4c;border-color:#ff4c4c;background-color:#fff}.has-danger .form-control-danger{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#ff4c4c' viewBox='-2 -2 7 7'%3E%3Cpath stroke='%23d9534f' d='M0 0l3 3m0-3L0 3'/%3E%3Ccircle r='.5'/%3E%3Ccircle cx='3' r='.5'/%3E%3Ccircle cy='3' r='.5'/%3E%3Ccircle cx='3' cy='3' r='.5'/%3E%3C/svg%3E")}@media (min-width:576px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;width:auto;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .form-check,.form-inline .form-control-label{margin-bottom:0;vertical-align:middle}.form-inline .form-check{display:inline-block;margin-top:0}.form-inline .form-check-label{padding-left:0}.form-inline .form-check-input{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.btn{display:inline-block;font-weight:400;line-height:1.25;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.5rem 1rem;font-size:1rem;border-radius:0}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0}.btn.disabled,.btn:disabled{cursor:not-allowed;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#d07676;border-color:transparent}.btn-primary.focus,.btn-primary:focus,.btn-primary:hover{color:#fff;background-color:#c35050;border-color:transparent}.btn-primary.active,.btn-primary:active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#c35050;border-color:transparent;background-image:none}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.btn-primary.dropdown-toggle.focus,.open>.btn-primary.dropdown-toggle:focus,.open>.btn-primary.dropdown-toggle:hover{color:#fff;background-color:#b23d3d;border-color:transparent}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary:disabled.focus,.btn-primary:disabled:focus,.btn-primary:disabled:hover{background-color:#d07676;border-color:transparent}.btn-secondary,.btn-tertiary{color:#232323;background-color:#dfe1e6;border-color:transparent}.btn-secondary.focus,.btn-secondary:focus,.btn-secondary:hover,.btn-tertiary:focus,.btn-tertiary:hover,.focus.btn-tertiary{color:#232323;background-color:#c2c6d0;border-color:transparent}.active.btn-tertiary,.btn-secondary.active,.btn-secondary:active,.btn-tertiary:active,.open>.btn-secondary.dropdown-toggle,.open>.dropdown-toggle.btn-tertiary{color:#232323;background-color:#c2c6d0;border-color:transparent;background-image:none}.active.btn-tertiary:focus,.active.btn-tertiary:hover,.active.focus.btn-tertiary,.btn-secondary.active.focus,.btn-secondary.active:focus,.btn-secondary.active:hover,.btn-secondary:active.focus,.btn-secondary:active:focus,.btn-secondary:active:hover,.btn-tertiary:active.focus,.btn-tertiary:active:focus,.btn-tertiary:active:hover,.open>.btn-secondary.dropdown-toggle.focus,.open>.btn-secondary.dropdown-toggle:focus,.open>.btn-secondary.dropdown-toggle:hover,.open>.dropdown-toggle.btn-tertiary:focus,.open>.dropdown-toggle.btn-tertiary:hover,.open>.dropdown-toggle.focus.btn-tertiary{color:#232323;background-color:#aeb3c0;border-color:transparent}.btn-secondary.disabled.focus,.btn-secondary.disabled:focus,.btn-secondary.disabled:hover,.btn-secondary:disabled.focus,.btn-secondary:disabled:focus,.btn-secondary:disabled:hover,.btn-tertiary:disabled.focus,.btn-tertiary:disabled:focus,.btn-tertiary:disabled:hover,.disabled.btn-tertiary:focus,.disabled.btn-tertiary:hover,.disabled.focus.btn-tertiary{background-color:#dfe1e6;border-color:transparent}.btn-info{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c}.btn-info.focus,.btn-info:focus,.btn-info:hover{color:#fff;background-color:#ff1919;border-color:#ff0f0f}.btn-info.active,.btn-info:active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#ff1919;border-color:#ff0f0f;background-image:none}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.btn-info.dropdown-toggle.focus,.open>.btn-info.dropdown-toggle:focus,.open>.btn-info.dropdown-toggle:hover{color:#fff;background-color:#f40000;border-color:#c00}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info:disabled.focus,.btn-info:disabled:focus,.btn-info:disabled:hover{background-color:#ff4c4c;border-color:#ff4c4c}.btn-success{color:#fff;background-color:#4cbb6c;border-color:#4cbb6c}.btn-success.focus,.btn-success:focus,.btn-success:hover{color:#fff;background-color:#3a9a56;border-color:#389252}.btn-success.active,.btn-success:active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#3a9a56;border-color:#389252;background-image:none}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.btn-success.dropdown-toggle.focus,.open>.btn-success.dropdown-toggle:focus,.open>.btn-success.dropdown-toggle:hover{color:#fff;background-color:#318047;border-color:#256237}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success:disabled.focus,.btn-success:disabled:focus,.btn-success:disabled:hover{background-color:#4cbb6c;border-color:#4cbb6c}.btn-warning{color:#fff;background-color:#ff9a52;border-color:#ff9a52}.btn-warning.focus,.btn-warning:focus,.btn-warning:hover{color:#fff;background-color:#ff7c1f;border-color:#ff7615}.btn-warning.active,.btn-warning:active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ff7c1f;border-color:#ff7615;background-image:none}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.btn-warning.dropdown-toggle.focus,.open>.btn-warning.dropdown-toggle:focus,.open>.btn-warning.dropdown-toggle:hover{color:#fff;background-color:#fa6800;border-color:#d25700}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning:disabled.focus,.btn-warning:disabled:focus,.btn-warning:disabled:hover{background-color:#ff9a52;border-color:#ff9a52}.btn-danger{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c}.btn-danger.focus,.btn-danger:focus,.btn-danger:hover{color:#fff;background-color:#ff1919;border-color:#ff0f0f}.btn-danger.active,.btn-danger:active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#ff1919;border-color:#ff0f0f;background-image:none}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.btn-danger.dropdown-toggle.focus,.open>.btn-danger.dropdown-toggle:focus,.open>.btn-danger.dropdown-toggle:hover{color:#fff;background-color:#f40000;border-color:#c00}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger:disabled.focus,.btn-danger:disabled:focus,.btn-danger:disabled:hover{background-color:#ff4c4c;border-color:#ff4c4c}.btn-outline-primary{color:#d07676;background-image:none;background-color:transparent;border-color:#d07676}.btn-outline-primary.active,.btn-outline-primary.focus,.btn-outline-primary:active,.btn-outline-primary:focus,.btn-outline-primary:hover,.open>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#d07676;border-color:#d07676}.btn-outline-primary.active.focus,.btn-outline-primary.active:focus,.btn-outline-primary.active:hover,.btn-outline-primary:active.focus,.btn-outline-primary:active:focus,.btn-outline-primary:active:hover,.open>.btn-outline-primary.dropdown-toggle.focus,.open>.btn-outline-primary.dropdown-toggle:focus,.open>.btn-outline-primary.dropdown-toggle:hover{color:#fff;background-color:#b23d3d;border-color:#943333}.btn-outline-primary.disabled.focus,.btn-outline-primary.disabled:focus,.btn-outline-primary.disabled:hover,.btn-outline-primary:disabled.focus,.btn-outline-primary:disabled:focus,.btn-outline-primary:disabled:hover{border-color:#eac2c2}.btn-outline-secondary{color:transparent;background-image:none;background-color:transparent;border-color:transparent}.btn-outline-secondary.active,.btn-outline-secondary.active.focus,.btn-outline-secondary.active:focus,.btn-outline-secondary.active:hover,.btn-outline-secondary.focus,.btn-outline-secondary:active,.btn-outline-secondary:active.focus,.btn-outline-secondary:active:focus,.btn-outline-secondary:active:hover,.btn-outline-secondary:focus,.btn-outline-secondary:hover,.open>.btn-outline-secondary.dropdown-toggle,.open>.btn-outline-secondary.dropdown-toggle.focus,.open>.btn-outline-secondary.dropdown-toggle:focus,.open>.btn-outline-secondary.dropdown-toggle:hover{color:#fff;background-color:transparent;border-color:transparent}.btn-outline-secondary.disabled.focus,.btn-outline-secondary.disabled:focus,.btn-outline-secondary.disabled:hover,.btn-outline-secondary:disabled.focus,.btn-outline-secondary:disabled:focus,.btn-outline-secondary:disabled:hover{border-color:rgba(51,51,51,0)}.btn-outline-info{color:#ff4c4c;background-image:none;background-color:transparent;border-color:#ff4c4c}.btn-outline-info.active,.btn-outline-info.focus,.btn-outline-info:active,.btn-outline-info:focus,.btn-outline-info:hover,.open>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c}.btn-outline-info.active.focus,.btn-outline-info.active:focus,.btn-outline-info.active:hover,.btn-outline-info:active.focus,.btn-outline-info:active:focus,.btn-outline-info:active:hover,.open>.btn-outline-info.dropdown-toggle.focus,.open>.btn-outline-info.dropdown-toggle:focus,.open>.btn-outline-info.dropdown-toggle:hover{color:#fff;background-color:#f40000;border-color:#c00}.btn-outline-info.disabled.focus,.btn-outline-info.disabled:focus,.btn-outline-info.disabled:hover,.btn-outline-info:disabled.focus,.btn-outline-info:disabled:focus,.btn-outline-info:disabled:hover{border-color:#ffb2b2}.btn-outline-success{color:#4cbb6c;background-image:none;background-color:transparent;border-color:#4cbb6c}.btn-outline-success.active,.btn-outline-success.focus,.btn-outline-success:active,.btn-outline-success:focus,.btn-outline-success:hover,.open>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#4cbb6c;border-color:#4cbb6c}.btn-outline-success.active.focus,.btn-outline-success.active:focus,.btn-outline-success.active:hover,.btn-outline-success:active.focus,.btn-outline-success:active:focus,.btn-outline-success:active:hover,.open>.btn-outline-success.dropdown-toggle.focus,.open>.btn-outline-success.dropdown-toggle:focus,.open>.btn-outline-success.dropdown-toggle:hover{color:#fff;background-color:#318047;border-color:#256237}.btn-outline-success.disabled.focus,.btn-outline-success.disabled:focus,.btn-outline-success.disabled:hover,.btn-outline-success:disabled.focus,.btn-outline-success:disabled:focus,.btn-outline-success:disabled:hover{border-color:#96d7a9}.btn-outline-warning{color:#ff9a52;background-image:none;background-color:transparent;border-color:#ff9a52}.btn-outline-warning.active,.btn-outline-warning.focus,.btn-outline-warning:active,.btn-outline-warning:focus,.btn-outline-warning:hover,.open>.btn-outline-warning.dropdown-toggle{color:#fff;background-color:#ff9a52;border-color:#ff9a52}.btn-outline-warning.active.focus,.btn-outline-warning.active:focus,.btn-outline-warning.active:hover,.btn-outline-warning:active.focus,.btn-outline-warning:active:focus,.btn-outline-warning:active:hover,.open>.btn-outline-warning.dropdown-toggle.focus,.open>.btn-outline-warning.dropdown-toggle:focus,.open>.btn-outline-warning.dropdown-toggle:hover{color:#fff;background-color:#fa6800;border-color:#d25700}.btn-outline-warning.disabled.focus,.btn-outline-warning.disabled:focus,.btn-outline-warning.disabled:hover,.btn-outline-warning:disabled.focus,.btn-outline-warning:disabled:focus,.btn-outline-warning:disabled:hover{border-color:#ffd6b8}.btn-outline-danger{color:#ff4c4c;background-image:none;background-color:transparent;border-color:#ff4c4c}.btn-outline-danger.active,.btn-outline-danger.focus,.btn-outline-danger:active,.btn-outline-danger:focus,.btn-outline-danger:hover,.open>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c}.btn-outline-danger.active.focus,.btn-outline-danger.active:focus,.btn-outline-danger.active:hover,.btn-outline-danger:active.focus,.btn-outline-danger:active:focus,.btn-outline-danger:active:hover,.open>.btn-outline-danger.dropdown-toggle.focus,.open>.btn-outline-danger.dropdown-toggle:focus,.open>.btn-outline-danger.dropdown-toggle:hover{color:#fff;background-color:#f40000;border-color:#c00}.btn-outline-danger.disabled.focus,.btn-outline-danger.disabled:focus,.btn-outline-danger.disabled:hover,.btn-outline-danger:disabled.focus,.btn-outline-danger:disabled:focus,.btn-outline-danger:disabled:hover{border-color:#ffb2b2}.btn-link{font-weight:400;color:#d07676;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link:disabled{background-color:transparent}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#ba4040;text-decoration:underline;background-color:transparent}.btn-link:disabled:focus,.btn-link:disabled:hover{color:#818a91;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:.75rem 1.5rem;font-size:.9375rem;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{height:0;overflow:hidden;transition-timing-function:ease;transition-duration:.35s;transition-property:height}.collapsing,.dropdown,.dropup{position:relative}.dropdown-toggle:after{display:inline-block;width:0;height:0;margin-left:.3em;vertical-align:middle;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-left:.3em solid transparent}.dropdown-toggle:focus{outline:0}.dropup .dropdown-toggle:after{border-top:0;border-bottom:.3em solid}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#373a3c;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:0}.dropdown-divider{height:1px;margin:.5rem 0;overflow:hidden;background-color:#e5e5e5}.dropdown-item{display:block;width:100%;padding:3px 1.5rem;clear:both;font-weight:400;color:#373a3c;text-align:inherit;white-space:nowrap;background:none;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#2b2d2f;background-color:#f5f5f5}.dropdown-item.active,.dropdown-item.active:focus,.dropdown-item.active:hover{color:#fff;text-decoration:none;background-color:#d07676;outline:0}.dropdown-item.disabled,.dropdown-item.disabled:focus,.dropdown-item.disabled:hover{color:#818a91}.dropdown-item.disabled:focus,.dropdown-item.disabled:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:"progid:DXImageTransform.Microsoft.gradient(enabled = false)"}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#818a91;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:.3em solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:.125rem}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left;margin-bottom:0}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-.5rem}.btn-toolbar:after{content:"";display:table;clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:.5rem}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn+.dropdown-toggle-split:after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:1.125rem;padding-left:1.125rem}.btn .caret{margin-left:0}.btn-group-lg>.btn .caret,.btn-lg .caret{border-width:.3em .3em 0;border-bottom-width:0}.dropup .btn-group-lg>.btn .caret,.dropup .btn-lg .caret{border-width:0 .3em .3em}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:after{content:"";display:table;clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;width:100%;display:table;border-collapse:separate}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:active,.input-group .form-control:focus,.input-group .form-control:hover{z-index:3}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.25;color:#999;text-align:center;background-color:#eceeef;border:1px solid rgba(0,0,0,.25);border-radius:0}.input-group-addon.form-control-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:.25rem .5rem;font-size:.875rem;border-radius:.2rem}.input-group-addon.form-control-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:.75rem 1.5rem;font-size:.9375rem;border-radius:.3rem}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group-addon:not(:last-child),.input-group-btn:not(:first-child)>.btn-group:not(:last-child)>.btn,.input-group-btn:not(:first-child)>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group>.btn,.input-group-btn:not(:last-child)>.dropdown-toggle,.input-group .form-control:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:not(:last-child){border-right:0}.input-group-addon:not(:first-child),.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group>.btn,.input-group-btn:not(:first-child)>.dropdown-toggle,.input-group-btn:not(:last-child)>.btn-group:not(:first-child)>.btn,.input-group-btn:not(:last-child)>.btn:not(:first-child),.input-group .form-control:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.form-control+.input-group-addon:not(:first-child){border-left:0}.input-group-btn{font-size:0;white-space:nowrap}.input-group-btn,.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:3}.input-group-btn:not(:last-child)>.btn,.input-group-btn:not(:last-child)>.btn-group{margin-right:-1px}.input-group-btn:not(:first-child)>.btn,.input-group-btn:not(:first-child)>.btn-group{z-index:2;margin-left:-1px}.input-group-btn:not(:first-child)>.btn-group:active,.input-group-btn:not(:first-child)>.btn-group:focus,.input-group-btn:not(:first-child)>.btn-group:hover,.input-group-btn:not(:first-child)>.btn:active,.input-group-btn:not(:first-child)>.btn:focus,.input-group-btn:not(:first-child)>.btn:hover{z-index:3}.custom-control{position:relative;display:inline-block;padding-left:1.5rem;cursor:pointer}.custom-control+.custom-control{margin-left:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-indicator{color:#fff;background-color:#0074d9}.custom-control-input:focus~.custom-control-indicator{box-shadow:0 0 0 .075rem #fff,0 0 0 .2rem #0074d9}.custom-control-input:active~.custom-control-indicator{color:#fff;background-color:#84c6ff}.custom-control-input:disabled~.custom-control-indicator{cursor:not-allowed;background-color:#eee}.custom-control-input:disabled~.custom-control-description{color:#767676;cursor:not-allowed}.custom-control-indicator{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#ddd;background-repeat:no-repeat;background-position:50%;background-size:50% 50%}.custom-checkbox .custom-control-indicator{border-radius:0}.custom-checkbox .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-indicator{background-color:#0074d9;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-radio .custom-control-indicator{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-indicator{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#fff'/%3E%3C/svg%3E")}.custom-controls-stacked .custom-control{float:left;clear:left}.custom-controls-stacked .custom-control+.custom-control{margin-left:0}.custom-select{display:inline-block;max-width:100%;height:calc(2.5rem - 2px);padding:.375rem 1.75rem .375rem .75rem;padding-right:.75rem\9;color:#999;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#333' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-image:none\9;background-size:8px 10px;border:1px solid rgba(0,0,0,.25);border-radius:0;-moz-appearance:none;-webkit-appearance:none}.custom-select:focus{border-color:#51a7e8;outline:none}.custom-select:focus::-ms-value{color:#999;background-color:#fff}.custom-select:disabled{color:#818a91;cursor:not-allowed;background-color:#eceeef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-file{position:relative;display:inline-block;max-width:100%;height:2.5rem;cursor:pointer}.custom-file-input{min-width:14rem;max-width:100%;margin:0;filter:alpha(opacity=0);opacity:0}.custom-file-control{position:absolute;top:0;right:0;left:0;z-index:5;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid #ddd;border-radius:0}.custom-file-control:lang(en):after{content:"Choose file..."}.custom-file-control:before{position:absolute;top:-1px;right:-1px;bottom:-1px;z-index:6;display:block;height:2.5rem;padding:.5rem 1rem;line-height:1.5;color:#555;background-color:#eee;border:1px solid #ddd;border-radius:0 0 0 0}.custom-file-control:lang(en):before{content:"Browse"}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:inline-block}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#818a91}.nav-link.disabled,.nav-link.disabled:focus,.nav-link.disabled:hover{color:#818a91;cursor:not-allowed;background-color:transparent}.nav-inline .nav-item{display:inline-block}.nav-inline .nav-item+.nav-item,.nav-inline .nav-link+.nav-link{margin-left:1rem}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs:after{content:"";display:table;clear:both}.nav-tabs .nav-item{float:left;margin-bottom:-1px}.nav-tabs .nav-item+.nav-item{margin-left:.2rem}.nav-tabs .nav-link{display:block;padding:.5em 1em;border:1px solid transparent;border-top-right-radius:0;border-top-left-radius:0}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#eceeef #eceeef #ddd}.nav-tabs .nav-link.disabled,.nav-tabs .nav-link.disabled:focus,.nav-tabs .nav-link.disabled:hover{color:#818a91;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.open .nav-link,.nav-tabs .nav-item.open .nav-link:focus,.nav-tabs .nav-item.open .nav-link:hover,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:focus,.nav-tabs .nav-link.active:hover{color:#999;background-color:#fff;border-color:#ddd #ddd transparent}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.nav-pills:after{content:"";display:table;clear:both}.nav-pills .nav-item{float:left}.nav-pills .nav-item+.nav-item{margin-left:.2rem}.nav-pills .nav-link{display:block;padding:.5em 1em;border-radius:0}.nav-pills .nav-item.open .nav-link,.nav-pills .nav-item.open .nav-link:focus,.nav-pills .nav-item.open .nav-link:hover,.nav-pills .nav-link.active,.nav-pills .nav-link.active:focus,.nav-pills .nav-link.active:hover{color:#fff;cursor:default;background-color:#d07676}.nav-stacked .nav-item{display:block;float:none}.nav-stacked .nav-item+.nav-item{margin-top:.2rem;margin-left:0}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;padding:.5rem 1rem}.navbar:after{content:"";display:table;clear:both}@media (min-width:576px){.navbar{border-radius:0}}.navbar-full{z-index:1000}@media (min-width:576px){.navbar-full{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:576px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0}.navbar-fixed-bottom{bottom:0}.navbar-sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1030;width:100%}@media (min-width:576px){.navbar-sticky-top{border-radius:0}}.navbar-brand{float:left;padding-top:.25rem;padding-bottom:.25rem;margin-right:1rem;font-size:.9375rem;line-height:inherit}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-divider{float:left;width:1px;padding-top:.425rem;padding-bottom:.425rem;margin-right:1rem;margin-left:1rem;overflow:hidden}.navbar-divider:before{content:"\A0"}.navbar-text{display:inline-block;padding-top:.425rem;padding-bottom:.425rem}.navbar-toggler{width:2.5em;height:2em;padding:.5rem .75rem;font-size:.9375rem;line-height:1;background:transparent no-repeat 50%;background-size:24px 24px;border:1px solid transparent;border-radius:0}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}@media (max-width:575px){.navbar-toggleable-xs .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-xs .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-xs .navbar-nav .dropdown-menu{position:static;float:none}}@media (min-width:576px){.navbar-toggleable-xs{display:block}}@media (max-width:767px){.navbar-toggleable-sm .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-sm .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-sm .navbar-nav .dropdown-menu{position:static;float:none}}@media (min-width:768px){.navbar-toggleable-sm{display:block}}@media (max-width:991px){.navbar-toggleable-md .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-md .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-md .navbar-nav .dropdown-menu{position:static;float:none}}@media (min-width:992px){.navbar-toggleable-md{display:block}}.navbar-toggleable-lg:after{content:"";display:table;clear:both}@media (max-width:1199px){.navbar-toggleable-lg .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-lg .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-lg .navbar-nav .dropdown-menu{position:static;float:none}}@media (min-width:1200px){.navbar-toggleable-lg{display:block}}.navbar-toggleable-xl{display:block}.navbar-toggleable-xl:after{content:"";display:table;clear:both}.navbar-toggleable-xl .navbar-brand{display:block;float:none;margin-top:.5rem;margin-right:0}.navbar-toggleable-xl .navbar-nav{margin-top:.5rem;margin-bottom:.5rem}.navbar-toggleable-xl .navbar-nav .dropdown-menu{position:static;float:none}.navbar-nav .nav-item{float:left}.navbar-nav .nav-link{display:block;padding-top:.425rem;padding-bottom:.425rem}.navbar-nav .nav-item+.nav-item,.navbar-nav .nav-link+.nav-link{margin-left:1rem}.navbar-light .navbar-brand,.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover,.navbar-light .navbar-toggler,.navbar-light .navbar-toggler:focus,.navbar-light .navbar-toggler:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .active>.nav-link:focus,.navbar-light .navbar-nav .active>.nav-link:hover,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.active:focus,.navbar-light .navbar-nav .nav-link.active:hover,.navbar-light .navbar-nav .nav-link.open,.navbar-light .navbar-nav .nav-link.open:focus,.navbar-light .navbar-nav .nav-link.open:hover,.navbar-light .navbar-nav .open>.nav-link,.navbar-light .navbar-nav .open>.nav-link:focus,.navbar-light .navbar-nav .open>.nav-link:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");border-color:rgba(0,0,0,.1)}.navbar-light .navbar-divider{background-color:rgba(0,0,0,.075)}.navbar-dark .navbar-brand,.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover,.navbar-dark .navbar-toggler,.navbar-dark .navbar-toggler:focus,.navbar-dark .navbar-toggler:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:hsla(0,0%,100%,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:hsla(0,0%,100%,.75)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .active>.nav-link:focus,.navbar-dark .navbar-nav .active>.nav-link:hover,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.active:focus,.navbar-dark .navbar-nav .nav-link.active:hover,.navbar-dark .navbar-nav .nav-link.open,.navbar-dark .navbar-nav .nav-link.open:focus,.navbar-dark .navbar-nav .nav-link.open:hover,.navbar-dark .navbar-nav .open>.nav-link,.navbar-dark .navbar-nav .open>.nav-link:focus,.navbar-dark .navbar-nav .open>.nav-link:hover{color:#fff}.navbar-dark .navbar-toggler{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");border-color:hsla(0,0%,100%,.1)}.navbar-dark .navbar-divider{background-color:hsla(0,0%,100%,.075)}.navbar-toggleable-xs:after{content:"";display:table;clear:both}@media (max-width:575px){.navbar-toggleable-xs .navbar-nav .nav-item{float:none;margin-left:0}}@media (min-width:576px){.navbar-toggleable-xs{display:block!important}}.navbar-toggleable-sm:after{content:"";display:table;clear:both}@media (max-width:767px){.navbar-toggleable-sm .navbar-nav .nav-item{float:none;margin-left:0}}@media (min-width:768px){.navbar-toggleable-sm{display:block!important}}.navbar-toggleable-md:after{content:"";display:table;clear:both}@media (max-width:991px){.navbar-toggleable-md .navbar-nav .nav-item{float:none;margin-left:0}}@media (min-width:992px){.navbar-toggleable-md{display:block!important}}#main,.card{border-radius:0;border:1px solid rgba(0,0,0,.125)}#main,.card,.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem}.card-subtitle,.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}#main>.list-group:first-child .list-group-item:first-child,.card>.list-group:first-child .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}#main>.list-group:last-child .list-group-item:last-child,.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:0;border-bottom-left-radius:0}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f5f5f5;border-bottom:1px solid rgba(0,0,0,.125)}.card-header:after{content:"";display:table;clear:both}.card-header:first-child{border-radius:-1px -1px 0 0}.card-footer{padding:.75rem 1.25rem;background-color:#f5f5f5;border-top:1px solid rgba(0,0,0,.125)}.card-footer:after{content:"";display:table;clear:both}.card-footer:last-child{border-radius:0 0 -1px -1px}.card-header-tabs{margin-bottom:-.75rem;border-bottom:0}.card-header-pills,.card-header-tabs{margin-right:-.625rem;margin-left:-.625rem}.card-primary{background-color:#d07676;border-color:#d07676}.card-primary .card-footer,.card-primary .card-header{background-color:transparent}.card-success{background-color:#4cbb6c;border-color:#4cbb6c}.card-success .card-footer,.card-success .card-header{background-color:transparent}.card-info{background-color:#ff4c4c;border-color:#ff4c4c}.card-info .card-footer,.card-info .card-header{background-color:transparent}.card-warning{background-color:#ff9a52;border-color:#ff9a52}.card-warning .card-footer,.card-warning .card-header{background-color:transparent}.card-danger{background-color:#ff4c4c;border-color:#ff4c4c}.card-danger .card-footer,.card-danger .card-header,.card-outline-primary{background-color:transparent}.card-outline-primary{border-color:#d07676}.card-outline-secondary{background-color:transparent;border-color:transparent}.card-outline-info{background-color:transparent;border-color:#ff4c4c}.card-outline-success{background-color:transparent;border-color:#4cbb6c}.card-outline-warning{background-color:transparent;border-color:#ff9a52}.card-outline-danger{background-color:transparent;border-color:#ff4c4c}.card-inverse .card-footer,.card-inverse .card-header{border-color:hsla(0,0%,100%,.2)}.card-inverse .card-blockquote,.card-inverse .card-footer,.card-inverse .card-header,.card-inverse .card-title{color:#fff}.card-inverse .card-blockquote .blockquote-footer,.card-inverse .card-link,.card-inverse .card-subtitle,.card-inverse .card-text{color:hsla(0,0%,100%,.65)}.card-inverse .card-link:focus,.card-inverse .card-link:hover{color:#fff}.card-blockquote{padding:0;margin-bottom:0;border-left:0}.card-img{border-radius:-1px}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img-top{border-top-right-radius:-1px;border-top-left-radius:-1px}.card-img-bottom{border-bottom-right-radius:-1px;border-bottom-left-radius:-1px}@media (min-width:576px){.card-deck{display:table;width:100%;margin-bottom:.75rem;table-layout:fixed;border-spacing:1.25rem 0}.card-deck #main,.card-deck .card{display:table-cell;margin-bottom:0;vertical-align:top}.card-deck-wrapper{margin-right:-1.25rem;margin-left:-1.25rem}}@media (min-width:576px){.card-group{display:table;width:100%;table-layout:fixed}.card-group #main,.card-group .card{display:table-cell;vertical-align:top}.card-group #main+#main,.card-group #main+.card,.card-group .card+#main,.card-group .card+.card{margin-left:0;border-left:0}.card-group #main:first-child,.card-group .card:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.card-group #main:first-child .card-img-top,.card-group .card:first-child .card-img-top{border-top-right-radius:0}.card-group #main:first-child .card-img-bottom,.card-group .card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group #main:last-child,.card-group .card:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.card-group #main:last-child .card-img-top,.card-group .card:last-child .card-img-top{border-top-left-radius:0}.card-group #main:last-child .card-img-bottom,.card-group .card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group #main:not(:first-child):not(:last-child),.card-group #main:not(:first-child):not(:last-child) .card-img-bottom,.card-group #main:not(:first-child):not(:last-child) .card-img-top,.card-group .card:not(:first-child):not(:last-child),.card-group .card:not(:first-child):not(:last-child) .card-img-bottom,.card-group .card:not(:first-child):not(:last-child) .card-img-top{border-radius:0}}@media (min-width:576px){.card-columns{-webkit-column-count:3;column-count:3;-webkit-column-gap:1.25rem;column-gap:1.25rem}.card-columns #main,.card-columns .card{display:inline-block;width:100%}}.breadcrumb{padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#eceeef;border-radius:0}.breadcrumb:after{content:"";display:table;clear:both}.breadcrumb-item{float:left}.breadcrumb-item+.breadcrumb-item:before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#818a91;content:"/"}.breadcrumb-item+.breadcrumb-item:hover:before{text-decoration:underline;text-decoration:none}.breadcrumb-item.active{color:#818a91}.pagination{display:inline-block;padding-left:0;margin-top:1rem;margin-bottom:1rem;border-radius:0}.page-item{display:inline}.page-item:first-child .page-link{margin-left:0;border-bottom-left-radius:0;border-top-left-radius:0}.page-item:last-child .page-link{border-bottom-right-radius:0;border-top-right-radius:0}.page-item.active .page-link,.page-item.active .page-link:focus,.page-item.active .page-link:hover{z-index:2;color:#fff;cursor:default;background-color:#d07676;border-color:#d07676}.page-item.disabled .page-link,.page-item.disabled .page-link:focus,.page-item.disabled .page-link:hover{color:#818a91;pointer-events:none;cursor:not-allowed;background-color:#fff;border-color:#ddd}.page-link{position:relative;float:left;padding:.5rem .75rem;margin-left:-1px;color:#d07676;text-decoration:none;background-color:#fff;border:1px solid #ddd}.page-link:focus,.page-link:hover{color:#ba4040;background-color:#eceeef;border-color:#ddd}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:.9375rem}.pagination-lg .page-item:first-child .page-link{border-bottom-left-radius:.3rem;border-top-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-bottom-right-radius:.3rem;border-top-right-radius:.3rem}.pagination-sm .page-link{padding:.275rem .75rem;font-size:.875rem}.pagination-sm .page-item:first-child .page-link{border-bottom-left-radius:.2rem;border-top-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-bottom-right-radius:.2rem;border-top-right-radius:.2rem}.tag{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:0}.tag:empty{display:none}.btn .tag{position:relative;top:-1px}a.tag:focus,a.tag:hover{color:#fff;text-decoration:none;cursor:pointer}.tag-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.tag-default{background-color:#818a91}.tag-default[href]:focus,.tag-default[href]:hover{background-color:#687077}.tag-primary{background-color:#d07676}.tag-primary[href]:focus,.tag-primary[href]:hover{background-color:#c35050}.tag-success{background-color:#4cbb6c}.tag-success[href]:focus,.tag-success[href]:hover{background-color:#3a9a56}.tag-info{background-color:#ff4c4c}.tag-info[href]:focus,.tag-info[href]:hover{background-color:#ff1919}.tag-warning{background-color:#ff9a52}.tag-warning[href]:focus,.tag-warning[href]:hover{background-color:#ff7c1f}.tag-danger{background-color:#ff4c4c}.tag-danger[href]:focus,.tag-danger[href]:hover{background-color:#ff1919}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#eceeef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-hr{border-top-color:#d0d5d8}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:0}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:2.5rem}.alert-dismissible .close{position:relative;top:-.125rem;right:-1.25rem;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d0e9c6;color:#3c763d}.alert-success hr{border-top-color:#c1e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bcdff1;color:#31708f}.alert-info hr{border-top-color:#a6d5ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:rgba(255,154,82,.3);border-color:#ff9a52;color:#232323}.alert-warning hr{border-top-color:#ff8b39}.alert-warning .alert-link{color:#0a0a0a}.alert-danger{background-color:#f2dede;border-color:#ebcccc;color:#a94442}.alert-danger hr{border-top-color:#e4b9b9}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:1rem 0}to{background-position:0 0}}.progress{display:block;width:100%;height:1rem;margin-bottom:1rem}.progress[value]{background-color:#eee;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}.progress[value]::-ms-fill{background-color:#0074d9;border:0}.progress[value]::-moz-progress-bar{background-color:#0074d9;border-bottom-left-radius:0;border-top-left-radius:0}.progress[value]::-webkit-progress-value{background-color:#0074d9;border-bottom-left-radius:0;border-top-left-radius:0}.progress[value="100"]::-moz-progress-bar{border-bottom-right-radius:0;border-top-right-radius:0}.progress[value="100"]::-webkit-progress-value{border-bottom-right-radius:0;border-top-right-radius:0}.progress[value]::-webkit-progress-bar{background-color:#eee;border-radius:0}.progress[value],base::-moz-progress-bar{background-color:#eee;border-radius:0}@media screen and (min-width:0\0){.progress{background-color:#eee;border-radius:0}.progress-bar{display:inline-block;height:1rem;text-indent:-999rem;background-color:#0074d9;border-bottom-left-radius:0;border-top-left-radius:0}.progress[width="100%"]{border-bottom-right-radius:0;border-top-right-radius:0}}.progress-striped[value]::-webkit-progress-value{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-striped[value]::-moz-progress-bar{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}.progress-striped[value]::-ms-fill{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}@media screen and (min-width:0\0){.progress-bar-striped{background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:1rem 1rem}}.progress-animated[value]::-webkit-progress-value{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-animated[value]::-moz-progress-bar{animation:progress-bar-stripes 2s linear infinite}@media screen and (min-width:0\0){.progress-animated .progress-bar-striped{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}}.progress-success[value]::-webkit-progress-value{background-color:#4cbb6c}.progress-success[value]::-moz-progress-bar{background-color:#4cbb6c}.progress-success[value]::-ms-fill{background-color:#4cbb6c}@media screen and (min-width:0\0){.progress-success .progress-bar{background-color:#4cbb6c}}.progress-info[value]::-webkit-progress-value{background-color:#ff4c4c}.progress-info[value]::-moz-progress-bar{background-color:#ff4c4c}.progress-info[value]::-ms-fill{background-color:#ff4c4c}@media screen and (min-width:0\0){.progress-info .progress-bar{background-color:#ff4c4c}}.progress-warning[value]::-webkit-progress-value{background-color:#ff9a52}.progress-warning[value]::-moz-progress-bar{background-color:#ff9a52}.progress-warning[value]::-ms-fill{background-color:#ff9a52}@media screen and (min-width:0\0){.progress-warning .progress-bar{background-color:#ff9a52}}.progress-danger[value]::-webkit-progress-value{background-color:#ff4c4c}.progress-danger[value]::-moz-progress-bar{background-color:#ff4c4c}.progress-danger[value]::-ms-fill{background-color:#ff4c4c}@media screen and (min-width:0\0){.progress-danger .progress-bar{background-color:#ff4c4c}}.media,.media-body{overflow:hidden}.media-body{width:10000px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right{padding-left:10px}.media-left{padding-right:10px}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:0}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#818a91;cursor:not-allowed;background-color:#eceeef}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#818a91}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;text-decoration:none;background-color:#d07676;border-color:#d07676}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#fff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-item-action{width:100%;color:#555;text-align:inherit}.list-group-item-action .list-group-item-heading{color:#333}.list-group-item-action:focus,.list-group-item-action:hover{color:#555;text-decoration:none;background-color:#f5f5f5}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9{padding-bottom:42.85714%}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.embed-responsive-1by1{padding-bottom:100%}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal,.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;outline:0}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translateY(-25%);transform:translateY(-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0);transform:translate(0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.in{opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header:after{content:"";display:table;clear:both}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.5}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:after{content:"";display:table;clear:both}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:600px;margin:30px auto}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.in{opacity:.9}.tooltip.bs-tether-element-attached-bottom,.tooltip.tooltip-top{padding:5px 0;margin-top:-3px}.tooltip.bs-tether-element-attached-bottom .tooltip-inner:before,.tooltip.tooltip-top .tooltip-inner:before{bottom:0;left:50%;margin-left:-5px;content:"";border-width:5px 5px 0;border-top-color:#ff4c4c}.tooltip.bs-tether-element-attached-left,.tooltip.tooltip-right{padding:0 5px;margin-left:3px}.tooltip.bs-tether-element-attached-left .tooltip-inner:before,.tooltip.tooltip-right .tooltip-inner:before{top:50%;left:0;margin-top:-5px;content:"";border-width:5px 5px 5px 0;border-right-color:#ff4c4c}.tooltip.bs-tether-element-attached-top,.tooltip.tooltip-bottom{padding:5px 0;margin-top:3px}.tooltip.bs-tether-element-attached-top .tooltip-inner:before,.tooltip.tooltip-bottom .tooltip-inner:before{top:0;left:50%;margin-left:-5px;content:"";border-width:0 5px 5px;border-bottom-color:#ff4c4c}.tooltip.bs-tether-element-attached-right,.tooltip.tooltip-left{padding:0 5px;margin-left:-3px}.tooltip.bs-tether-element-attached-right .tooltip-inner:before,.tooltip.tooltip-left .tooltip-inner:before{top:50%;right:0;margin-top:-5px;content:"";border-width:5px 0 5px 5px;border-left-color:#ff4c4c}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#ff4c4c;border-radius:0}.tooltip-inner:before{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;padding:1px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-style:normal;font-weight:400;letter-spacing:normal;line-break:auto;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover.bs-tether-element-attached-bottom,.popover.popover-top{margin-top:-10px}.popover.bs-tether-element-attached-bottom:after,.popover.bs-tether-element-attached-bottom:before,.popover.popover-top:after,.popover.popover-top:before{left:50%;border-bottom-width:0}.popover.bs-tether-element-attached-bottom:before,.popover.popover-top:before{bottom:-11px;margin-left:-11px;border-top-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-bottom:after,.popover.popover-top:after{bottom:-10px;margin-left:-10px;border-top-color:#fff}.popover.bs-tether-element-attached-left,.popover.popover-right{margin-left:10px}.popover.bs-tether-element-attached-left:after,.popover.bs-tether-element-attached-left:before,.popover.popover-right:after,.popover.popover-right:before{top:50%;border-left-width:0}.popover.bs-tether-element-attached-left:before,.popover.popover-right:before{left:-11px;margin-top:-11px;border-right-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-left:after,.popover.popover-right:after{left:-10px;margin-top:-10px;border-right-color:#fff}.popover.bs-tether-element-attached-top,.popover.popover-bottom{margin-top:10px}.popover.bs-tether-element-attached-top:after,.popover.bs-tether-element-attached-top:before,.popover.popover-bottom:after,.popover.popover-bottom:before{left:50%;border-top-width:0}.popover.bs-tether-element-attached-top:before,.popover.popover-bottom:before{top:-11px;margin-left:-11px;border-bottom-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-top:after,.popover.popover-bottom:after{top:-10px;margin-left:-10px;border-bottom-color:#f7f7f7}.popover.bs-tether-element-attached-top .popover-title:before,.popover.popover-bottom .popover-title:before{position:absolute;top:0;left:50%;display:block;width:20px;margin-left:-10px;content:"";border-bottom:1px solid #f7f7f7}.popover.bs-tether-element-attached-right,.popover.popover-left{margin-left:-10px}.popover.bs-tether-element-attached-right:after,.popover.bs-tether-element-attached-right:before,.popover.popover-left:after,.popover.popover-left:before{top:50%;border-right-width:0}.popover.bs-tether-element-attached-right:before,.popover.popover-left:before{right:-11px;margin-top:-11px;border-left-color:rgba(0,0,0,.25)}.popover.bs-tether-element-attached-right:after,.popover.popover-left:after{right:-10px;margin-top:-10px;border-left-color:#fff}.popover-title{padding:8px 14px;margin:0;font-size:1rem;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:.2375rem .2375rem 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover:after,.popover:before{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover:before{content:"";border-width:11px}.popover:after{content:"";border-width:10px}.carousel,.carousel-inner{position:relative}.carousel-inner{width:100%;overflow:hidden}.carousel-inner>.carousel-item{position:relative;display:none;transition:left .6s ease-in-out}.carousel-inner>.carousel-item>a>img,.carousel-inner>.carousel-item>img{line-height:1}@media (-webkit-transform-3d),(transform-3d){.carousel-inner>.carousel-item{transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;transition:transform .6s ease-in-out,-webkit-transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.carousel-item.active.right,.carousel-inner>.carousel-item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.carousel-item.active.left,.carousel-inner>.carousel-item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.carousel-item.active,.carousel-inner>.carousel-item.next.left,.carousel-inner>.carousel-item.prev.right{left:0;-webkit-transform:translateZ(0);transform:translateZ(0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5}.carousel-control.left{background-image:linear-gradient(90deg,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001));background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1)}.carousel-control.right{right:0;left:auto;background-image:linear-gradient(90deg,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5));background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1)}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;width:20px;height:20px;margin-top:-10px;font-family:serif;line-height:1}.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-prev:before{content:"\2039"}.carousel-control .icon-next:before{content:"\203A"}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:transparent;border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media (min-width:576px){.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;font-size:30px}.carousel-control .icon-prev{margin-left:-15px}.carousel-control .icon-next{margin-right:-15px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-faded{background-color:#f7f7f9}.bg-primary{background-color:#d07676!important}a.bg-primary:focus,a.bg-primary:hover{background-color:#c35050!important}.bg-success{background-color:#4cbb6c!important}a.bg-success:focus,a.bg-success:hover{background-color:#3a9a56!important}.bg-info{background-color:#ff4c4c!important}a.bg-info:focus,a.bg-info:hover{background-color:#ff1919!important}.bg-warning{background-color:#ff9a52!important}a.bg-warning:focus,a.bg-warning:hover{background-color:#ff7c1f!important}.bg-danger{background-color:#ff4c4c!important}a.bg-danger:focus,a.bg-danger:hover{background-color:#ff1919!important}.bg-inverse{background-color:#373a3c!important}a.bg-inverse:focus,a.bg-inverse:hover{background-color:#1f2021!important}.rounded{border-radius:0}.rounded-top{border-top-right-radius:0;border-top-left-radius:0}.rounded-right{border-bottom-right-radius:0;border-top-right-radius:0}.rounded-bottom{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-left{border-bottom-left-radius:0;border-top-left-radius:0}.rounded-circle{border-radius:50%}.clearfix:after{content:"";display:table;clear:both}.d-block{display:block!important}.d-inline-block{display:inline-block!important}.d-inline{display:inline!important}.float-xs-left{float:left!important}.float-xs-right{float:right!important}.float-xs-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}.w-100{width:100%!important}.h-100{height:100%!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.mx-0{margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:1rem!important}.mt-1{margin-top:1rem!important}.mr-1{margin-right:1rem!important}.mb-1{margin-bottom:1rem!important}.ml-1,.mx-1{margin-left:1rem!important}.mx-1{margin-right:1rem!important}.my-1{margin-top:1rem!important;margin-bottom:1rem!important}.m-2{margin:1.5rem!important}.mt-2{margin-top:1.5rem!important}.mr-2{margin-right:1.5rem!important}.mb-2{margin-bottom:1.5rem!important}.ml-2,.mx-2{margin-left:1.5rem!important}.mx-2{margin-right:1.5rem!important}.my-2{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-3{margin:3rem!important}.mt-3{margin-top:3rem!important}.mr-3{margin-right:3rem!important}.mb-3{margin-bottom:3rem!important}.ml-3,.mx-3{margin-left:3rem!important}.mx-3{margin-right:3rem!important}.my-3{margin-top:3rem!important;margin-bottom:3rem!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.px-0{padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:1rem!important}.pt-1{padding-top:1rem!important}.pr-1{padding-right:1rem!important}.pb-1{padding-bottom:1rem!important}.pl-1,.px-1{padding-left:1rem!important}.px-1{padding-right:1rem!important}.py-1{padding-top:1rem!important;padding-bottom:1rem!important}.p-2{padding:1.5rem!important}.pt-2{padding-top:1.5rem!important}.pr-2{padding-right:1.5rem!important}.pb-2{padding-bottom:1.5rem!important}.pl-2,.px-2{padding-left:1.5rem!important}.px-2{padding-right:1.5rem!important}.py-2{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-3{padding:3rem!important}.pt-3{padding-top:3rem!important}.pr-3{padding-right:3rem!important}.pb-3{padding-bottom:3rem!important}.pl-3,.px-3{padding-left:3rem!important}.px-3{padding-right:3rem!important}.py-3{padding-top:3rem!important;padding-bottom:3rem!important}.pos-f-t{position:fixed;top:0;right:0;left:0;z-index:1030}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-xs-left{text-align:left!important}.text-xs-right{text-align:right!important}.text-xs-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-normal{font-weight:400}.font-weight-bold{font-weight:700}.font-italic{font-style:italic}.text-white{color:#fff!important}.text-muted{color:#999!important}a.text-muted:focus,a.text-muted:hover{color:gray!important}.text-primary{color:#d07676!important}a.text-primary:focus,a.text-primary:hover{color:#c35050!important}.text-success{color:#4cbb6c!important}a.text-success:focus,a.text-success:hover{color:#3a9a56!important}.text-info{color:#ff4c4c!important}a.text-info:focus,a.text-info:hover{color:#ff1919!important}.text-warning{color:#ff9a52!important}a.text-warning:focus,a.text-warning:hover{color:#ff7c1f!important}.text-danger{color:#ff4c4c!important}a.text-danger:focus,a.text-danger:hover{color:#ff1919!important}.text-gray-dark{color:#373a3c!important}a.text-gray-dark:focus,a.text-gray-dark:hover{color:#1f2021!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.invisible{visibility:hidden!important}.hidden-xs-up{display:none!important}@media (max-width:575px){.hidden-xs-down{display:none!important}}@media (min-width:576px){.hidden-sm-up{display:none!important}}@media (max-width:767px){.hidden-sm-down{display:none!important}}@media (min-width:768px){.hidden-md-up{display:none!important}}@media (max-width:991px){.hidden-md-down{display:none!important}}@media (min-width:992px){.hidden-lg-up{display:none!important}}@media (max-width:1199px){.hidden-lg-down{display:none!important}}@media (min-width:1200px){.hidden-xl-up{display:none!important}}.hidden-xl-down,.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}}@font-face{font-family:Nickainley Normal;font-display:swap;src:url(/themes/cadouri/assets/fonts/nickainley-normal.otf)}@font-face{font-family:Basil Regular;font-display:swap;src:url(/themes/cadouri/assets/fonts/basil-regular.ttf)}body{direction:ltr;font-family:Basil Regular,sans-serif;font-size:1rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#232323;line-height:1.25em}ul{padding-left:0}a:hover{color:#d07676;text-decoration:none}p{font-size:.9375rem;color:#999;font-weight:400}.color,.custom-checkbox input[type=checkbox]+span.color{width:1.25rem;height:1.25rem;display:inline-block;margin:.3125rem;box-shadow:2px 2px 4px 0 rgba(0,0,0,.2);border:1px solid rgba(0,0,0,.05);cursor:pointer;background-size:contain}.color.active,.color:hover,.custom-checkbox input[type=checkbox]+span.color.active,.custom-checkbox input[type=checkbox]+span.color:hover,.facet-label.active .custom-checkbox span.color,.facet-label:hover .custom-checkbox span.color{border:2px solid #232323}.h1,.h2,.h3{text-transform:uppercase;color:#232323}.h4{font-weight:700;color:#232323}.btn-primary,.btn-secondary,.btn-tertiary{box-shadow:2px 2px 4px 0 rgba(0,0,0,.2);text-transform:uppercase;font-weight:600;padding:.5rem 1.25rem}.btn-primary .material-icons,.btn-secondary .material-icons,.btn-tertiary .material-icons{margin-right:.625rem}.btn-tertiary{background-color:#f7f7f7;text-transform:lowercase;color:#999;box-shadow:.0625rem .0625rem .0625rem 0 rgba(0,0,0,.1);padding:.25rem;margin:.25rem 0;font-weight:400;font-size:.875rem}.btn-tertiary .material-icons{font-size:1rem}.btn-tertiary:hover{box-shadow:.0625rem .0625rem .0625rem 0 rgba(0,0,0,.2);border:1px solid rgba(35,35,35,.2)}.btn-unstyle:focus .expand-more{color:#d07676}#main,.card{box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)"}.label,label{color:#232323;text-align:right;font-size:.875rem}small.label,small.value{font-size:.8125rem}.form-control-label{padding-top:.625rem}.form-control{background:#dfe1e6;border:1px solid rgba(0,0,0,.25);padding:.5rem 1rem}.form-control:focus{color:#232323}.form-control:focus,.input-group.focus{outline:.1875rem solid #d07676}.input-group .form-control:focus{outline:none}.input-group .input-group-btn{height:100%}.input-group .input-group-btn>.btn{border:0;box-shadow:none;color:#fff;font-size:.6875rem;font-weight:400;margin-left:0;padding:.625rem 1rem;text-transform:uppercase}.input-group .input-group-btn>.btn[data-action=show-password]{background:#999;padding:.78rem 1rem}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}input::-moz-placeholder,textarea::-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:active::-webkit-input-placeholder,textarea:active::-webkit-input-placeholder{color:#232323}input:active::-moz-placeholder,textarea:active::-moz-placeholder{color:#232323}input:active:-ms-input-placeholder,textarea:active:-ms-input-placeholder{color:#232323}input:active:-moz-placeholder,textarea:active:-moz-placeholder{color:#232323}.form-control-select{height:2.625rem;-moz-appearance:none;-webkit-appearance:none;background:#dfe1e6 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAQAAAD9CzEMAAAAPklEQVR4Ae3TwREAEBQD0V/6do4SXPZg7EsBhsQ8IEmSMOsiuEfg3gL3oXC7wK0bd1G4o8X9F4yIkyQfSrIByQBjp7QuND8AAAAASUVORK5CYII=") no-repeat scroll right .5rem center/1.25rem 1.25rem!important;padding:0 .5rem}.form-control-select:focus{outline-color:#d07676!important}.form-control-valign{padding-top:.5rem}.form-control-comment{font-size:.875rem;padding-top:.5rem;color:#999}.form-control-submit.disabled{background:#ff4c4c;color:#fff}.form-group.has-error input,.form-group.has-error select{outline:.1875rem solid #ff4c4c}.form-group.has-error .help-block{color:#ff4c4c}.group-span-filestyle label{margin:0}.group-span-filestyle .btn-default{background:#d07676;color:#fff;text-transform:uppercase;border-radius:0;font-size:.875rem;padding:.5rem 1rem}.custom-radio{display:inline-block;position:relative;width:20px;height:20px;vertical-align:middle;cursor:pointer;border-radius:50%;border:2px solid #999;background:#fff;margin-right:1.25rem}.custom-radio input[type=radio]{opacity:0;cursor:pointer}.custom-radio input[type=radio]:checked+span{display:block;background-color:#d07676;width:12px;height:12px;border-radius:50%;position:absolute;left:.125rem;top:.125rem}.custom-radio input[type=radio]:focus+span{border-color:#999}.custom-checkbox{position:relative}.custom-checkbox input[type=checkbox]{margin-top:.25rem;opacity:0;cursor:pointer;position:absolute}.custom-checkbox input[type=checkbox]+span{margin-right:3px;display:inline-block;width:.9375rem;height:.9375rem;vertical-align:middle;cursor:pointer;border:2px solid #232323}.custom-checkbox input[type=checkbox]+span .checkbox-checked{display:none;margin:-.3rem;font-size:1.1rem;color:#232323}.custom-checkbox input[type=checkbox]:checked+span .checkbox-checked{display:block}.custom-checkbox input[type=checkbox]:focus+span{border-color:#999}.custom-checkbox label{text-align:left}.text-muted{font-size:.875rem}.done{color:#4cbb6c;display:inline-block;padding:0 .8125rem;margin-right:1.563rem}.thumb-mask>.mask{position:relative;width:3.438rem;height:3.438rem;overflow:hidden;border:1px solid #dfe1e6;margin:.625rem 0}.thumb-mask>.mask img{width:55px;height:55px}.definition-list dl{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap}.definition-list dl dt{font-weight:400}.definition-list dl dd,.definition-list dl dt{-webkit-box-flex:0;-ms-flex:0 0 45%;flex:0 0 45%;background:#dfe1e6;padding:.625rem;margin:.125rem}.definition-list dl dd:nth-of-type(2n),.definition-list dl dt:nth-of-type(2n){background:#dfe1e6}.help-block{margin-top:.625rem}.btn.disabled,.btn.disabled:hover{background:#999}.alert-warning .material-icons{color:#ff9a52;font-size:2rem;margin-right:.625rem;padding-top:.3125rem}.alert-warning .alert-text{font-size:.9375rem;padding-top:.625rem}.alert-warning .alert-link{border-radius:2px;border-width:2px;margin-left:.625rem;padding:.3125rem 1.25rem;font-weight:600;font-size:.8125rem;color:#6c868e}.alert-warning ul li:last-child .alert-link{color:#fff}.alert-warning .warning-buttons{margin-top:.3125rem}.btn-tertiary-outline{color:#6c868e;background-image:none;background-color:transparent;border-color:#6c868e;border:.15rem solid #6c868e}.btn-tertiary-outline:hover{border-color:#bbcdd2;color:#bbcdd2}.alert{font-size:.8125rem}.nav-item .nav-link,.nav-item .nav-separtor{color:#999;font-weight:700}.nav-item .nav-link.active,.nav-item .nav-separtor.active{color:#232323}.separator{margin:0;border-color:rgba(0,0,0,.25)}.bootstrap-touchspin{border:1px solid #dfe1e6}.bootstrap-touchspin input:focus{outline:none}.bootstrap-touchspin input.form-control{border:0}.bootstrap-touchspin .btn-touchspin{position:absolute;top:0;background-color:transparent;text-align:center;padding:0;color:#a9b1c0}.bootstrap-touchspin .btn-touchspin:hover{color:#d07676}.bootstrap-touchspin .btn-touchspin.bootstrap-touchspin-up{right:5px}.rtl .bootstrap-touchspin .btn-touchspin.bootstrap-touchspin-up{left:5px;right:auto}.bootstrap-touchspin .btn-touchspin.bootstrap-touchspin-down{left:5px}.rtl .bootstrap-touchspin .btn-touchspin.bootstrap-touchspin-down{right:5px;left:auto}.bootstrap-touchspin .btn-touchspin .touchspin-up{font-style:normal}.bootstrap-touchspin .btn-touchspin .touchspin-up:after{content:"+";font-size:20px!important;font-weight:600!important}.bootstrap-touchspin .btn-touchspin .touchspin-down:after{font-style:normal;font-size:20px!important;content:"-";font-weight:600!important}.ps-alert-error{margin-bottom:0}.ps-alert-error .item,.ps-alert-success .item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:2px solid #ff4c4c;display:-webkit-box;display:-ms-flexbox;display:flex;background-color:#ff4c4c;margin-bottom:1rem}.ps-alert-error .item i,.ps-alert-success .item i{border:15px solid #ff4c4c;display:-webkit-box;display:-ms-flexbox;display:flex}.ps-alert-error .item i svg,.ps-alert-success .item i svg{background-color:#ff4c4c;width:24px;height:24px}.ps-alert-error .item p,.ps-alert-success .item p{background-color:#fff;margin:0;padding:18px 20px;width:100%}.ps-alert-success{padding:.25rem .25rem 2.75rem}.ps-alert-success .item{border-color:#4cbb6c;background-color:#4cbb6c}.ps-alert-success .item i{border-color:#4cbb6c}.ps-alert-success .item i svg{background-color:#4cbb6c}.dropdown:hover .expand-more{color:#d07676}.dropdown .expand-more{color:#232323;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.dropdown .active{max-height:200px;overflow-y:hidden;visibility:visible}.dropdown select{-moz-appearance:none;border:0 none;outline:0 none;color:#232323;background:#fff}.dropdown-item:focus,.dropdown-item:hover{background:none;text-decoration:none;color:#d07676}body#checkout{color:#232323}body#checkout #header .header-nav{max-height:none;padding:5rem 0 .9375rem;border:none;margin-bottom:0;box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)"}body#checkout #header .header-nav .logo{max-height:4.375rem;width:auto}body#checkout .custom-checkbox{display:-webkit-box;display:-ms-flexbox;display:flex}body#checkout .custom-checkbox span{-webkit-box-flex:0;-ms-flex:0 0 15px;flex:0 0 15px;margin-top:.1875rem}body#checkout a:hover{color:#1a8196}body#checkout section#content{margin-bottom:1.563rem}body#checkout .container{min-height:100%}body#checkout section.checkout-step{box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)";background-color:#fff;border-bottom:1px solid rgba(0,0,0,.25);padding:.9375rem}body#checkout section.checkout-step:last-child{border:0}body#checkout section.checkout-step .step-title{text-transform:uppercase;cursor:pointer;margin-bottom:0}body#checkout section.checkout-step .content{padding:0 2.313rem}body#checkout section.checkout-step .step-edit{text-transform:lowercase;font-weight:400}body#checkout section.checkout-step .step-edit .edit{font-size:1rem}body#checkout section.checkout-step .not-allowed{cursor:not-allowed;opacity:.5}body#checkout section.checkout-step .content,body#checkout section.checkout-step .done,body#checkout section.checkout-step .step-edit{display:none}body#checkout section.checkout-step.-current .content{display:block}body#checkout section.checkout-step.-current.-reachable.-complete .done,body#checkout section.checkout-step.-current.-reachable.-complete .step-edit{display:none}body#checkout section.checkout-step.-current.-reachable.-complete .step-number{display:inline-block}body#checkout section.checkout-step.-current.-reachable.-complete .content{display:block}body#checkout section.checkout-step.-reachable.-complete h1 .done{display:inline-block}body#checkout section.checkout-step.-reachable.-complete h1 .step-number{display:none}body#checkout section.checkout-step.-reachable.-complete h1 .step-edit{cursor:pointer;display:block;float:right;margin-right:.125rem;color:#999}body#checkout section.checkout-step.-reachable.-complete .content{display:none}body#checkout section.checkout-step small{color:#999}body#checkout section.checkout-step .default-input{min-width:40%}body#checkout section.checkout-step .default-input[name=address1],body#checkout section.checkout-step .default-input[name=address2]{min-width:60%}body#checkout section.checkout-step .radio-field{margin-top:1.875rem}body#checkout section.checkout-step .radio-field label{display:inline}body#checkout section.checkout-step .checkbox-field div{margin-top:3.75rem}body#checkout section.checkout-step .checkbox-field+.checkbox-field div{margin-top:0}body#checkout section.checkout-step .select-field div{background:#dfe1e6;padding:.625rem 3.125rem}body#checkout section.checkout-step .form-footer{text-align:center}body#checkout section.checkout-step #conditions-to-approve{padding-top:1rem}body#checkout section.checkout-step .payment-options label{display:table-cell}body#checkout section.checkout-step .payment-options .custom-radio{margin-right:1.25rem}body#checkout section.checkout-step .payment-options .payment-option{margin-bottom:.5rem}body#checkout section.checkout-step .step-number{display:inline-block;padding:.625rem}body#checkout section.checkout-step .address-selector{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap}body#checkout section.checkout-step .address-item{background:#dfe1e6;-webkit-box-flex:0;-ms-flex:0 0 49%;flex:0 0 49%;margin-bottom:.625rem;border:3px solid transparent}body#checkout section.checkout-step .address-item.selected{background:#fff;border:3px solid #d07676}body#checkout section.checkout-step .address-alias{display:inline-block;font-weight:600;margin-bottom:.625rem}body#checkout section.checkout-step .address{margin-left:1.563rem;font-weight:400}body#checkout section.checkout-step .radio-block{padding:.9375rem;text-align:left;cursor:pointer}body#checkout section.checkout-step .custom-radio{margin-right:0}body#checkout section.checkout-step .custom-radio input[type=radio]{height:1.25rem;width:1.25rem}body#checkout section.checkout-step .delete-address,body#checkout section.checkout-step .edit-address{color:#999;display:inline-block;margin:0 .3125rem}body#checkout section.checkout-step .delete-address .delete,body#checkout section.checkout-step .delete-address .edit,body#checkout section.checkout-step .edit-address .delete,body#checkout section.checkout-step .edit-address .edit{font-size:1rem}body#checkout section.checkout-step hr{margin:0}body#checkout section.checkout-step .address-footer{text-align:center;padding:.625rem}body#checkout section.checkout-step #delivery-addresses,body#checkout section.checkout-step #invoice-addresses,body#checkout section.checkout-step .add-address{margin-top:1.25rem}body#checkout section.checkout-step .add-address a{color:#232323}body#checkout section.checkout-step .add-address a i{font-size:.9375rem}body#checkout section.checkout-step .delivery-option{background:#dfe1e6;padding:.9375rem 0;margin-bottom:.9375rem}body#checkout section.checkout-step .delivery-option label{text-align:inherit}body#checkout section.checkout-step .carrier-delay,body#checkout section.checkout-step .carrier-name{display:inline-block;word-break:break-word;text-align:left}body#checkout section.checkout-step #customer-form,body#checkout section.checkout-step #delivery-address,body#checkout section.checkout-step #invoice-address,body#checkout section.checkout-step #login-form{margin-left:.3125rem;margin-top:1.563rem}body#checkout section.checkout-step #customer-form .form-control-label,body#checkout section.checkout-step #delivery-address .form-control-label,body#checkout section.checkout-step #invoice-address .form-control-label,body#checkout section.checkout-step #login-form .form-control-label{text-align:left}body#checkout section.checkout-step #customer-form .radio-inline,body#checkout section.checkout-step #delivery-address .radio-inline,body#checkout section.checkout-step #invoice-address .radio-inline,body#checkout section.checkout-step #login-form .radio-inline{padding:0}body#checkout section.checkout-step .sign-in{font-size:.875rem}body#checkout section.checkout-step .forgot-password{margin-left:14.38rem}body#checkout .additional-information{font-size:.875rem;margin-left:2.875rem;margin-top:1.25rem}body#checkout .condition-label{margin-left:2.5rem;margin-top:.625rem}body#checkout .condition-label label{text-align:inherit}body#checkout .cancel-address{margin:.625rem;display:block;color:#999;text-decoration:underline}body#checkout .modal-content{padding:1.25rem;background-color:#dfe1e6}body#checkout #cart-summary-product-list{font-size:.875rem}body#checkout #cart-summary-product-list img{border:1px solid #dfe1e6;width:3.125rem}body#checkout #cart-summary-product-list .media-body{vertical-align:middle}body#checkout #order-summary-content{padding-top:.9375rem}body#checkout #order-summary-content h4.h4{margin-top:.625rem;margin-bottom:1.25rem;color:#232323}body#checkout #order-summary-content h4.black{color:#000}body#checkout #order-summary-content h4.addresshead{margin-top:.1875rem}body#checkout #order-summary-content .noshadow{box-shadow:none}body#checkout #order-summary-content #order-items{border-right:0}body#checkout #order-summary-content #order-items h3.h3{color:#232323;margin-top:1.25rem}body#checkout #order-summary-content #order-items table tr:first-child td{border-top:0}body#checkout #order-summary-content .order-confirmation-table{padding:1rem;margin-bottom:2rem;background-color:#fff;border:3px solid #e5e5e5;border-radius:0}body#checkout #order-summary-content .summary-selected-carrier{margin-bottom:.75rem;background-color:#fff;border:1px solid #e5e5e5;border-radius:0;padding:1rem}body#checkout #order-summary-content .step-edit{display:inline;color:#999}body#checkout #order-summary-content .step-edit:hover{cursor:pointer}body#checkout #order-summary-content a .step-edit{color:#999}body#checkout #delivery,body#checkout #gift_message{max-width:100%;border-color:#232323}body#checkout #delivery textarea,body#checkout #gift_message textarea{max-width:100%;margin-bottom:10px}body#checkout #footer{box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)";padding:.9375rem;background:#fff;color:#999}#order-details{padding-left:1.875rem}#order-details>.card-title{margin-bottom:1.875rem}#order-details ul{margin-bottom:1.25rem}#order-details ul li{margin-bottom:.625rem}#order-items{border-right:1px solid #dfe1e6}#order-items hr{border-top-color:#232323}#order-items table{width:100%}#order-items table tr{height:1.875rem}#order-items table tr td:last-child{text-align:right}#order-items .order-line{margin-top:1rem}#order-items .image img{width:100%;border:1px solid gray-lighter;margin-bottom:1rem}#order-items .details{margin-bottom:1rem}#order-items .details .customizations{margin-top:.625rem}#order-items .qty{margin-bottom:1rem}#order-confirmation #registration-form{width:50%;margin:0 auto 1rem}@media (max-width:991px){.done{margin:0;padding:0}body#checkout section.checkout-step .address-item{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}body#checkout section.checkout-step .delivery-option-2{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.delivery-option{display:-webkit-box;display:-ms-flexbox;display:flex;margin:auto}.delivery-option .custom-radio{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.condition-label label[for="conditions_to_approve[terms-and-conditions]"]{text-align:left}#order-confirmation #registration-form{width:100%}}@media (max-width:767px){body#checkout section.checkout-step.-reachable.-complete h1 .step-edit{float:none;margin-top:.25rem;margin-left:1.25rem}body#checkout #header .header-nav{max-height:none;padding:0}body#checkout section.checkout-step .content{padding:.9375rem}body#checkout .form-group{margin-bottom:.5rem}#order-items{border-right:0;margin-bottom:2.5rem}#order-items .card-title{border-bottom:1px solid #dfe1e6;margin-bottom:1rem;padding-bottom:1rem}#order-items hr{border-top-color:#dfe1e6}.bold{font-weight:700}#order-details{padding-left:.9375rem}#order-details .card-title{border-bottom:1px solid #dfe1e6;margin-bottom:1rem;padding-bottom:1rem}}@media (max-width:575px){body#checkout section.checkout-step .content{padding:.9375rem 0}#payment-confirmation button{font-size:.875rem}#payment-confirmation button.btn{white-space:normal}}.js-payment-binary,.js-payment-binary .accept-cgv{display:none}.js-payment-binary.disabled{opacity:.6;cursor:not-allowed}.js-payment-binary.disabled:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.js-payment-binary.disabled .accept-cgv{display:block}#products{float:left;width:100%}#products .products-select{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:baseline;-ms-align-items:baseline;-o-align-items:baseline;-webkit-box-align:baseline;-ms-flex-align:baseline;align-items:baseline;-moz-justify-content:space-between;-ms-justify-content:space-between;-o-justify-content:space-between;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}#products .up{margin-bottom:.88889rem}#products .up .btn-secondary,#products .up .btn-tertiary{color:#999;text-transform:inherit}#products .up .btn-secondary .material-icons,#products .up .btn-tertiary .material-icons{margin-right:0}.rtl #products .up .btn-secondary .material-icons,.rtl #products .up .btn-tertiary .material-icons{margin-left:0;margin-right:inherit}.blockCategory{margin-bottom:15px}.block-category{margin-bottom:1.66667rem}.block-category #category-description p{margin-bottom:0}.block-category .category-cover{display:block;margin-bottom:10px}.products-selection .sort-by-row{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.products-selection .sort-by{white-space:normal;word-break:break-word;text-align:right}.rtl .products-selection .sort-by{text-align:left}.products-selection .total-products p{margin-bottom:0;line-height:2.22222rem;color:#999}.products-selection h1{padding-top:.55556rem}.products-sort-order{color:#252525;position:relative}.products-sort-order .select-title{display:block;width:100%;cursor:pointer;border:0;color:#999;padding:0;white-space:nowrap;font-size:1rem;text-align:left;font-weight:500}.rtl .products-sort-order .select-title{text-align:right}.products-sort-order .select-title .material-icons{font-size:.88889rem;margin:5px -10px}.products-sort-order .select-list{display:block;color:#232323;padding:.625rem 1.25rem}.products-sort-order .select-list:hover{background:#d07676;color:#fff;text-decoration:none}.products-sort-order .dropdown-menu{margin:0 10px;background:#dfe1e6;border:none;border-radius:0;font-size:18px;width:calc(100% - 20px)}#search_filters{margin-bottom:1.38889rem;background:#fff;padding:1.38889rem 1.11111rem}#search_filters .block_content{padding:20px}#search_filters .facet .collapse{display:block}#search_filters .facet .collapse li{display:block;clear:both!important}#search_filters .facet .collapse .dropdown-menu{padding:10px 20px}#search_filters .facet .collapse .select-list{color:#999;display:block;font-size:12px}#search_filters .facet .collapse .select-list:hover{color:#000}#search_filters .facet .collapse .select-title{color:#000;cursor:pointer}#search_filters .facet .facet-title{font-size:16px;color:#000;font-family:Basil Regular,serif;font-weight:400;padding:10px 0;margin-bottom:0}#search_filters .facet .facet-title span{position:relative;border-bottom:1px solid #333}#search_filters .facet .custom-checkbox input[type=checkbox]+span{border-color:#fff;box-shadow:0 0 0 1px #ccc;width:12px;height:12px;margin-right:7px}.rtl #search_filters .facet .custom-checkbox input[type=checkbox]+span{margin-left:7px;margin-right:inherit}#search_filters .facet .custom-checkbox input[type=checkbox]:hover+span{box-shadow:0 0 0 1px #000}#search_filters .facet .facet-label{margin-bottom:0;display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#search_filters .facet .facet-label.active a,#search_filters .facet .facet-label:hover a{color:#000}#search_filters .facet .facet-label.active .custom-checkbox input[type=checkbox]+span{box-shadow:0 0 0 1px #000}#search_filters .facet .facet-label a{margin-top:.38889rem;color:#999;display:inline-block;font-size:.77778rem}.pagination{vertical-align:middle;text-align:center}.pagination>div:first-child{line-height:1.66667rem}.pagination .page-list{margin:0;text-align:center}.pagination .page-list:after{content:"";display:table;clear:both}.pagination .page-list li{display:inline-block;margin:0 15px;line-height:1.11111rem;position:relative}.pagination .page-list li>span,.pagination .page-list li a{color:#a9b1c0;font-size:18px;text-transform:uppercase;display:block;text-align:center;background:#fff;padding:0 5px;font-weight:600;line-height:30px}.pagination .page-list li>span.disabled,.pagination .page-list li a.disabled{cursor:no-drop}.pagination .page-list li>span.next,.pagination .page-list li>span.previous,.pagination .page-list li a.next,.pagination .page-list li a.previous{color:#000;font-size:12px;font-weight:700}.pagination .page-list li>span.next:hover,.pagination .page-list li>span.previous:hover,.pagination .page-list li a.next:hover,.pagination .page-list li a.previous:hover{color:#d07676}.pagination .page-list li>span.next.disabled,.pagination .page-list li>span.previous.disabled,.pagination .page-list li a.next.disabled,.pagination .page-list li a.previous.disabled{color:#a9b1c0}.pagination .page-list li.current a{color:#000;font-weight:700}.pagination .page-list .previous .fa{margin-right:5px}.rtl .pagination .page-list .previous .fa{margin-left:5px;margin-right:inherit}.pagination .page-list .next .fa{margin-left:5px}.rtl .pagination .page-list .next .fa{margin-right:5px;margin-left:inherit}.pagination .page-list .disabled{cursor:no-drop}.pagination .product-count{font-weight:600;color:#d07676}.ps_sortPagiBar.bottom-line .showing{line-height:30px}.ps_sortPagiBar.products-selection{margin-bottom:20px}.ps_sortPagiBar.products-selection .nopadding{white-space:nowrap!important;display:-webkit-box;display:-ms-flexbox;display:flex;line-height:2.22222rem}@media (min-width:766px){.ps_sortPagiBar.products-selection .nopadding{width:-webkit-max-content;width:-moz-max-content;width:max-content}}.ps_sortPagiBar.products-selection .sort-by{white-space:nowrap!important;-webkit-box-flex:33%;-ms-flex:33%;flex:33%}.ps_sortPagiBar.products-selection .row{border-top:1px solid #dfe1e6;border-bottom:1px solid #dfe1e6;margin:5px 0;padding:5px 0}.ps_sortPagiBar .product-count{color:#000}.ps_sortPagiBar .pagination{border-top:1px solid #dfe1e6;border-bottom:1px solid #dfe1e6;margin:5px 0;padding:5px 0;width:100%;display:block}.active_filters{background:#dededd;padding:.625rem 1.875rem 0;margin-bottom:1.25rem}.active_filters .active-filter-title{display:inline;margin-right:.625rem;font-weight:600}.active_filters ul{display:inline}.active_filters .filter-block{color:#232323;margin-right:.625rem;margin-bottom:.625rem;background:#fff;padding:.55556rem;display:inline-block;font-size:.8125rem}.rtl .active_filters .filter-block{margin-left:.625rem;margin-right:inherit}.active_filters .filter-block .close{color:#232323;font-size:.9375rem;opacity:1;margin-top:.33333rem;margin-left:.27778rem}.rtl .active_filters .filter-block .close{margin-right:.27778rem;margin-left:inherit}.block-categories{font-size:14px}.block-categories .category-top-menu{padding:0 18px;margin-bottom:0}.block-categories .category-sub-menu li{position:relative;display:block;border-top:1px solid #dfe1e6}.block-categories .category-sub-menu li:first-child{border-top:0}.block-categories .category-sub-menu a{padding:8px 0;display:block;color:#000}.block-categories .category-sub-menu a:hover{color:#d07676}.block-categories .category-sub-menu .category-sub-menu{margin-left:15px}.rtl .block-categories .category-sub-menu .category-sub-menu{margin-right:15px;margin-left:inherit}.block-categories .category-sub-menu .category-sub-menu li{border:0}.block-categories .arrows,.block-categories .collapse-icons{position:absolute;right:-5px;top:14px;padding:0;cursor:pointer;width:20px;height:20px;display:block;line-height:12px}.rtl .block-categories .arrows,.rtl .block-categories .collapse-icons{left:-5px;right:auto}.block-categories .arrows[aria-expanded=true] .add,.block-categories .collapse-icons[aria-expanded=true] .add{display:none}.block-categories .arrows[aria-expanded=true] .remove,.block-categories .collapse-icons[aria-expanded=true] .remove{display:block}.block-categories .arrows .add:hover,.block-categories .arrows .remove:hover,.block-categories .collapse-icons .add:hover,.block-categories .collapse-icons .remove:hover{color:#d07676}.block-categories .arrows .arrow-down,.block-categories .arrows .remove,.block-categories .arrows[aria-expanded=true] .fa-plus,.block-categories .collapse-icons .remove{display:none}.block-categories .arrows[aria-expanded=true] .fa-minus{display:inline-block}.facets-title{color:#232323}.products-selection{clear:both;position:relative}.products-selection .filter-button .btn-secondary,.products-selection .filter-button .btn-tertiary{padding:.66667rem .44444rem .61111rem}.products-selection .total-products{line-height:1.66667rem}@media (max-width:767px){#category #left-column{width:100%}#category #left-column #search_filters_wrapper{margin-left:-30px;margin-right:-30px}#category #left-column #search_filter_controls{text-align:center;margin-bottom:.88889rem}#category #left-column #search_filter_controls button{margin:0 .44444rem}#category #left-column #search_filters{margin-bottom:0;box-shadow:none;padding:0;border-top:1px solid #dfe1e6}#category #left-column #search_filters .facet{padding-top:0;border-bottom:1px solid #dfe1e6}#category #left-column #search_filters .facet .title{cursor:pointer}#category #left-column #search_filters .facet .title .collapse-icons .remove,#category #left-column #search_filters .facet .title[aria-expanded=true] .collapse-icons .add{display:none}#category #left-column #search_filters .facet .title[aria-expanded=true] .collapse-icons .remove{display:block}#category #left-column #search_filters .facet .facet-title{color:#232323;text-transform:uppercase}#category #left-column #search_filters .facet .h6{margin-bottom:0;padding:.55556rem;display:inline-block}#category #left-column #search_filters .facet .navbar-toggler{display:inline-block;padding:.55556rem .55556rem 0 0}#category #left-column #search_filters .facet .collapse.in{display:block}#category #left-column #search_filters .facet .facet-label a{margin-top:0}#category #left-column #search_filters .facet ul{margin-bottom:0}#category #left-column #search_filters .facet ul li{border-top:1px solid #dfe1e6;padding:.55556rem}#category #content-wrapper,#category #search_filter_toggler{width:100%}.products-sort-order{margin-top:6px}.products-sort-order .select-title{white-space:nowrap;margin-left:0}.rtl .products-sort-order .select-title{margin-right:0;margin-left:inherit}.products-selection h1{padding-top:0;text-align:center;margin-bottom:.88889rem}.products-selection .showing{padding-top:.88889rem}#best-sales #content-wrapper,#new-products #content-wrapper,#prices-drop #content-wrapper{width:100%}}@media (max-width:575px){.products-selection .filter-button{padding-left:0}.rtl .products-selection .filter-button{padding-right:0;padding-left:inherit}#category #left-column #search_filters_wrapper{margin-left:-15px;margin-right:-15px}}.ps-desktop-megamenu .megamenu>li>a{line-height:1.55556rem;margin:15px;padding:2px 15px}.ps-desktop-megamenu .megamenu>li>a:after,.ps-desktop-megamenu .megamenu>li>a:before{content:"";width:0;top:0;position:absolute}.ps-desktop-megamenu .megamenu>li>a .sub-title{display:block;text-transform:uppercase;font-size:10px;position:absolute;bottom:50%;margin-bottom:17px;background:#c2c6d0;padding:0 8px;text-align:center;left:15px;line-height:18px;font-weight:500;border-radius:2px;color:#fff}.rtl .ps-desktop-megamenu .megamenu>li>a .sub-title{right:15px;left:auto}.ps-desktop-megamenu .megamenu>li>a .sub-title:before{position:absolute;bottom:-5px;right:0;content:"";border-right:5px solid #c2c6d0;border-top:5px solid transparent;border-bottom:5px solid transparent}.rtl .ps-desktop-megamenu .megamenu>li>a .sub-title:before{left:0;right:auto;border-left:5px solid #c2c6d0;border-right:0}.ps-desktop-megamenu .megamenu>li.dropdown:before{border-bottom:10px solid rgba(0,0,0,.09)}.ps-desktop-megamenu .megamenu>li.dropdown:after,.ps-desktop-megamenu .megamenu>li.dropdown:before{filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.rtl .ps-desktop-megamenu .megamenu>li.dropdown>.material-icons{left:10px;right:auto}@media (min-width:576px){.ps-desktop-megamenu .megamenu>li.dropdown>a .menu-title:after{font-family:fontello;content:"\F004";display:inline-block;line-height:10px;margin-left:5px;font-size:10px;position:relative;top:-3px}}@media (min-width:768px){.ps-desktop-megamenu .megamenu>li.aligned-fullwidth{position:static}.ps-desktop-megamenu .megamenu>li.aligned-fullwidth>.dropdown-menu{box-shadow:1px -1px 3px #888;width:110%!important}}.ps-desktop-megamenu .megamenu>li.aligned-right>.dropdown-menu{right:0;left:auto}.rtl .ps-desktop-megamenu .megamenu>li.aligned-left>.dropdown-menu{right:0;left:auto;right:auto}.ps-desktop-megamenu .megamenu>li.aligned-center .dropdown-menu{left:50%}.rtl .ps-desktop-megamenu .megamenu>li.aligned-center .dropdown-menu{right:50%;left:auto}.ps-desktop-megamenu .megamenu>li.hot>a .sub-title{background-color:#d07676}.ps-desktop-megamenu .megamenu>li.hot>a .sub-title:before{border-right:5px solid #d07676}.rtl .ps-desktop-megamenu .megamenu>li.hot>a .sub-title:before{border-left:5px solid #d07676;border-right:0}.ps-desktop-megamenu .megamenu>li>.dropdown-menu{filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.ps-desktop-megamenu .megamenu>li:focus>a,.ps-desktop-megamenu .megamenu>li:hover>a{color:#d07676;background-color:#f8d4ce}.ps-desktop-megamenu .megamenu>li:focus>a:after,.ps-desktop-megamenu .megamenu>li:focus>a:before,.ps-desktop-megamenu .megamenu>li:hover>a:after,.ps-desktop-megamenu .megamenu>li:hover>a:before{border-top:18px solid #f8d4ce;border-bottom:18px solid #f8d4ce}.ps-desktop-megamenu .megamenu>li:focus.dropdown:before,.ps-desktop-megamenu .megamenu>li:hover.dropdown:before{bottom:5px;z-index:1002;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1}.ps-desktop-megamenu .megamenu>li:focus.dropdown:after,.ps-desktop-megamenu .megamenu>li:hover.dropdown:after{bottom:4px;z-index:1003;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1}.ps-desktop-megamenu .megamenu>li:focus>.dropdown-menu,.ps-desktop-megamenu .megamenu>li:hover>.dropdown-menu{top:60px;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible}.ps-desktop-megamenu .dropdown-menu{box-shadow:1px 0 2px rgba(0,0,0,.16)}.rtl .ps-desktop-megamenu .dropdown-menu{text-align:right}.ps-desktop-megamenu .dropdown-menu li a{padding:4px 0}.ps-desktop-megamenu .dropdown-menu li a:hover .caret:before{color:#d07676}.ps-desktop-megamenu .dropdown-menu .menubuilder{padding-top:15px;padding-bottom:15px;margin-left:-10px;margin-right:-10px}.ps-desktop-megamenu .dropdown-menu .dropdown>.material-icons{float:right}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown>.material-icons{float:left}.ps-desktop-megamenu .dropdown-menu .dropdown:hover>.dropdown-menu{display:block;left:0}.ps-desktop-megamenu .dropdown-menu .dropdown:hover>a{color:#d07676;display:block}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu>a:after{float:left}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.material-icons{left:10px;right:auto}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.dropdown-menu{filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.dropdown-menu{right:150%;left:auto}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu.open>.dropdown-menu,.ps-desktop-megamenu .dropdown-menu .dropdown-submenu:hover>.dropdown-menu{left:100%;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu.open>.dropdown-menu,.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu:hover>.dropdown-menu{right:100%;left:auto}.megamenu .container{width:100%!important}.megamenu .widget .title_block{font-family:Basil Regular,serif;font-size:20px;color:#000;margin:0 0 5px;padding:0 0 .55556rem;font-weight:600;background-color:transparent;position:relative}.megamenu .widget .widget-products .product-block{padding:10px 0}.megamenu .widget .widget-products .product-block .product-image-container{padding:0;border:0}.megamenu .widget .widget-products .product-block .name{margin-top:0}.megamenu .widget .widget-products .product-block .name a{height:auto;text-transform:none}.megamenu .widget .widget-products .product-block .product_img_link{padding:0}.megamenu .widget-products .product-miniature .product-title a{color:#999}.megamenu .widget-products .product-miniature .product-title a:hover{color:#d07676}.megamenu .widget-subcategories{background:transparent!important}.megamenu .widget-subcategories .media .image{max-width:8.88889rem}.megamenu .widget-subcategories .media .list-style a:before{content:"\F105";display:inline-block;font-family:fontello;margin:0 2px}@media (max-width:991px){.row-offcanvas{position:relative}.row-offcanvas .menuOffcanvas{left:-15.83333rem;z-index:1002}.rtl .row-offcanvas .menuOffcanvas{right:-15.83333rem;left:auto}.row-offcanvas.menuOffcanvasActive .btn-offcanvas-mobile{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible;z-index:1001}.row-offcanvas.menuOffcanvasActive .menuOffcanvas{left:0}.rtl .row-offcanvas.menuOffcanvasActive .menuOffcanvas{right:0;left:auto}.row-offcanvas .sidebarOffcanvas{right:-15.83333rem;z-index:1002}.rtl .row-offcanvas .sidebarOffcanvas{left:-15.83333rem;right:auto}.row-offcanvas.sidebarOffcanvasActive .btn-sidebarOffCanvas-mobile{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible;z-index:1001}.row-offcanvas.sidebarOffcanvasActive .sidebarOffcanvas{right:0}.rtl .row-offcanvas.sidebarOffcanvasActive .sidebarOffcanvas{left:0;right:auto}.btn-offcanvas-mobile,.btn-sidebarOffCanvas-mobile{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:hidden;position:absolute;width:100%;left:0;bottom:0;right:0;top:0;height:100%;background-color:rgba(0,0,0,.3)}.sidebarOffcanvas{background:#292b32}.menuOffcanvas,.sidebarOffcanvas{position:absolute;top:0;width:15.55556rem;height:100%}.menuOffcanvas{background:#fff}.bottom-offcanvas{border-top:1px solid #ebebeb;padding:10px 0}.offcanvas-heading .btn-mobile{width:100%;background-color:#d07676;color:#fff;padding:.55556rem 0;border:0;cursor:pointer}.offcanvas-heading .btn-mobile .material-icons{font-size:1rem}.canvas-menu{padding:5px;font-size:20px!important;border-radius:3px;background-color:#333;color:#fff}.canvas-menu .material-icons{font-size:1.05556rem}.ps-mobile-megamenu .dropdown-menu{position:relative!important;box-shadow:none!important;border:0;width:100%!important}.ps-mobile-megamenu .click-canavs-menu{position:absolute;right:.55556rem;top:.61111rem;z-index:10;cursor:pointer;background-color:#d07676;color:#fff}.rtl .ps-mobile-megamenu .click-canavs-menu{left:.55556rem;right:auto}.ps-mobile-megamenu .megamenu>li{border-top:1px solid #e1e1e1;padding:5px 0;clear:both}.ps-mobile-megamenu .megamenu>li>a{width:-webkit-max-content;width:-moz-max-content;width:max-content;min-width:70%;font-size:1rem;padding:.33333rem .83333rem;display:block;font-weight:600;position:relative}.ps-mobile-megamenu .megamenu>li>a .hasicon{display:none}.ps-mobile-megamenu .megamenu>li>a .sub-title{display:block;text-transform:uppercase;font-size:10px;position:absolute;bottom:50%;margin-bottom:17px;background:#c2c6d0;padding:0 8px;text-align:center;left:15px;line-height:18px;font-weight:500;border-radius:2px;color:#fff}.rtl .ps-mobile-megamenu .megamenu>li>a .sub-title{right:15px;left:auto}.ps-mobile-megamenu .megamenu>li>a .sub-title:before{position:absolute;bottom:-5px;left:0;content:"";border-left:5px solid #c2c6d0;border-top:5px solid transparent;border-bottom:5px solid transparent}.rtl .ps-mobile-megamenu .megamenu>li>a .sub-title:before{right:0;left:auto;border-right:5px solid #c2c6d0;border-left:0}.ps-mobile-megamenu .megamenu>li.hot>a .sub-title{background-color:#d07676}.ps-mobile-megamenu .megamenu>li.hot>a .sub-title:before{border-left:5px solid #d07676}.rtl .ps-mobile-megamenu .megamenu>li.hot>a .sub-title:before{border-right:5px solid #d07676;border-left:0}.ps-mobile-megamenu .megamenu>li .menubuilder{margin-left:.83333rem}.rtl .ps-mobile-megamenu .megamenu>li .menubuilder{margin-right:.83333rem;margin-left:inherit}.ps-mobile-megamenu .megamenu>li .menubuilder .block .title_block{border-bottom:1px solid #e1e1e1;padding-bottom:.27778rem;margin-bottom:.55556rem;color:#222}.ps-mobile-megamenu .megamenu .dropdown-menu-inner>ul{margin-left:.83333rem;border-left:1px dotted #e1e1e1}.rtl .ps-mobile-megamenu .megamenu .dropdown-menu-inner>ul{margin-right:.83333rem;margin-left:inherit;border-right:1px dotted #e1e1e1;border-left:0}.ps-mobile-megamenu .megamenu .dropdown-menu-inner>ul>li{position:relative}.ps-mobile-megamenu .megamenu .dropdown-menu-inner>ul>li>a{padding:5px 10px;display:block}.ps-mobile-megamenu .megamenu .dropdown-menu li a{color:#999;font-size:16px}.ps-mobile-megamenu .megamenu .dropdown-menu li a:hover{color:#d07676}.rtl .ps-desktop-megamenu .dropdown-menu .dropdown-submenu>a:after{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg)}.search-widget{width:90%;margin-left:10%!important}}.dropdown-menu.level2{left:110%!important;box-shadow:-1px 0 2px rgba(0,0,0,.16);border-radius:5px;border:1px solid rgba(0,0,0,.05)}.flexRow{display:-moz-flex;margin-left:-15px;margin-right:-15px}.price,.regular-price{font-family:Basil Regular,serif}.price,.regular-price{color:#999;font-size:16px;font-weight:600}.regular-price{text-decoration:line-through;margin-left:5px}.rtl .regular-price{margin-right:5px;margin-left:inherit}.product-miniature .variant-links{text-align:center}.product-miniature .variant-links .color{display:inline-block;width:15px;height:15px;border:1px solid #fff;box-shadow:0 0 0 1px #dfe1e6}.product-miniature .product-description-short{margin-bottom:.83333em;overflow:hidden;display:none;max-height:3rem;line-height:22px}.product-miniature .comments_note{display:inline-block}.product-miniature .comments_note>*{float:left}.rtl .product-miniature .comments_note>*{float:right}.product-miniature .comments_note .nb-comments{font-size:11px;padding-left:7px;position:relative;color:#bebebe;line-height:.66667rem;font-style:italic;display:none}.rtl .product-miniature .comments_note .nb-comments{padding-right:7px;padding-left:inherit}.product-miniature .comments_note .nb-comments span{font-size:11px}.product-miniature .condition{font-size:.66667rem;text-transform:uppercase;color:#666;letter-spacing:2px}.product-miniature .product-title{margin:.66667rem 0 .44444rem}.product-miniature .product-title a{font-weight:600}.product-miniature .variant-links{position:absolute;left:0;right:0;top:5px}.product-miniature .variant-links ul{display:inline-block;margin-top:10px}.product-miniature .variant-links ul li{border:1px solid #dfe1e6;float:left;margin:0 2px}.rtl .product-miniature .variant-links ul li{float:right}.product-miniature .variant-links ul li a{display:block;width:5px;height:5px;border-radius:50%;margin:1px}.product-flags>li{color:#fff;font-size:14px;font-family:Basil Regular,serif;font-weight:500;z-index:5;position:absolute;line-height:.66667rem;border:1px solid transparent;padding:6px 10px;top:.55556rem!important;text-align:center;overflow:hidden;border-radius:30px}.product-flags>li.new{background-color:#dfe1e6;border-color:#dfe1e6;right:.55556rem;display:none!important}.rtl .product-flags>li.new{left:.55556rem;right:auto}.product-flags>li.discount,.product-flags>li.discount-percentage,.product-flags>li.on-sale,.product-flags>li.online-only{border-color:#d07676;background-color:#d07676;left:.55556rem;color:#fff}.rtl .product-flags>li.discount,.rtl .product-flags>li.discount-percentage,.rtl .product-flags>li.on-sale,.rtl .product-flags>li.online-only{right:.55556rem;left:auto}.product-flags>li.online-only{top:40px!important}.product-flags>li.on-sale{top:70px!important}.product-flags>li.discount{display:none!important}.gallery-carousel{position:relative}.products-block .wrap_thumbnail{margin:0;position:relative}.products-block .wrap_thumbnail .carousel-controls{display:none!important}.products-block .wrap_thumbnail .carousel-controls .carousel-control{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;width:.77778rem;height:.77778rem;line-height:.77778rem;text-align:center;top:50%;margin-top:-.38889rem;font-size:.66667rem}.products-block .wrap_thumbnail .carousel-controls .carousel-control.left{left:0}.products-block .wrap_thumbnail .carousel-controls .carousel-control.right{right:0}.products-block .thumbs_list_frame{position:relative;margin:10px 0 5px}.products-block .thumbs_list_frame .item{padding:0}.products-block .thumbs_list_frame .item a{padding:1px;margin:1px 2px;border:1px solid #dfe1e6;display:block}.products-block .thumbs_list_frame .item a.shown,.products-block .thumbs_list_frame .item a:hover{border-color:#f44336}.style1 .product-miniature .product-image-container{position:relative}.style1 .product-miniature .product-price-and-shipping{position:absolute}.style1 .product-miniature .ps_group{filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"}.rtl .style1 .product-miniature .btn-action>div{float:right}.style1 .product-miniature .cart{margin:10px 0}.style1 .product-miniature .button-container{display:block}.style1 .product-miniature .variant-links{top:-40px;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;visible:hidden}.style1 .product-miniature:hover .ps_group,.style1 .product-miniature:hover .variant-links{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"}.style1 .product-miniature:hover .variant-links{top:10px;-moz-opacity:1;-khtml-opacity:1;opacity:1;visibility:visible}.style1 .product-miniature:hover figure img{-webkit-filter:grayscale(100%) blur(3px);filter:grayscale(100%) blur(3px)}.list1 .owl-item .item{border-top:1px solid #dfe1e6;padding:10px 0}.list1 .owl-item:first-child .item{border-top:0}.list1 .product-miniature .media-object{max-width:5rem}.list2 .owl-item .item{border-top:1px solid #dfe1e6;padding:20px}.list2 .owl-item:first-child .item{border-top:0}.list2 .owl-item .add-to-cart .material-icons{border-radius:50%;color:transparent;display:inline-block;height:30px;margin:-4px 5px -4px -10px;width:30px}.rtl .list2 .owl-item .add-to-cart .material-icons{margin:-4px -10px -4px 5px}.list2 .owl-item .product-price-and-shipping{margin:10px 0 20px}@media (min-width:992px) and (max-width:1199px){.list2 .owl-item .product-thumbnail img{max-width:5.55556rem}}@media (max-width:575px){.list2 .owl-item .product-thumbnail img{max-width:5.55556rem}}.home2 .widget-testimonial .style1 .t-profile{padding:15px 0}.style1 .product-miniature .ps_group{margin:10px 0}#product #content{position:relative;margin:0 auto}.pts-product{border-bottom:1px solid #dfe1e6}.pts-product .page-content .product-flags{display:none}.prodetail-tile{color:#000;font-size:2rem;margin:0 0 1.11111rem;font-family:Basil Regular,serif;text-transform:none}.product-price{display:inline-block}.proShortDesc{padding-top:1.11111rem;border-top:1px solid #dfe1e6}.proShortDesc p span{font-family:Basil Regular,serif}.proShortDesc ul{list-style:inherit;padding-left:20px}.rtl .proShortDesc ul{padding-right:20px;padding-left:inherit}.product-information{margin-bottom:2.55556rem}.product-information .manufacturer-logo{height:35px}.input-color{position:absolute;opacity:0;cursor:pointer;height:1.11111rem;width:1.11111rem}.input-container{position:relative}.radio-label{display:inline-block;font-weight:600}.product-actions .control-label{display:block;color:#000;font-size:18px;min-width:2.77778rem;vertical-align:middle;margin-bottom:10px}.product-actions .add-to-cart .material-icons{display:none}.product-actions .list-color,.product-actions .product-quantity{margin-bottom:0}.product-variants .list-color .color{width:20px;height:20px;display:inline-block}.product-quantity .qty{height:2.77778rem;padding:0 1.66667rem;margin-bottom:15px;float:left;position:relative;display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;margin-right:.55556rem;border:2px solid #d5dbe6}.rtl .product-quantity .qty{float:right;margin-left:.55556rem;margin-right:inherit}@media (max-width:508px){.product-quantity .qty{margin-right:30%}}.product-quantity .qty>*{display:inline-block;vertical-align:middle;min-width:auto;font-size:12px;text-transform:uppercase;color:#a9b1c0;letter-spacing:3px;line-height:3rem;font-weight:500}.product-quantity .qty .bootstrap-touchspin{position:static;border:0}.product-quantity .qty .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin{width:1.66667rem;height:2.66667rem;background-color:transparent;top:0;text-align:center;padding:0}.product-quantity .add{margin-bottom:.83333rem}.product-quantity .add>*{float:left}.rtl .product-quantity .add>*{float:right}.product-quantity .add .add-to-cart{font-size:21px;font-family:Basil Regular,serif;margin:0}.product-quantity .add .btn-product{width:2.22222rem;height:2.77778rem;font-size:16px;text-align:center;background-color:transparent;color:#dfe1e6;padding:16px 10px;margin-left:10px}.rtl .product-quantity .add .btn-product{margin-right:10px;margin-left:inherit}.product-quantity .add .btn-product.added,.product-quantity .add .btn-product:hover{color:#d07676}.product-quantity .add .btn-product .material-icons{font-size:1.11111rem;margin-top:-2px}.product-quantity #quantity_wanted{border:0;background-color:transparent;height:2.55556rem;padding:0;font-weight:600;width:40px;color:#000;font-size:1rem;text-align:center}.product-description ul{list-style:inherit;padding-left:20px}.rtl .product-description ul{padding-right:20px;padding-left:inherit}.product-discounts{display:block;vertical-align:middle;margin-bottom:1.33333rem}.product-discounts>.product-discounts-title{font-weight:400;font-size:.875rem}.product-discounts>.table-product-discounts thead tr th{width:33%;padding:.625rem 1.25rem;background:#fff;border:.27778rem solid #dfe1e6;text-align:center}.product-discounts>.table-product-discounts tbody tr{background:#dfe1e6}.product-discounts>.table-product-discounts tbody tr:nth-of-type(2n){background:#fff}.product-discounts>.table-product-discounts tbody tr td{padding:.625rem 1.25rem;text-align:center;border:.27778rem solid #dfe1e6}.product-prices{margin:0 0 1.66667rem}.product-prices .current-price{font-size:1.66667rem;color:#d07676;font-family:Basil Regular,serif;font-weight:600}.product-prices .tax-shipping-delivery-label{font-size:.72222rem;color:#373a3c;display:inline-block}.product-discount{display:inline-block}.product-discount .regular-price{font-size:1.11111rem;font-weight:400;margin-left:5px;text-decoration:line-through}.rtl .product-discount .regular-price{margin-right:5px;margin-left:inherit}.has-discount{display:inline-block;font-size:1.11111rem;font-weight:400}.has-discount .discount{color:#fff;font-weight:600;padding:.27778rem .625rem;font-size:1rem;margin-left:.625rem;text-transform:uppercase;display:none}.product-unit-price{font-size:.8125rem;margin-bottom:0}.product-cover{margin-bottom:.72222rem;position:relative;-moz-order:2;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;-ms-order:2}.product-cover img{background:#fff}.product-cover .layer{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;background:#fff;position:absolute;left:0;top:0;opacity:0;background:hsla(0,0%,100%,.7);text-align:center;cursor:pointer}.product-cover .layer:hover{opacity:1}.product-cover .layer .zoom-in{font-size:5.55556rem;color:#fff}#product-modal .modal-content{background:transparent;border:none;padding:0}#product-modal .modal-content .modal-body{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;background-color:#fff}#product-modal .modal-content .modal-body .product-cover-modal{max-width:100%;background:#fff}#product-modal .modal-content .modal-body .image-caption{padding-top:.83333rem}#product-modal .modal-content .modal-body .image-caption p{margin-bottom:0}#product-modal .modal-content .modal-body .thumbnails{position:relative;margin-left:.83333rem}.rtl #product-modal .modal-content .modal-body .thumbnails{margin-right:.83333rem;margin-left:inherit}#product-modal .modal-content .modal-body .mask{position:relative;overflow:hidden;height:100%;z-index:1;margin-top:20px}#product-modal .modal-content .modal-body .mask.nomargin{margin-top:0}#product-modal .modal-content .modal-body .product-images img{max-width:100%;cursor:pointer}#product-modal .modal-content .modal-body .arrows i{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;cursor:pointer;width:1.38889rem;height:1.38889rem;line-height:1.33333rem;border-radius:50%;border:0;left:0;right:0;font-size:.88889rem;color:#666;margin:auto;position:absolute;background-color:#ebebeb;z-index:99}#product-modal .modal-content .modal-body .arrows i:hover{background-color:#d07676;color:#fff}#product-modal .modal-content .modal-body .arrows i.arrow-up{top:-5px}#product-modal .modal-content .modal-body .arrows i.arrow-down{bottom:-5px}#blockcart-modal{color:#232323}#blockcart-modal .modal-header{background:#4cbb6c}#blockcart-modal .modal-body{background:#dfe1e6;padding:2.77778rem 1.66667rem}#blockcart-modal .modal-body .divide-right span{display:inline-block;margin-bottom:.27778rem}#blockcart-modal .modal-dialog{max-width:63.33333rem;width:100%}#blockcart-modal .product-image{width:11.66667rem}#blockcart-modal .modal-title{font-weight:600;color:#fff;font-size:1rem}#blockcart-modal .modal-title i.material-icons{margin-right:1.875rem}#blockcart-modal .product-name{color:#d07676;font-size:1rem}#blockcart-modal .cart-products-count{font-size:1rem}#blockcart-modal .cart-content{padding-left:2.5rem}.rtl #blockcart-modal .cart-content{padding-right:2.5rem;padding-left:inherit}#blockcart-modal .cart-content button{margin-right:.27778rem;line-height:1rem}.rtl #blockcart-modal .cart-content button{margin-left:.27778rem;margin-right:inherit}#blockcart-modal .divide-right{border-right:1px solid #999}.rtl #blockcart-modal .divide-right{border-left:1px solid #999;border-right:0}.product-images>li.thumb-container{display:block;padding:0;margin-bottom:10px}.product-images>li.thumb-container>.thumb{max-width:100%;cursor:pointer;filter:alpha(opacity=50);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";-moz-opacity:.5;-khtml-opacity:.5;opacity:.5}.product-images>li.thumb-container>.thumb.selected,.product-images>li.thumb-container>.thumb:hover{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1}@media (min-width:576px){#main .images-container{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex}}#main .images-container .js-qv-mask{overflow:hidden;text-align:center}@media (min-width:576px){#main .images-container .js-qv-mask{height:520px;-moz-order:1;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;-ms-order:1;margin-right:10px}.rtl #main .images-container .js-qv-mask{margin-left:10px;margin-right:inherit}}#main .images-container .js-qv-mask .product-images{display:block}@media (max-width:575px){#main .images-container .js-qv-mask .product-images>li.thumb-container{width:20%;float:left;border:2px solid #fff}}.scroll-box-arrows{display:none}.scroll-box-arrows.scroll{display:block;position:absolute;left:40px;height:30rem}.rtl .scroll-box-arrows.scroll{right:40px;left:auto}.scroll-box-arrows i{filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;cursor:pointer;width:1.33333rem;height:1.33333rem;line-height:1.33333rem;border-radius:50%;border:0;font-size:.88889rem;color:#666;margin-left:-12px;left:50%;position:absolute;background-color:#ebebeb;z-index:9;text-align:center}.scroll-box-arrows i:focus,.scroll-box-arrows i:hover{color:#fff;background-color:#d07676}.scroll-box-arrows .left{bottom:0;display:none}@media (min-width:576px){.scroll-box-arrows .left{display:block}}.scroll-box-arrows .right{right:0;display:none}#product-availability{display:inline-block;font-weight:400;line-height:48px;margin-left:.625rem}.rtl #product-availability{margin-right:.625rem;margin-left:inherit}#product-availability .material-icons{line-height:inherit}#product-availability .product-available{color:#4cbb6c;line-height:16px}#product-availability .product-unavailable{color:#ff9a52;line-height:16px}#product-availability .product-last-items{color:#ff9a52}#product-details .label{font-size:1rem;color:#232323;font-weight:700}#product-details>div{margin-bottom:15px}.product-features{margin-top:1.25rem;margin-left:.27778rem}.rtl .product-features{margin-right:.27778rem;margin-left:inherit}.product-features>dl.data-sheet{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-moz-align-items:flex-start;-ms-align-items:flex-start;-o-align-items:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.product-features>dl.data-sheet dd.value,.product-features>dl.data-sheet dt.name{-moz-flex:1 0 40%;-ms-flex:1 0 40%;-webkit-box-flex:1;flex:1 0 40%;font-weight:400;background:#dfe1e6;padding:.625rem;margin-right:.625rem;min-height:2.22222rem;word-break:break-all}.product-features>dl.data-sheet dd.value:nth-of-type(2n),.product-features>dl.data-sheet dt.name:nth-of-type(2n){background:#dfe1e6}.product-features>dl.data-sheet dt.name{text-transform:capitalize}.product-variants>.product-variants-item{margin:0 0 1.11111rem}.product-variants>.product-variants-item select{border:1px solid #dfe1e6;height:2.22222rem;width:100%;display:inline-block;padding:5px 15px;background-color:transparent}.product-variants>.product-variants-item ul li{margin-right:1.11111rem}.rtl .product-variants>.product-variants-item ul li{margin-left:1.11111rem;margin-right:inherit}.product-variants>.product-variants-item ul.list-color li{margin-right:.55556rem}.rtl .product-variants>.product-variants-item ul.list-color li{margin-left:.55556rem;margin-right:inherit}.product-variants>.product-variants-item ul.list-color .input-color+span{border:2px solid #fff;font-weight:700;padding:5px 15px;cursor:pointer;box-shadow:0 0 0 1px #dfe1e6}.product-variants>.product-variants-item ul.list-color .input-color+span .sr-only{height:auto;margin:0;overflow:hidden;position:relative;width:auto}.product-variants>.product-variants-item ul.list-color .input-color+span.color{padding:0}.product-variants>.product-variants-item ul.list-color .input-color+span.color .sr-only{width:0;height:0;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;font-size:0}.product-variants>.product-variants-item ul.list-color .input-color:checked+span,.product-variants>.product-variants-item ul.list-color .input-color:hover+span{box-shadow:0 0 0 1px #d07676;position:relative;color:#d07676}.product-variants>.product-variants-item .color{margin-right:0;margin-top:0}.rtl .product-variants>.product-variants-item .color{margin-left:0;margin-right:inherit}.product-add-to-cart{position:relative;padding-top:2.22222rem}.product-add-to-cart:before{content:"............................................................................................................................................................................................................................................................................................................................................................................";position:absolute;left:0;top:-5px;line-height:0;font-size:30px;width:100%;height:10px;overflow:hidden;white-space:nowrap;letter-spacing:4px;color:#b7c1d4}.product-add-to-cart #product-availability{display:none}.product-customization{margin:2.5rem 0}.product-customization .product-customization-item{margin:1.25rem 0}.product-customization .product-message{background:#dfe1e6;border:none;width:100%;height:2.77778rem;resize:none;padding:.55556rem}.product-customization .file-input{width:100%;opacity:0;left:0;z-index:1;cursor:pointer;overflow:hidden;position:absolute}.rtl .product-customization .file-input{right:0;left:auto}.product-customization .custom-file{position:relative;background:#dfe1e6;width:100%;text-indent:.55556rem;display:block;color:#999;padding:5px 10px}.product-customization .custom-file button{z-index:0;position:absolute;right:0;line-height:.83333rem;top:0;height:2.5rem}.rtl .product-customization .custom-file button{left:0;right:auto}.product-customization small{color:#999}.product-accessories{margin-bottom:2.77778rem}.product-pack{margin-top:2.5rem}.product-pack .pack-product-container{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-pack:distribute;justify-content:space-around}.product-pack .pack-product-container .pack-product-name{-moz-flex:0 0 50%;-ms-flex:0 0 50%;-webkit-box-flex:0;flex:0 0 50%;font-size:.77778rem;color:#999}.product-pack .pack-product-container .pack-product-quantity{border-left:2px solid #dfe1e6;padding-left:.625rem}.product-pack .pack-product-container .pack-product-name,.product-pack .pack-product-container .pack-product-price,.product-pack .pack-product-container .pack-product-quantity{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.product-refresh{margin-top:1.25rem}.social-sharing{display:block;margin-top:1.33333rem;margin-bottom:2.55556rem}.social-sharing ul{margin-bottom:0}.social-sharing li{display:inline-block;vertical-align:middle}.social-sharing li a{height:1.44444rem;width:1.38889rem;display:block;position:relative;color:#999;font-weight:400}.social-sharing li a:before{display:inline-block;content:"";width:1.38889rem;height:1.44444rem;position:absolute;left:0;right:0;top:0;bottom:0;font-family:fontello;background-image:none;font-size:.77778rem}.social-sharing li a:hover{color:#d07676}.social-sharing li a span{display:none}.social-sharing li.facebook a:before{content:"\F09A"}.social-sharing li.twitter a:before{content:"\F099 "}.social-sharing li.googleplus a:before{content:"\F0D5"}.social-sharing li.pinterest a:before{content:"\F231 "}.products-selection .title{color:#373a3c}#blockcart-modal .cart-content .btn{margin-bottom:.625rem;line-height:1.11111rem}@media (max-width:991px){.product-cover img{width:100%}#product-modal .modal-content .modal-body{-moz-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-ms-flex-direction:column;margin-left:0}#product-modal .modal-content .modal-body img.product-cover-modal{width:100%}#product-modal .modal-content .modal-body .arrows{display:none}#product-modal .modal-content .modal-body .image-caption{width:100%}#blockcart-modal .modal-dialog{width:calc(100% - 20px)}#blockcart-modal .modal-body{padding:1.66667rem}}@media (max-width:767px){#blockcart-modal .divide-right{border-right:none}#blockcart-modal .modal-body{padding:.88889rem}}.cart-grid{margin-bottom:1rem}.cart-item{padding:1rem 0}.cart-summary-line:after{content:"";display:table;clear:both}.cart-summary-line .value{color:#232323;float:right}.cart-grid-body{margin-bottom:.75rem}.cart-grid-body #main,.cart-grid-body .card-block,.cart-grid-body .cart-overview{padding:1rem}.cart-grid-right .promo-discounts .cart-summary-line .label{color:#999}.cart-grid-right .promo-discounts .cart-summary-line .label .code{text-decoration:underline}.block-promo .promo-code .alert-danger{margin-top:1.25rem}.block-promo .promo-code form{text-align:center}.block-promo .promo-input{height:2.5rem;text-indent:.625rem;width:50%}.block-promo .promo-code-button{padding-left:1.25rem;margin-bottom:1.25rem}.block-promo.promo-highlighted{padding:1.25rem}.product-line-grid-body>.product-line-info>.label{color:#be7374}.product-line-grid-body>.product-line-info>.unit-price-cart{color:#999}.product-line-grid-right .cart-line-product-actions,.product-line-grid-right .product-price{color:#a9b1c0;font-weight:700;letter-spacing:1px}.product-line-grid-right .cart-line-product-actions .remove-from-cart,.product-line-grid-right .product-price .remove-from-cart{margin-top:.3125rem}@media (max-width:767px){.product-line-grid-body{margin-bottom:1rem}}@media (max-width:575px){.cart-items{padding:1rem 0}.cart-item{border-bottom:1px solid #dfe1e6}.cart-item:last-child{border-bottom:0}.cart-grid-body .cart-overview{padding:0}.cart-grid-body .no-items{padding:1rem;display:inline-block}.product-line-grid-left{padding-right:0!important}}@media (max-width:360px){.product-line-grid-right .price,.product-line-grid-right .qty{width:100%}}.quickview .modal-dialog{width:calc(100% - 30px);max-width:64rem}.quickview .modal-content{background:#dfe1e6;min-height:28.13rem}.quickview .modal-header{border:none;padding:.625rem}.quickview .modal-body{min-height:23.75rem}.quickview .modal-footer{border-top:1px solid hsla(0,0%,60%,.3)}.quickview .layer{display:none}.quickview .product-cover img{width:95%}.quickview .images-container{display:-webkit-box;display:-ms-flexbox;display:flex;z-index:1;min-height:21.88rem}.quickview .images-container .product-images>li.thumb-container>.thumb{width:100%;max-width:4.938rem;margin-bottom:.8125rem;background:#fff}.quickview .mask{width:35%;max-height:22.5rem;overflow:hidden;margin-left:.625rem}.quickview .arrows{position:absolute;top:0;bottom:0;max-height:22.5rem;right:5rem;z-index:0}.quickview .arrows .arrow-up{margin-top:-3.125rem;cursor:pointer;opacity:.2}.quickview .arrows .arrow-down{position:absolute;bottom:-1.875rem;cursor:pointer}.quickview .social-sharing{margin-top:0;margin-left:2.5rem}.quickview .product-quantity .buy-now{height:44px;line-height:40px;margin:0 10px 0 0;padding:0 20px;text-transform:uppercase;font-size:21px}.contact-rich{color:#999;margin-bottom:2rem;word-wrap:break-word}.contact-rich h4{text-transform:uppercase;color:#232323;margin-bottom:2rem}.contact-rich .block{height:auto;overflow:hidden}.contact-rich .block .icon{float:left;width:3.5rem}.contact-rich .block .icon i{font-size:2rem}.contact-rich .block .data{color:#232323;font-size:.875rem;width:auto;overflow:hidden}.contact-rich .block .data.email{padding-top:.375rem}.contact-form{background:#fff;padding:1rem;color:#999;width:100%}.contact-form h3{text-transform:uppercase;color:#232323}#pagenotfound #main .page-header,#products #main .page-header{margin:2rem 0 3rem}#pagenotfound #main .page-content,#products #main .page-content{margin-bottom:10rem}#pagenotfound .page-not-found,#products .page-not-found{box-shadow:"2px 2px 8px 0px rgba(0, 0, 0, 0.2)";background:#fff;padding:1rem;font-size:.875rem;color:#999;max-width:570px;margin:0 auto}#pagenotfound .page-not-found h4,#products .page-not-found h4{font-size:1rem;font-weight:700;margin:.5rem 0 1rem}#pagenotfound .page-not-found .search-widget,#products .page-not-found .search-widget{float:none}#pagenotfound .page-not-found .search-widget input,#products .page-not-found .search-widget input{width:100%}.customization-modal .modal-content{border-radius:0;border:1px solid #dfe1e6}.customization-modal .modal-content .modal-body{padding-top:0}.customization-modal .modal-content .modal-body .product-customization-line{padding-bottom:.9375rem;padding-top:.9375rem;border-bottom:1px solid #dfe1e6}.customization-modal .modal-content .modal-body .product-customization-line .label{font-weight:700;text-align:right}.customization-modal .modal-content .modal-body .product-customization-line:last-child{padding-bottom:0;border-bottom:0}.btn{font-size:.77778rem}.btn-default{border:2px solid #dfe1e6;background:#fff;color:#222}.btn-default:hover{background-color:#d07676;border-color:#d07676;color:#fff}.btn-primary{border:0}.btn-primary:hover{border-color:#dfe1e6;background-color:#dfe1e6}.btn-black{background-color:#000;color:#fff}.btn-black:hover{background-color:#d07676;color:#fff}.btn-outline-pink{background:transparent}.rtl .fa.icon-left,.rtl .fa.icon-right,.rtl .material-icons.icon-left,.rtl .material-icons.icon-right{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg)}sup{color:red}.block_newsletter form{display:block;width:100%;margin:9px 0}.block_newsletter .form-control{font-size:.77778rem;background:transparent;border-width:2px;margin-bottom:20px}.block_newsletter .alert{margin-top:.55556rem;width:100%;clear:both}.block_newsletter .description{color:#999}.block_newsletter .btn-outline-pink{display:inline-block}.block_newsletter .btn-outline-pink .btn{display:block;text-transform:uppercase;font-weight:100;background:transparent;color:#000;letter-spacing:2px;padding:0}.block_newsletter .btn-outline-pink .btn:hover{color:#d07676}#fancybox-map{text-transform:uppercase;font-weight:900;color:#d07676!important;font-size:11px}#fancybox-map span{font-size:9px;margin-right:5px}.rtl #fancybox-map span{margin-left:5px;margin-right:inherit}.pts-contact-footer h5{color:#bbb;text-transform:uppercase;font-size:13px;font-weight:500;padding-top:10px}.ptsmaplocator{margin-bottom:30px}.ptsmaplocator .page-subheading{font-size:36px;line-height:38px;background-color:transparent;padding:0;text-align:center}.ptsmaplocator .page-subheading span{color:#333;display:inline-block;line-height:18px;padding:20px 15px;position:relative}.ptsmaplocator .page-subheading span:before{background-color:#4f4f4f;bottom:-1px;content:"";height:3px;left:50%;margin-left:-15px;position:absolute;width:30px}.ptsmaplocator .box-content{padding:0}.ptsmaplocator .page-subheading{display:none}.ptsmaplocator .maplocator{margin-bottom:0}.ps_categoryproducts{margin-bottom:2.77778rem!important;border-top:1px solid #dfe1e6;padding-top:15px}#contact-link{text-align:center}#contact-link>.media{display:-moz-flex;display:-ms-flexbox;display:-webkit-box;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}#contact-link .fa{color:#d07676;border:1px solid #d07676;font-size:15px;width:30px;height:30px;text-align:center;border-radius:50%;line-height:30px}#contact-link .media-body{padding-top:5px;width:auto}#contact-link .text{font-size:12px;color:#999;display:block;line-height:.77778rem}#contact-link .phone{color:#000;font-size:.88889rem;font-weight:500;line-height:.88889rem}.block-lastest-cms{display:block;width:100%;padding:15px 0}.rtl #to_top{left:40px;right:auto}#to_top:focus,#to_top:hover{text-decoration:inherit}#to_top span{font-size:1.88889rem}#psstaticcontents{color:#000}#psstaticcontents p{margin-bottom:0}#psstaticcontents .feature-box .fa{width:50px;height:50px;display:block;font-size:0}#psstaticcontents .feature-box .fa:before{display:none}#psstaticcontents .feature-box .fbox-title{color:#999;margin-bottom:0;padding-top:10px}#psstaticcontents .feature-box .description{font-size:20px;line-height:24px}#header .cart_block{top:auto!important}.blockcart .header{background-image:url(../css/52b68ebefba9b93dbb07cf5f144c1b8b.png);background-repeat:no-repeat;background-position:left 0}.rtl .blockcart .header{padding-right:65px;padding-left:inherit;background-position:right 0}.blockcart .shopping-cart-group{border:1px solid #dfe1e6;position:relative;padding:.44444rem .66667rem;display:inline-block}.blockcart .shopping-cart-group span{display:block;border-radius:10px;background-color:#d07676;color:#fff;position:absolute;right:-.33333rem;top:-.27778rem;line-height:.55556rem;font-size:.55556rem;text-align:center;padding:.16667rem .27778rem}.rtl .blockcart .shopping-cart-group span{left:-.33333rem;right:auto}.blockcart .shopping-cart{display:none}.blockcart .cart-products-count{border-radius:50%;width:18px;height:18px;line-height:18px;position:absolute;top:12px;left:15px;font-size:12px;text-align:center;color:#fff;background:#d07676}.rtl .blockcart .cart-products-count{right:15px;left:auto}.blockcart .space-line{margin:0 2px}.blockcart .cart-products-price{font-size:1.11111rem;line-height:1.33333rem}.blockcart .ps_cartcontent{position:absolute;right:0;visibility:hidden;filter:alpha(opacity=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;background:#fff;border:1px solid #dfe1e6;padding:1.11111rem;width:16.66667rem;top:5.55556rem;z-index:10;box-shadow:0 0 2px #ccc;font-size:16px}.rtl .blockcart .ps_cartcontent{left:0;right:auto}.blockcart .ps_cartcontent .cart-name{margin-bottom:5px;font-size:14px}.blockcart .ps_cartcontent .cart-name a{color:#aaa;font-weight:400}.blockcart .ps_cartcontent .cart-name a:hover{color:#d07676}.blockcart .ps_cartcontent .cart-price{font-size:.88889rem}.blockcart .ps_cartcontent .car-product{position:relative;padding-right:.55556rem;padding-top:.55556rem;padding-bottom:.55556rem}.rtl .blockcart .ps_cartcontent .car-product{padding-left:.55556rem;padding-right:inherit}.blockcart .ps_cartcontent .car-product>*{display:block}.blockcart .ps_cartcontent .car-product .cart-image{margin-right:15px}.rtl .blockcart .ps_cartcontent .car-product .cart-image{margin-left:15px;margin-right:inherit}.blockcart .ps_cartcontent .remove-from-cart{position:absolute;right:-5px;top:.27778rem;color:red;font-size:12px}.rtl .blockcart .ps_cartcontent .remove-from-cart{left:-5px;right:auto}.blockcart .ps_cartcontent .cart-quantity label{margin-right:.27778rem}.rtl .blockcart .ps_cartcontent .cart-quantity label{margin-left:.27778rem;margin-right:inherit}.blockcart .ps_cartcontent .cart-group{border-top:1px solid #dfe1e6;border-bottom:1px solid #dfe1e6;padding:.55556rem 0;margin-bottom:.83333rem}.blockcart .ps_cartcontent .cart_total{font-weight:700}.blockcart .ps_cartcontent .cart-buttons a{display:block}.blockcart:hover .ps_cartcontent{visibility:visible;filter:alpha(opacity=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;top:2.22222rem}.block{margin-bottom:30px}.block .title_block{background:transparent;font-size:rem(18px);padding:rem(12px) rem(0)}.page_title,.title-sidebar,.title_homepage{font-family:Nickainley Normal;font-size:60px;text-align:center;font-weight:400;position:relative;line-height:80px;padding:20px 0}.page_title:before,.title-sidebar:before,.title_homepage:before{content:"...............................................................................................................................................";position:absolute;line-height:0;font-size:48px;color:#d5dbe6;overflow:hidden;white-space:nowrap;width:230px;bottom:0;margin:auto;left:0;right:0;height:15px;max-width:100%}.blog-title{font-size:1.66667rem}.block-header-primary .widget-heading{padding:10px 0;margin-top:20px}.block-header-primary .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-primary .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-primary .title_block{color:#fff;background-color:#d07676;border-color:#d07676;padding:20px;font-size:18px}.block-header-primary .block-item2 .title_block{background-color:#cb6767}.block-header-primary .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-primary .title-sidebar{padding:15px 20px;font-size:20px}.block-header-primary .list1{padding:0 15px}.block-header-primary .tabs .nav-tabs{background-color:#d07676}.block-header-primary .tabs .nav-tabs li a.active:before,.block-header-primary .tabs .nav-tabs li a:focus:before{border-top-color:#d07676}.block-header-primary .tabs .tab-content{padding:0}.block-header-success .widget-heading{padding:10px 0;margin-top:20px}.block-header-success .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-success .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-success .title_block{color:#fff;background-color:#4cbb6c;border-color:#4cbb6c;padding:20px;font-size:18px}.block-header-success .block-item2 .title_block{background-color:#43b062}.block-header-success .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-success .title-sidebar{padding:15px 20px;font-size:20px}.block-header-success .list1{padding:0 15px}.block-header-success .tabs .nav-tabs{background-color:#4cbb6c}.block-header-success .tabs .nav-tabs li a.active:before,.block-header-success .tabs .nav-tabs li a:focus:before{border-top-color:#4cbb6c}.block-header-success .tabs .tab-content{padding:0}.block-header-info .widget-heading{padding:10px 0;margin-top:20px}.block-header-info .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-info .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-info .title_block{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c;padding:20px;font-size:18px}.block-header-info .block-item2 .title_block{background-color:#ff3838}.block-header-info .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-info .title-sidebar{padding:15px 20px;font-size:20px}.block-header-info .list1{padding:0 15px}.block-header-info .tabs .nav-tabs{background-color:#ff4c4c}.block-header-info .tabs .nav-tabs li a.active:before,.block-header-info .tabs .nav-tabs li a:focus:before{border-top-color:#ff4c4c}.block-header-info .tabs .tab-content{padding:0}.block-header-warning .widget-heading{padding:10px 0;margin-top:20px}.block-header-warning .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-warning .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-warning .title_block{color:#fff;background-color:#ff9a52;border-color:#ff9a52;padding:20px;font-size:18px}.block-header-warning .block-item2 .title_block{background-color:#ff8e3e}.block-header-warning .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-warning .title-sidebar{padding:15px 20px;font-size:20px}.block-header-warning .list1{padding:0 15px}.block-header-warning .tabs .nav-tabs{background-color:#ff9a52}.block-header-warning .tabs .nav-tabs li a.active:before,.block-header-warning .tabs .nav-tabs li a:focus:before{border-top-color:#ff9a52}.block-header-warning .tabs .tab-content{padding:0}.block-header-danger .widget-heading{padding:10px 0;margin-top:20px}.block-header-danger .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-danger .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-danger .title_block{color:#fff;background-color:#ff4c4c;border-color:#ff4c4c;padding:20px;font-size:18px}.block-header-danger .block-item2 .title_block{background-color:#ff3838}.block-header-danger .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-danger .title-sidebar{padding:15px 20px;font-size:20px}.block-header-danger .list1{padding:0 15px}.block-header-danger .tabs .nav-tabs{background-color:#ff4c4c}.block-header-danger .tabs .nav-tabs li a.active:before,.block-header-danger .tabs .nav-tabs li a:focus:before{border-top-color:#ff4c4c}.block-header-danger .tabs .tab-content{padding:0}.block-header-highlighted .widget-heading{padding:10px 0;margin-top:20px}.block-header-highlighted .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-highlighted .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-highlighted .title_block{color:#fff;background-color:#d07676;border-color:#d07676;padding:20px;font-size:18px}.block-header-highlighted .block-item2 .title_block{background-color:#cb6767}.block-header-highlighted .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-highlighted .title-sidebar{padding:15px 20px;font-size:20px}.block-header-highlighted .list1{padding:0 15px}.block-header-highlighted .tabs .nav-tabs{background-color:#d07676}.block-header-highlighted .tabs .nav-tabs li a.active:before,.block-header-highlighted .tabs .nav-tabs li a:focus:before{border-top-color:#d07676}.block-header-highlighted .tabs .tab-content{padding:0}.block-header-default .widget-heading{padding:10px 0;margin-top:20px}.block-header-default .widget-heading .title{font-size:36px;font-family:Nickainley Normal;font-weight:500;color:#000;letter-spacing:-.5px}.block-header-default .widget-heading .subTitle{font-size:16px;font-family:Basil Regular,serif;color:#000;font-weight:400}.block-header-default .title_block{color:#fff;background-color:#333;border-color:#333;padding:20px;font-size:18px}.block-header-default .block-item2 .title_block{background-color:#292929}.block-header-default .block_content{background:#fff;border:1px solid #dfe1e6;padding:0}.block-header-default .title-sidebar{padding:15px 20px;font-size:20px}.block-header-default .list1{padding:0 15px}.block-header-default .tabs .nav-tabs{background-color:#333}.block-header-default .tabs .nav-tabs li a.active:before,.block-header-default .tabs .nav-tabs li a:focus:before{border-top-color:#333}.block-header-default .tabs .tab-content{padding:0}.block.block-borderbox .title_block{color:#000;background-color:transparent;border:1px solid #dfe1e6;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-borderbox .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-borderbox .list1{padding:0 15px}.block.block-borderbox .title_block{padding:20px 15px}.block.block-borderbox .block_content{border-style:solid;border-width:1px}.block.block-primary .title_block{color:#fff;background-color:#d07676;border:1px solid #d07676;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-primary .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-primary .list1{padding:0 15px}.block.block-primary .block_content{border-style:solid;border-width:1px}.block.block-success .title_block{color:#fff;background-color:#4cbb6c;border:1px solid #4cbb6c;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-success .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-success .list1{padding:0 15px}.block.block-success .block_content{border-style:solid;border-width:1px}.block.block-info .title_block{color:#fff;background-color:#ff4c4c;border:1px solid #ff4c4c;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-info .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-info .list1{padding:0 15px}.block.block-info .block_content{border-style:solid;border-width:1px}.block.block-warning .title_block{color:#fff;background-color:#ff9a52;border:1px solid #ff9a52;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-warning .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-warning .list1{padding:0 15px}.block.block-warning .block_content{border-style:solid;border-width:1px}.block.block-danger .title_block{color:#fff;background-color:#ff4c4c;border:1px solid #ff4c4c;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-danger .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-danger .list1{padding:0 15px}.block.block-danger .block_content{border-style:solid;border-width:1px}.block.block-highlighted .title_block{color:#fff;background-color:#d07676;border:1px solid #d07676;padding:14px 15px;font-size:18px;position:relative;border-bottom:0}.block.block-highlighted .block_content{background-color:#fff;border-color:#dfe1e6}.block.block-highlighted .list1{padding:0 15px}.block.block-highlighted .block_content{border-style:solid;border-width:1px}.sidebar>div{margin-bottom:1.66667rem}.breadcrumb{background:transparent!important}.breadcrumb[data-depth="1"]{margin-top:0}.breadcrumb ol{padding-left:0;margin-bottom:0;list-style:none}.breadcrumb li{display:inline-block;color:#000;position:relative;line-height:24px;margin-right:22px}.rtl .breadcrumb li{margin-left:22px;margin-right:inherit}.breadcrumb li:after{content:"\EA1C";font-family:fontello;color:#999;font-size:.66667rem;position:absolute;right:-15px;top:0}.rtl .breadcrumb li:after{left:-15px;right:auto}.breadcrumb li:last-child:after{display:none}.breadcrumb li a{color:#999}.rtl .breadcrumb li:after{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg)}.cart-grid{margin-bottom:.88889rem}.cart-items{margin-bottom:0}.cart-item{padding:.88889rem 0}.cart-summary-line{clear:both}.cart-summary-line .label{padding-left:0;font-weight:400;white-space:inherit}.rtl .cart-summary-line .label{padding-right:0;padding-left:inherit}.cart-summary-line .value{color:#999}.cart-summary-line.cart-summary-subtotals .label,.cart-summary-line.cart-summary-subtotals .value{font-weight:400}.cart-grid-body{margin-bottom:.66667rem}.cart-grid-body a.label:hover{color:#d07676}.cart-grid-body #main,.cart-grid-body .card-block{padding:.88889rem}.cart-grid-body #main h1,.cart-grid-body .card-block h1{margin-bottom:0}.cart-grid-body hr{margin:0}.cart-grid-body .cart-overview{padding:.88889rem}.cart-grid-right #block-reassurance{background-color:#fff;padding:1.11111rem}.cart-grid-right hr{margin:0}.cart-grid-right .promo-discounts{margin-bottom:0}.cart-grid-right .promo-discounts .cart-summary-line .label{color:#373a3c}.cart-grid-right .promo-discounts .cart-summary-line .label .code{text-decoration:none;cursor:pointer}.block-promo .promo-code{padding:1.6rem;background:#dfe1e6}.block-promo .promo-code .alert-danger{position:relative;margin-top:1.11111rem;background:#ff4c4c;color:#fff;display:none}.block-promo .promo-code .alert-danger:after{bottom:100%;left:10%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-bottom-color:#ff4c4c;border-width:10px;margin-left:-10px}.rtl .block-promo .promo-code .alert-danger:after{margin-right:-10px;margin-left:inherit}.block-promo .promo-input{color:#232323;border:1px solid #999;height:2.22222rem;text-indent:.55556rem;width:60%}.block-promo .promo-input+button{margin-top:-4px;text-transform:capitalize}.block-promo .cart-summary-line .label,.block-promo .promo-name{color:#ff9a52;font-weight:600}.block-promo .cart-summary-line .label a,.block-promo .promo-name a{font-weight:400;color:#232323;display:inline-block}.block-promo .promo-code-button{padding-left:1.11111rem;margin-bottom:1.11111rem;display:inline-block}.rtl .block-promo .promo-code-button{padding-right:1.11111rem;padding-left:inherit}.block-promo.promo-highlighted{padding:1.11111rem;padding-bottom:0;margin-bottom:0}.product-line-grid-left img{max-width:100%}.product-line-grid-body>.product-line-info>.label{padding:0;line-height:inherit;text-align:left;white-space:inherit}.product-line-grid-body>.product-line-info>.out-of-stock{color:red}.product-line-grid-body>.product-line-info>.available{color:#4cbb6c}.product-line-grid-body>.product-line-info>.unit-price-cart{padding-left:.3125rem;font-size:.875rem;color:#373a3c}.rtl .product-line-grid-body>.product-line-info>.unit-price-cart{padding-right:.3125rem;padding-left:inherit}.product-line-grid-right .bootstrap-touchspin{width:3.77778rem;border:2px solid #dfe1e6;overflow:hidden}.product-line-grid-right .bootstrap-touchspin>.form-control,.product-line-grid-right .bootstrap-touchspin>.input-group{color:#232323;background-color:#f6f3f3;height:2rem;padding:.175rem .5rem;text-align:center;font-size:.88889rem;border:0}.product-line-grid-right .bootstrap-touchspin>.input-group-btn-vertical{width:auto}.product-line-grid-right .bootstrap-touchspin .btn-touchspin{top:2.5px;z-index:9}.product-line-grid-right .cart-line-product-actions,.product-line-grid-right .product-price{line-height:36px}.product-line-grid-right .cart-line-product-actions .remove-from-cart,.product-line-grid-right .product-price .remove-from-cart{color:#232323;display:inline-block;margin-top:-.02rem}@media (max-width:767px){.product-line-grid-body{margin-bottom:.88889rem}}@media (max-width:575px){.cart-items{padding:.88889rem 0}.cart-item{border-bottom:1px solid #dfe1e6}.cart-item:last-child{border-bottom:0}.cart-grid-body .cart-overview{padding:0}.cart-grid-body .no-items{padding:.88889rem;display:inline-block}.product-line-grid-left{padding-right:0!important}.rtl .product-line-grid-left{padding-left:0!important;padding-right:inherit}}@media (max-width:575px){.product-line-grid-right .price,.product-line-grid-right .qty{width:100%}}h1{font-size:2rem}.h1,h1,h6{font-weight:300}.h1{font-size:2rem}.h2,.h3,.h4,.h5,.h6,.regular-price{font-weight:300}@media (max-width:990px){.style1 .product-miniature:hover .ps_group{bottom:20px!important}}.social-block-inline{display:inline-block}.social-block-inline>a{display:-ms-inline-grid;display:inline-grid;height:37px;-ms-grid-column-align:center;justify-items:center}.social-block-inline>a i{line-height:30px}.social-block-inline>a .gplus{position:relative;top:-1px}.contact-phone-block{font-size:18px}.contact-phone-block i{color:#dfe1e6}#_mobile_nav .contact-phone-block{color:#dfe1e6;float:left;padding:10px 20px;width:100%}#_mobile_nav ul .current a{font-weight:700;color:#292b32}#_mobile_menu input.ps_search{max-width:95%}.currency-selector .material-icons,.language-selector .material-icons{color:#dfe1e6}.blockcart .header{background:none}#_mobile_cart .blockcart .header{background:none;padding-right:5px}.breadcrumb{padding:10px 0}@media (max-width:1199px){.headerCenter{min-width:65%}.headerCenter .search-widget{margin-top:15px;max-width:150px}.ps-desktop-megamenu .megamenu>li>a{margin:10px 0}.ps-desktop-megamenu .megamenu>li>a .menu-title{font-size:14px}}#footer .block-contactinfo .nav-item{border-bottom:1px solid #ebebeb}@media (max-width:991px){.ps-mobile-megamenu .click-canavs-menu:after{content:"";display:block;height:40px;left:-15px;position:absolute;top:-10px;width:40px}}.footer-block .carousel-inner>.carousel-item>a>img,.footer-block .carousel-inner>.carousel-item>img,.footer-block .img-fluid{margin-top:5px}.prodetail-tile{font-size:2.1rem;margin-bottom:.7rem}.product-prices{margin-bottom:.5rem}.product-discount .regular-price{font-size:1rem}.proShortDesc{border:0;font-size:1.2em;line-height:1.7}.product-add-to-cart{margin:0;padding:0}.product-add-to-cart:before{content:""}.product-quantity .add .add-to-cart{height:44px;line-height:40px;margin:0 10px 0 0;padding:0 20px;text-transform:uppercase}.product-quantity .add .add-to-cart i{display:none}.product-quantity .buy-now{height:44px;line-height:42px;margin:0 10px 0 0;padding:0 20px;text-transform:uppercase}.product-quantity .add-to-cart,.product-quantity .buy-now{font-size:16px!important}@media (max-width:402px){.product-quantity .add-to-cart,.product-quantity .buy-now{font-size:15px!important}}.product-quantity .qty .bootstrap-touchspin .input-group-btn-vertical .btn-touchspin{top:-2px}#product-details>div,.product-information{margin:0}.tabs-v1.tabs-info .nav-tabs{border:none;border-top:1.5px dashed #b7c1d4;padding:0}.tabs-v1.tabs-info .nav-tabs:before{bottom:auto;top:-20px}.tabs-v1.tabs-info .nav-tabs a{padding:22px 15px 0 0;font-weight:300}.tabs-v1.tabs-info .nav-tabs a.active{border:0}.tabs-v1.tabs-info .nav-tabs .nav-link{font-weight:500;font-size:18px;text-transform:uppercase}.tabs-v1.tabs-info .tab-content{margin:0;padding:10px 0}.product-reference{color:#999;font-size:1.1em;margin-top:7px}.product-reference label{color:#a9b1c0;font-weight:400}.product-features{font-size:1.1em;margin:0}#leo_product_reviews_block_extra{margin:0}.btn-primary{border:2px solid #d07676}.btn-default,.btn-primary{padding:.65rem 1.3rem}.pts-parallax{background-attachment:fixed;background-position:50%;background-size:cover;position:relative}.widget-separator .w_text_separator{float:left;height:2px;position:relative;width:100%;background-color:#777}.widget-separator .w_text_separator .text_separ{background-color:#fff;font-family:monospace;font-size:15px;margin:0 auto;padding:0 1px;position:absolute;text-align:center;top:-9px;width:50px}.widget-separator .separator_align_center{left:0;right:0}.widget-separator .separator_align_left{left:0}.widget-separator .separator_align_right{right:0}.grabbing{cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAO0lEQVQ4y2NgGHbgPxTjY+PWDAP42PgM+k8IwNRQZAg+A/5TYsB/UgBFBtDM/0QZQkxawGsI3QygLwAAbjZlqS88cqkAAAAASUVORK5CYII=) 8 8,move}.border-image{position:relative}.border-image:before{content:"............................................................................................................................................................................................................................................................................................................................................................................";font-family:Sacramento,cursive;font-size:48px;font-weight:400;height:15px;left:0;line-height:0;overflow:hidden;position:absolute;top:-5px;white-space:nowrap;width:100%}.style1 .product-miniature .btn-product{background:transparent}.custombanners.displayHome .bx-wrapper .banner-img{border-radius:10px}@media (max-width:650px){.bx-wrapper{max-width:100%;margin:0 auto 24px!important}.custombanners.displayHome{margin:24px 0 0!important}.banner-item-content .banner-img{width:100%}.grey-note{display:block}}.easycarousels,.home-top-right{overflow:hidden}.post-views i,.views-num i{display:inline-block;width:30px}.left-column,.right-column{padding-left:0}.sidebar-canvas i{position:relative;left:-1px}@media (max-width:990px){#cavas_menu .nav-item .dropdown-menu.level2{left:0!important;border:none!important}#cavas_menu .dropdown-submenu>.click-canavs-menu{top:6px}}.nav-tabs .nav-link,.nav-tabs .nav-link:active,.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border:none!important}.modal-body p,.nav-tabs .nav-link.active,.nav-tabs .nav-link.active:active,.nav-tabs .nav-link.active:focus{color:#232323}.icon-phone{display:inline-block;-webkit-transform:rotate(90deg) translateX(3px) translateY(2px);transform:rotate(90deg) translateX(3px) translateY(2px)}.layout-boxed-md{background:#fff}.layout-boxed-md #page{box-shadow:0 0 10px rgba(0,0,0,.3);margin:0 auto;background:#fff;max-width:960px}.layout-boxed-md #page .container{max-width:960px}.layout-boxed-lg #page{margin:0 auto;background:#fff;max-width:1440px}.headerFixed{left:0;right:0;position:fixed;top:0;z-index:101;width:100%;box-shadow:0 0 5px #ccc;-webkit-animation:fadeInDown .9s ease-in-out;animation:fadeInDown .9s ease-in-out}.toogle_content{background-color:#fff;position:absolute;top:100%;min-width:9.44444rem;z-index:115;display:none;border:1px solid #dfe1e6;padding:.27778rem .55556rem}.toogle_content a{color:#292733}.toogle_content li{display:block}.toogle_content li.selected a,.toogle_content li.selected span,.toogle_content li a:active,.toogle_content li a:focus,.toogle_content li a:hover{color:#ba4040}.logo-theme{background:none;position:relative;z-index:99;display:block}.logo-theme a{vertical-align:middle;width:rem(275px);height:rem(100px);background-repeat:no-repeat;background-position:50%;display:inline-block}#pts-mainnav{background-color:#333;min-height:50px}#wrapper{padding-bottom:1.66667rem}.footer-top{background-color:#dfe1e6;position:relative}.footer-top,.footer-top a{color:#414141}.footer-top a:hover{color:#d07676}.footer-top .block_newsletter .input-wrapper{background-color:#fff;height:2.66667rem}.footer-top .block_newsletter .form-control{padding:12px 0;text-indent:30px}.footer-top .block_newsletter .h2{color:#fff;margin-bottom:5px;letter-spacing:-1px;font-size:2rem}.footer-top .block_newsletter .description{margin-bottom:0;color:#fff;letter-spacing:.5px}.footer-top .block_newsletter .input-group-addon{position:relative}.footer-top .block_newsletter .input-group-addon .fa{width:55px;height:48px;line-height:48px;text-align:center;background-color:#d07676;color:#fff}.footer-top .block_newsletter .input-group-addon:hover .fa{background-color:#000}.footer-top .block_newsletter .btn{width:55px;height:48px;position:absolute;left:0;top:0}.footer-center a:hover{color:#a6a6a6}.footer-center .widget-links{margin-bottom:0}.footer-center .widget-links .list-item{display:block;padding:5px 0}.footer-center .block .title_block{text-transform:uppercase;font-size:1rem}.footer-center .block-contactinfo .material-icons{font-size:1.33333rem;margin-right:20px}.rtl .footer-center .block-contactinfo .material-icons{margin-left:20px;margin-right:inherit}.footer-center .block-contactinfo .nav-item{display:-moz-flex}.footer-center .block-contactinfo .nav-item .adress{border-bottom:1px solid #dfe1e6}.footer-center .block-contactinfo .nav-item .email{border-bottom:1px solid #dfe1e6;color:#d07676}.footer-center .block-contactinfo .nav-item .email .title{color:#000}.footer-bottom,.footer-bottom a{color:#999}.footer-bottom a:hover{color:#d07676}.footer-bottom .block .title_block{font-size:18px;font-weight:600;color:#fff;display:block;margin-bottom:0;background:transparent;position:relative;padding:.55556rem 0}.pts-copyright{font-family:Basil Regular;position:relative;padding:0;background-color:#fff;color:#000}.pts-copyright a{color:#333}.pts-copyright a:hover{color:#d07676}.pts-copyright ul.links li a{color:#000}.pts-copyright .widget-html a,.pts-copyright ul.links li a:hover{color:#d07676}.pts-copyright .widget-html p{margin-bottom:0}@media (min-width:576px){.container{width:560px;max-width:100%}}@media (min-width:768px){.container{width:760px;max-width:100%}}@media (min-width:992px){.container{width:990px;max-width:100%}}@media (min-width:1200px){.container{width:1440px;max-width:100%}}@media (max-width:767px){#wrapper{box-shadow:none}#checkout-cart-summary{float:none;width:100%;margin-top:1rem}section.checkout-step{width:100%}.default-input{min-width:100%}label{clear:both}#products .product-miniature,.featured-products .product-miniature{margin:0 auto}.block-contact{padding-left:.9375rem;border:none}.header-bottom .wrapper{position:relative}.header-bottom .wrapper #pts-verticalmenu{position:static;width:2.77778rem}.header-bottom .wrapper #pts-verticalmenu>.title_block{padding:.55556rem .83333rem}html{overflow-x:hidden}}@media (max-width:991px){.container{max-width:100%}#header .logo{width:auto}#products .product-miniature,.featured-products .product-miniature{margin:0 auto}.sub-menu{left:0;min-width:100%}.rtl .sub-menu{right:0;left:auto}#blockcart-modal .product-image{width:100%;display:block;max-width:250px;margin:0 auto .83333rem}#blockcart-modal .cart-content{padding-left:0}#blockcart-modal .product-name,#product-availability{margin-top:.625rem}#search_filters .facet .facet-label{text-align:left}.rtl #search_filters .facet .facet-label{text-align:right}.block-category .category-cover{position:relative;text-align:center}.block-category{padding-bottom:0}.widget-categoriestabs .nav-tabs li{margin-right:10px}.rtl .widget-categoriestabs .nav-tabs li{margin-left:10px;margin-right:inherit}.block .title_block{letter-spacing:2px}.accordion .title_block{margin-bottom:0;cursor:pointer}.accordion .title_block:after{font-family:fontello;content:"\E145";position:absolute;right:0;text-align:center;width:40px;height:40px;top:12px;font-size:1.44444rem}.rtl .accordion .title_block:after{left:0;right:auto}.accordion .title_block.active:after{content:"-"}.headerMobile{background-color:#fff;padding:15px 0}.headerMobile .flexRow{-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sidebarOffcanvas .blockcart{padding:15px;border-bottom:1px solid #454545}.sidebarOffcanvas .blockcart .cart-products-price{color:#d07676}.sidebarOffcanvas .social-block-inline{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;-ms-flex-pack:distribute;justify-content:space-around;padding:20px 10px;margin:0}.sidebarOffcanvas .currency-selector,.sidebarOffcanvas .language-selector{width:100%}.sidebarOffcanvas .currency-selector .btn-unstyle,.sidebarOffcanvas .language-selector .btn-unstyle{display:none}.sidebarOffcanvas .currency-selector .dropdown-menu,.sidebarOffcanvas .language-selector .dropdown-menu{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%;position:static;margin:0;padding:10px;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;background:#b37676}.sidebarOffcanvas .currency-selector .dropdown-menu .dropdown-item,.sidebarOffcanvas .language-selector .dropdown-menu .dropdown-item{padding:0;color:#fff}.sidebarOffcanvas .user-info li{display:block;padding:10px 15px;border-bottom:1px solid #454545}.sidebarOffcanvas .user-info li a{display:block;color:#dedede;padding:0!important;margin:0!important}.sidebarOffcanvas .user-info li a:before{display:none}.sidebarOffcanvas .user-info li a:hover{color:#d07676}.sidebarOffcanvas .contact-phone-block{font-size:18px;float:none!important;display:block;text-align:center;color:#fff;margin:10px 0}.sidebarOffcanvas .js-dropdown{float:left}.rtl .sidebarOffcanvas .js-dropdown{float:right}.sidebarOffcanvas .btn-unstyle{color:#dedede;padding:8px 15px;cursor:pointer}.sidebarOffcanvas .btn-unstyle .expand-more{color:#d07676}}@media (max-width:575px){.logo-theme a{background-size:cover;width:10rem;height:3.22222rem}}@media (max-width:991px){#footer .social-block-inline>a{width:38px;height:38px;background:#d07676;border-radius:50%;margin:4px}#search_filters_wrapper .facet-title{float:left}#search_filters_wrapper .facet-title+span{margin:10px 0}#search_filters_wrapper .add,#search_filters_wrapper .collapsed .remove{display:none}#search_filters_wrapper .collapsed .add{display:inline-block}#search_filters_wrapper #search_filter_controls{padding:15px 0}#search_filters_wrapper #search_filter_controls .btn.btn-secondary.ok,#search_filters_wrapper #search_filter_controls .btn.ok.btn-tertiary{padding:.25rem}.product-line-grid-right .bootstrap-touchspin .btn-touchspin{top:0}.alert{margin:20px 0 10px}}@-webkit-keyframes fadeInUp{0%{-webkit-transform:translateY(20px);opacity:0;transform:translateY(20px)}to{-webkit-transform:translateY(0);opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{-ms-transform:translateY(20px);-webkit-transform:translateY(20px);opacity:0;transform:translateY(20px)}to{-ms-transform:translateY(0);-webkit-transform:translateY(0);opacity:1;transform:translateY(0)}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}body{-webkit-overflow-scrolling:touch;background-image:url(../css/dd647d40cc3c09264af1936d5cf62d6c.jpg);background-position:top;background-size:cover;color:#000;display:block;font-family:Basil Regular,serif;font-size:14px;font-weight:300;line-height:1.6666666667rem;overflow-x:hidden}body,html{height:100%}html{margin:0}html,ul{padding:0}ul{list-style:none}.dropdown-item:focus,.dropdown-item:hover{background:0 0;color:#d07676;text-decoration:none}.btn-unstyle{background-color:transparent;border:none;padding:0;text-align:inherit}.btn-unstyle:focus{outline:0}.form-control{background:#fff;color:#999}.form-control:focus{background-color:#fff;outline:1px solid red}input:-webkit-input-placeholder{color:#999}input:-moz-placeholder{color:#999}input:-ms-input-placeholder{color:#999}input:active:-webkit-input-placeholder{color:#414141}input:active:-moz-placeholder{color:#414141}input:active:-ms-input-placeholder{color:#414141}a{color:#d07676}a:hover{outline:0}.row-offcanvas{margin:0 auto;max-width:1920px}#wrapper{padding-bottom:1.6666666667rem}#index #wrapper{padding-bottom:0}#main,.card{background-color:#fff;border:0 solid rgba(0,0,0,.125);border-radius:10px;display:block;margin-bottom:24px;position:relative}#main,.card-block{padding:1.25rem}#main:after,.card-block:after{clear:both;content:"";display:table}.footer-center{position:relative;background-color:#fff;color:#999}.footer-center a{color:#999}.footer-center a:hover{color:#d07676}.footer-center .block-contactinfo .nav-item{display:-webkit-box;display:-ms-flexbox;display:flex;-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%}.footer-center .block-contactinfo .nav-item div{padding:12px 0;width:100%}.footer-center .block-contactinfo .title{color:#000}.footer-bottom{background-color:transparent;border-top:1px solid #dfe1e6;color:#000;font-size:1.1em;margin-top:10px;padding-top:30px;position:relative}.block{margin-bottom:24px;position:relative}.block .title_block{background:0 0;border-bottom:0;color:#000;font-family:Basil Regular,serif;font-size:1rem;font-weight:700;line-height:20px;margin:0;padding:.6666666667rem 0;position:relative}.block .block_content:after{clear:both;content:"";display:table}.block .block{margin-bottom:0}.blockcart{position:relative}.blockcart .header{display:inline-block;position:relative;padding-left:65px;padding-right:5px}.blockcart .header:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;color:#d07676;content:"\EA1A";font-family:fontello;font-size:32px;left:15px;position:absolute;speak:none;top:5px}.blockcart .cart-title{color:#d07676;display:block;font-family:Basil Regular,serif;line-height:20px}.blockcart .cart-products-price{color:#000;display:block;font-size:1.1111111111rem;line-height:1.3333333333rem}#to_top{bottom:40px;display:none;position:fixed;right:40px;z-index:90}#to_top:focus,#to_top:hover{text-decoration:inherit}#to_top:before{-webkit-animation:totop 1s linear 1s infinite alternate;animation:totop 1s linear 1s infinite alternate;content:"\EA08";font-family:fontello;font-size:1rem;left:50%;margin-left:-8px;position:absolute;top:-20px}#to_top span{color:#000;display:block;font-size:1.8888888889rem;position:relative;text-align:center}@-webkit-keyframes totop{0%{-khtml-opacity:0;-moz-opacity:0;opacity:0}25%{-khtml-opacity:.3;-moz-opacity:.3;opacity:.3}50%{-khtml-opacity:.5;-moz-opacity:.5;opacity:.5}75%{-khtml-opacity:.7;-moz-opacity:.7;opacity:.7}to{-khtml-opacity:1;-moz-opacity:1;opacity:1}}@keyframes totop{0%{-khtml-opacity:0;-moz-opacity:0;opacity:0}25%{-khtml-opacity:.3;-moz-opacity:.3;opacity:.3}50%{-khtml-opacity:.5;-moz-opacity:.5;opacity:.5}75%{-khtml-opacity:.7;-moz-opacity:.7;opacity:.7}to{-khtml-opacity:1;-moz-opacity:1;opacity:1}}.flexRow{-ms-flex-flow:row wrap;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;margin-left:-12px;margin-right:-12px}.price{color:#999;font-family:Basil Regular,serif;font-size:16px;font-weight:300}.product-miniature .product-description .product-meta{margin-bottom:10px;padding-bottom:10px}.product-miniature .product-title{margin:.6666666667rem 0 .4444444444rem;display:block;position:relative}.product-miniature .product-title a{color:#000;font-size:18px;font-family:Basil Regular,serif;font-weight:300;line-height:18px;display:block;max-height:40px;letter-spacing:.25px}.product-miniature .product-title a:hover{color:#d07676;text-decoration:none}.product-miniature .product-availability{display:none}.product-flags{left:0;margin:0;position:absolute;right:0;top:0}.style1 .product-miniature{overflow:hidden;position:relative}.style1 .product-miniature .left-block{position:relative}.style1 .product-miniature figure{margin:0!important}.style1 .product-miniature figure img{-webkit-filter:grayscale(0) blur(0);-webkit-transition:.3s ease-in-out;filter:grayscale(0) blur(0);transition:.3s ease-in-out}.style1 .product-miniature .product-price-and-shipping{bottom:0;left:0;line-height:20px;margin:auto;position:relative;right:0}.style1 .product-miniature .ps_group{-khtml-opacity:0;-moz-opacity:0;-o-transition:all .3s ease-in-out 0s;-webkit-transition:all .3s ease-in-out 0s;background-color:#fff;bottom:-80px;left:0;opacity:0;position:absolute;right:0;transition:all .3s ease-in-out 0s;visibility:hidden}@media (max-width:990px){.style1 .product-miniature .ps_group{bottom:20px;opacity:1;margin:0;position:relative;visibility:visible}.style1 .product-miniature .ps_group:hover{bottom:20px!important}}.style1 .product-miniature .btn-action{display:inline-block}.style1 .product-miniature .btn-action>div{float:left;margin:0 2px}.style1 .product-miniature .btn-product{color:#dfe1e6;display:block;background:0 0;line-height:38px;text-align:center;width:40px;height:40px;border:0;padding:0;font-size:16px}.style1 .product-miniature .btn-product:hover{color:#d07676}.style1 .product-miniature:hover .ps_group{-khtml-opacity:1;-moz-opacity:1;bottom:0;opacity:1;visibility:visible}.style1 .product-miniature:hover figure img{-webkit-filter:none;filter:none}.header-default{background:#fff}.header-default .btn-unstyle{cursor:pointer;margin:0 5px}.header-default .js-dropdown{font-size:.7777777778rem}.header-default .js-dropdown .current a{color:#d07676}.header-default .js-dropdown .dropdown-menu{left:auto;right:0}.btn{font-size:.7777777778rem}.btn:active:focus,.btn:focus{outline:0}.btn-outline-pink{background:0 0;font-size:12px;text-transform:uppercase;font-weight:700;letter-spacing:2px;font-family:Basil Regular,serif;padding:4px 8px;position:relative;margin:auto;text-align:center;min-width:80px}.btn-outline-pink:before{border-bottom:2px dashed #f8d4ce;bottom:0;content:"";height:0;left:0;margin:auto;position:absolute;right:0;width:80px}.btn-outline-pink:hover{color:#d07676}.dropdown{color:#999}.ps_search{background:0 0;border:0;color:#999;font-family:Basil Regular,serif;font-size:18px;letter-spacing:2px}.search-widget{background:0 0;transition:all .3s ease-in-out 0s;margin:15px}.search-widget form{display:block;height:100%;padding-left:1.3888888889rem;position:relative}.search-widget .btnsearch{position:absolute;border:0;top:0;cursor:pointer;background-color:transparent;padding:0;left:0;color:#d07676}.search-widget .btnsearch:hover{color:#000}.ps-desktop-megamenu .megamenu>li{display:inline-block;vertical-align:middle}.ps-desktop-megamenu .megamenu>li>a{position:relative;display:block;line-height:1.5555555556rem;margin:15px 5px;padding:3px 15px;font-size:18px;font-family:Basil Regular,serif;font-weight:700;text-transform:uppercase;color:#000}.ps-desktop-megamenu .megamenu>li>a:after{border-left:0;border-right:10px solid transparent;content:"";position:absolute;right:-10px;top:0;width:0}.ps-desktop-megamenu .megamenu>li>a:before{border-left:10px solid transparent;border-right:0;content:"";left:-10px;position:absolute;top:0;width:0}.ps-desktop-megamenu .megamenu>li>a .menu-title{display:inline-block;font-size:16px;font-weight:300;margin:2px 0;margin-top:4px}.ps-desktop-megamenu .megamenu>li.dropdown:before{border-bottom:10px solid rgba(0,0,0,.1);bottom:25px}.ps-desktop-megamenu .megamenu>li.dropdown:after,.ps-desktop-megamenu .megamenu>li.dropdown:before{-khtml-opacity:0;-moz-opacity:0;-o-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;border-left:10px solid transparent;border-right:10px solid transparent;content:"";opacity:0;position:absolute;transition:all .2s ease-in-out}.ps-desktop-megamenu .megamenu>li.dropdown:after{border-bottom:10px solid #fff;bottom:24px}.ps-desktop-megamenu .megamenu>li.dropdown>.material-icons{position:absolute;right:10px;top:10px}.ps-desktop-megamenu .megamenu>li.aligned-left>.dropdown-menu{left:0;right:auto}.ps-desktop-megamenu .megamenu>li>.dropdown-menu{-khtml-opacity:0;-moz-opacity:0;-o-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;border:1px solid rgba(0,0,0,.05);border-radius:5px;box-shadow:1px 0 2px rgba(0,0,0,.16);display:block;opacity:0;top:150%;transition:all .2s ease-in-out;visibility:hidden;z-index:1002}.ps-desktop-megamenu .megamenu>li:focus>a{color:#d07676;background-color:#f8d4ce}.ps-desktop-megamenu .megamenu>li:focus>a:after,.ps-desktop-megamenu .megamenu>li:focus>a:before{border-bottom:18px solid #f8d4ce;border-top:18px solid #f8d4ce}.ps-desktop-megamenu .megamenu>li:focus.dropdown:before{-khtml-opacity:1;-moz-opacity:1;bottom:5px;opacity:1;z-index:1002}.ps-desktop-megamenu .megamenu>li:focus.dropdown:after{-khtml-opacity:1;-moz-opacity:1;bottom:4px;opacity:1;z-index:1003}.ps-desktop-megamenu .megamenu>li:focus>.dropdown-menu{-khtml-opacity:1;-moz-opacity:1;opacity:1;top:60px;visibility:visible}.ps-desktop-megamenu .megamenu>li:hover>a{color:#d07676;background-color:#f8d4ce}.ps-desktop-megamenu .megamenu>li:hover>a:after,.ps-desktop-megamenu .megamenu>li:hover>a:before{border-bottom:18px solid #f8d4ce;border-top:18px solid #f8d4ce}.ps-desktop-megamenu .megamenu>li:hover.dropdown:before{-khtml-opacity:1;-moz-opacity:1;bottom:5px;opacity:1;z-index:1002}.ps-desktop-megamenu .megamenu>li:hover.dropdown:after{-khtml-opacity:1;-moz-opacity:1;bottom:4px;opacity:1;z-index:1003}.ps-desktop-megamenu .megamenu>li:hover>.dropdown-menu{-khtml-opacity:1;-moz-opacity:1;opacity:1;top:60px;visibility:visible}.ps-desktop-megamenu .dropdown-menu{top:100%;left:0;margin:0;height:auto;min-width:250px;color:#999;background-color:#fff;font-family:Basil Regular,serif;padding:10px 30px;border:0;text-align:left;z-index:1002;transition:opacity .2s linear 0s}.ps-desktop-megamenu .dropdown-menu li a{color:#999;padding:5px 0;display:block;font-size:18px;line-height:1.2}.ps-desktop-megamenu .dropdown-menu li a:hover{background-color:transparent;color:#d07676}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu{position:relative}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>a:after{content:"\EA1C";display:inline-block;float:right;font-family:fontello;font-size:13px;position:relative;top:2px;vertical-align:middle}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.material-icons{position:absolute;right:10px;top:20px}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu>.dropdown-menu{-khtml-opacity:0;-moz-opacity:0;-o-transition:all .2s ease-in-out 0s;-webkit-transition:all .2s ease-in-out 0s;display:block;left:150%;opacity:0;top:-5px;transition:all .2s ease-in-out 0s;visibility:hidden}.ps-desktop-megamenu .dropdown-menu .dropdown-submenu:hover>.dropdown-menu{-khtml-opacity:1;-moz-opacity:1;left:100%;opacity:1;visibility:visible}@media (min-width:576px){.ps-desktop-megamenu .megamenu>li.dropdown>a .menu-title:after{content:"\F004";display:inline-block;font-family:fontello;font-size:10px;line-height:10px;margin-left:5px;position:relative;top:-3px}}@media (max-width:991px){.row-offcanvas{position:relative}.row-offcanvas .menuOffcanvas{left:-15.8333333333rem}.row-offcanvas .menuOffcanvas,.row-offcanvas .sidebarOffcanvas{-o-transition:all .25s ease-out;-webkit-transition:all .25s ease-out;transition:all .25s ease-out;z-index:1002}.row-offcanvas .sidebarOffcanvas{right:-15.8333333333rem}.btn-offcanvas-mobile,.btn-sidebarOffCanvas-mobile{-khtml-opacity:1;-moz-opacity:1;background-color:rgba(0,0,0,.3);bottom:0;height:100%;left:0;opacity:1;position:absolute;right:0;top:0;visibility:hidden;width:100%}.sidebarOffcanvas{background:#232323}.menuOffcanvas,.sidebarOffcanvas{height:100%;position:absolute;top:0;width:15.5555555556rem}.menuOffcanvas{background:#fff}.offcanvas-heading .btn-mobile{background-color:#d07676;border:0;color:#fff;cursor:pointer;padding:.5555555556rem 0;width:100%}.ps-mobile-megamenu{box-shadow:1px -1px 3px #777}.container{max-width:100%}#header .logo{width:auto}.block .title_block{letter-spacing:2px}.headerMobile{background-color:#fff;padding:15px 0}.headerMobile .flexRow{-moz-align-items:center;-ms-align-items:center;-o-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.simple-grid.m-1 .c_col{width:100%}}.material-icons.click-canavs-menu{text-indent:-999px;overflow:hidden;width:30px}.material-icons.click-canavs-menu:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;content:"\F004";font-family:fontello;font-style:normal;font-variant:normal;font-weight:400;margin-left:.2em;position:absolute;right:0;speak:none;text-align:center;text-decoration:inherit;text-indent:0;text-transform:none;width:30px}@media (max-width:768px){#wrapper{box-shadow:none}html{overflow-x:hidden}}[class*=" icon-"]:before,[class^=icon-]:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-family:fontello;font-style:normal;font-variant:normal;font-weight:400;line-height:1em;margin-left:.2em;margin-right:.2em;speak:none;text-align:center;text-decoration:inherit;text-transform:none;width:1em}.icon-geo:before{content:"\E802"}.icon-search:before{content:"\E803"}.icon-menu:before{content:"\E810"}.icon-viber:before{content:"\E81B"}.icon-arrowright:before{content:"\EA02"}.icon-heart-solid:before{content:"\EA09"}.icon-mail:before{content:"\EA0C"}.icon-phone:before{content:"\EA15"}.icon-search-plus:before{content:"\EA18"}.icon-shortarrowleft:before{content:"\EA1B"}.icon-update:before{content:"\EA21"}.icon-user:before{content:"\EA22"}.icon-schevron-down:before{content:"\F004"}.icon-schevron-up:before{content:"\F005"}.icon-facebook:before{content:"\F09A"}.icon-gplus:before{content:"\F0D5";margin-left:-2.2px}.icon-instagram:before{content:"\F16D"}.icon-telegram:before{content:"\F1D8";margin-left:-.3px!important}h2,h3,h4,h5{font-weight:300}.headerCenter{min-width:75%}.headerCenter .search-widget{margin:20px 0 0 15px}.headerCenter .ps_search{font-size:14px;padding:0 5px}#_desktop_logo{margin-top:10px}.headerRight{background:#fff;margin-top:40px}.nav-top{padding:15px 20px}.nav-top .float-xs-left,.nav-top .float-xs-right{margin-top:8px}.social-block-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.social-block-inline>a{display:-webkit-box;display:-ms-flexbox;display:flex;width:38px;height:38px;background:#d07676;border-radius:50%;margin:5px;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-grid-rows:100%;grid-template-rows:100%;-ms-grid-columns:100%;grid-template-columns:100%}.social-block-inline>a:hover{box-shadow:1px 0 2px rgba(0,0,0,.36)}.social-block-inline>a i{position:relative;color:#fff;font-size:16px;text-align:center;vertical-align:middle;padding:0 0 0 1px!important}.social-block-inline>a i:before{margin:0!important;width:auto!important}.social-block-inline>a .icon-instagram,.social-block-inline>a .icon-viber,.social-block-inline>a .icon-youtube-play{line-height:30px;font-size:19px}.social-block-inline>a .icon-viber{top:1px}#header .social-block-inline>a .icon-instagram,#header .social-block-inline>a .icon-telegram{padding-left:0!important}#header .social-block-inline>a .icon-telegram:before{margin-left:-.3px!important}#footer .social-block-inline>a i{padding-left:0!important}#footer .social-block-inline>a .icon-viber{left:1px}#footer .social-block-inline>a .icon-telegram:before{margin-left:-.3px!important}#_mobile_nav .social-block-inline a{margin:3px}.language-selector,.language-selector button{text-transform:uppercase}.language-selector img{margin:-3px 3px 0 0}.language-selector .dropdown-menu{min-width:100px}.currency-selector,.currency-selector button{text-transform:uppercase}.currency-selector .dropdown-menu{min-width:100px}#_desktop_menu .ps-megamenu{display:inline-block}#_desktop_nav button:active{color:initial}@media (max-width:1199px){.headerCenter{min-width:65%}.headerCenter .search-widget{margin-top:15px;max-width:150px}.ps-desktop-megamenu .megamenu>li>a{margin:10px 0}.ps-desktop-megamenu .megamenu>li>a .menu-title{font-size:14px}.simple-grid.l-1 .c_col{width:100%}}#footer{padding:30px 0}#footer .title_block{font-size:18px;margin:0 0 10px;text-transform:uppercase;color:#000}@media (min-width:768px){#footer .banner-item.policies{height:-webkit-max-content;height:-moz-max-content;height:max-content}}@media (min-width:767px){#footer .banner-item.policies{height:220px}}@media (min-width:992px){#footer .banner-item.policies{height:155px}}#footer .paytypes{font-size:35px;color:#d07676}#footer .paytypes i{margin-right:10px}#footer .paytypes i:last-child{margin-right:0}#footer .block-contactinfo .nav-item{border-bottom:1px solid #dfe1e6}#footer .block-contactinfo .nav-item i{display:inline-block;width:30px}#footer .block-contactinfo .nav-item:last-child{border-bottom:none!important}.text-center{text-align:center}.inline-block{display:inline-block}.border-bottom{position:relative}.border-bottom:after{bottom:-8px;left:0;width:100%}.border-bottom:after,.carousel_title:after{color:#999;content:"...............................................................................................";font-family:monospace;font-size:18px;height:10px;line-height:0;overflow:hidden;position:absolute;white-space:nowrap}.carousel_title:after{bottom:0;left:50%;margin-left:-115px;max-width:100%;width:230px}.pink-block{background-color:#f8d4ce;padding-top:3px;padding-bottom:3px}.pink-block a{display:inline-block;color:#d07676;padding:10px 0;line-height:1.1}.pink-block a:after{bottom:-8px;color:rgba(0,0,0,.2);content:"...............................................................................................";font-family:monospace;font-size:22px;height:10px;left:0;line-height:0;overflow:hidden;position:absolute;white-space:nowrap;width:100%}.pink-block a:hover{color:#d07676}.pink-block .c_col:last-child a:after{content:""}.pink-block .one_by_one .nav_without_name{padding:0}.block-title{text-align:center;margin:.7em 0 .9em}.block-title h2{font-family:Nickainley Normal,cursive;font-size:4em;text-align:center;font-weight:300;position:relative;line-height:1.3;padding:0 0 20px;margin:0 0 20px}.block-title h2:after{bottom:-8px;color:#999;content:"...............................................................................................";font-family:monospace;font-size:18px;height:10px;left:0;line-height:0;overflow:hidden;position:absolute;white-space:nowrap;width:100%}.footer-block{margin-bottom:24px}.grey-note{color:#999}.b{font-weight:700}.i{font-style:italic}.u{text-decoration:underline}button:-moz-focus-inner{border:0;padding:0}.add_to_cart_form button{background:0 0}.add_to_cart_form button:before{border-bottom:2px dashed #f8d4ce}.custombanners.displayHome{margin:24px -12px -23px;margin-bottom:0!important}.custombanners .carousel{display:none}.custombanners.displayCustomBanners1{margin:0 -12px -24px}.custombanners.displayCustomBanners1 .banner-item{background:#fff;border-radius:10px;margin-bottom:24px;padding:2.5rem}.custombanners.displayCustomBanners1 .custom-html a{display:block;font-size:14px;margin:10px 0 -40px;text-decoration:underline;text-transform:uppercase}@media (max-width:1000px){#page.row-offcanvas{overflow:hidden}}@media (min-width:1100px){.home-top-left .banner-item:last-child{margin-bottom:0}}@media (max-width:650px){.home-top-left .banner-item{clear:both}.home-top-left .banner-item .banner-item-content{padding:40px 50px 20px;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:0}.home-top-left .banner-item .banner-item-content .custom-html{width:auto}.home-top-left .banner-item .banner-item-content .custom-html h3{color:#232323;font-size:23px;margin:0;text-align:center}.home-top-left .banner-item .banner-item-content .custom-html h4{color:#232323;font:100 9px/10px Basil Regular,serif;letter-spacing:2.5px;margin:5px 0 0;text-transform:uppercase}.home-top-left .banner-item .banner-item-content a{width:auto}.custombanners.displayHome{margin:24px 0 0!important}.custombanners.displayCustomBanners1 .banner-item{padding:30px}.banner-item-content .banner-img{width:100%}.grey-note{display:block}}@supports (-webkit-overflow-scrolling:touch){#to_top{display:none}}.easycarousels{overflow:hidden;position:relative;padding:0;clear:both;display:block}.easycarousels h3{line-height:42px;margin:15px 0;overflow:hidden;padding-right:93px;text-overflow:ellipsis;white-space:nowrap}.easycarousels .product-miniature .product-title{margin:0}.easycarousels .style1 .product-miniature .product-price-and-shipping{margin-bottom:5px}.home-top-right{overflow:hidden}.c_container{visibility:hidden}.c_col,.c_item{text-align:center}.c_item{padding:5px 15px;position:relative}.c_item .item-title{font-size:1.1em;padding:5px 0}.c_item img{display:block;height:auto;margin:0 auto;max-width:100%}.c_item .nowrap{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.one_by_one .nav_without_name{padding-top:52px}@media (max-width:767px){.easycarousels h3{font-size:18px}.simple-grid.s-1 .c_col{width:100%}.title_block.carousel_title{font-size:3em}}.simple-grid .c_col{display:inline-block;vertical-align:top}.simple-grid.xl-1 .c_col{width:100%}@media (max-width:480px){.simple-grid.xs-1 .c_col{width:100%}}.banner-item{text-align:center;position:relative}.banner-item.text-left{text-align:left}.banner-item-content{position:relative}.banner-item-content .banner-img{display:inline-block;height:auto;max-width:100%}.home-top-left .banner-item{margin-bottom:24px}.cb-wrapper.home-top-left{padding:0}.zoom-on-hover .banner-item-content>a{border-radius:10px;display:block;overflow:hidden}.zoom-on-hover .banner-item-content img{transition:all .35s ease 0s}.zoom-on-hover .banner-item-content:hover img{-moz-transform:scale(1.1);-ms-transform:scale(1.1);-o-transform:scale(1.1);-webkit-transform:scale(1.1)}.title_block.carousel_title{font-family:Nickainley Normal,cursive;font-size:4em;font-weight:300;line-height:1.3;margin:0 0 20px;padding:0 0 20px;position:relative;text-align:center}.c-wrapper.w-9 .c_item{line-height:1.1;text-align:left}.c-wrapper.w-9 .item-image{float:left;margin:0 7px 0 0}.c-wrapper.w-9 .item-matches{color:#999;font-size:.9em;margin-top:5px}.c-wrapper.w-9 .item-matches:before{content:"("}.c-wrapper.w-9 .item-matches:after{content:")"}.ab.block h2{margin:0}.ab.block h2,.block-viewall{display:inline-block;vertical-align:middle}.block-viewall{border-left:1px solid #dfe1e6;color:#999;font-size:.8em;line-height:1;margin-left:10px;padding:4px 0 2px 10px;text-transform:uppercase}.item-list{clear:both}.item-list .first-in-line{clear:left}.post-item-info{margin-right:10px}.post-item-compact{font-size:12px;line-height:1.2;margin-bottom:15px}.post-item-cover-compact img{border:1px solid #dfe1e6;margin:0 0 5px;padding:5px}.post-item-title-compact{font-size:14px;margin:0 0 3px}.post-item-infos-compact{color:#999;font-size:11px;margin:5px 0}.amazzingblog img{height:auto;max-width:100%}.amazzingblog a,.amazzingblog a:active,.amazzingblog a:hover{text-decoration:none}.overflow-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.twa_posts{margin:0 -10px}.twa_posts .post{padding:10px;box-sizing:border-box}.twa_posts .post h5{font-size:1.3em;margin:.6em 0}.twa_posts .post .less{display:none}.twa_posts .content_wrapper{background:#dfe1e6;border:1px solid #dfe1e6;border-radius:5px;padding:30px 15px 45px;position:relative}.twa_posts .post_content{max-height:130px;overflow:hidden}.twa_posts .post_avatar img{background:#fff;border:1px solid #dfe1e6;border-radius:100%;display:inline-block;height:70px;margin:0 0 -35px!important;padding:5px;position:relative;width:70px;z-index:1}.twa_posts .expand{display:none}.post_content img{margin:0 3px;vertical-align:top}.post_footer{bottom:0;margin:15px;position:absolute;right:0;z-index:1}.middle-line{display:block;overflow:hidden;text-align:center}.middle-line:after{left:.5em;margin-right:-50%}.middle-line:after,.middle-line:before{background-color:#dfe1e6;content:"";display:inline-block;height:1px;position:relative;vertical-align:middle;width:50%}.middle-line:before{margin-left:-50%;right:.5em}.post_rating{float:right;margin-right:-3px}.rating-star{color:#dfe1e6;font-size:15px;float:left;padding-right:3px}.rating-star.on{color:#fc0}.unicode-star:before{content:"\2605";font-style:normal}.widget-testimonial .block.style1{background-image:url(../css/067afa1e533d45c3bac3b5e1d527d618.jpg);background-position:top;background-repeat:repeat-x}.add_to_cart_form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background:hsla(0,0%,100%,.3);padding:10px}.add_to_cart_form input[type=number]{display:none;padding:9px 10px;width:30%}.add_to_cart_form button{display:inline-block;line-height:1rem;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;border-radius:0;transition:all .2s ease-in-out;background:transparent;font-size:12px;text-transform:uppercase;font-weight:700;letter-spacing:2px;font-family:Basil Regular,serif;padding:4px 8px;position:relative;margin:auto;min-width:80px}.add_to_cart_form button:before{position:absolute;content:"";width:80px;height:0;border-bottom:2px dashed #fed2cc;left:0;right:0;bottom:0;margin:auto}.style1 .product-miniature .btn-action .flex-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;width:100%;float:none}.breadcrumb{margin-bottom:0!important}#search_filters .custom-checkbox span i{top:2px;position:absolute;left:0;margin:0;width:12px;height:12px;font-size:10px}#index .ps_breadcumb{margin-bottom:40px}#index .breadcrumb{display:none!important}#block-reassurance,.modal-footer{display:none}body{opacity:1} \ No newline at end of file diff --git a/themes/cadouri/assets/js/theme.js b/themes/cadouri/assets/js/theme.js index 15f869ee1..4b72fde2c 100755 --- a/themes/cadouri/assets/js/theme.js +++ b/themes/cadouri/assets/js/theme.js @@ -6,9 +6,9 @@ /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) +/******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; -/******/ +/******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, @@ -256,485 +256,556 @@ module.exports = exports['default']; /***/ (function(module, exports, __webpack_require__) { "use strict"; -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! VelocityJS.org (1.2.3). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ /************************* - Velocity jQuery Shim -*************************/ /*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ /* This file contains the jQuery functions that Velocity relies on, thereby removing Velocity's dependency on a full copy of jQuery, and allowing it to work in any environment. */ /* These shimmed functions are only used if jQuery isn't present. If both this shim and jQuery are loaded, Velocity defaults to jQuery proper. */ /* Browser support: Using this shim instead of jQuery proper removes support for IE8. */;(function(window){ /*************** - Setup - ***************/ /* If jQuery is already loaded, there's no point in loading this shim. */if(window.jQuery){return;} /* jQuery base. */var $=function $(selector,context){return new $.fn.init(selector,context);}; /******************** - Private Methods - ********************/ /* jQuery */$.isWindow = function(obj){ /* jshint eqeqeq: false */return obj != null && obj == obj.window;}; /* jQuery */$.type = function(obj){if(obj == null){return obj + "";}return typeof obj === "object" || typeof obj === "function"?class2type[toString.call(obj)] || "object":typeof obj;}; /* jQuery */$.isArray = Array.isArray || function(obj){return $.type(obj) === "array";}; /* jQuery */function isArraylike(obj){var length=obj.length,type=$.type(obj);if(type === "function" || $.isWindow(obj)){return false;}if(obj.nodeType === 1 && length){return true;}return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;} /*************** - $ Methods - ***************/ /* jQuery: Support removed for IE<9. */$.isPlainObject = function(obj){var key;if(!obj || $.type(obj) !== "object" || obj.nodeType || $.isWindow(obj)){return false;}try{if(obj.constructor && !hasOwn.call(obj,"constructor") && !hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){return false;}}catch(e) {return false;}for(key in obj) {}return key === undefined || hasOwn.call(obj,key);}; /* jQuery */$.each = function(obj,callback,args){var value,i=0,length=obj.length,isArray=isArraylike(obj);if(args){if(isArray){for(;i < length;i++) {value = callback.apply(obj[i],args);if(value === false){break;}}}else {for(i in obj) {value = callback.apply(obj[i],args);if(value === false){break;}}}}else {if(isArray){for(;i < length;i++) {value = callback.call(obj[i],i,obj[i]);if(value === false){break;}}}else {for(i in obj) {value = callback.call(obj[i],i,obj[i]);if(value === false){break;}}}}return obj;}; /* Custom */$.data = function(node,key,value){ /* $.getData() */if(value === undefined){var id=node[$.expando],store=id && cache[id];if(key === undefined){return store;}else if(store){if(key in store){return store[key];}} /* $.setData() */}else if(key !== undefined){var id=node[$.expando] || (node[$.expando] = ++$.uuid);cache[id] = cache[id] || {};cache[id][key] = value;return value;}}; /* Custom */$.removeData = function(node,keys){var id=node[$.expando],store=id && cache[id];if(store){$.each(keys,function(_,key){delete store[key];});}}; /* jQuery */$.extend = function(){var src,copyIsArray,copy,name,options,clone,target=arguments[0] || {},i=1,length=arguments.length,deep=false;if(typeof target === "boolean"){deep = target;target = arguments[i] || {};i++;}if(typeof target !== "object" && $.type(target) !== "function"){target = {};}if(i === length){target = this;i--;}for(;i < length;i++) {if((options = arguments[i]) != null){for(name in options) {src = target[name];copy = options[name];if(target === copy){continue;}if(deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))){if(copyIsArray){copyIsArray = false;clone = src && $.isArray(src)?src:[];}else {clone = src && $.isPlainObject(src)?src:{};}target[name] = $.extend(deep,clone,copy);}else if(copy !== undefined){target[name] = copy;}}}}return target;}; /* jQuery 1.4.3 */$.queue = function(elem,type,data){function $makeArray(arr,results){var ret=results || [];if(arr != null){if(isArraylike(Object(arr))){ /* $.merge */(function(first,second){var len=+second.length,j=0,i=first.length;while(j < len) {first[i++] = second[j++];}if(len !== len){while(second[j] !== undefined) {first[i++] = second[j++];}}first.length = i;return first;})(ret,typeof arr === "string"?[arr]:arr);}else {[].push.call(ret,arr);}}return ret;}if(!elem){return;}type = (type || "fx") + "queue";var q=$.data(elem,type);if(!data){return q || [];}if(!q || $.isArray(data)){q = $.data(elem,type,$makeArray(data));}else {q.push(data);}return q;}; /* jQuery 1.4.3 */$.dequeue = function(elems,type){ /* Custom: Embed element iteration. */$.each(elems.nodeType?[elems]:elems,function(i,elem){type = type || "fx";var queue=$.queue(elem,type),fn=queue.shift();if(fn === "inprogress"){fn = queue.shift();}if(fn){if(type === "fx"){queue.unshift("inprogress");}fn.call(elem,function(){$.dequeue(elem,type);});}});}; /****************** - $.fn Methods - ******************/ /* jQuery */$.fn = $.prototype = {init:function init(selector){ /* Just return the element wrapped inside an array; don't proceed with the actual jQuery node wrapping process. */if(selector.nodeType){this[0] = selector;return this;}else {throw new Error("Not a DOM node.");}},offset:function offset(){ /* jQuery altered code: Dropped disconnected DOM node checking. */var box=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return {top:box.top + (window.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0),left:box.left + (window.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0)};},position:function position(){ /* jQuery */function offsetParent(){var offsetParent=this.offsetParent || document;while(offsetParent && !offsetParent.nodeType.toLowerCase === "html" && offsetParent.style.position === "static") {offsetParent = offsetParent.offsetParent;}return offsetParent || document;} /* Zepto */var elem=this[0],offsetParent=offsetParent.apply(elem),offset=this.offset(),parentOffset=/^(?:body|html)$/i.test(offsetParent.nodeName)?{top:0,left:0}:$(offsetParent).offset();offset.top -= parseFloat(elem.style.marginTop) || 0;offset.left -= parseFloat(elem.style.marginLeft) || 0;if(offsetParent.style){parentOffset.top += parseFloat(offsetParent.style.borderTopWidth) || 0;parentOffset.left += parseFloat(offsetParent.style.borderLeftWidth) || 0;}return {top:offset.top - parentOffset.top,left:offset.left - parentOffset.left};}}; /********************** - Private Variables - **********************/ /* For $.data() */var cache={};$.expando = "velocity" + new Date().getTime();$.uuid = 0; /* For $.queue() */var class2type={},hasOwn=class2type.hasOwnProperty,toString=class2type.toString;var types="Boolean Number String Function Array Date RegExp Object Error".split(" ");for(var i=0;i < types.length;i++) {class2type["[object " + types[i] + "]"] = types[i].toLowerCase();} /* Makes $(node) possible, without having to call init. */$.fn.init.prototype = $.fn; /* Globalize Velocity onto the window, and assign its Utilities property. */window.Velocity = {Utilities:$};})(window); /****************** - Velocity.js -******************/;(function(factory){ /* CommonJS module. */if(typeof module === "object" && typeof module.exports === "object"){module.exports = factory(); /* AMD module. */}else if(true){!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! VelocityJS.org (1.5.0). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ /************************* + Velocity jQuery Shim + *************************/ /*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ /* This file contains the jQuery functions that Velocity relies on, thereby removing Velocity's dependency on a full copy of jQuery, and allowing it to work in any environment. */ /* These shimmed functions are only used if jQuery isn't present. If both this shim and jQuery are loaded, Velocity defaults to jQuery proper. */(function(window){"use strict"; /*************** + Setup + ***************/ /* If jQuery is already loaded, there's no point in loading this shim. */if(window.jQuery){return;} /* jQuery base. */var $=function $(selector,context){return new $.fn.init(selector,context);}; /******************** + Private Methods + ********************/ /* jQuery */$.isWindow = function(obj){ /* jshint eqeqeq: false */return obj && obj === obj.window;}; /* jQuery */$.type = function(obj){if(!obj){return obj + "";}return typeof obj === "object" || typeof obj === "function"?class2type[toString.call(obj)] || "object":typeof obj;}; /* jQuery */$.isArray = Array.isArray || function(obj){return $.type(obj) === "array";}; /* jQuery */function isArraylike(obj){var length=obj.length,type=$.type(obj);if(type === "function" || $.isWindow(obj)){return false;}if(obj.nodeType === 1 && length){return true;}return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;} /*************** + $ Methods + ***************/ /* jQuery: Support removed for IE<9. */$.isPlainObject = function(obj){var key;if(!obj || $.type(obj) !== "object" || obj.nodeType || $.isWindow(obj)){return false;}try{if(obj.constructor && !hasOwn.call(obj,"constructor") && !hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){return false;}}catch(e) {return false;}for(key in obj) {}return key === undefined || hasOwn.call(obj,key);}; /* jQuery */$.each = function(obj,callback,args){var value,i=0,length=obj.length,isArray=isArraylike(obj);if(args){if(isArray){for(;i < length;i++) {value = callback.apply(obj[i],args);if(value === false){break;}}}else {for(i in obj) {if(!obj.hasOwnProperty(i)){continue;}value = callback.apply(obj[i],args);if(value === false){break;}}}}else {if(isArray){for(;i < length;i++) {value = callback.call(obj[i],i,obj[i]);if(value === false){break;}}}else {for(i in obj) {if(!obj.hasOwnProperty(i)){continue;}value = callback.call(obj[i],i,obj[i]);if(value === false){break;}}}}return obj;}; /* Custom */$.data = function(node,key,value){ /* $.getData() */if(value === undefined){var getId=node[$.expando],store=getId && cache[getId];if(key === undefined){return store;}else if(store){if(key in store){return store[key];}} /* $.setData() */}else if(key !== undefined){var setId=node[$.expando] || (node[$.expando] = ++$.uuid);cache[setId] = cache[setId] || {};cache[setId][key] = value;return value;}}; /* Custom */$.removeData = function(node,keys){var id=node[$.expando],store=id && cache[id];if(store){ // Cleanup the entire store if no keys are provided. +if(!keys){delete cache[id];}else {$.each(keys,function(_,key){delete store[key];});}}}; /* jQuery */$.extend = function(){var src,copyIsArray,copy,name,options,clone,target=arguments[0] || {},i=1,length=arguments.length,deep=false;if(typeof target === "boolean"){deep = target;target = arguments[i] || {};i++;}if(typeof target !== "object" && $.type(target) !== "function"){target = {};}if(i === length){target = this;i--;}for(;i < length;i++) {if(options = arguments[i]){for(name in options) {if(!options.hasOwnProperty(name)){continue;}src = target[name];copy = options[name];if(target === copy){continue;}if(deep && copy && ($.isPlainObject(copy) || (copyIsArray = $.isArray(copy)))){if(copyIsArray){copyIsArray = false;clone = src && $.isArray(src)?src:[];}else {clone = src && $.isPlainObject(src)?src:{};}target[name] = $.extend(deep,clone,copy);}else if(copy !== undefined){target[name] = copy;}}}}return target;}; /* jQuery 1.4.3 */$.queue = function(elem,type,data){function $makeArray(arr,results){var ret=results || [];if(arr){if(isArraylike(Object(arr))){ /* $.merge */(function(first,second){var len=+second.length,j=0,i=first.length;while(j < len) {first[i++] = second[j++];}if(len !== len){while(second[j] !== undefined) {first[i++] = second[j++];}}first.length = i;return first;})(ret,typeof arr === "string"?[arr]:arr);}else {[].push.call(ret,arr);}}return ret;}if(!elem){return;}type = (type || "fx") + "queue";var q=$.data(elem,type);if(!data){return q || [];}if(!q || $.isArray(data)){q = $.data(elem,type,$makeArray(data));}else {q.push(data);}return q;}; /* jQuery 1.4.3 */$.dequeue = function(elems,type){ /* Custom: Embed element iteration. */$.each(elems.nodeType?[elems]:elems,function(i,elem){type = type || "fx";var queue=$.queue(elem,type),fn=queue.shift();if(fn === "inprogress"){fn = queue.shift();}if(fn){if(type === "fx"){queue.unshift("inprogress");}fn.call(elem,function(){$.dequeue(elem,type);});}});}; /****************** + $.fn Methods + ******************/ /* jQuery */$.fn = $.prototype = {init:function init(selector){ /* Just return the element wrapped inside an array; don't proceed with the actual jQuery node wrapping process. */if(selector.nodeType){this[0] = selector;return this;}else {throw new Error("Not a DOM node.");}},offset:function offset(){ /* jQuery altered code: Dropped disconnected DOM node checking. */var box=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return {top:box.top + (window.pageYOffset || document.scrollTop || 0) - (document.clientTop || 0),left:box.left + (window.pageXOffset || document.scrollLeft || 0) - (document.clientLeft || 0)};},position:function position(){ /* jQuery */function offsetParentFn(elem){var offsetParent=elem.offsetParent;while(offsetParent && offsetParent.nodeName.toLowerCase() !== "html" && offsetParent.style && offsetParent.style.position === "static") {offsetParent = offsetParent.offsetParent;}return offsetParent || document;} /* Zepto */var elem=this[0],offsetParent=offsetParentFn(elem),offset=this.offset(),parentOffset=/^(?:body|html)$/i.test(offsetParent.nodeName)?{top:0,left:0}:$(offsetParent).offset();offset.top -= parseFloat(elem.style.marginTop) || 0;offset.left -= parseFloat(elem.style.marginLeft) || 0;if(offsetParent.style){parentOffset.top += parseFloat(offsetParent.style.borderTopWidth) || 0;parentOffset.left += parseFloat(offsetParent.style.borderLeftWidth) || 0;}return {top:offset.top - parentOffset.top,left:offset.left - parentOffset.left};}}; /********************** + Private Variables + **********************/ /* For $.data() */var cache={};$.expando = "velocity" + new Date().getTime();$.uuid = 0; /* For $.queue() */var class2type={},hasOwn=class2type.hasOwnProperty,toString=class2type.toString;var types="Boolean Number String Function Array Date RegExp Object Error".split(" ");for(var i=0;i < types.length;i++) {class2type["[object " + types[i] + "]"] = types[i].toLowerCase();} /* Makes $(node) possible, without having to call init. */$.fn.init.prototype = $.fn; /* Globalize Velocity onto the window, and assign its Utilities property. */window.Velocity = {Utilities:$};})(window); /****************** + Velocity.js + ******************/(function(factory){"use strict"; /* CommonJS module. */if(typeof module === "object" && typeof module.exports === "object"){module.exports = factory(); /* AMD module. */}else if(true){!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); /* Browser globals. */}else {factory();}})(function(){return (function(global,window,document,undefined){ /*************** - Summary - ***************/ /* - - CSS: CSS stack that works independently from the rest of Velocity. - - animate(): Core animation method that iterates over the targeted elements and queues the incoming call onto each element individually. - - Pre-Queueing: Prepare the element for animation by instantiating its data cache and processing the call's options. - - Queueing: The logic that runs once the call has reached its point of execution in the element's $.queue() stack. - Most logic is placed here to avoid risking it becoming stale (if the element's properties have changed). - - Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container. - - tick(): The single requestAnimationFrame loop responsible for tweening all in-progress calls. - - completeCall(): Handles the cleanup process for each Velocity call. - */ /********************* - Helper Functions - *********************/ /* IE detection. Gist: https://gist.github.com/julianshapiro/9098609 */var IE=(function(){if(document.documentMode){return document.documentMode;}else {for(var i=7;i > 4;i--) {var div=document.createElement("div");div.innerHTML = "";if(div.getElementsByTagName("span").length){div = null;return i;}}}return undefined;})(); /* rAF shim. Gist: https://gist.github.com/julianshapiro/9497513 */var rAFShim=(function(){var timeLast=0;return window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback){var timeCurrent=new Date().getTime(),timeDelta; /* Dynamically set delay on a per-tick basis to match 60fps. */ /* Technique by Erik Moller. MIT license: https://gist.github.com/paulirish/1579671 */timeDelta = Math.max(0,16 - (timeCurrent - timeLast));timeLast = timeCurrent + timeDelta;return setTimeout(function(){callback(timeCurrent + timeDelta);},timeDelta);};})(); /* Array compacting. Copyright Lo-Dash. MIT License: https://github.com/lodash/lodash/blob/master/LICENSE.txt */function compactSparseArray(array){var index=-1,length=array?array.length:0,result=[];while(++index < length) {var value=array[index];if(value){result.push(value);}}return result;}function sanitizeElements(elements){ /* Unwrap jQuery/Zepto objects. */if(Type.isWrapped(elements)){elements = [].slice.call(elements); /* Wrap a single element in an array so that $.each() can iterate with the element instead of its node's children. */}else if(Type.isNode(elements)){elements = [elements];}return elements;}var Type={isString:function isString(variable){return typeof variable === "string";},isArray:Array.isArray || function(variable){return Object.prototype.toString.call(variable) === "[object Array]";},isFunction:function isFunction(variable){return Object.prototype.toString.call(variable) === "[object Function]";},isNode:function isNode(variable){return variable && variable.nodeType;}, /* Copyright Martin Bohm. MIT License: https://gist.github.com/Tomalak/818a78a226a0738eaade */isNodeList:function isNodeList(variable){return typeof variable === "object" && /^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(variable)) && variable.length !== undefined && (variable.length === 0 || typeof variable[0] === "object" && variable[0].nodeType > 0);}, /* Determine if variable is a wrapped jQuery or Zepto element. */isWrapped:function isWrapped(variable){return variable && (variable.jquery || window.Zepto && window.Zepto.zepto.isZ(variable));},isSVG:function isSVG(variable){return window.SVGElement && variable instanceof window.SVGElement;},isEmptyObject:function isEmptyObject(variable){for(var name in variable) {return false;}return true;}}; /***************** - Dependencies - *****************/var $,isJQuery=false;if(global.fn && global.fn.jquery){$ = global;isJQuery = true;}else {$ = window.Velocity.Utilities;}if(IE <= 8 && !isJQuery){throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");}else if(IE <= 7){ /* Revert to jQuery's $.animate(), and lose Velocity's extra features. */jQuery.fn.velocity = jQuery.fn.animate; /* Now that $.fn.velocity is aliased, abort this Velocity declaration. */return;} /***************** - Constants - *****************/var DURATION_DEFAULT=400,EASING_DEFAULT="swing"; /************* - State - *************/var Velocity={ /* Container for page-wide Velocity state data. */State:{ /* Detect mobile devices to determine if mobileHA should be turned on. */isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), /* The mobileHA option's behavior changes on older Android devices (Gingerbread, versions 2.3.3-2.3.7). */isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:window.chrome,isFirefox:/Firefox/i.test(navigator.userAgent), /* Create a cached element for re-use when checking for CSS property prefixes. */prefixElement:document.createElement("div"), /* Cache every prefix match to avoid repeating lookups. */prefixMatches:{}, /* Cache the anchor used for animating window scrolling. */scrollAnchor:null, /* Cache the browser-specific property names associated with the scroll anchor. */scrollPropertyLeft:null,scrollPropertyTop:null, /* Keep track of whether our RAF tick is running. */isTicking:false, /* Container for every in-progress call to Velocity. */calls:[]}, /* Velocity's custom CSS stack. Made global for unit testing. */CSS:{ /* Defined below. */}, /* A shim of the jQuery utility functions used by Velocity -- provided by Velocity's optional jQuery shim. */Utilities:$, /* Container for the user's custom animation redirects that are referenced by name in place of the properties map argument. */Redirects:{ /* Manually registered by the user. */},Easings:{ /* Defined below. */}, /* Attempt to use ES6 Promises by default. Users can override this with a third-party promises library. */Promise:window.Promise, /* Velocity option defaults, which can be overriden by the user. */defaults:{queue:"",duration:DURATION_DEFAULT,easing:EASING_DEFAULT,begin:undefined,complete:undefined,progress:undefined,display:undefined,visibility:undefined,loop:false,delay:false,mobileHA:true, /* Advanced: Set to false to prevent property values from being cached between consecutive Velocity-initiated chain calls. */_cacheValues:true}, /* A design goal of Velocity is to cache data wherever possible in order to avoid DOM requerying. Accordingly, each element has a data cache. */init:function init(element){$.data(element,"velocity",{ /* Store whether this is an SVG element, since its properties are retrieved and updated differently than standard HTML elements. */isSVG:Type.isSVG(element), /* Keep track of whether the element is currently being animated by Velocity. - This is used to ensure that property values are not transferred between non-consecutive (stale) calls. */isAnimating:false, /* A reference to the element's live computedStyle object. Learn more here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */computedStyle:null, /* Tween data is cached for each animation on the element so that data can be passed across calls -- - in particular, end values are used as subsequent start values in consecutive Velocity calls. */tweensContainer:null, /* The full root property values of each CSS hook being animated on this element are cached so that: - 1) Concurrently-animating hooks sharing the same root can have their root values' merged into one while tweening. - 2) Post-hook-injection root values can be transferred over to consecutively chained Velocity calls as starting root values. */rootPropertyValueCache:{}, /* A cache for transform updates, which must be manually flushed via CSS.flushTransformCache(). */transformCache:{}});}, /* A parallel to jQuery's $.css(), used for getting/setting Velocity's hooked CSS properties. */hook:null, /* Defined below. */ /* Velocity-wide animation time remapping for testing purposes. */mock:false,version:{major:1,minor:2,patch:2}, /* Set to 1 or 2 (most verbose) to output debug info to console. */debug:false}; /* Retrieve the appropriate scroll anchor and property name for the browser: https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY */if(window.pageYOffset !== undefined){Velocity.State.scrollAnchor = window;Velocity.State.scrollPropertyLeft = "pageXOffset";Velocity.State.scrollPropertyTop = "pageYOffset";}else {Velocity.State.scrollAnchor = document.documentElement || document.body.parentNode || document.body;Velocity.State.scrollPropertyLeft = "scrollLeft";Velocity.State.scrollPropertyTop = "scrollTop";} /* Shorthand alias for jQuery's $.data() utility. */function Data(element){ /* Hardcode a reference to the plugin name. */var response=$.data(element,"velocity"); /* jQuery <=1.4.2 returns null instead of undefined when no match is found. We normalize this behavior. */return response === null?undefined:response;}; /************** - Easing - **************/ /* Step easing generator. */function generateStep(steps){return function(p){return Math.round(p * steps) * (1 / steps);};} /* Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */function generateBezier(mX1,mY1,mX2,mY2){var NEWTON_ITERATIONS=4,NEWTON_MIN_SLOPE=0.001,SUBDIVISION_PRECISION=0.0000001,SUBDIVISION_MAX_ITERATIONS=10,kSplineTableSize=11,kSampleStepSize=1.0 / (kSplineTableSize - 1.0),float32ArraySupported=("Float32Array" in window); /* Must contain four arguments. */if(arguments.length !== 4){return false;} /* Arguments must be numbers. */for(var i=0;i < 4;++i) {if(typeof arguments[i] !== "number" || isNaN(arguments[i]) || !isFinite(arguments[i])){return false;}} /* X values must be in the [0, 1] range. */mX1 = Math.min(mX1,1);mX2 = Math.min(mX2,1);mX1 = Math.max(mX1,0);mX2 = Math.max(mX2,0);var mSampleValues=float32ArraySupported?new Float32Array(kSplineTableSize):new Array(kSplineTableSize);function A(aA1,aA2){return 1.0 - 3.0 * aA2 + 3.0 * aA1;}function B(aA1,aA2){return 3.0 * aA2 - 6.0 * aA1;}function C(aA1){return 3.0 * aA1;}function calcBezier(aT,aA1,aA2){return ((A(aA1,aA2) * aT + B(aA1,aA2)) * aT + C(aA1)) * aT;}function getSlope(aT,aA1,aA2){return 3.0 * A(aA1,aA2) * aT * aT + 2.0 * B(aA1,aA2) * aT + C(aA1);}function newtonRaphsonIterate(aX,aGuessT){for(var i=0;i < NEWTON_ITERATIONS;++i) {var currentSlope=getSlope(aGuessT,mX1,mX2);if(currentSlope === 0.0)return aGuessT;var currentX=calcBezier(aGuessT,mX1,mX2) - aX;aGuessT -= currentX / currentSlope;}return aGuessT;}function calcSampleValues(){for(var i=0;i < kSplineTableSize;++i) {mSampleValues[i] = calcBezier(i * kSampleStepSize,mX1,mX2);}}function binarySubdivide(aX,aA,aB){var currentX,currentT,i=0;do {currentT = aA + (aB - aA) / 2.0;currentX = calcBezier(currentT,mX1,mX2) - aX;if(currentX > 0.0){aB = currentT;}else {aA = currentT;}}while(Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);return currentT;}function getTForX(aX){var intervalStart=0.0,currentSample=1,lastSample=kSplineTableSize - 1;for(;currentSample != lastSample && mSampleValues[currentSample] <= aX;++currentSample) {intervalStart += kSampleStepSize;}--currentSample;var dist=(aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),guessForT=intervalStart + dist * kSampleStepSize,initialSlope=getSlope(guessForT,mX1,mX2);if(initialSlope >= NEWTON_MIN_SLOPE){return newtonRaphsonIterate(aX,guessForT);}else if(initialSlope == 0.0){return guessForT;}else {return binarySubdivide(aX,intervalStart,intervalStart + kSampleStepSize);}}var _precomputed=false;function precompute(){_precomputed = true;if(mX1 != mY1 || mX2 != mY2)calcSampleValues();}var f=function f(aX){if(!_precomputed)precompute();if(mX1 === mY1 && mX2 === mY2)return aX;if(aX === 0)return 0;if(aX === 1)return 1;return calcBezier(getTForX(aX),mY1,mY2);};f.getControlPoints = function(){return [{x:mX1,y:mY1},{x:mX2,y:mY2}];};var str="generateBezier(" + [mX1,mY1,mX2,mY2] + ")";f.toString = function(){return str;};return f;} /* Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ /* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass - then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */var generateSpringRK4=(function(){function springAccelerationForState(state){return -state.tension * state.x - state.friction * state.v;}function springEvaluateStateWithDerivative(initialState,dt,derivative){var state={x:initialState.x + derivative.dx * dt,v:initialState.v + derivative.dv * dt,tension:initialState.tension,friction:initialState.friction};return {dx:state.v,dv:springAccelerationForState(state)};}function springIntegrateState(state,dt){var a={dx:state.v,dv:springAccelerationForState(state)},b=springEvaluateStateWithDerivative(state,dt * 0.5,a),c=springEvaluateStateWithDerivative(state,dt * 0.5,b),d=springEvaluateStateWithDerivative(state,dt,c),dxdt=1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),dvdt=1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);state.x = state.x + dxdt * dt;state.v = state.v + dvdt * dt;return state;}return function springRK4Factory(tension,friction,duration){var initState={x:-1,v:0,tension:null,friction:null},path=[0],time_lapsed=0,tolerance=1 / 10000,DT=16 / 1000,have_duration,dt,last_state;tension = parseFloat(tension) || 500;friction = parseFloat(friction) || 20;duration = duration || null;initState.tension = tension;initState.friction = friction;have_duration = duration !== null; /* Calculate the actual time it takes for this animation to complete with the provided conditions. */if(have_duration){ /* Run the simulation without a duration. */time_lapsed = springRK4Factory(tension,friction); /* Compute the adjusted time delta. */dt = time_lapsed / duration * DT;}else {dt = DT;}while(true) { /* Next/step function .*/last_state = springIntegrateState(last_state || initState,dt); /* Store the position. */path.push(1 + last_state.x);time_lapsed += 16; /* If the change threshold is reached, break. */if(!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)){break;}} /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the - computed path and returns a snapshot of the position according to a given percentComplete. */return !have_duration?time_lapsed:function(percentComplete){return path[percentComplete * (path.length - 1) | 0];};};})(); /* jQuery easings. */Velocity.Easings = {linear:function linear(p){return p;},swing:function swing(p){return 0.5 - Math.cos(p * Math.PI) / 2;}, /* Bonus "spring" easing, which is a less exaggerated version of easeInOutElastic. */spring:function spring(p){return 1 - Math.cos(p * 4.5 * Math.PI) * Math.exp(-p * 6);}}; /* CSS3 and Robert Penner easings. */$.each([["ease",[0.25,0.1,0.25,1.0]],["ease-in",[0.42,0.0,1.00,1.0]],["ease-out",[0.00,0.0,0.58,1.0]],["ease-in-out",[0.42,0.0,0.58,1.0]],["easeInSine",[0.47,0,0.745,0.715]],["easeOutSine",[0.39,0.575,0.565,1]],["easeInOutSine",[0.445,0.05,0.55,0.95]],["easeInQuad",[0.55,0.085,0.68,0.53]],["easeOutQuad",[0.25,0.46,0.45,0.94]],["easeInOutQuad",[0.455,0.03,0.515,0.955]],["easeInCubic",[0.55,0.055,0.675,0.19]],["easeOutCubic",[0.215,0.61,0.355,1]],["easeInOutCubic",[0.645,0.045,0.355,1]],["easeInQuart",[0.895,0.03,0.685,0.22]],["easeOutQuart",[0.165,0.84,0.44,1]],["easeInOutQuart",[0.77,0,0.175,1]],["easeInQuint",[0.755,0.05,0.855,0.06]],["easeOutQuint",[0.23,1,0.32,1]],["easeInOutQuint",[0.86,0,0.07,1]],["easeInExpo",[0.95,0.05,0.795,0.035]],["easeOutExpo",[0.19,1,0.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[0.6,0.04,0.98,0.335]],["easeOutCirc",[0.075,0.82,0.165,1]],["easeInOutCirc",[0.785,0.135,0.15,0.86]]],function(i,easingArray){Velocity.Easings[easingArray[0]] = generateBezier.apply(null,easingArray[1]);}); /* Determine the appropriate easing type given an easing input. */function getEasing(value,duration){var easing=value; /* The easing option can either be a string that references a pre-registered easing, - or it can be a two-/four-item array of integers to be converted into a bezier/spring function. */if(Type.isString(value)){ /* Ensure that the easing has been assigned to jQuery's Velocity.Easings object. */if(!Velocity.Easings[value]){easing = false;}}else if(Type.isArray(value) && value.length === 1){easing = generateStep.apply(null,value);}else if(Type.isArray(value) && value.length === 2){ /* springRK4 must be passed the animation's duration. */ /* Note: If the springRK4 array contains non-numbers, generateSpringRK4() returns an easing - function generated with default tension and friction values. */easing = generateSpringRK4.apply(null,value.concat([duration]));}else if(Type.isArray(value) && value.length === 4){ /* Note: If the bezier array contains non-numbers, generateBezier() returns false. */easing = generateBezier.apply(null,value);}else {easing = false;} /* Revert to the Velocity-wide default easing type, or fall back to "swing" (which is also jQuery's default) - if the Velocity-wide default has been incorrectly modified. */if(easing === false){if(Velocity.Easings[Velocity.defaults.easing]){easing = Velocity.defaults.easing;}else {easing = EASING_DEFAULT;}}return easing;} /***************** - CSS Stack - *****************/ /* The CSS object is a highly condensed and performant CSS stack that fully replaces jQuery's. - It handles the validation, getting, and setting of both standard CSS properties and CSS property hooks. */ /* Note: A "CSS" shorthand is aliased so that our code is easier to read. */var CSS=Velocity.CSS = { /************* - RegEx - *************/RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i, /* Unwrap a property value's surrounding text, e.g. "rgba(4, 3, 2, 1)" ==> "4, 3, 2, 1" and "rect(4px 3px 2px 1px)" ==> "4px 3px 2px 1px". */valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, /* Split a multi-value property into an array of subvalues, e.g. "rgba(4, 3, 2, 1) 4px 3px 2px 1px" ==> [ "rgba(4, 3, 2, 1)", "4px", "3px", "2px", "1px" ]. */valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/ig}, /************ - Lists - ************/Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]}, /************ - Hooks - ************/ /* Hooks allow a subproperty (e.g. "boxShadowBlur") of a compound-value CSS property - (e.g. "boxShadow: X Y Blur Spread Color") to be animated as if it were a discrete property. */ /* Note: Beyond enabling fine-grained property animation, hooking is necessary since Velocity only - tweens properties with single numeric values; unlike CSS transitions, Velocity does not interpolate compound-values. */Hooks:{ /******************** - Registration - ********************/ /* Templates are a concise way of indicating which subproperties must be individually registered for each compound-value CSS property. */ /* Each template consists of the compound-value's base name, its constituent subproperty names, and those subproperties' default values. */templates:{"textShadow":["Color X Y Blur","black 0px 0px 0px"],"boxShadow":["Color X Y Blur Spread","black 0px 0px 0px 0px"],"clip":["Top Right Bottom Left","0px 0px 0px 0px"],"backgroundPosition":["X Y","0% 0%"],"transformOrigin":["X Y Z","50% 50% 0px"],"perspectiveOrigin":["X Y","50% 50%"]}, /* A "registered" hook is one that has been converted from its template form into a live, - tweenable property. It contains data to associate it with its root property. */registered:{ /* Note: A registered hook looks like this ==> textShadowBlur: [ "textShadow", 3 ], - which consists of the subproperty's name, the associated root property's name, - and the subproperty's position in the root's value. */}, /* Convert the templates into individual hooks then append them to the registered object above. */register:function register(){ /* Color hooks registration: Colors are defaulted to white -- as opposed to black -- since colors that are - currently set to "transparent" default to their respective template below when color-animated, - and white is typically a closer match to transparent than black is. An exception is made for text ("color"), - which is almost always set closer to black than white. */for(var i=0;i < CSS.Lists.colors.length;i++) {var rgbComponents=CSS.Lists.colors[i] === "color"?"0 0 0 1":"255 255 255 1";CSS.Hooks.templates[CSS.Lists.colors[i]] = ["Red Green Blue Alpha",rgbComponents];}var rootProperty,hookTemplate,hookNames; /* In IE, color values inside compound-value properties are positioned at the end the value instead of at the beginning. - Thus, we re-arrange the templates accordingly. */if(IE){for(rootProperty in CSS.Hooks.templates) {hookTemplate = CSS.Hooks.templates[rootProperty];hookNames = hookTemplate[0].split(" ");var defaultValues=hookTemplate[1].match(CSS.RegEx.valueSplit);if(hookNames[0] === "Color"){ /* Reposition both the hook's name and its default value to the end of their respective strings. */hookNames.push(hookNames.shift());defaultValues.push(defaultValues.shift()); /* Replace the existing template for the hook's root property. */CSS.Hooks.templates[rootProperty] = [hookNames.join(" "),defaultValues.join(" ")];}}} /* Hook registration. */for(rootProperty in CSS.Hooks.templates) {hookTemplate = CSS.Hooks.templates[rootProperty];hookNames = hookTemplate[0].split(" ");for(var i in hookNames) {var fullHookName=rootProperty + hookNames[i],hookPosition=i; /* For each hook, register its full name (e.g. textShadowBlur) with its root property (e.g. textShadow) - and the hook's position in its template's default value string. */CSS.Hooks.registered[fullHookName] = [rootProperty,hookPosition];}}}, /***************************** - Injection and Extraction - *****************************/ /* Look up the root property associated with the hook (e.g. return "textShadow" for "textShadowBlur"). */ /* Since a hook cannot be set directly (the browser won't recognize it), style updating for hooks is routed through the hook's root property. */getRoot:function getRoot(property){var hookData=CSS.Hooks.registered[property];if(hookData){return hookData[0];}else { /* If there was no hook match, return the property name untouched. */return property;}}, /* Convert any rootPropertyValue, null or otherwise, into a space-delimited list of hook values so that - the targeted hook can be injected or extracted at its standard position. */cleanRootPropertyValue:function cleanRootPropertyValue(rootProperty,rootPropertyValue){ /* If the rootPropertyValue is wrapped with "rgb()", "clip()", etc., remove the wrapping to normalize the value before manipulation. */if(CSS.RegEx.valueUnwrap.test(rootPropertyValue)){rootPropertyValue = rootPropertyValue.match(CSS.RegEx.valueUnwrap)[1];} /* If rootPropertyValue is a CSS null-value (from which there's inherently no hook value to extract), - default to the root's default value as defined in CSS.Hooks.templates. */ /* Note: CSS null-values include "none", "auto", and "transparent". They must be converted into their - zero-values (e.g. textShadow: "none" ==> textShadow: "0px 0px 0px black") for hook manipulation to proceed. */if(CSS.Values.isCSSNullValue(rootPropertyValue)){rootPropertyValue = CSS.Hooks.templates[rootProperty][1];}return rootPropertyValue;}, /* Extracted the hook's value from its root property's value. This is used to get the starting value of an animating hook. */extractValue:function extractValue(fullHookName,rootPropertyValue){var hookData=CSS.Hooks.registered[fullHookName];if(hookData){var hookRoot=hookData[0],hookPosition=hookData[1];rootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot,rootPropertyValue); /* Split rootPropertyValue into its constituent hook values then grab the desired hook at its standard position. */return rootPropertyValue.toString().match(CSS.RegEx.valueSplit)[hookPosition];}else { /* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */return rootPropertyValue;}}, /* Inject the hook's value into its root property's value. This is used to piece back together the root property - once Velocity has updated one of its individually hooked values through tweening. */injectValue:function injectValue(fullHookName,hookValue,rootPropertyValue){var hookData=CSS.Hooks.registered[fullHookName];if(hookData){var hookRoot=hookData[0],hookPosition=hookData[1],rootPropertyValueParts,rootPropertyValueUpdated;rootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot,rootPropertyValue); /* Split rootPropertyValue into its individual hook values, replace the targeted value with hookValue, - then reconstruct the rootPropertyValue string. */rootPropertyValueParts = rootPropertyValue.toString().match(CSS.RegEx.valueSplit);rootPropertyValueParts[hookPosition] = hookValue;rootPropertyValueUpdated = rootPropertyValueParts.join(" ");return rootPropertyValueUpdated;}else { /* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */return rootPropertyValue;}}}, /******************* - Normalizations - *******************/ /* Normalizations standardize CSS property manipulation by pollyfilling browser-specific implementations (e.g. opacity) - and reformatting special properties (e.g. clip, rgba) to look like standard ones. */Normalizations:{ /* Normalizations are passed a normalization target (either the property's name, its extracted value, or its injected value), - the targeted element (which may need to be queried), and the targeted property value. */registered:{clip:function clip(type,element,propertyValue){switch(type){case "name":return "clip"; /* Clip needs to be unwrapped and stripped of its commas during extraction. */case "extract":var extracted; /* If Velocity also extracted this value, skip extraction. */if(CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)){extracted = propertyValue;}else { /* Remove the "rect()" wrapper. */extracted = propertyValue.toString().match(CSS.RegEx.valueUnwrap); /* Strip off commas. */extracted = extracted?extracted[1].replace(/,(\s+)?/g," "):propertyValue;}return extracted; /* Clip needs to be re-wrapped during injection. */case "inject":return "rect(" + propertyValue + ")";}},blur:function blur(type,element,propertyValue){switch(type){case "name":return Velocity.State.isFirefox?"filter":"-webkit-filter";case "extract":var extracted=parseFloat(propertyValue); /* If extracted is NaN, meaning the value isn't already extracted. */if(!(extracted || extracted === 0)){var blurComponent=propertyValue.toString().match(/blur\(([0-9]+[A-z]+)\)/i); /* If the filter string had a blur component, return just the blur value and unit type. */if(blurComponent){extracted = blurComponent[1]; /* If the component doesn't exist, default blur to 0. */}else {extracted = 0;}}return extracted; /* Blur needs to be re-wrapped during injection. */case "inject": /* For the blur effect to be fully de-applied, it needs to be set to "none" instead of 0. */if(!parseFloat(propertyValue)){return "none";}else {return "blur(" + propertyValue + ")";}}}, /* <=IE8 do not support the standard opacity property. They use filter:alpha(opacity=INT) instead. */opacity:function opacity(type,element,propertyValue){if(IE <= 8){switch(type){case "name":return "filter";case "extract": /* <=IE8 return a "filter" value of "alpha(opacity=\d{1,3})". - Extract the value and convert it to a decimal value to match the standard CSS opacity property's formatting. */var extracted=propertyValue.toString().match(/alpha\(opacity=(.*)\)/i);if(extracted){ /* Convert to decimal value. */propertyValue = extracted[1] / 100;}else { /* When extracting opacity, default to 1 since a null value means opacity hasn't been set. */propertyValue = 1;}return propertyValue;case "inject": /* Opacified elements are required to have their zoom property set to a non-zero value. */element.style.zoom = 1; /* Setting the filter property on elements with certain font property combinations can result in a - highly unappealing ultra-bolding effect. There's no way to remedy this throughout a tween, but dropping the - value altogether (when opacity hits 1) at leasts ensures that the glitch is gone post-tweening. */if(parseFloat(propertyValue) >= 1){return "";}else { /* As per the filter property's spec, convert the decimal value to a whole number and wrap the value. */return "alpha(opacity=" + parseInt(parseFloat(propertyValue) * 100,10) + ")";}} /* With all other browsers, normalization is not required; return the same values that were passed in. */}else {switch(type){case "name":return "opacity";case "extract":return propertyValue;case "inject":return propertyValue;}}}}, /***************************** - Batched Registrations - *****************************/ /* Note: Batched normalizations extend the CSS.Normalizations.registered object. */register:function register(){ /***************** - Transforms - *****************/ /* Transforms are the subproperties contained by the CSS "transform" property. Transforms must undergo normalization - so that they can be referenced in a properties map by their individual names. */ /* Note: When transforms are "set", they are actually assigned to a per-element transformCache. When all transform - setting is complete complete, CSS.flushTransformCache() must be manually called to flush the values to the DOM. - Transform setting is batched in this way to improve performance: the transform style only needs to be updated - once when multiple transform subproperties are being animated simultaneously. */ /* Note: IE9 and Android Gingerbread have support for 2D -- but not 3D -- transforms. Since animating unsupported - transform properties results in the browser ignoring the *entire* transform string, we prevent these 3D values - from being normalized for these browsers so that tweening skips these properties altogether - (since it will ignore them as being unsupported by the browser.) */if(!(IE <= 9) && !Velocity.State.isGingerbread){ /* Note: Since the standalone CSS "perspective" property and the CSS transform "perspective" subproperty - share the same name, the latter is given a unique token within Velocity: "transformPerspective". */CSS.Lists.transformsBase = CSS.Lists.transformsBase.concat(CSS.Lists.transforms3D);}for(var i=0;i < CSS.Lists.transformsBase.length;i++) { /* Wrap the dynamically generated normalization function in a new scope so that transformName's value is - paired with its respective function. (Otherwise, all functions would take the final for loop's transformName.) */(function(){var transformName=CSS.Lists.transformsBase[i];CSS.Normalizations.registered[transformName] = function(type,element,propertyValue){switch(type){ /* The normalized property name is the parent "transform" property -- the property that is actually set in CSS. */case "name":return "transform"; /* Transform values are cached onto a per-element transformCache object. */case "extract": /* If this transform has yet to be assigned a value, return its null value. */if(Data(element) === undefined || Data(element).transformCache[transformName] === undefined){ /* Scale CSS.Lists.transformsBase default to 1 whereas all other transform properties default to 0. */return (/^scale/i.test(transformName)?1:0); /* When transform values are set, they are wrapped in parentheses as per the CSS spec. - Thus, when extracting their values (for tween calculations), we strip off the parentheses. */}else {return Data(element).transformCache[transformName].replace(/[()]/g,"");}case "inject":var invalid=false; /* If an individual transform property contains an unsupported unit type, the browser ignores the *entire* transform property. - Thus, protect users from themselves by skipping setting for transform values supplied with invalid unit types. */ /* Switch on the base transform type; ignore the axis by removing the last letter from the transform's name. */switch(transformName.substr(0,transformName.length - 1)){ /* Whitelist unit types for each transform. */case "translate":invalid = !/(%|px|em|rem|vw|vh|\d)$/i.test(propertyValue);break; /* Since an axis-free "scale" property is supported as well, a little hack is used here to detect it by chopping off its last letter. */case "scal":case "scale": /* Chrome on Android has a bug in which scaled elements blur if their initial scale - value is below 1 (which can happen with forcefeeding). Thus, we detect a yet-unset scale property - and ensure that its first value is always 1. More info: http://stackoverflow.com/questions/10417890/css3-animations-with-transform-causes-blurred-elements-on-webkit/10417962#10417962 */if(Velocity.State.isAndroid && Data(element).transformCache[transformName] === undefined && propertyValue < 1){propertyValue = 1;}invalid = !/(\d)$/i.test(propertyValue);break;case "skew":invalid = !/(deg|\d)$/i.test(propertyValue);break;case "rotate":invalid = !/(deg|\d)$/i.test(propertyValue);break;}if(!invalid){ /* As per the CSS spec, wrap the value in parentheses. */Data(element).transformCache[transformName] = "(" + propertyValue + ")";} /* Although the value is set on the transformCache object, return the newly-updated value for the calling code to process as normal. */return Data(element).transformCache[transformName];}};})();} /************* - Colors - *************/ /* Since Velocity only animates a single numeric value per property, color animation is achieved by hooking the individual RGBA components of CSS color properties. - Accordingly, color values must be normalized (e.g. "#ff0000", "red", and "rgb(255, 0, 0)" ==> "255 0 0 1") so that their components can be injected/extracted by CSS.Hooks logic. */for(var i=0;i < CSS.Lists.colors.length;i++) { /* Wrap the dynamically generated normalization function in a new scope so that colorName's value is paired with its respective function. - (Otherwise, all functions would take the final for loop's colorName.) */(function(){var colorName=CSS.Lists.colors[i]; /* Note: In IE<=8, which support rgb but not rgba, color properties are reverted to rgb by stripping off the alpha component. */CSS.Normalizations.registered[colorName] = function(type,element,propertyValue){switch(type){case "name":return colorName; /* Convert all color values into the rgb format. (Old IE can return hex values and color names instead of rgb/rgba.) */case "extract":var extracted; /* If the color is already in its hookable form (e.g. "255 255 255 1") due to having been previously extracted, skip extraction. */if(CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)){extracted = propertyValue;}else {var converted,colorNames={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"}; /* Convert color names to rgb. */if(/^[A-z]+$/i.test(propertyValue)){if(colorNames[propertyValue] !== undefined){converted = colorNames[propertyValue];}else { /* If an unmatched color name is provided, default to black. */converted = colorNames.black;} /* Convert hex values to rgb. */}else if(CSS.RegEx.isHex.test(propertyValue)){converted = "rgb(" + CSS.Values.hexToRgb(propertyValue).join(" ") + ")"; /* If the provided color doesn't match any of the accepted color formats, default to black. */}else if(!/^rgba?\(/i.test(propertyValue)){converted = colorNames.black;} /* Remove the surrounding "rgb/rgba()" string then replace commas with spaces and strip - repeated spaces (in case the value included spaces to begin with). */extracted = (converted || propertyValue).toString().match(CSS.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ");} /* So long as this isn't <=IE8, add a fourth (alpha) component if it's missing and default it to 1 (visible). */if(!(IE <= 8) && extracted.split(" ").length === 3){extracted += " 1";}return extracted;case "inject": /* If this is IE<=8 and an alpha component exists, strip it off. */if(IE <= 8){if(propertyValue.split(" ").length === 4){propertyValue = propertyValue.split(/\s+/).slice(0,3).join(" ");} /* Otherwise, add a fourth (alpha) component if it's missing and default it to 1 (visible). */}else if(propertyValue.split(" ").length === 3){propertyValue += " 1";} /* Re-insert the browser-appropriate wrapper("rgb/rgba()"), insert commas, and strip off decimal units - on all values but the fourth (R, G, and B only accept whole numbers). */return (IE <= 8?"rgb":"rgba") + "(" + propertyValue.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"") + ")";}};})();}}}, /************************ - CSS Property Names - ************************/Names:{ /* Camelcase a property name into its JavaScript notation (e.g. "background-color" ==> "backgroundColor"). - Camelcasing is used to normalize property names between and across calls. */camelCase:function camelCase(property){return property.replace(/-(\w)/g,function(match,subMatch){return subMatch.toUpperCase();});}, /* For SVG elements, some properties (namely, dimensional ones) are GET/SET via the element's HTML attributes (instead of via CSS styles). */SVGAttribute:function SVGAttribute(property){var SVGAttributes="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2"; /* Certain browsers require an SVG transform to be applied as an attribute. (Otherwise, application via CSS is preferable due to 3D support.) */if(IE || Velocity.State.isAndroid && !Velocity.State.isChrome){SVGAttributes += "|transform";}return new RegExp("^(" + SVGAttributes + ")$","i").test(property);}, /* Determine whether a property should be set with a vendor prefix. */ /* If a prefixed version of the property exists, return it. Otherwise, return the original property name. - If the property is not at all supported by the browser, return a false flag. */prefixCheck:function prefixCheck(property){ /* If this property has already been checked, return the cached value. */if(Velocity.State.prefixMatches[property]){return [Velocity.State.prefixMatches[property],true];}else {var vendors=["","Webkit","Moz","ms","O"];for(var i=0,vendorsLength=vendors.length;i < vendorsLength;i++) {var propertyPrefixed;if(i === 0){propertyPrefixed = property;}else { /* Capitalize the first letter of the property to conform to JavaScript vendor prefix notation (e.g. webkitFilter). */propertyPrefixed = vendors[i] + property.replace(/^\w/,function(match){return match.toUpperCase();});} /* Check if the browser supports this property as prefixed. */if(Type.isString(Velocity.State.prefixElement.style[propertyPrefixed])){ /* Cache the match. */Velocity.State.prefixMatches[property] = propertyPrefixed;return [propertyPrefixed,true];}} /* If the browser doesn't support this property in any form, include a false flag so that the caller can decide how to proceed. */return [property,false];}}}, /************************ - CSS Property Values - ************************/Values:{ /* Hex to RGB conversion. Copyright Tim Down: http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb */hexToRgb:function hexToRgb(hex){var shortformRegex=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,longformRegex=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgbParts;hex = hex.replace(shortformRegex,function(m,r,g,b){return r + r + g + g + b + b;});rgbParts = longformRegex.exec(hex);return rgbParts?[parseInt(rgbParts[1],16),parseInt(rgbParts[2],16),parseInt(rgbParts[3],16)]:[0,0,0];},isCSSNullValue:function isCSSNullValue(value){ /* The browser defaults CSS values that have not been set to either 0 or one of several possible null-value strings. - Thus, we check for both falsiness and these special strings. */ /* Null-value checking is performed to default the special strings to 0 (for the sake of tweening) or their hook - templates as defined as CSS.Hooks (for the sake of hook injection/extraction). */ /* Note: Chrome returns "rgba(0, 0, 0, 0)" for an undefined color whereas IE returns "transparent". */return value == 0 || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(value);}, /* Retrieve a property's default unit type. Used for assigning a unit type when one is not supplied by the user. */getUnitType:function getUnitType(property){if(/^(rotate|skew)/i.test(property)){return "deg";}else if(/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(property)){ /* The above properties are unitless. */return "";}else { /* Default to px for all other properties. */return "px";}}, /* HTML elements default to an associated display type when they're not set to display:none. */ /* Note: This function is used for correctly setting the non-"none" display value in certain Velocity redirects, such as fadeIn/Out. */getDisplayType:function getDisplayType(element){var tagName=element && element.tagName.toString().toLowerCase();if(/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(tagName)){return "inline";}else if(/^(li)$/i.test(tagName)){return "list-item";}else if(/^(tr)$/i.test(tagName)){return "table-row";}else if(/^(table)$/i.test(tagName)){return "table";}else if(/^(tbody)$/i.test(tagName)){return "table-row-group"; /* Default to "block" when no match is found. */}else {return "block";}}, /* The class add/remove functions are used to temporarily apply a "velocity-animating" class to elements while they're animating. */addClass:function addClass(element,className){if(element.classList){element.classList.add(className);}else {element.className += (element.className.length?" ":"") + className;}},removeClass:function removeClass(element,className){if(element.classList){element.classList.remove(className);}else {element.className = element.className.toString().replace(new RegExp("(^|\\s)" + className.split(" ").join("|") + "(\\s|$)","gi")," ");}}}, /**************************** - Style Getting & Setting - ****************************/ /* The singular getPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */getPropertyValue:function getPropertyValue(element,property,rootPropertyValue,forceStyleLookup){ /* Get an element's computed property value. */ /* Note: Retrieving the value of a CSS property cannot simply be performed by checking an element's - style attribute (which only reflects user-defined values). Instead, the browser must be queried for a property's - *computed* value. You can read more about getComputedStyle here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */function computePropertyValue(element,property){ /* When box-sizing isn't set to border-box, height and width style values are incorrectly computed when an - element's scrollbars are visible (which expands the element's dimensions). Thus, we defer to the more accurate - offsetHeight/Width property, which includes the total dimensions for interior, border, padding, and scrollbar. - We subtract border and padding to get the sum of interior + scrollbar. */var computedValue=0; /* IE<=8 doesn't support window.getComputedStyle, thus we defer to jQuery, which has an extensive array - of hacks to accurately retrieve IE8 property values. Re-implementing that logic here is not worth bloating the - codebase for a dying browser. The performance repercussions of using jQuery here are minimal since - Velocity is optimized to rarely (and sometimes never) query the DOM. Further, the $.css() codepath isn't that slow. */if(IE <= 8){computedValue = $.css(element,property); /* GET */ /* All other browsers support getComputedStyle. The returned live object reference is cached onto its - associated element so that it does not need to be refetched upon every GET. */}else {var revertDisplay=function revertDisplay(){if(toggleDisplay){CSS.setPropertyValue(element,"display","none");}}; /* Browsers do not return height and width values for elements that are set to display:"none". Thus, we temporarily - toggle display to the element type's default value. */var toggleDisplay=false;if(/^(width|height)$/.test(property) && CSS.getPropertyValue(element,"display") === 0){toggleDisplay = true;CSS.setPropertyValue(element,"display",CSS.Values.getDisplayType(element));}if(!forceStyleLookup){if(property === "height" && CSS.getPropertyValue(element,"boxSizing").toString().toLowerCase() !== "border-box"){var contentBoxHeight=element.offsetHeight - (parseFloat(CSS.getPropertyValue(element,"borderTopWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element,"borderBottomWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element,"paddingTop")) || 0) - (parseFloat(CSS.getPropertyValue(element,"paddingBottom")) || 0);revertDisplay();return contentBoxHeight;}else if(property === "width" && CSS.getPropertyValue(element,"boxSizing").toString().toLowerCase() !== "border-box"){var contentBoxWidth=element.offsetWidth - (parseFloat(CSS.getPropertyValue(element,"borderLeftWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element,"borderRightWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element,"paddingLeft")) || 0) - (parseFloat(CSS.getPropertyValue(element,"paddingRight")) || 0);revertDisplay();return contentBoxWidth;}}var computedStyle; /* For elements that Velocity hasn't been called on directly (e.g. when Velocity queries the DOM on behalf - of a parent of an element its animating), perform a direct getComputedStyle lookup since the object isn't cached. */if(Data(element) === undefined){computedStyle = window.getComputedStyle(element,null); /* GET */ /* If the computedStyle object has yet to be cached, do so now. */}else if(!Data(element).computedStyle){computedStyle = Data(element).computedStyle = window.getComputedStyle(element,null); /* GET */ /* If computedStyle is cached, use it. */}else {computedStyle = Data(element).computedStyle;} /* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color. - Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse. - So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */if(property === "borderColor"){property = "borderTopColor";} /* IE9 has a bug in which the "filter" property must be accessed from computedStyle using the getPropertyValue method - instead of a direct property lookup. The getPropertyValue method is slower than a direct lookup, which is why we avoid it by default. */if(IE === 9 && property === "filter"){computedValue = computedStyle.getPropertyValue(property); /* GET */}else {computedValue = computedStyle[property];} /* Fall back to the property's style value (if defined) when computedValue returns nothing, - which can happen when the element hasn't been painted. */if(computedValue === "" || computedValue === null){computedValue = element.style[property];}revertDisplay();} /* For top, right, bottom, and left (TRBL) values that are set to "auto" on elements of "fixed" or "absolute" position, - defer to jQuery for converting "auto" to a numeric value. (For elements with a "static" or "relative" position, "auto" has the same - effect as being set to 0, so no conversion is necessary.) */ /* An example of why numeric conversion is necessary: When an element with "position:absolute" has an untouched "left" - property, which reverts to "auto", left's value is 0 relative to its parent element, but is often non-zero relative - to its *containing* (not parent) element, which is the nearest "position:relative" ancestor or the viewport (and always the viewport in the case of "position:fixed"). */if(computedValue === "auto" && /^(top|right|bottom|left)$/i.test(property)){var position=computePropertyValue(element,"position"); /* GET */ /* For absolute positioning, jQuery's $.position() only returns values for top and left; - right and bottom will have their "auto" value reverted to 0. */ /* Note: A jQuery object must be created here since jQuery doesn't have a low-level alias for $.position(). - Not a big deal since we're currently in a GET batch anyway. */if(position === "fixed" || position === "absolute" && /top|left/i.test(property)){ /* Note: jQuery strips the pixel unit from its returned values; we re-add it here to conform with computePropertyValue's behavior. */computedValue = $(element).position()[property] + "px"; /* GET */}}return computedValue;}var propertyValue; /* If this is a hooked property (e.g. "clipLeft" instead of the root property of "clip"), - extract the hook's value from a normalized rootPropertyValue using CSS.Hooks.extractValue(). */if(CSS.Hooks.registered[property]){var hook=property,hookRoot=CSS.Hooks.getRoot(hook); /* If a cached rootPropertyValue wasn't passed in (which Velocity always attempts to do in order to avoid requerying the DOM), - query the DOM for the root property's value. */if(rootPropertyValue === undefined){ /* Since the browser is now being directly queried, use the official post-prefixing property name for this lookup. */rootPropertyValue = CSS.getPropertyValue(element,CSS.Names.prefixCheck(hookRoot)[0]); /* GET */} /* If this root has a normalization registered, peform the associated normalization extraction. */if(CSS.Normalizations.registered[hookRoot]){rootPropertyValue = CSS.Normalizations.registered[hookRoot]("extract",element,rootPropertyValue);} /* Extract the hook's value. */propertyValue = CSS.Hooks.extractValue(hook,rootPropertyValue); /* If this is a normalized property (e.g. "opacity" becomes "filter" in <=IE8) or "translateX" becomes "transform"), - normalize the property's name and value, and handle the special case of transforms. */ /* Note: Normalizing a property is mutually exclusive from hooking a property since hook-extracted values are strictly - numerical and therefore do not require normalization extraction. */}else if(CSS.Normalizations.registered[property]){var normalizedPropertyName,normalizedPropertyValue;normalizedPropertyName = CSS.Normalizations.registered[property]("name",element); /* Transform values are calculated via normalization extraction (see below), which checks against the element's transformCache. - At no point do transform GETs ever actually query the DOM; initial stylesheet values are never processed. - This is because parsing 3D transform matrices is not always accurate and would bloat our codebase; - thus, normalization extraction defaults initial transform values to their zero-values (e.g. 1 for scaleX and 0 for translateX). */if(normalizedPropertyName !== "transform"){normalizedPropertyValue = computePropertyValue(element,CSS.Names.prefixCheck(normalizedPropertyName)[0]); /* GET */ /* If the value is a CSS null-value and this property has a hook template, use that zero-value template so that hooks can be extracted from it. */if(CSS.Values.isCSSNullValue(normalizedPropertyValue) && CSS.Hooks.templates[property]){normalizedPropertyValue = CSS.Hooks.templates[property][1];}}propertyValue = CSS.Normalizations.registered[property]("extract",element,normalizedPropertyValue);} /* If a (numeric) value wasn't produced via hook extraction or normalization, query the DOM. */if(!/^[\d-]/.test(propertyValue)){ /* For SVG elements, dimensional properties (which SVGAttribute() detects) are tweened via - their HTML attribute values instead of their CSS style values. */if(Data(element) && Data(element).isSVG && CSS.Names.SVGAttribute(property)){ /* Since the height/width attribute values must be set manually, they don't reflect computed values. - Thus, we use use getBBox() to ensure we always get values for elements with undefined height/width attributes. */if(/^(height|width)$/i.test(property)){ /* Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM. */try{propertyValue = element.getBBox()[property];}catch(error) {propertyValue = 0;} /* Otherwise, access the attribute value directly. */}else {propertyValue = element.getAttribute(property);}}else {propertyValue = computePropertyValue(element,CSS.Names.prefixCheck(property)[0]); /* GET */}} /* Since property lookups are for animation purposes (which entails computing the numeric delta between start and end values), - convert CSS null-values to an integer of value 0. */if(CSS.Values.isCSSNullValue(propertyValue)){propertyValue = 0;}if(Velocity.debug >= 2)console.log("Get " + property + ": " + propertyValue);return propertyValue;}, /* The singular setPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */setPropertyValue:function setPropertyValue(element,property,propertyValue,rootPropertyValue,scrollData){var propertyName=property; /* In order to be subjected to call options and element queueing, scroll animation is routed through Velocity as if it were a standard CSS property. */if(property === "scroll"){ /* If a container option is present, scroll the container instead of the browser window. */if(scrollData.container){scrollData.container["scroll" + scrollData.direction] = propertyValue; /* Otherwise, Velocity defaults to scrolling the browser window. */}else {if(scrollData.direction === "Left"){window.scrollTo(propertyValue,scrollData.alternateValue);}else {window.scrollTo(scrollData.alternateValue,propertyValue);}}}else { /* Transforms (translateX, rotateZ, etc.) are applied to a per-element transformCache object, which is manually flushed via flushTransformCache(). - Thus, for now, we merely cache transforms being SET. */if(CSS.Normalizations.registered[property] && CSS.Normalizations.registered[property]("name",element) === "transform"){ /* Perform a normalization injection. */ /* Note: The normalization logic handles the transformCache updating. */CSS.Normalizations.registered[property]("inject",element,propertyValue);propertyName = "transform";propertyValue = Data(element).transformCache[property];}else { /* Inject hooks. */if(CSS.Hooks.registered[property]){var hookName=property,hookRoot=CSS.Hooks.getRoot(property); /* If a cached rootPropertyValue was not provided, query the DOM for the hookRoot's current value. */rootPropertyValue = rootPropertyValue || CSS.getPropertyValue(element,hookRoot); /* GET */propertyValue = CSS.Hooks.injectValue(hookName,propertyValue,rootPropertyValue);property = hookRoot;} /* Normalize names and values. */if(CSS.Normalizations.registered[property]){propertyValue = CSS.Normalizations.registered[property]("inject",element,propertyValue);property = CSS.Normalizations.registered[property]("name",element);} /* Assign the appropriate vendor prefix before performing an official style update. */propertyName = CSS.Names.prefixCheck(property)[0]; /* A try/catch is used for IE<=8, which throws an error when "invalid" CSS values are set, e.g. a negative width. - Try/catch is avoided for other browsers since it incurs a performance overhead. */if(IE <= 8){try{element.style[propertyName] = propertyValue;}catch(error) {if(Velocity.debug)console.log("Browser does not support [" + propertyValue + "] for [" + propertyName + "]");} /* SVG elements have their dimensional properties (width, height, x, y, cx, etc.) applied directly as attributes instead of as styles. */ /* Note: IE8 does not support SVG elements, so it's okay that we skip it for SVG animation. */}else if(Data(element) && Data(element).isSVG && CSS.Names.SVGAttribute(property)){ /* Note: For SVG attributes, vendor-prefixed property names are never used. */ /* Note: Not all CSS properties can be animated via attributes, but the browser won't throw an error for unsupported properties. */element.setAttribute(property,propertyValue);}else {element.style[propertyName] = propertyValue;}if(Velocity.debug >= 2)console.log("Set " + property + " (" + propertyName + "): " + propertyValue);}} /* Return the normalized property name and value in case the caller wants to know how these values were modified before being applied to the DOM. */return [propertyName,propertyValue];}, /* To increase performance by batching transform updates into a single SET, transforms are not directly applied to an element until flushTransformCache() is called. */ /* Note: Velocity applies transform properties in the same order that they are chronogically introduced to the element's CSS styles. */flushTransformCache:function flushTransformCache(element){var transformString=""; /* Certain browsers require that SVG transforms be applied as an attribute. However, the SVG transform attribute takes a modified version of CSS's transform string - (units are dropped and, except for skewX/Y, subproperties are merged into their master property -- e.g. scaleX and scaleY are merged into scale(X Y). */if((IE || Velocity.State.isAndroid && !Velocity.State.isChrome) && Data(element).isSVG){ /* Since transform values are stored in their parentheses-wrapped form, we use a helper function to strip out their numeric values. - Further, SVG transform properties only take unitless (representing pixels) values, so it's okay that parseFloat() strips the unit suffixed to the float value. */var getTransformFloat=function getTransformFloat(transformProperty){return parseFloat(CSS.getPropertyValue(element,transformProperty));} /* Create an object to organize all the transforms that we'll apply to the SVG element. To keep the logic simple, - we process *all* transform properties -- even those that may not be explicitly applied (since they default to their zero-values anyway). */;var SVGTransforms={translate:[getTransformFloat("translateX"),getTransformFloat("translateY")],skewX:[getTransformFloat("skewX")],skewY:[getTransformFloat("skewY")], /* If the scale property is set (non-1), use that value for the scaleX and scaleY values - (this behavior mimics the result of animating all these properties at once on HTML elements). */scale:getTransformFloat("scale") !== 1?[getTransformFloat("scale"),getTransformFloat("scale")]:[getTransformFloat("scaleX"),getTransformFloat("scaleY")], /* Note: SVG's rotate transform takes three values: rotation degrees followed by the X and Y values - defining the rotation's origin point. We ignore the origin values (default them to 0). */rotate:[getTransformFloat("rotateZ"),0,0]}; /* Iterate through the transform properties in the user-defined property map order. - (This mimics the behavior of non-SVG transform animation.) */$.each(Data(element).transformCache,function(transformName){ /* Except for with skewX/Y, revert the axis-specific transform subproperties to their axis-free master - properties so that they match up with SVG's accepted transform properties. */if(/^translate/i.test(transformName)){transformName = "translate";}else if(/^scale/i.test(transformName)){transformName = "scale";}else if(/^rotate/i.test(transformName)){transformName = "rotate";} /* Check that we haven't yet deleted the property from the SVGTransforms container. */if(SVGTransforms[transformName]){ /* Append the transform property in the SVG-supported transform format. As per the spec, surround the space-delimited values in parentheses. */transformString += transformName + "(" + SVGTransforms[transformName].join(" ") + ")" + " "; /* After processing an SVG transform property, delete it from the SVGTransforms container so we don't - re-insert the same master property if we encounter another one of its axis-specific properties. */delete SVGTransforms[transformName];}});}else {var transformValue,perspective; /* Transform properties are stored as members of the transformCache object. Concatenate all the members into a string. */$.each(Data(element).transformCache,function(transformName){transformValue = Data(element).transformCache[transformName]; /* Transform's perspective subproperty must be set first in order to take effect. Store it temporarily. */if(transformName === "transformPerspective"){perspective = transformValue;return true;} /* IE9 only supports one rotation type, rotateZ, which it refers to as "rotate". */if(IE === 9 && transformName === "rotateZ"){transformName = "rotate";}transformString += transformName + transformValue + " ";}); /* If present, set the perspective subproperty first. */if(perspective){transformString = "perspective" + perspective + " " + transformString;}}CSS.setPropertyValue(element,"transform",transformString);}}; /* Register hooks and normalizations. */CSS.Hooks.register();CSS.Normalizations.register(); /* Allow hook setting in the same fashion as jQuery's $.css(). */Velocity.hook = function(elements,arg2,arg3){var value=undefined;elements = sanitizeElements(elements);$.each(elements,function(i,element){ /* Initialize Velocity's per-element data cache if this element hasn't previously been animated. */if(Data(element) === undefined){Velocity.init(element);} /* Get property value. If an element set was passed in, only return the value for the first element. */if(arg3 === undefined){if(value === undefined){value = Velocity.CSS.getPropertyValue(element,arg2);} /* Set property value. */}else { /* sPV returns an array of the normalized propertyName/propertyValue pair used to update the DOM. */var adjustedSet=Velocity.CSS.setPropertyValue(element,arg2,arg3); /* Transform properties don't automatically set. They have to be flushed to the DOM. */if(adjustedSet[0] === "transform"){Velocity.CSS.flushTransformCache(element);}value = adjustedSet;}});return value;}; /***************** - Animation - *****************/var animate=function animate(){ /****************** - Call Chain - ******************/ /* Logic for determining what to return to the call stack when exiting out of Velocity. */function getChain(){ /* If we are using the utility function, attempt to return this call's promise. If no promise library was detected, - default to null instead of returning the targeted elements so that utility function's return value is standardized. */if(isUtility){return promiseData.promise || null; /* Otherwise, if we're using $.fn, return the jQuery-/Zepto-wrapped element set. */}else {return elementsWrapped;}} /************************* - Arguments Assignment - *************************/ /* To allow for expressive CoffeeScript code, Velocity supports an alternative syntax in which "elements" (or "e"), "properties" (or "p"), and "options" (or "o") - objects are defined on a container object that's passed in as Velocity's sole argument. */ /* Note: Some browsers automatically populate arguments with a "properties" object. We detect it by checking for its default "names" property. */var syntacticSugar=arguments[0] && (arguments[0].p || $.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || Type.isString(arguments[0].properties)), /* Whether Velocity was called via the utility function (as opposed to on a jQuery/Zepto object). */isUtility, /* When Velocity is called via the utility function ($.Velocity()/Velocity()), elements are explicitly - passed in as the first parameter. Thus, argument positioning varies. We normalize them here. */elementsWrapped,argumentIndex;var elements,propertiesMap,options; /* Detect jQuery/Zepto elements being animated via the $.fn method. */if(Type.isWrapped(this)){isUtility = false;argumentIndex = 0;elements = this;elementsWrapped = this; /* Otherwise, raw elements are being animated via the utility function. */}else {isUtility = true;argumentIndex = 1;elements = syntacticSugar?arguments[0].elements || arguments[0].e:arguments[0];}elements = sanitizeElements(elements);if(!elements){return;}if(syntacticSugar){propertiesMap = arguments[0].properties || arguments[0].p;options = arguments[0].options || arguments[0].o;}else {propertiesMap = arguments[argumentIndex];options = arguments[argumentIndex + 1];} /* The length of the element set (in the form of a nodeList or an array of elements) is defaulted to 1 in case a - single raw DOM element is passed in (which doesn't contain a length property). */var elementsLength=elements.length,elementsIndex=0; /*************************** - Argument Overloading - ***************************/ /* Support is included for jQuery's argument overloading: $.animate(propertyMap [, duration] [, easing] [, complete]). - Overloading is detected by checking for the absence of an object being passed into options. */ /* Note: The stop and finish actions do not accept animation options, and are therefore excluded from this check. */if(!/^(stop|finish|finishAll)$/i.test(propertiesMap) && !$.isPlainObject(options)){ /* The utility function shifts all arguments one position to the right, so we adjust for that offset. */var startingArgumentPosition=argumentIndex + 1;options = {}; /* Iterate through all options arguments */for(var i=startingArgumentPosition;i < arguments.length;i++) { /* Treat a number as a duration. Parse it out. */ /* Note: The following RegEx will return true if passed an array with a number as its first item. - Thus, arrays are skipped from this check. */if(!Type.isArray(arguments[i]) && (/^(fast|normal|slow)$/i.test(arguments[i]) || /^\d/.test(arguments[i]))){options.duration = arguments[i]; /* Treat strings and arrays as easings. */}else if(Type.isString(arguments[i]) || Type.isArray(arguments[i])){options.easing = arguments[i]; /* Treat a function as a complete callback. */}else if(Type.isFunction(arguments[i])){options.complete = arguments[i];}}} /*************** - Promises - ***************/var promiseData={promise:null,resolver:null,rejecter:null}; /* If this call was made via the utility function (which is the default method of invocation when jQuery/Zepto are not being used), and if - promise support was detected, create a promise object for this call and store references to its resolver and rejecter methods. The resolve - method is used when a call completes naturally or is prematurely stopped by the user. In both cases, completeCall() handles the associated - call cleanup and promise resolving logic. The reject method is used when an invalid set of arguments is passed into a Velocity call. */ /* Note: Velocity employs a call-based queueing architecture, which means that stopping an animating element actually stops the full call that - triggered it -- not that one element exclusively. Similarly, there is one promise per call, and all elements targeted by a Velocity call are - grouped together for the purposes of resolving and rejecting a promise. */if(isUtility && Velocity.Promise){promiseData.promise = new Velocity.Promise(function(resolve,reject){promiseData.resolver = resolve;promiseData.rejecter = reject;});} /********************* - Action Detection - *********************/ /* Velocity's behavior is categorized into "actions": Elements can either be specially scrolled into view, - or they can be started, stopped, or reversed. If a literal or referenced properties map is passed in as Velocity's - first argument, the associated action is "start". Alternatively, "scroll", "reverse", or "stop" can be passed in instead of a properties map. */var action;switch(propertiesMap){case "scroll":action = "scroll";break;case "reverse":action = "reverse";break;case "finish":case "finishAll":case "stop": /******************* - Action: Stop - *******************/ /* Clear the currently-active delay on each targeted element. */$.each(elements,function(i,element){if(Data(element) && Data(element).delayTimer){ /* Stop the timer from triggering its cached next() function. */clearTimeout(Data(element).delayTimer.setTimeout); /* Manually call the next() function so that the subsequent queue items can progress. */if(Data(element).delayTimer.next){Data(element).delayTimer.next();}delete Data(element).delayTimer;} /* If we want to finish everything in the queue, we have to iterate through it - and call each function. This will make them active calls below, which will - cause them to be applied via the duration setting. */if(propertiesMap === "finishAll" && (options === true || Type.isString(options))){ /* Iterate through the items in the element's queue. */$.each($.queue(element,Type.isString(options)?options:""),function(_,item){ /* The queue array can contain an "inprogress" string, which we skip. */if(Type.isFunction(item)){item();}}); /* Clearing the $.queue() array is achieved by resetting it to []. */$.queue(element,Type.isString(options)?options:"",[]);}});var callsToStop=[]; /* When the stop action is triggered, the elements' currently active call is immediately stopped. The active call might have - been applied to multiple elements, in which case all of the call's elements will be stopped. When an element - is stopped, the next item in its animation queue is immediately triggered. */ /* An additional argument may be passed in to clear an element's remaining queued calls. Either true (which defaults to the "fx" queue) - or a custom queue string can be passed in. */ /* Note: The stop command runs prior to Velocity's Queueing phase since its behavior is intended to take effect *immediately*, - regardless of the element's current queue state. */ /* Iterate through every active call. */$.each(Velocity.State.calls,function(i,activeCall){ /* Inactive calls are set to false by the logic inside completeCall(). Skip them. */if(activeCall){ /* Iterate through the active call's targeted elements. */$.each(activeCall[1],function(k,activeElement){ /* If true was passed in as a secondary argument, clear absolutely all calls on this element. Otherwise, only - clear calls associated with the relevant queue. */ /* Call stopping logic works as follows: - - options === true --> stop current default queue calls (and queue:false calls), including remaining queued ones. - - options === undefined --> stop current queue:"" call and all queue:false calls. - - options === false --> stop only queue:false calls. - - options === "custom" --> stop current queue:"custom" call, including remaining queued ones (there is no functionality to only clear the currently-running queue:"custom" call). */var queueName=options === undefined?"":options;if(queueName !== true && activeCall[2].queue !== queueName && !(options === undefined && activeCall[2].queue === false)){return true;} /* Iterate through the calls targeted by the stop command. */$.each(elements,function(l,element){ /* Check that this call was applied to the target element. */if(element === activeElement){ /* Optionally clear the remaining queued calls. If we're doing "finishAll" this won't find anything, - due to the queue-clearing above. */if(options === true || Type.isString(options)){ /* Iterate through the items in the element's queue. */$.each($.queue(element,Type.isString(options)?options:""),function(_,item){ /* The queue array can contain an "inprogress" string, which we skip. */if(Type.isFunction(item)){ /* Pass the item's callback a flag indicating that we want to abort from the queue call. - (Specifically, the queue will resolve the call's associated promise then abort.) */item(null,true);}}); /* Clearing the $.queue() array is achieved by resetting it to []. */$.queue(element,Type.isString(options)?options:"",[]);}if(propertiesMap === "stop"){ /* Since "reverse" uses cached start values (the previous call's endValues), these values must be - changed to reflect the final value that the elements were actually tweened to. */ /* Note: If only queue:false animations are currently running on an element, it won't have a tweensContainer - object. Also, queue:false animations can't be reversed. */if(Data(element) && Data(element).tweensContainer && queueName !== false){$.each(Data(element).tweensContainer,function(m,activeTween){activeTween.endValue = activeTween.currentValue;});}callsToStop.push(i);}else if(propertiesMap === "finish" || propertiesMap === "finishAll"){ /* To get active tweens to finish immediately, we forcefully shorten their durations to 1ms so that - they finish upon the next rAf tick then proceed with normal call completion logic. */activeCall[2].duration = 1;}}});});}}); /* Prematurely call completeCall() on each matched active call. Pass an additional flag for "stop" to indicate - that the complete callback and display:none setting should be skipped since we're completing prematurely. */if(propertiesMap === "stop"){$.each(callsToStop,function(i,j){completeCall(j,true);});if(promiseData.promise){ /* Immediately resolve the promise associated with this stop call since stop runs synchronously. */promiseData.resolver(elements);}} /* Since we're stopping, and not proceeding with queueing, exit out of Velocity. */return getChain();default: /* Treat a non-empty plain object as a literal properties map. */if($.isPlainObject(propertiesMap) && !Type.isEmptyObject(propertiesMap)){action = "start"; /**************** - Redirects - ****************/ /* Check if a string matches a registered redirect (see Redirects above). */}else if(Type.isString(propertiesMap) && Velocity.Redirects[propertiesMap]){var opts=$.extend({},options),durationOriginal=opts.duration,delayOriginal=opts.delay || 0; /* If the backwards option was passed in, reverse the element set so that elements animate from the last to the first. */if(opts.backwards === true){elements = $.extend(true,[],elements).reverse();} /* Individually trigger the redirect for each element in the set to prevent users from having to handle iteration logic in their redirect. */$.each(elements,function(elementIndex,element){ /* If the stagger option was passed in, successively delay each element by the stagger value (in ms). Retain the original delay value. */if(parseFloat(opts.stagger)){opts.delay = delayOriginal + parseFloat(opts.stagger) * elementIndex;}else if(Type.isFunction(opts.stagger)){opts.delay = delayOriginal + opts.stagger.call(element,elementIndex,elementsLength);} /* If the drag option was passed in, successively increase/decrease (depending on the presense of opts.backwards) - the duration of each element's animation, using floors to prevent producing very short durations. */if(opts.drag){ /* Default the duration of UI pack effects (callouts and transitions) to 1000ms instead of the usual default duration of 400ms. */opts.duration = parseFloat(durationOriginal) || (/^(callout|transition)/.test(propertiesMap)?1000:DURATION_DEFAULT); /* For each element, take the greater duration of: A) animation completion percentage relative to the original duration, - B) 75% of the original duration, or C) a 200ms fallback (in case duration is already set to a low value). - The end result is a baseline of 75% of the redirect's duration that increases/decreases as the end of the element set is approached. */opts.duration = Math.max(opts.duration * (opts.backwards?1 - elementIndex / elementsLength:(elementIndex + 1) / elementsLength),opts.duration * 0.75,200);} /* Pass in the call's opts object so that the redirect can optionally extend it. It defaults to an empty object instead of null to - reduce the opts checking logic required inside the redirect. */Velocity.Redirects[propertiesMap].call(element,element,opts || {},elementIndex,elementsLength,elements,promiseData.promise?promiseData:undefined);}); /* Since the animation logic resides within the redirect's own code, abort the remainder of this call. - (The performance overhead up to this point is virtually non-existant.) */ /* Note: The jQuery call chain is kept intact by returning the complete element set. */return getChain();}else {var abortError="Velocity: First argument (" + propertiesMap + ") was not a property map, a known action, or a registered redirect. Aborting.";if(promiseData.promise){promiseData.rejecter(new Error(abortError));}else {console.log(abortError);}return getChain();}} /************************** - Call-Wide Variables - **************************/ /* A container for CSS unit conversion ratios (e.g. %, rem, and em ==> px) that is used to cache ratios across all elements - being animated in a single Velocity call. Calculating unit ratios necessitates DOM querying and updating, and is therefore - avoided (via caching) wherever possible. This container is call-wide instead of page-wide to avoid the risk of using stale - conversion metrics across Velocity animations that are not immediately consecutively chained. */var callUnitConversionData={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null}; /* A container for all the ensuing tween data and metadata associated with this call. This container gets pushed to the page-wide - Velocity.State.calls array that is processed during animation ticking. */var call=[]; /************************ - Element Processing - ************************/ /* Element processing consists of three parts -- data processing that cannot go stale and data processing that *can* go stale (i.e. third-party style modifications): - 1) Pre-Queueing: Element-wide variables, including the element's data storage, are instantiated. Call options are prepared. If triggered, the Stop action is executed. - 2) Queueing: The logic that runs once this call has reached its point of execution in the element's $.queue() stack. Most logic is placed here to avoid risking it becoming stale. - 3) Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container. - */function processElement(){ /************************* - Part I: Pre-Queueing - *************************/ /*************************** - Element-Wide Variables - ***************************/var element=this, /* The runtime opts object is the extension of the current call's options and Velocity's page-wide option defaults. */opts=$.extend({},Velocity.defaults,options), /* A container for the processed data associated with each property in the propertyMap. - (Each property in the map produces its own "tween".) */tweensContainer={},elementUnitConversionData; /****************** - Element Init - ******************/if(Data(element) === undefined){Velocity.init(element);} /****************** - Option: Delay - ******************/ /* Since queue:false doesn't respect the item's existing queue, we avoid injecting its delay here (it's set later on). */ /* Note: Velocity rolls its own delay function since jQuery doesn't have a utility alias for $.fn.delay() - (and thus requires jQuery element creation, which we avoid since its overhead includes DOM querying). */if(parseFloat(opts.delay) && opts.queue !== false){$.queue(element,opts.queue,function(next){ /* This is a flag used to indicate to the upcoming completeCall() function that this queue entry was initiated by Velocity. See completeCall() for further details. */Velocity.velocityQueueEntryFlag = true; /* The ensuing queue item (which is assigned to the "next" argument that $.queue() automatically passes in) will be triggered after a setTimeout delay. - The setTimeout is stored so that it can be subjected to clearTimeout() if this animation is prematurely stopped via Velocity's "stop" command. */Data(element).delayTimer = {setTimeout:setTimeout(next,parseFloat(opts.delay)),next:next};});} /********************* - Option: Duration - *********************/ /* Support for jQuery's named durations. */switch(opts.duration.toString().toLowerCase()){case "fast":opts.duration = 200;break;case "normal":opts.duration = DURATION_DEFAULT;break;case "slow":opts.duration = 600;break;default: /* Remove the potential "ms" suffix and default to 1 if the user is attempting to set a duration of 0 (in order to produce an immediate style change). */opts.duration = parseFloat(opts.duration) || 1;} /************************ - Global Option: Mock - ************************/if(Velocity.mock !== false){ /* In mock mode, all animations are forced to 1ms so that they occur immediately upon the next rAF tick. - Alternatively, a multiplier can be passed in to time remap all delays and durations. */if(Velocity.mock === true){opts.duration = opts.delay = 1;}else {opts.duration *= parseFloat(Velocity.mock) || 1;opts.delay *= parseFloat(Velocity.mock) || 1;}} /******************* - Option: Easing - *******************/opts.easing = getEasing(opts.easing,opts.duration); /********************** - Option: Callbacks - **********************/ /* Callbacks must functions. Otherwise, default to null. */if(opts.begin && !Type.isFunction(opts.begin)){opts.begin = null;}if(opts.progress && !Type.isFunction(opts.progress)){opts.progress = null;}if(opts.complete && !Type.isFunction(opts.complete)){opts.complete = null;} /********************************* - Option: Display & Visibility - *********************************/ /* Refer to Velocity's documentation (VelocityJS.org/#displayAndVisibility) for a description of the display and visibility options' behavior. */ /* Note: We strictly check for undefined instead of falsiness because display accepts an empty string value. */if(opts.display !== undefined && opts.display !== null){opts.display = opts.display.toString().toLowerCase(); /* Users can pass in a special "auto" value to instruct Velocity to set the element to its default display value. */if(opts.display === "auto"){opts.display = Velocity.CSS.Values.getDisplayType(element);}}if(opts.visibility !== undefined && opts.visibility !== null){opts.visibility = opts.visibility.toString().toLowerCase();} /********************** - Option: mobileHA - **********************/ /* When set to true, and if this is a mobile device, mobileHA automatically enables hardware acceleration (via a null transform hack) - on animating elements. HA is removed from the element at the completion of its animation. */ /* Note: Android Gingerbread doesn't support HA. If a null transform hack (mobileHA) is in fact set, it will prevent other tranform subproperties from taking effect. */ /* Note: You can read more about the use of mobileHA in Velocity's documentation: VelocityJS.org/#mobileHA. */opts.mobileHA = opts.mobileHA && Velocity.State.isMobile && !Velocity.State.isGingerbread; /*********************** - Part II: Queueing - ***********************/ /* When a set of elements is targeted by a Velocity call, the set is broken up and each element has the current Velocity call individually queued onto it. - In this way, each element's existing queue is respected; some elements may already be animating and accordingly should not have this current Velocity call triggered immediately. */ /* In each queue, tween data is processed for each animating property then pushed onto the call-wide calls array. When the last element in the set has had its tweens processed, - the call array is pushed to Velocity.State.calls for live processing by the requestAnimationFrame tick. */function buildQueue(next){ /******************* - Option: Begin - *******************/ /* The begin callback is fired once per call -- not once per elemenet -- and is passed the full raw DOM element set as both its context and its first argument. */if(opts.begin && elementsIndex === 0){ /* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */try{opts.begin.call(elements,elements);}catch(error) {setTimeout(function(){throw error;},1);}} /***************************************** - Tween Data Construction (for Scroll) - *****************************************/ /* Note: In order to be subjected to chaining and animation options, scroll's tweening is routed through Velocity as if it were a standard CSS property animation. */if(action === "scroll"){ /* The scroll action uniquely takes an optional "offset" option -- specified in pixels -- that offsets the targeted scroll position. */var scrollDirection=/^x$/i.test(opts.axis)?"Left":"Top",scrollOffset=parseFloat(opts.offset) || 0,scrollPositionCurrent,scrollPositionCurrentAlternate,scrollPositionEnd; /* Scroll also uniquely takes an optional "container" option, which indicates the parent element that should be scrolled -- - as opposed to the browser window itself. This is useful for scrolling toward an element that's inside an overflowing parent element. */if(opts.container){ /* Ensure that either a jQuery object or a raw DOM element was passed in. */if(Type.isWrapped(opts.container) || Type.isNode(opts.container)){ /* Extract the raw DOM element from the jQuery wrapper. */opts.container = opts.container[0] || opts.container; /* Note: Unlike other properties in Velocity, the browser's scroll position is never cached since it so frequently changes - (due to the user's natural interaction with the page). */scrollPositionCurrent = opts.container["scroll" + scrollDirection]; /* GET */ /* $.position() values are relative to the container's currently viewable area (without taking into account the container's true dimensions - -- say, for example, if the container was not overflowing). Thus, the scroll end value is the sum of the child element's position *and* - the scroll container's current scroll position. */scrollPositionEnd = scrollPositionCurrent + $(element).position()[scrollDirection.toLowerCase()] + scrollOffset; /* GET */ /* If a value other than a jQuery object or a raw DOM element was passed in, default to null so that this option is ignored. */}else {opts.container = null;}}else { /* If the window itself is being scrolled -- not a containing element -- perform a live scroll position lookup using - the appropriate cached property names (which differ based on browser type). */scrollPositionCurrent = Velocity.State.scrollAnchor[Velocity.State["scrollProperty" + scrollDirection]]; /* GET */ /* When scrolling the browser window, cache the alternate axis's current value since window.scrollTo() doesn't let us change only one value at a time. */scrollPositionCurrentAlternate = Velocity.State.scrollAnchor[Velocity.State["scrollProperty" + (scrollDirection === "Left"?"Top":"Left")]]; /* GET */ /* Unlike $.position(), $.offset() values are relative to the browser window's true dimensions -- not merely its currently viewable area -- - and therefore end values do not need to be compounded onto current values. */scrollPositionEnd = $(element).offset()[scrollDirection.toLowerCase()] + scrollOffset; /* GET */} /* Since there's only one format that scroll's associated tweensContainer can take, we create it manually. */tweensContainer = {scroll:{rootPropertyValue:false,startValue:scrollPositionCurrent,currentValue:scrollPositionCurrent,endValue:scrollPositionEnd,unitType:"",easing:opts.easing,scrollData:{container:opts.container,direction:scrollDirection,alternateValue:scrollPositionCurrentAlternate}},element:element};if(Velocity.debug)console.log("tweensContainer (scroll): ",tweensContainer.scroll,element); /****************************************** - Tween Data Construction (for Reverse) - ******************************************/ /* Reverse acts like a "start" action in that a property map is animated toward. The only difference is - that the property map used for reverse is the inverse of the map used in the previous call. Thus, we manipulate - the previous call to construct our new map: use the previous map's end values as our new map's start values. Copy over all other data. */ /* Note: Reverse can be directly called via the "reverse" parameter, or it can be indirectly triggered via the loop option. (Loops are composed of multiple reverses.) */ /* Note: Reverse calls do not need to be consecutively chained onto a currently-animating element in order to operate on cached values; - there is no harm to reverse being called on a potentially stale data cache since reverse's behavior is simply defined - as reverting to the element's values as they were prior to the previous *Velocity* call. */}else if(action === "reverse"){ /* Abort if there is no prior animation data to reverse to. */if(!Data(element).tweensContainer){ /* Dequeue the element so that this queue entry releases itself immediately, allowing subsequent queue entries to run. */$.dequeue(element,opts.queue);return;}else { /********************* - Options Parsing - *********************/ /* If the element was hidden via the display option in the previous call, - revert display to "auto" prior to reversal so that the element is visible again. */if(Data(element).opts.display === "none"){Data(element).opts.display = "auto";}if(Data(element).opts.visibility === "hidden"){Data(element).opts.visibility = "visible";} /* If the loop option was set in the previous call, disable it so that "reverse" calls aren't recursively generated. - Further, remove the previous call's callback options; typically, users do not want these to be refired. */Data(element).opts.loop = false;Data(element).opts.begin = null;Data(element).opts.complete = null; /* Since we're extending an opts object that has already been extended with the defaults options object, - we remove non-explicitly-defined properties that are auto-assigned values. */if(!options.easing){delete opts.easing;}if(!options.duration){delete opts.duration;} /* The opts object used for reversal is an extension of the options object optionally passed into this - reverse call plus the options used in the previous Velocity call. */opts = $.extend({},Data(element).opts,opts); /************************************* - Tweens Container Reconstruction - *************************************/ /* Create a deepy copy (indicated via the true flag) of the previous call's tweensContainer. */var lastTweensContainer=$.extend(true,{},Data(element).tweensContainer); /* Manipulate the previous tweensContainer by replacing its end values and currentValues with its start values. */for(var lastTween in lastTweensContainer) { /* In addition to tween data, tweensContainers contain an element property that we ignore here. */if(lastTween !== "element"){var lastStartValue=lastTweensContainer[lastTween].startValue;lastTweensContainer[lastTween].startValue = lastTweensContainer[lastTween].currentValue = lastTweensContainer[lastTween].endValue;lastTweensContainer[lastTween].endValue = lastStartValue; /* Easing is the only option that embeds into the individual tween data (since it can be defined on a per-property basis). - Accordingly, every property's easing value must be updated when an options object is passed in with a reverse call. - The side effect of this extensibility is that all per-property easing values are forcefully reset to the new value. */if(!Type.isEmptyObject(options)){lastTweensContainer[lastTween].easing = opts.easing;}if(Velocity.debug)console.log("reverse tweensContainer (" + lastTween + "): " + JSON.stringify(lastTweensContainer[lastTween]),element);}}tweensContainer = lastTweensContainer;} /***************************************** - Tween Data Construction (for Start) - *****************************************/}else if(action === "start"){var lastTweensContainer;var property;var valueData,endValue,easing,startValue;var rootProperty,rootPropertyValue;var separatedValue,endValueUnitType,startValueUnitType,operator;var axis;(function(){ /*************************** - Tween Data Calculation - ***************************/ /* This function parses property data and defaults endValue, easing, and startValue as appropriate. */ /* Property map values can either take the form of 1) a single value representing the end value, - or 2) an array in the form of [ endValue, [, easing] [, startValue] ]. - The optional third parameter is a forcefed startValue to be used instead of querying the DOM for - the element's current value. Read Velocity's docmentation to learn more about forcefeeding: VelocityJS.org/#forcefeeding */var parsePropertyValue=function parsePropertyValue(valueData,skipResolvingEasing){var endValue=undefined,easing=undefined,startValue=undefined; /* Handle the array format, which can be structured as one of three potential overloads: - A) [ endValue, easing, startValue ], B) [ endValue, easing ], or C) [ endValue, startValue ] */if(Type.isArray(valueData)){ /* endValue is always the first item in the array. Don't bother validating endValue's value now - since the ensuing property cycling logic does that. */endValue = valueData[0]; /* Two-item array format: If the second item is a number, function, or hex string, treat it as a - start value since easings can only be non-hex strings or arrays. */if(!Type.isArray(valueData[1]) && /^[\d-]/.test(valueData[1]) || Type.isFunction(valueData[1]) || CSS.RegEx.isHex.test(valueData[1])){startValue = valueData[1]; /* Two or three-item array: If the second item is a non-hex string or an array, treat it as an easing. */}else if(Type.isString(valueData[1]) && !CSS.RegEx.isHex.test(valueData[1]) || Type.isArray(valueData[1])){easing = skipResolvingEasing?valueData[1]:getEasing(valueData[1],opts.duration); /* Don't bother validating startValue's value now since the ensuing property cycling logic inherently does that. */if(valueData[2] !== undefined){startValue = valueData[2];}} /* Handle the single-value format. */}else {endValue = valueData;} /* Default to the call's easing if a per-property easing type was not defined. */if(!skipResolvingEasing){easing = easing || opts.easing;} /* If functions were passed in as values, pass the function the current element as its context, - plus the element's index and the element set's size as arguments. Then, assign the returned value. */if(Type.isFunction(endValue)){endValue = endValue.call(element,elementsIndex,elementsLength);}if(Type.isFunction(startValue)){startValue = startValue.call(element,elementsIndex,elementsLength);} /* Allow startValue to be left as undefined to indicate to the ensuing code that its value was not forcefed. */return [endValue || 0,easing,startValue];} /* Cycle through each property in the map, looking for shorthand color properties (e.g. "color" as opposed to "colorRed"). Inject the corresponding - colorRed, colorGreen, and colorBlue RGB component tweens into the propertiesMap (which Velocity understands) and remove the shorthand property. */; /* The per-element isAnimating flag is used to indicate whether it's safe (i.e. the data isn't stale) - to transfer over end values to use as start values. If it's set to true and there is a previous - Velocity call to pull values from, do so. */if(Data(element).tweensContainer && Data(element).isAnimating === true){lastTweensContainer = Data(element).tweensContainer;}$.each(propertiesMap,function(property,value){ /* Find shorthand color properties that have been passed a hex string. */if(RegExp("^" + CSS.Lists.colors.join("$|^") + "$").test(property)){ /* Parse the value data for each shorthand. */var valueData=parsePropertyValue(value,true),endValue=valueData[0],easing=valueData[1],startValue=valueData[2];if(CSS.RegEx.isHex.test(endValue)){ /* Convert the hex strings into their RGB component arrays. */var colorComponents=["Red","Green","Blue"],endValueRGB=CSS.Values.hexToRgb(endValue),startValueRGB=startValue?CSS.Values.hexToRgb(startValue):undefined; /* Inject the RGB component tweens into propertiesMap. */for(var i=0;i < colorComponents.length;i++) {var dataArray=[endValueRGB[i]];if(easing){dataArray.push(easing);}if(startValueRGB !== undefined){dataArray.push(startValueRGB[i]);}propertiesMap[property + colorComponents[i]] = dataArray;} /* Remove the intermediary shorthand property entry now that we've processed it. */delete propertiesMap[property];}}}); /* Create a tween out of each property, and append its associated data to tweensContainer. */for(property in propertiesMap) { /* Separates a property value into its numeric value and its unit type. */var separateValue=function separateValue(property,value){var unitType,numericValue;numericValue = (value || "0").toString().toLowerCase() /* Match the unit type at the end of the value. */.replace(/[%A-z]+$/,function(match){ /* Grab the unit type. */unitType = match; /* Strip the unit type off of value. */return "";}); /* If no unit type was supplied, assign one that is appropriate for this property (e.g. "deg" for rotateZ or "px" for width). */if(!unitType){unitType = CSS.Values.getUnitType(property);}return [numericValue,unitType];} /* Separate startValue. */; /*************************** - Unit Ratio Calculation - ***************************/ /* When queried, the browser returns (most) CSS property values in pixels. Therefore, if an endValue with a unit type of - %, em, or rem is animated toward, startValue must be converted from pixels into the same unit type as endValue in order - for value manipulation logic (increment/decrement) to proceed. Further, if the startValue was forcefed or transferred - from a previous call, startValue may also not be in pixels. Unit conversion logic therefore consists of two steps: - 1) Calculating the ratio of %/em/rem/vh/vw relative to pixels - 2) Converting startValue into the same unit of measurement as endValue based on these ratios. */ /* Unit conversion ratios are calculated by inserting a sibling node next to the target node, copying over its position property, - setting values with the target unit type then comparing the returned pixel value. */ /* Note: Even if only one of these unit types is being animated, all unit ratios are calculated at once since the overhead - of batching the SETs and GETs together upfront outweights the potential overhead - of layout thrashing caused by re-querying for uncalculated ratios for subsequently-processed properties. */ /* Todo: Shift this logic into the calls' first tick instance so that it's synced with RAF. */var calculateUnitRatios=function calculateUnitRatios(){ /************************ - Same Ratio Checks - ************************/ /* The properties below are used to determine whether the element differs sufficiently from this call's - previously iterated element to also differ in its unit conversion ratios. If the properties match up with those - of the prior element, the prior element's conversion ratios are used. Like most optimizations in Velocity, - this is done to minimize DOM querying. */var sameRatioIndicators={myParent:element.parentNode || document.body, /* GET */position:CSS.getPropertyValue(element,"position"), /* GET */fontSize:CSS.getPropertyValue(element,"fontSize") /* GET */}, /* Determine if the same % ratio can be used. % is based on the element's position value and its parent's width and height dimensions. */samePercentRatio=sameRatioIndicators.position === callUnitConversionData.lastPosition && sameRatioIndicators.myParent === callUnitConversionData.lastParent, /* Determine if the same em ratio can be used. em is relative to the element's fontSize. */sameEmRatio=sameRatioIndicators.fontSize === callUnitConversionData.lastFontSize; /* Store these ratio indicators call-wide for the next element to compare against. */callUnitConversionData.lastParent = sameRatioIndicators.myParent;callUnitConversionData.lastPosition = sameRatioIndicators.position;callUnitConversionData.lastFontSize = sameRatioIndicators.fontSize; /*************************** - Element-Specific Units - ***************************/ /* Note: IE8 rounds to the nearest pixel when returning CSS values, thus we perform conversions using a measurement - of 100 (instead of 1) to give our ratios a precision of at least 2 decimal values. */var measurement=100,unitRatios={};if(!sameEmRatio || !samePercentRatio){var dummy=Data(element).isSVG?document.createElementNS("http://www.w3.org/2000/svg","rect"):document.createElement("div");Velocity.init(dummy);sameRatioIndicators.myParent.appendChild(dummy); /* To accurately and consistently calculate conversion ratios, the element's cascaded overflow and box-sizing are stripped. - Similarly, since width/height can be artificially constrained by their min-/max- equivalents, these are controlled for as well. */ /* Note: Overflow must be also be controlled for per-axis since the overflow property overwrites its per-axis values. */$.each(["overflow","overflowX","overflowY"],function(i,property){Velocity.CSS.setPropertyValue(dummy,property,"hidden");});Velocity.CSS.setPropertyValue(dummy,"position",sameRatioIndicators.position);Velocity.CSS.setPropertyValue(dummy,"fontSize",sameRatioIndicators.fontSize);Velocity.CSS.setPropertyValue(dummy,"boxSizing","content-box"); /* width and height act as our proxy properties for measuring the horizontal and vertical % ratios. */$.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(i,property){Velocity.CSS.setPropertyValue(dummy,property,measurement + "%");}); /* paddingLeft arbitrarily acts as our proxy property for the em ratio. */Velocity.CSS.setPropertyValue(dummy,"paddingLeft",measurement + "em"); /* Divide the returned value by the measurement to get the ratio between 1% and 1px. Default to 1 since working with 0 can produce Infinite. */unitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth = (parseFloat(CSS.getPropertyValue(dummy,"width",null,true)) || 1) / measurement; /* GET */unitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight = (parseFloat(CSS.getPropertyValue(dummy,"height",null,true)) || 1) / measurement; /* GET */unitRatios.emToPx = callUnitConversionData.lastEmToPx = (parseFloat(CSS.getPropertyValue(dummy,"paddingLeft")) || 1) / measurement; /* GET */sameRatioIndicators.myParent.removeChild(dummy);}else {unitRatios.emToPx = callUnitConversionData.lastEmToPx;unitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth;unitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight;} /*************************** - Element-Agnostic Units - ***************************/ /* Whereas % and em ratios are determined on a per-element basis, the rem unit only needs to be checked - once per call since it's exclusively dependant upon document.body's fontSize. If this is the first time - that calculateUnitRatios() is being run during this call, remToPx will still be set to its default value of null, - so we calculate it now. */if(callUnitConversionData.remToPx === null){ /* Default to browsers' default fontSize of 16px in the case of 0. */callUnitConversionData.remToPx = parseFloat(CSS.getPropertyValue(document.body,"fontSize")) || 16; /* GET */} /* Similarly, viewport units are %-relative to the window's inner dimensions. */if(callUnitConversionData.vwToPx === null){callUnitConversionData.vwToPx = parseFloat(window.innerWidth) / 100; /* GET */callUnitConversionData.vhToPx = parseFloat(window.innerHeight) / 100; /* GET */}unitRatios.remToPx = callUnitConversionData.remToPx;unitRatios.vwToPx = callUnitConversionData.vwToPx;unitRatios.vhToPx = callUnitConversionData.vhToPx;if(Velocity.debug >= 1)console.log("Unit ratios: " + JSON.stringify(unitRatios),element);return unitRatios;} /******************** - Unit Conversion - ********************/ /* The * and / operators, which are not passed in with an associated unit, inherently use startValue's unit. Skip value and unit conversion. */; /************************** - Start Value Sourcing - **************************/ /* Parse out endValue, easing, and startValue from the property's data. */valueData = parsePropertyValue(propertiesMap[property]);endValue = valueData[0];easing = valueData[1];startValue = valueData[2]; /* Now that the original property name's format has been used for the parsePropertyValue() lookup above, - we force the property to its camelCase styling to normalize it for manipulation. */property = CSS.Names.camelCase(property); /* In case this property is a hook, there are circumstances where we will intend to work on the hook's root property and not the hooked subproperty. */rootProperty = CSS.Hooks.getRoot(property);rootPropertyValue = false; /* Other than for the dummy tween property, properties that are not supported by the browser (and do not have an associated normalization) will - inherently produce no style changes when set, so they are skipped in order to decrease animation tick overhead. - Property support is determined via prefixCheck(), which returns a false flag when no supported is detected. */ /* Note: Since SVG elements have some of their properties directly applied as HTML attributes, - there is no way to check for their explicit browser support, and so we skip skip this check for them. */if(!Data(element).isSVG && rootProperty !== "tween" && CSS.Names.prefixCheck(rootProperty)[1] === false && CSS.Normalizations.registered[rootProperty] === undefined){if(Velocity.debug)console.log("Skipping [" + rootProperty + "] due to a lack of browser support.");continue;} /* If the display option is being set to a non-"none" (e.g. "block") and opacity (filter on IE<=8) is being - animated to an endValue of non-zero, the user's intention is to fade in from invisible, thus we forcefeed opacity - a startValue of 0 if its startValue hasn't already been sourced by value transferring or prior forcefeeding. */if((opts.display !== undefined && opts.display !== null && opts.display !== "none" || opts.visibility !== undefined && opts.visibility !== "hidden") && /opacity|filter/.test(property) && !startValue && endValue !== 0){startValue = 0;} /* If values have been transferred from the previous Velocity call, extract the endValue and rootPropertyValue - for all of the current call's properties that were *also* animated in the previous call. */ /* Note: Value transferring can optionally be disabled by the user via the _cacheValues option. */if(opts._cacheValues && lastTweensContainer && lastTweensContainer[property]){if(startValue === undefined){startValue = lastTweensContainer[property].endValue + lastTweensContainer[property].unitType;} /* The previous call's rootPropertyValue is extracted from the element's data cache since that's the - instance of rootPropertyValue that gets freshly updated by the tweening process, whereas the rootPropertyValue - attached to the incoming lastTweensContainer is equal to the root property's value prior to any tweening. */rootPropertyValue = Data(element).rootPropertyValueCache[rootProperty]; /* If values were not transferred from a previous Velocity call, query the DOM as needed. */}else { /* Handle hooked properties. */if(CSS.Hooks.registered[property]){if(startValue === undefined){rootPropertyValue = CSS.getPropertyValue(element,rootProperty); /* GET */ /* Note: The following getPropertyValue() call does not actually trigger a DOM query; - getPropertyValue() will extract the hook from rootPropertyValue. */startValue = CSS.getPropertyValue(element,property,rootPropertyValue); /* If startValue is already defined via forcefeeding, do not query the DOM for the root property's value; - just grab rootProperty's zero-value template from CSS.Hooks. This overwrites the element's actual - root property value (if one is set), but this is acceptable since the primary reason users forcefeed is - to avoid DOM queries, and thus we likewise avoid querying the DOM for the root property's value. */}else { /* Grab this hook's zero-value template, e.g. "0px 0px 0px black". */rootPropertyValue = CSS.Hooks.templates[rootProperty][1];} /* Handle non-hooked properties that haven't already been defined via forcefeeding. */}else if(startValue === undefined){startValue = CSS.getPropertyValue(element,property); /* GET */}} /************************** - Value Data Extraction - **************************/operator = false;separatedValue = separateValue(property,startValue);startValue = separatedValue[0];startValueUnitType = separatedValue[1]; /* Separate endValue, and extract a value operator (e.g. "+=", "-=") if one exists. */separatedValue = separateValue(property,endValue);endValue = separatedValue[0].replace(/^([+-\/*])=/,function(match,subMatch){operator = subMatch; /* Strip the operator off of the value. */return "";});endValueUnitType = separatedValue[1]; /* Parse float values from endValue and startValue. Default to 0 if NaN is returned. */startValue = parseFloat(startValue) || 0;endValue = parseFloat(endValue) || 0; /*************************************** - Property-Specific Value Conversion - ***************************************/ /* Custom support for properties that don't actually accept the % unit type, but where pollyfilling is trivial and relatively foolproof. */if(endValueUnitType === "%"){ /* A %-value fontSize/lineHeight is relative to the parent's fontSize (as opposed to the parent's dimensions), - which is identical to the em unit's behavior, so we piggyback off of that. */if(/^(fontSize|lineHeight)$/.test(property)){ /* Convert % into an em decimal value. */endValue = endValue / 100;endValueUnitType = "em"; /* For scaleX and scaleY, convert the value into its decimal format and strip off the unit type. */}else if(/^scale/.test(property)){endValue = endValue / 100;endValueUnitType = ""; /* For RGB components, take the defined percentage of 255 and strip off the unit type. */}else if(/(Red|Green|Blue)$/i.test(property)){endValue = endValue / 100 * 255;endValueUnitType = "";}}if(/[\/*]/.test(operator)){endValueUnitType = startValueUnitType; /* If startValue and endValue differ in unit type, convert startValue into the same unit type as endValue so that if endValueUnitType - is a relative unit (%, em, rem), the values set during tweening will continue to be accurately relative even if the metrics they depend - on are dynamically changing during the course of the animation. Conversely, if we always normalized into px and used px for setting values, the px ratio - would become stale if the original unit being animated toward was relative and the underlying metrics change during the animation. */ /* Since 0 is 0 in any unit type, no conversion is necessary when startValue is 0 -- we just start at 0 with endValueUnitType. */}else if(startValueUnitType !== endValueUnitType && startValue !== 0){ /* Unit conversion is also skipped when endValue is 0, but *startValueUnitType* must be used for tween values to remain accurate. */ /* Note: Skipping unit conversion here means that if endValueUnitType was originally a relative unit, the animation won't relatively - match the underlying metrics if they change, but this is acceptable since we're animating toward invisibility instead of toward visibility, - which remains past the point of the animation's completion. */if(endValue === 0){endValueUnitType = startValueUnitType;}else { /* By this point, we cannot avoid unit conversion (it's undesirable since it causes layout thrashing). - If we haven't already, we trigger calculateUnitRatios(), which runs once per element per call. */elementUnitConversionData = elementUnitConversionData || calculateUnitRatios(); /* The following RegEx matches CSS properties that have their % values measured relative to the x-axis. */ /* Note: W3C spec mandates that all of margin and padding's properties (even top and bottom) are %-relative to the *width* of the parent element. */axis = /margin|padding|left|right|width|text|word|letter/i.test(property) || /X$/.test(property) || property === "x"?"x":"y"; /* In order to avoid generating n^2 bespoke conversion functions, unit conversion is a two-step process: - 1) Convert startValue into pixels. 2) Convert this new pixel value into endValue's unit type. */switch(startValueUnitType){case "%": /* Note: translateX and translateY are the only properties that are %-relative to an element's own dimensions -- not its parent's dimensions. - Velocity does not include a special conversion process to account for this behavior. Therefore, animating translateX/Y from a % value - to a non-% value will produce an incorrect start value. Fortunately, this sort of cross-unit conversion is rarely done by users in practice. */startValue *= axis === "x"?elementUnitConversionData.percentToPxWidth:elementUnitConversionData.percentToPxHeight;break;case "px": /* px acts as our midpoint in the unit conversion process; do nothing. */break;default:startValue *= elementUnitConversionData[startValueUnitType + "ToPx"];} /* Invert the px ratios to convert into to the target unit. */switch(endValueUnitType){case "%":startValue *= 1 / (axis === "x"?elementUnitConversionData.percentToPxWidth:elementUnitConversionData.percentToPxHeight);break;case "px": /* startValue is already in px, do nothing; we're done. */break;default:startValue *= 1 / elementUnitConversionData[endValueUnitType + "ToPx"];}}} /********************* - Relative Values - *********************/ /* Operator logic must be performed last since it requires unit-normalized start and end values. */ /* Note: Relative *percent values* do not behave how most people think; while one would expect "+=50%" - to increase the property 1.5x its current value, it in fact increases the percent units in absolute terms: - 50 points is added on top of the current % value. */switch(operator){case "+":endValue = startValue + endValue;break;case "-":endValue = startValue - endValue;break;case "*":endValue = startValue * endValue;break;case "/":endValue = startValue / endValue;break;} /************************** - tweensContainer Push - **************************/ /* Construct the per-property tween object, and push it to the element's tweensContainer. */tweensContainer[property] = {rootPropertyValue:rootPropertyValue,startValue:startValue,currentValue:startValue,endValue:endValue,unitType:endValueUnitType,easing:easing};if(Velocity.debug)console.log("tweensContainer (" + property + "): " + JSON.stringify(tweensContainer[property]),element);} /* Along with its property data, store a reference to the element itself onto tweensContainer. */tweensContainer.element = element;})();} /***************** - Call Push - *****************/ /* Note: tweensContainer can be empty if all of the properties in this call's property map were skipped due to not - being supported by the browser. The element property is used for checking that the tweensContainer has been appended to. */if(tweensContainer.element){ /* Apply the "velocity-animating" indicator class. */CSS.Values.addClass(element,"velocity-animating"); /* The call array houses the tweensContainers for each element being animated in the current call. */call.push(tweensContainer); /* Store the tweensContainer and options if we're working on the default effects queue, so that they can be used by the reverse command. */if(opts.queue === ""){Data(element).tweensContainer = tweensContainer;Data(element).opts = opts;} /* Switch on the element's animating flag. */Data(element).isAnimating = true; /* Once the final element in this call's element set has been processed, push the call array onto - Velocity.State.calls for the animation tick to immediately begin processing. */if(elementsIndex === elementsLength - 1){ /* Add the current call plus its associated metadata (the element set and the call's options) onto the global call container. - Anything on this call container is subjected to tick() processing. */Velocity.State.calls.push([call,elements,opts,null,promiseData.resolver]); /* If the animation tick isn't running, start it. (Velocity shuts it off when there are no active calls to process.) */if(Velocity.State.isTicking === false){Velocity.State.isTicking = true; /* Start the tick loop. */tick();}}else {elementsIndex++;}}} /* When the queue option is set to false, the call skips the element's queue and fires immediately. */if(opts.queue === false){ /* Since this buildQueue call doesn't respect the element's existing queue (which is where a delay option would have been appended), - we manually inject the delay property here with an explicit setTimeout. */if(opts.delay){setTimeout(buildQueue,opts.delay);}else {buildQueue();} /* Otherwise, the call undergoes element queueing as normal. */ /* Note: To interoperate with jQuery, Velocity uses jQuery's own $.queue() stack for queuing logic. */}else {$.queue(element,opts.queue,function(next,clearQueue){ /* If the clearQueue flag was passed in by the stop command, resolve this call's promise. (Promises can only be resolved once, - so it's fine if this is repeatedly triggered for each element in the associated call.) */if(clearQueue === true){if(promiseData.promise){promiseData.resolver(elements);} /* Do not continue with animation queueing. */return true;} /* This flag indicates to the upcoming completeCall() function that this queue entry was initiated by Velocity. - See completeCall() for further details. */Velocity.velocityQueueEntryFlag = true;buildQueue(next);});} /********************* - Auto-Dequeuing - *********************/ /* As per jQuery's $.queue() behavior, to fire the first non-custom-queue entry on an element, the element - must be dequeued if its queue stack consists *solely* of the current call. (This can be determined by checking - for the "inprogress" item that jQuery prepends to active queue stack arrays.) Regardless, whenever the element's - queue is further appended with additional items -- including $.delay()'s or even $.animate() calls, the queue's - first entry is automatically fired. This behavior contrasts that of custom queues, which never auto-fire. */ /* Note: When an element set is being subjected to a non-parallel Velocity call, the animation will not begin until - each one of the elements in the set has reached the end of its individually pre-existing queue chain. */ /* Note: Unfortunately, most people don't fully grasp jQuery's powerful, yet quirky, $.queue() function. - Lean more here: http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me */if((opts.queue === "" || opts.queue === "fx") && $.queue(element)[0] !== "inprogress"){$.dequeue(element);}} /************************** - Element Set Iteration - **************************/ /* If the "nodeType" property exists on the elements variable, we're animating a single element. - Place it in an array so that $.each() can iterate over it. */$.each(elements,function(i,element){ /* Ensure each element in a set has a nodeType (is a real element) to avoid throwing errors. */if(Type.isNode(element)){processElement.call(element);}}); /****************** - Option: Loop - ******************/ /* The loop option accepts an integer indicating how many times the element should loop between the values in the - current call's properties map and the element's property values prior to this call. */ /* Note: The loop option's logic is performed here -- after element processing -- because the current call needs - to undergo its queue insertion prior to the loop option generating its series of constituent "reverse" calls, - which chain after the current call. Two reverse calls (two "alternations") constitute one loop. */var opts=$.extend({},Velocity.defaults,options),reverseCallsCount;opts.loop = parseInt(opts.loop);reverseCallsCount = opts.loop * 2 - 1;if(opts.loop){ /* Double the loop count to convert it into its appropriate number of "reverse" calls. - Subtract 1 from the resulting value since the current call is included in the total alternation count. */for(var x=0;x < reverseCallsCount;x++) { /* Since the logic for the reverse action occurs inside Queueing and therefore this call's options object - isn't parsed until then as well, the current call's delay option must be explicitly passed into the reverse - call so that the delay logic that occurs inside *Pre-Queueing* can process it. */var reverseOptions={delay:opts.delay,progress:opts.progress}; /* If a complete callback was passed into this call, transfer it to the loop redirect's final "reverse" call - so that it's triggered when the entire redirect is complete (and not when the very first animation is complete). */if(x === reverseCallsCount - 1){reverseOptions.display = opts.display;reverseOptions.visibility = opts.visibility;reverseOptions.complete = opts.complete;}animate(elements,"reverse",reverseOptions);}} /*************** - Chaining - ***************/ /* Return the elements back to the call chain, with wrapped elements taking precedence in case Velocity was called via the $.fn. extension. */return getChain();}; /* Turn Velocity into the animation function, extended with the pre-existing Velocity object. */Velocity = $.extend(animate,Velocity); /* For legacy support, also expose the literal animate method. */Velocity.animate = animate; /************** - Timing - **************/ /* Ticker function. */var ticker=window.requestAnimationFrame || rAFShim; /* Inactive browser tabs pause rAF, which results in all active animations immediately sprinting to their completion states when the tab refocuses. - To get around this, we dynamically switch rAF to setTimeout (which the browser *doesn't* pause) when the tab loses focus. We skip this for mobile - devices to avoid wasting battery power on inactive tabs. */ /* Note: Tab focus detection doesn't work on older versions of IE, but that's okay since they don't support rAF to begin with. */if(!Velocity.State.isMobile && document.hidden !== undefined){document.addEventListener("visibilitychange",function(){ /* Reassign the rAF function (which the global tick() function uses) based on the tab's focus state. */if(document.hidden){ticker = function(callback){ /* The tick function needs a truthy first argument in order to pass its internal timestamp check. */return setTimeout(function(){callback(true);},16);}; /* The rAF loop has been paused by the browser, so we manually restart the tick. */tick();}else {ticker = window.requestAnimationFrame || rAFShim;}});} /************ - Tick - ************/ /* Note: All calls to Velocity are pushed to the Velocity.State.calls array, which is fully iterated through upon each tick. */function tick(timestamp){ /* An empty timestamp argument indicates that this is the first tick occurence since ticking was turned on. - We leverage this metadata to fully ignore the first tick pass since RAF's initial pass is fired whenever - the browser's next tick sync time occurs, which results in the first elements subjected to Velocity - calls being animated out of sync with any elements animated immediately thereafter. In short, we ignore - the first RAF tick pass so that elements being immediately consecutively animated -- instead of simultaneously animated - by the same Velocity call -- are properly batched into the same initial RAF tick and consequently remain in sync thereafter. */if(timestamp){ /* We ignore RAF's high resolution timestamp since it can be significantly offset when the browser is - under high stress; we opt for choppiness over allowing the browser to drop huge chunks of frames. */var timeCurrent=new Date().getTime(); /******************** - Call Iteration - ********************/var callsLength=Velocity.State.calls.length; /* To speed up iterating over this array, it is compacted (falsey items -- calls that have completed -- are removed) - when its length has ballooned to a point that can impact tick performance. This only becomes necessary when animation - has been continuous with many elements over a long period of time; whenever all active calls are completed, completeCall() clears Velocity.State.calls. */if(callsLength > 10000){Velocity.State.calls = compactSparseArray(Velocity.State.calls);} /* Iterate through each active call. */for(var i=0;i < callsLength;i++) { /* When a Velocity call is completed, its Velocity.State.calls entry is set to false. Continue on to the next call. */if(!Velocity.State.calls[i]){continue;} /************************ - Call-Wide Variables - ************************/var callContainer=Velocity.State.calls[i],call=callContainer[0],opts=callContainer[2],timeStart=callContainer[3],firstTick=!!timeStart,tweenDummyValue=null; /* If timeStart is undefined, then this is the first time that this call has been processed by tick(). - We assign timeStart now so that its value is as close to the real animation start time as possible. - (Conversely, had timeStart been defined when this call was added to Velocity.State.calls, the delay - between that time and now would cause the first few frames of the tween to be skipped since - percentComplete is calculated relative to timeStart.) */ /* Further, subtract 16ms (the approximate resolution of RAF) from the current time value so that the - first tick iteration isn't wasted by animating at 0% tween completion, which would produce the - same style value as the element's current value. */if(!timeStart){timeStart = Velocity.State.calls[i][3] = timeCurrent - 16;} /* The tween's completion percentage is relative to the tween's start time, not the tween's start value - (which would result in unpredictable tween durations since JavaScript's timers are not particularly accurate). - Accordingly, we ensure that percentComplete does not exceed 1. */var percentComplete=Math.min((timeCurrent - timeStart) / opts.duration,1); /********************** - Element Iteration - **********************/ /* For every call, iterate through each of the elements in its set. */for(var j=0,callLength=call.length;j < callLength;j++) {var tweensContainer=call[j],element=tweensContainer.element; /* Check to see if this element has been deleted midway through the animation by checking for the - continued existence of its data cache. If it's gone, skip animating this element. */if(!Data(element)){continue;}var transformPropertyExists=false; /********************************** - Display & Visibility Toggling - **********************************/ /* If the display option is set to non-"none", set it upfront so that the element can become visible before tweening begins. - (Otherwise, display's "none" value is set in completeCall() once the animation has completed.) */if(opts.display !== undefined && opts.display !== null && opts.display !== "none"){if(opts.display === "flex"){var flexValues=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];$.each(flexValues,function(i,flexValue){CSS.setPropertyValue(element,"display",flexValue);});}CSS.setPropertyValue(element,"display",opts.display);} /* Same goes with the visibility option, but its "none" equivalent is "hidden". */if(opts.visibility !== undefined && opts.visibility !== "hidden"){CSS.setPropertyValue(element,"visibility",opts.visibility);} /************************ - Property Iteration - ************************/ /* For every element, iterate through each property. */for(var property in tweensContainer) { /* Note: In addition to property tween data, tweensContainer contains a reference to its associated element. */if(property !== "element"){var tween=tweensContainer[property],currentValue, /* Easing can either be a pre-genereated function or a string that references a pre-registered easing - on the Velocity.Easings object. In either case, return the appropriate easing *function*. */easing=Type.isString(tween.easing)?Velocity.Easings[tween.easing]:tween.easing; /****************************** - Current Value Calculation - ******************************/ /* If this is the last tick pass (if we've reached 100% completion for this tween), - ensure that currentValue is explicitly set to its target endValue so that it's not subjected to any rounding. */if(percentComplete === 1){currentValue = tween.endValue; /* Otherwise, calculate currentValue based on the current delta from startValue. */}else {var tweenDelta=tween.endValue - tween.startValue;currentValue = tween.startValue + tweenDelta * easing(percentComplete,opts,tweenDelta); /* If no value change is occurring, don't proceed with DOM updating. */if(!firstTick && currentValue === tween.currentValue){continue;}}tween.currentValue = currentValue; /* If we're tweening a fake 'tween' property in order to log transition values, update the one-per-call variable so that - it can be passed into the progress callback. */if(property === "tween"){tweenDummyValue = currentValue;}else { /****************** - Hooks: Part I - ******************/ /* For hooked properties, the newly-updated rootPropertyValueCache is cached onto the element so that it can be used - for subsequent hooks in this call that are associated with the same root property. If we didn't cache the updated - rootPropertyValue, each subsequent update to the root property in this tick pass would reset the previous hook's - updates to rootPropertyValue prior to injection. A nice performance byproduct of rootPropertyValue caching is that - subsequently chained animations using the same hookRoot but a different hook can use this cached rootPropertyValue. */if(CSS.Hooks.registered[property]){var hookRoot=CSS.Hooks.getRoot(property),rootPropertyValueCache=Data(element).rootPropertyValueCache[hookRoot];if(rootPropertyValueCache){tween.rootPropertyValue = rootPropertyValueCache;}} /***************** - DOM Update - *****************/ /* setPropertyValue() returns an array of the property name and property value post any normalization that may have been performed. */ /* Note: To solve an IE<=8 positioning bug, the unit type is dropped when setting a property value of 0. */var adjustedSetData=CSS.setPropertyValue(element, /* SET */property,tween.currentValue + (parseFloat(currentValue) === 0?"":tween.unitType),tween.rootPropertyValue,tween.scrollData); /******************* - Hooks: Part II - *******************/ /* Now that we have the hook's updated rootPropertyValue (the post-processed value provided by adjustedSetData), cache it onto the element. */if(CSS.Hooks.registered[property]){ /* Since adjustedSetData contains normalized data ready for DOM updating, the rootPropertyValue needs to be re-extracted from its normalized form. ?? */if(CSS.Normalizations.registered[hookRoot]){Data(element).rootPropertyValueCache[hookRoot] = CSS.Normalizations.registered[hookRoot]("extract",null,adjustedSetData[1]);}else {Data(element).rootPropertyValueCache[hookRoot] = adjustedSetData[1];}} /*************** - Transforms - ***************/ /* Flag whether a transform property is being animated so that flushTransformCache() can be triggered once this tick pass is complete. */if(adjustedSetData[0] === "transform"){transformPropertyExists = true;}}}} /**************** - mobileHA - ****************/ /* If mobileHA is enabled, set the translate3d transform to null to force hardware acceleration. - It's safe to override this property since Velocity doesn't actually support its animation (hooks are used in its place). */if(opts.mobileHA){ /* Don't set the null transform hack if we've already done so. */if(Data(element).transformCache.translate3d === undefined){ /* All entries on the transformCache object are later concatenated into a single transform string via flushTransformCache(). */Data(element).transformCache.translate3d = "(0px, 0px, 0px)";transformPropertyExists = true;}}if(transformPropertyExists){CSS.flushTransformCache(element);}} /* The non-"none" display value is only applied to an element once -- when its associated call is first ticked through. - Accordingly, it's set to false so that it isn't re-processed by this call in the next tick. */if(opts.display !== undefined && opts.display !== "none"){Velocity.State.calls[i][2].display = false;}if(opts.visibility !== undefined && opts.visibility !== "hidden"){Velocity.State.calls[i][2].visibility = false;} /* Pass the elements and the timing data (percentComplete, msRemaining, timeStart, tweenDummyValue) into the progress callback. */if(opts.progress){opts.progress.call(callContainer[1],callContainer[1],percentComplete,Math.max(0,timeStart + opts.duration - timeCurrent),timeStart,tweenDummyValue);} /* If this call has finished tweening, pass its index to completeCall() to handle call cleanup. */if(percentComplete === 1){completeCall(i);}}} /* Note: completeCall() sets the isTicking flag to false when the last call on Velocity.State.calls has completed. */if(Velocity.State.isTicking){ticker(tick);}} /********************** - Call Completion - **********************/ /* Note: Unlike tick(), which processes all active calls at once, call completion is handled on a per-call basis. */function completeCall(callIndex,isStopped){ /* Ensure the call exists. */if(!Velocity.State.calls[callIndex]){return false;} /* Pull the metadata from the call. */var call=Velocity.State.calls[callIndex][0],elements=Velocity.State.calls[callIndex][1],opts=Velocity.State.calls[callIndex][2],resolver=Velocity.State.calls[callIndex][4];var remainingCallsExist=false; /************************* - Element Finalization - *************************/for(var i=0,callLength=call.length;i < callLength;i++) {var element=call[i].element; /* If the user set display to "none" (intending to hide the element), set it now that the animation has completed. */ /* Note: display:none isn't set when calls are manually stopped (via Velocity("stop"). */ /* Note: Display gets ignored with "reverse" calls and infinite loops, since this behavior would be undesirable. */if(!isStopped && !opts.loop){if(opts.display === "none"){CSS.setPropertyValue(element,"display",opts.display);}if(opts.visibility === "hidden"){CSS.setPropertyValue(element,"visibility",opts.visibility);}} /* If the element's queue is empty (if only the "inprogress" item is left at position 0) or if its queue is about to run - a non-Velocity-initiated entry, turn off the isAnimating flag. A non-Velocity-initiatied queue entry's logic might alter - an element's CSS values and thereby cause Velocity's cached value data to go stale. To detect if a queue entry was initiated by Velocity, - we check for the existence of our special Velocity.queueEntryFlag declaration, which minifiers won't rename since the flag - is assigned to jQuery's global $ object and thus exists out of Velocity's own scope. */if(opts.loop !== true && ($.queue(element)[1] === undefined || !/\.velocityQueueEntryFlag/i.test($.queue(element)[1]))){ /* The element may have been deleted. Ensure that its data cache still exists before acting on it. */if(Data(element)){Data(element).isAnimating = false; /* Clear the element's rootPropertyValueCache, which will become stale. */Data(element).rootPropertyValueCache = {};var transformHAPropertyExists=false; /* If any 3D transform subproperty is at its default value (regardless of unit type), remove it. */$.each(CSS.Lists.transforms3D,function(i,transformName){var defaultValue=/^scale/.test(transformName)?1:0,currentValue=Data(element).transformCache[transformName];if(Data(element).transformCache[transformName] !== undefined && new RegExp("^\\(" + defaultValue + "[^.]").test(currentValue)){transformHAPropertyExists = true;delete Data(element).transformCache[transformName];}}); /* Mobile devices have hardware acceleration removed at the end of the animation in order to avoid hogging the GPU's memory. */if(opts.mobileHA){transformHAPropertyExists = true;delete Data(element).transformCache.translate3d;} /* Flush the subproperty removals to the DOM. */if(transformHAPropertyExists){CSS.flushTransformCache(element);} /* Remove the "velocity-animating" indicator class. */CSS.Values.removeClass(element,"velocity-animating");}} /********************* - Option: Complete - *********************/ /* Complete is fired once per call (not once per element) and is passed the full raw DOM element set as both its context and its first argument. */ /* Note: Callbacks aren't fired when calls are manually stopped (via Velocity("stop"). */if(!isStopped && opts.complete && !opts.loop && i === callLength - 1){ /* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */try{opts.complete.call(elements,elements);}catch(error) {setTimeout(function(){throw error;},1);}} /********************** - Promise Resolving - **********************/ /* Note: Infinite loops don't return promises. */if(resolver && opts.loop !== true){resolver(elements);} /**************************** - Option: Loop (Infinite) - ****************************/if(Data(element) && opts.loop === true && !isStopped){ /* If a rotateX/Y/Z property is being animated to 360 deg with loop:true, swap tween start/end values to enable - continuous iterative rotation looping. (Otherise, the element would just rotate back and forth.) */$.each(Data(element).tweensContainer,function(propertyName,tweenContainer){if(/^rotate/.test(propertyName) && parseFloat(tweenContainer.endValue) === 360){tweenContainer.endValue = 0;tweenContainer.startValue = 360;}if(/^backgroundPosition/.test(propertyName) && parseFloat(tweenContainer.endValue) === 100 && tweenContainer.unitType === "%"){tweenContainer.endValue = 0;tweenContainer.startValue = 100;}});Velocity(element,"reverse",{loop:true,delay:opts.delay});} /*************** - Dequeueing - ***************/ /* Fire the next call in the queue so long as this call's queue wasn't set to false (to trigger a parallel animation), - which would have already caused the next call to fire. Note: Even if the end of the animation queue has been reached, - $.dequeue() must still be called in order to completely clear jQuery's animation queue. */if(opts.queue !== false){$.dequeue(element,opts.queue);}} /************************ - Calls Array Cleanup - ************************/ /* Since this call is complete, set it to false so that the rAF tick skips it. This array is later compacted via compactSparseArray(). - (For performance reasons, the call is set to false instead of being deleted from the array: http://www.html5rocks.com/en/tutorials/speed/v8/) */Velocity.State.calls[callIndex] = false; /* Iterate through the calls array to determine if this was the final in-progress animation. - If so, set a flag to end ticking and clear the calls array. */for(var j=0,callsLength=Velocity.State.calls.length;j < callsLength;j++) {if(Velocity.State.calls[j] !== false){remainingCallsExist = true;break;}}if(remainingCallsExist === false){ /* tick() will detect this flag upon its next iteration and subsequently turn itself off. */Velocity.State.isTicking = false; /* Clear the calls array so that its length is reset. */delete Velocity.State.calls;Velocity.State.calls = [];}} /****************** - Frameworks - ******************/ /* Both jQuery and Zepto allow their $.fn object to be extended to allow wrapped elements to be subjected to plugin calls. - If either framework is loaded, register a "velocity" extension pointing to Velocity's core animate() method. Velocity - also registers itself onto a global container (window.jQuery || window.Zepto || window) so that certain features are - accessible beyond just a per-element scope. This master object contains an .animate() method, which is later assigned to $.fn - (if jQuery or Zepto are present). Accordingly, Velocity can both act on wrapped DOM elements and stand alone for targeting raw DOM elements. */global.Velocity = Velocity;if(global !== window){ /* Assign the element function to Velocity's core animate() method. */global.fn.velocity = animate; /* Assign the object function's defaults to Velocity's global defaults object. */global.fn.velocity.defaults = Velocity.defaults;} /*********************** - Packaged Redirects - ***********************/ /* slideUp, slideDown */$.each(["Down","Up"],function(i,direction){Velocity.Redirects["slide" + direction] = function(element,options,elementsIndex,elementsSize,elements,promiseData){var opts=$.extend({},options),begin=opts.begin,complete=opts.complete,computedValues={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},inlineValues={};if(opts.display === undefined){ /* Show the element before slideDown begins and hide the element after slideUp completes. */ /* Note: Inline elements cannot have dimensions animated, so they're reverted to inline-block. */opts.display = direction === "Down"?Velocity.CSS.Values.getDisplayType(element) === "inline"?"inline-block":"block":"none";}opts.begin = function(){ /* If the user passed in a begin callback, fire it now. */begin && begin.call(elements,elements); /* Cache the elements' original vertical dimensional property values so that we can animate back to them. */for(var property in computedValues) {inlineValues[property] = element.style[property]; /* For slideDown, use forcefeeding to animate all vertical properties from 0. For slideUp, - use forcefeeding to start from computed values and animate down to 0. */var propertyValue=Velocity.CSS.getPropertyValue(element,property);computedValues[property] = direction === "Down"?[propertyValue,0]:[0,propertyValue];} /* Force vertical overflow content to clip so that sliding works as expected. */inlineValues.overflow = element.style.overflow;element.style.overflow = "hidden";};opts.complete = function(){ /* Reset element to its pre-slide inline values once its slide animation is complete. */for(var property in inlineValues) {element.style[property] = inlineValues[property];} /* If the user passed in a complete callback, fire it now. */complete && complete.call(elements,elements);promiseData && promiseData.resolver(elements);};Velocity(element,computedValues,opts);};}); /* fadeIn, fadeOut */$.each(["In","Out"],function(i,direction){Velocity.Redirects["fade" + direction] = function(element,options,elementsIndex,elementsSize,elements,promiseData){var opts=$.extend({},options),propertiesMap={opacity:direction === "In"?1:0},originalComplete=opts.complete; /* Since redirects are triggered individually for each element in the animated set, avoid repeatedly triggering - callbacks by firing them only when the final element has been reached. */if(elementsIndex !== elementsSize - 1){opts.complete = opts.begin = null;}else {opts.complete = function(){if(originalComplete){originalComplete.call(elements,elements);}promiseData && promiseData.resolver(elements);};} /* If a display was passed in, use it. Otherwise, default to "none" for fadeOut or the element-specific default for fadeIn. */ /* Note: We allow users to pass in "null" to skip display setting altogether. */if(opts.display === undefined){opts.display = direction === "In"?"auto":"none";}Velocity(this,propertiesMap,opts);};});return Velocity;})(window.jQuery || window.Zepto || window,window,document);}); /****************** - Known Issues -******************/ /* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent. -Velocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties -will produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */ /************************* - Value Transferring - *************************/ /* If this queue entry follows a previous Velocity-initiated queue entry *and* if this entry was created - while the element was in the process of being animated by Velocity, then this current call is safe to use - the end values from the prior call as its start values. Velocity attempts to perform this value transfer - process whenever possible in order to avoid requerying the DOM. */ /* If values aren't transferred from a prior call and start values were not forcefed by the user (more on this below), - then the DOM is queried for the element's current values as a last resort. */ /* Note: Conversely, animation reversal (and looping) *always* perform inter-call value transfers; they never requery the DOM. */ + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); /* Browser globals. */}else {factory();}})(function(){"use strict";return (function(global,window,document,undefined){ /*************** + Summary + ***************/ /* + - CSS: CSS stack that works independently from the rest of Velocity. + - animate(): Core animation method that iterates over the targeted elements and queues the incoming call onto each element individually. + - Pre-Queueing: Prepare the element for animation by instantiating its data cache and processing the call's options. + - Queueing: The logic that runs once the call has reached its point of execution in the element's $.queue() stack. + Most logic is placed here to avoid risking it becoming stale (if the element's properties have changed). + - Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container. + - tick(): The single requestAnimationFrame loop responsible for tweening all in-progress calls. + - completeCall(): Handles the cleanup process for each Velocity call. + */ /********************* + Helper Functions + *********************/ /* IE detection. Gist: https://gist.github.com/julianshapiro/9098609 */var IE=(function(){if(document.documentMode){return document.documentMode;}else {for(var i=7;i > 4;i--) {var div=document.createElement("div");div.innerHTML = "";if(div.getElementsByTagName("span").length){div = null;return i;}}}return undefined;})(); /* rAF shim. Gist: https://gist.github.com/julianshapiro/9497513 */var rAFShim=(function(){var timeLast=0;return window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback){var timeCurrent=new Date().getTime(),timeDelta; /* Dynamically set delay on a per-tick basis to match 60fps. */ /* Technique by Erik Moller. MIT license: https://gist.github.com/paulirish/1579671 */timeDelta = Math.max(0,16 - (timeCurrent - timeLast));timeLast = timeCurrent + timeDelta;return setTimeout(function(){callback(timeCurrent + timeDelta);},timeDelta);};})();var performance=(function(){var perf=window.performance || {};if(typeof perf.now !== "function"){var nowOffset=perf.timing && perf.timing.navigationStart?perf.timing.navigationStart:new Date().getTime();perf.now = function(){return new Date().getTime() - nowOffset;};}return perf;})(); /* Array compacting. Copyright Lo-Dash. MIT License: https://github.com/lodash/lodash/blob/master/LICENSE.txt */function compactSparseArray(array){var index=-1,length=array?array.length:0,result=[];while(++index < length) {var value=array[index];if(value){result.push(value);}}return result;} /** + * Shim for "fixing" IE's lack of support (IE < 9) for applying slice + * on host objects like NamedNodeMap, NodeList, and HTMLCollection + * (technically, since host objects have been implementation-dependent, + * at least before ES2015, IE hasn't needed to work this way). + * Also works on strings, fixes IE < 9 to allow an explicit undefined + * for the 2nd argument (as in Firefox), and prevents errors when + * called on other DOM objects. + */var _slice=(function(){var slice=Array.prototype.slice;try{ // Can't be used with DOM elements in IE < 9 +slice.call(document.documentElement);return slice;}catch(e) { // Fails in IE < 9 +// This will work for genuine arrays, array-like objects, +// NamedNodeMap (attributes, entities, notations), +// NodeList (e.g., getElementsByTagName), HTMLCollection (e.g., childNodes), +return function(begin,end){var len=this.length;if(typeof begin !== "number"){begin = 0;} // IE < 9 gets unhappy with an undefined end argument +if(typeof end !== "number"){end = len;} // For native Array objects, we use the native slice function +if(this.slice){return slice.call(this,begin,end);} // For array like object we handle it ourselves. +var i,cloned=[], // Handle negative value for "begin" +start=begin >= 0?begin:Math.max(0,len + begin), // Handle negative value for "end" +upTo=end < 0?len + end:Math.min(end,len), // Actual expected size of the slice +size=upTo - start;if(size > 0){cloned = new Array(size);if(this.charAt){for(i = 0;i < size;i++) {cloned[i] = this.charAt(start + i);}}else {for(i = 0;i < size;i++) {cloned[i] = this[start + i];}}}return cloned;};}})(); /* .indexOf doesn't exist in IE<9 */var _inArray=function _inArray(){if(Array.prototype.includes){return function(arr,val){return arr.includes(val);};}if(Array.prototype.indexOf){return function(arr,val){return arr.indexOf(val) >= 0;};}return function(arr,val){for(var i=0;i < arr.length;i++) {if(arr[i] === val){return true;}}return false;};};function sanitizeElements(elements){ /* Unwrap jQuery/Zepto objects. */if(Type.isWrapped(elements)){elements = _slice.call(elements); /* Wrap a single element in an array so that $.each() can iterate with the element instead of its node's children. */}else if(Type.isNode(elements)){elements = [elements];}return elements;}var Type={isNumber:function isNumber(variable){return typeof variable === "number";},isString:function isString(variable){return typeof variable === "string";},isArray:Array.isArray || function(variable){return Object.prototype.toString.call(variable) === "[object Array]";},isFunction:function isFunction(variable){return Object.prototype.toString.call(variable) === "[object Function]";},isNode:function isNode(variable){return variable && variable.nodeType;}, /* Determine if variable is an array-like wrapped jQuery, Zepto or similar element, or even a NodeList etc. */ /* NOTE: HTMLFormElements also have a length. */isWrapped:function isWrapped(variable){return variable && variable !== window && Type.isNumber(variable.length) && !Type.isString(variable) && !Type.isFunction(variable) && !Type.isNode(variable) && (variable.length === 0 || Type.isNode(variable[0]));},isSVG:function isSVG(variable){return window.SVGElement && variable instanceof window.SVGElement;},isEmptyObject:function isEmptyObject(variable){for(var name in variable) {if(variable.hasOwnProperty(name)){return false;}}return true;}}; /***************** + Dependencies + *****************/var $,isJQuery=false;if(global.fn && global.fn.jquery){$ = global;isJQuery = true;}else {$ = window.Velocity.Utilities;}if(IE <= 8 && !isJQuery){throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");}else if(IE <= 7){ /* Revert to jQuery's $.animate(), and lose Velocity's extra features. */jQuery.fn.velocity = jQuery.fn.animate; /* Now that $.fn.velocity is aliased, abort this Velocity declaration. */return;} /***************** + Constants + *****************/var DURATION_DEFAULT=400,EASING_DEFAULT="swing"; /************* + State + *************/var Velocity={ /* Container for page-wide Velocity state data. */State:{ /* Detect mobile devices to determine if mobileHA should be turned on. */isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), /* The mobileHA option's behavior changes on older Android devices (Gingerbread, versions 2.3.3-2.3.7). */isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:window.chrome,isFirefox:/Firefox/i.test(navigator.userAgent), /* Create a cached element for re-use when checking for CSS property prefixes. */prefixElement:document.createElement("div"), /* Cache every prefix match to avoid repeating lookups. */prefixMatches:{}, /* Cache the anchor used for animating window scrolling. */scrollAnchor:null, /* Cache the browser-specific property names associated with the scroll anchor. */scrollPropertyLeft:null,scrollPropertyTop:null, /* Keep track of whether our RAF tick is running. */isTicking:false, /* Container for every in-progress call to Velocity. */calls:[],delayedElements:{count:0}}, /* Velocity's custom CSS stack. Made global for unit testing. */CSS:{ /* Defined below. */}, /* A shim of the jQuery utility functions used by Velocity -- provided by Velocity's optional jQuery shim. */Utilities:$, /* Container for the user's custom animation redirects that are referenced by name in place of the properties map argument. */Redirects:{ /* Manually registered by the user. */},Easings:{ /* Defined below. */}, /* Attempt to use ES6 Promises by default. Users can override this with a third-party promises library. */Promise:window.Promise, /* Velocity option defaults, which can be overriden by the user. */defaults:{queue:"",duration:DURATION_DEFAULT,easing:EASING_DEFAULT,begin:undefined,complete:undefined,progress:undefined,display:undefined,visibility:undefined,loop:false,delay:false,mobileHA:true, /* Advanced: Set to false to prevent property values from being cached between consecutive Velocity-initiated chain calls. */_cacheValues:true, /* Advanced: Set to false if the promise should always resolve on empty element lists. */promiseRejectEmpty:true}, /* A design goal of Velocity is to cache data wherever possible in order to avoid DOM requerying. Accordingly, each element has a data cache. */init:function init(element){$.data(element,"velocity",{ /* Store whether this is an SVG element, since its properties are retrieved and updated differently than standard HTML elements. */isSVG:Type.isSVG(element), /* Keep track of whether the element is currently being animated by Velocity. + This is used to ensure that property values are not transferred between non-consecutive (stale) calls. */isAnimating:false, /* A reference to the element's live computedStyle object. Learn more here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */computedStyle:null, /* Tween data is cached for each animation on the element so that data can be passed across calls -- + in particular, end values are used as subsequent start values in consecutive Velocity calls. */tweensContainer:null, /* The full root property values of each CSS hook being animated on this element are cached so that: + 1) Concurrently-animating hooks sharing the same root can have their root values' merged into one while tweening. + 2) Post-hook-injection root values can be transferred over to consecutively chained Velocity calls as starting root values. */rootPropertyValueCache:{}, /* A cache for transform updates, which must be manually flushed via CSS.flushTransformCache(). */transformCache:{}});}, /* A parallel to jQuery's $.css(), used for getting/setting Velocity's hooked CSS properties. */hook:null, /* Defined below. */ /* Velocity-wide animation time remapping for testing purposes. */mock:false,version:{major:1,minor:5,patch:0}, /* Set to 1 or 2 (most verbose) to output debug info to console. */debug:false, /* Use rAF high resolution timestamp when available */timestamp:true, /* Pause all animations */pauseAll:function pauseAll(queueName){var currentTime=new Date().getTime();$.each(Velocity.State.calls,function(i,activeCall){if(activeCall){ /* If we have a queueName and this call is not on that queue, skip */if(queueName !== undefined && (activeCall[2].queue !== queueName || activeCall[2].queue === false)){return true;} /* Set call to paused */activeCall[5] = {resume:false};}}); /* Pause timers on any currently delayed calls */$.each(Velocity.State.delayedElements,function(k,element){if(!element){return;}pauseDelayOnElement(element,currentTime);});}, /* Resume all animations */resumeAll:function resumeAll(queueName){var currentTime=new Date().getTime();$.each(Velocity.State.calls,function(i,activeCall){if(activeCall){ /* If we have a queueName and this call is not on that queue, skip */if(queueName !== undefined && (activeCall[2].queue !== queueName || activeCall[2].queue === false)){return true;} /* Set call to resumed if it was paused */if(activeCall[5]){activeCall[5].resume = true;}}}); /* Resume timers on any currently delayed calls */$.each(Velocity.State.delayedElements,function(k,element){if(!element){return;}resumeDelayOnElement(element,currentTime);});}}; /* Retrieve the appropriate scroll anchor and property name for the browser: https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY */if(window.pageYOffset !== undefined){Velocity.State.scrollAnchor = window;Velocity.State.scrollPropertyLeft = "pageXOffset";Velocity.State.scrollPropertyTop = "pageYOffset";}else {Velocity.State.scrollAnchor = document.documentElement || document.body.parentNode || document.body;Velocity.State.scrollPropertyLeft = "scrollLeft";Velocity.State.scrollPropertyTop = "scrollTop";} /* Shorthand alias for jQuery's $.data() utility. */function Data(element){ /* Hardcode a reference to the plugin name. */var response=$.data(element,"velocity"); /* jQuery <=1.4.2 returns null instead of undefined when no match is found. We normalize this behavior. */return response === null?undefined:response;} /************** + Delay Timer + **************/function pauseDelayOnElement(element,currentTime){ /* Check for any delay timers, and pause the set timeouts (while preserving time data) + to be resumed when the "resume" command is issued */var data=Data(element);if(data && data.delayTimer && !data.delayPaused){data.delayRemaining = data.delay - currentTime + data.delayBegin;data.delayPaused = true;clearTimeout(data.delayTimer.setTimeout);}}function resumeDelayOnElement(element,currentTime){ /* Check for any paused timers and resume */var data=Data(element);if(data && data.delayTimer && data.delayPaused){ /* If the element was mid-delay, re initiate the timeout with the remaining delay */data.delayPaused = false;data.delayTimer.setTimeout = setTimeout(data.delayTimer.next,data.delayRemaining);}} /************** + Easing + **************/ /* Step easing generator. */function generateStep(steps){return function(p){return Math.round(p * steps) * (1 / steps);};} /* Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */function generateBezier(mX1,mY1,mX2,mY2){var NEWTON_ITERATIONS=4,NEWTON_MIN_SLOPE=0.001,SUBDIVISION_PRECISION=0.0000001,SUBDIVISION_MAX_ITERATIONS=10,kSplineTableSize=11,kSampleStepSize=1.0 / (kSplineTableSize - 1.0),float32ArraySupported=("Float32Array" in window); /* Must contain four arguments. */if(arguments.length !== 4){return false;} /* Arguments must be numbers. */for(var i=0;i < 4;++i) {if(typeof arguments[i] !== "number" || isNaN(arguments[i]) || !isFinite(arguments[i])){return false;}} /* X values must be in the [0, 1] range. */mX1 = Math.min(mX1,1);mX2 = Math.min(mX2,1);mX1 = Math.max(mX1,0);mX2 = Math.max(mX2,0);var mSampleValues=float32ArraySupported?new Float32Array(kSplineTableSize):new Array(kSplineTableSize);function A(aA1,aA2){return 1.0 - 3.0 * aA2 + 3.0 * aA1;}function B(aA1,aA2){return 3.0 * aA2 - 6.0 * aA1;}function C(aA1){return 3.0 * aA1;}function calcBezier(aT,aA1,aA2){return ((A(aA1,aA2) * aT + B(aA1,aA2)) * aT + C(aA1)) * aT;}function getSlope(aT,aA1,aA2){return 3.0 * A(aA1,aA2) * aT * aT + 2.0 * B(aA1,aA2) * aT + C(aA1);}function newtonRaphsonIterate(aX,aGuessT){for(var i=0;i < NEWTON_ITERATIONS;++i) {var currentSlope=getSlope(aGuessT,mX1,mX2);if(currentSlope === 0.0){return aGuessT;}var currentX=calcBezier(aGuessT,mX1,mX2) - aX;aGuessT -= currentX / currentSlope;}return aGuessT;}function calcSampleValues(){for(var i=0;i < kSplineTableSize;++i) {mSampleValues[i] = calcBezier(i * kSampleStepSize,mX1,mX2);}}function binarySubdivide(aX,aA,aB){var currentX,currentT,i=0;do {currentT = aA + (aB - aA) / 2.0;currentX = calcBezier(currentT,mX1,mX2) - aX;if(currentX > 0.0){aB = currentT;}else {aA = currentT;}}while(Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);return currentT;}function getTForX(aX){var intervalStart=0.0,currentSample=1,lastSample=kSplineTableSize - 1;for(;currentSample !== lastSample && mSampleValues[currentSample] <= aX;++currentSample) {intervalStart += kSampleStepSize;}--currentSample;var dist=(aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]),guessForT=intervalStart + dist * kSampleStepSize,initialSlope=getSlope(guessForT,mX1,mX2);if(initialSlope >= NEWTON_MIN_SLOPE){return newtonRaphsonIterate(aX,guessForT);}else if(initialSlope === 0.0){return guessForT;}else {return binarySubdivide(aX,intervalStart,intervalStart + kSampleStepSize);}}var _precomputed=false;function precompute(){_precomputed = true;if(mX1 !== mY1 || mX2 !== mY2){calcSampleValues();}}var f=function f(aX){if(!_precomputed){precompute();}if(mX1 === mY1 && mX2 === mY2){return aX;}if(aX === 0){return 0;}if(aX === 1){return 1;}return calcBezier(getTForX(aX),mY1,mY2);};f.getControlPoints = function(){return [{x:mX1,y:mY1},{x:mX2,y:mY2}];};var str="generateBezier(" + [mX1,mY1,mX2,mY2] + ")";f.toString = function(){return str;};return f;} /* Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ /* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass + then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */var generateSpringRK4=(function(){function springAccelerationForState(state){return -state.tension * state.x - state.friction * state.v;}function springEvaluateStateWithDerivative(initialState,dt,derivative){var state={x:initialState.x + derivative.dx * dt,v:initialState.v + derivative.dv * dt,tension:initialState.tension,friction:initialState.friction};return {dx:state.v,dv:springAccelerationForState(state)};}function springIntegrateState(state,dt){var a={dx:state.v,dv:springAccelerationForState(state)},b=springEvaluateStateWithDerivative(state,dt * 0.5,a),c=springEvaluateStateWithDerivative(state,dt * 0.5,b),d=springEvaluateStateWithDerivative(state,dt,c),dxdt=1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx),dvdt=1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv);state.x = state.x + dxdt * dt;state.v = state.v + dvdt * dt;return state;}return function springRK4Factory(tension,friction,duration){var initState={x:-1,v:0,tension:null,friction:null},path=[0],time_lapsed=0,tolerance=1 / 10000,DT=16 / 1000,have_duration,dt,last_state;tension = parseFloat(tension) || 500;friction = parseFloat(friction) || 20;duration = duration || null;initState.tension = tension;initState.friction = friction;have_duration = duration !== null; /* Calculate the actual time it takes for this animation to complete with the provided conditions. */if(have_duration){ /* Run the simulation without a duration. */time_lapsed = springRK4Factory(tension,friction); /* Compute the adjusted time delta. */dt = time_lapsed / duration * DT;}else {dt = DT;}while(true) { /* Next/step function .*/last_state = springIntegrateState(last_state || initState,dt); /* Store the position. */path.push(1 + last_state.x);time_lapsed += 16; /* If the change threshold is reached, break. */if(!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)){break;}} /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the + computed path and returns a snapshot of the position according to a given percentComplete. */return !have_duration?time_lapsed:function(percentComplete){return path[percentComplete * (path.length - 1) | 0];};};})(); /* jQuery easings. */Velocity.Easings = {linear:function linear(p){return p;},swing:function swing(p){return 0.5 - Math.cos(p * Math.PI) / 2;}, /* Bonus "spring" easing, which is a less exaggerated version of easeInOutElastic. */spring:function spring(p){return 1 - Math.cos(p * 4.5 * Math.PI) * Math.exp(-p * 6);}}; /* CSS3 and Robert Penner easings. */$.each([["ease",[0.25,0.1,0.25,1.0]],["ease-in",[0.42,0.0,1.00,1.0]],["ease-out",[0.00,0.0,0.58,1.0]],["ease-in-out",[0.42,0.0,0.58,1.0]],["easeInSine",[0.47,0,0.745,0.715]],["easeOutSine",[0.39,0.575,0.565,1]],["easeInOutSine",[0.445,0.05,0.55,0.95]],["easeInQuad",[0.55,0.085,0.68,0.53]],["easeOutQuad",[0.25,0.46,0.45,0.94]],["easeInOutQuad",[0.455,0.03,0.515,0.955]],["easeInCubic",[0.55,0.055,0.675,0.19]],["easeOutCubic",[0.215,0.61,0.355,1]],["easeInOutCubic",[0.645,0.045,0.355,1]],["easeInQuart",[0.895,0.03,0.685,0.22]],["easeOutQuart",[0.165,0.84,0.44,1]],["easeInOutQuart",[0.77,0,0.175,1]],["easeInQuint",[0.755,0.05,0.855,0.06]],["easeOutQuint",[0.23,1,0.32,1]],["easeInOutQuint",[0.86,0,0.07,1]],["easeInExpo",[0.95,0.05,0.795,0.035]],["easeOutExpo",[0.19,1,0.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[0.6,0.04,0.98,0.335]],["easeOutCirc",[0.075,0.82,0.165,1]],["easeInOutCirc",[0.785,0.135,0.15,0.86]]],function(i,easingArray){Velocity.Easings[easingArray[0]] = generateBezier.apply(null,easingArray[1]);}); /* Determine the appropriate easing type given an easing input. */function getEasing(value,duration){var easing=value; /* The easing option can either be a string that references a pre-registered easing, + or it can be a two-/four-item array of integers to be converted into a bezier/spring function. */if(Type.isString(value)){ /* Ensure that the easing has been assigned to jQuery's Velocity.Easings object. */if(!Velocity.Easings[value]){easing = false;}}else if(Type.isArray(value) && value.length === 1){easing = generateStep.apply(null,value);}else if(Type.isArray(value) && value.length === 2){ /* springRK4 must be passed the animation's duration. */ /* Note: If the springRK4 array contains non-numbers, generateSpringRK4() returns an easing + function generated with default tension and friction values. */easing = generateSpringRK4.apply(null,value.concat([duration]));}else if(Type.isArray(value) && value.length === 4){ /* Note: If the bezier array contains non-numbers, generateBezier() returns false. */easing = generateBezier.apply(null,value);}else {easing = false;} /* Revert to the Velocity-wide default easing type, or fall back to "swing" (which is also jQuery's default) + if the Velocity-wide default has been incorrectly modified. */if(easing === false){if(Velocity.Easings[Velocity.defaults.easing]){easing = Velocity.defaults.easing;}else {easing = EASING_DEFAULT;}}return easing;} /***************** + CSS Stack + *****************/ /* The CSS object is a highly condensed and performant CSS stack that fully replaces jQuery's. + It handles the validation, getting, and setting of both standard CSS properties and CSS property hooks. */ /* Note: A "CSS" shorthand is aliased so that our code is easier to read. */var CSS=Velocity.CSS = { /************* + RegEx + *************/RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i, /* Unwrap a property value's surrounding text, e.g. "rgba(4, 3, 2, 1)" ==> "4, 3, 2, 1" and "rect(4px 3px 2px 1px)" ==> "4px 3px 2px 1px". */valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/, /* Split a multi-value property into an array of subvalues, e.g. "rgba(4, 3, 2, 1) 4px 3px 2px 1px" ==> [ "rgba(4, 3, 2, 1)", "4px", "3px", "2px", "1px" ]. */valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/ig}, /************ + Lists + ************/Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"],units:["%", // relative +"em","ex","ch","rem", // font relative +"vw","vh","vmin","vmax", // viewport relative +"cm","mm","Q","in","pc","pt","px", // absolute lengths +"deg","grad","rad","turn", // angles +"s","ms" // time +],colorNames:{"aliceblue":"240,248,255","antiquewhite":"250,235,215","aquamarine":"127,255,212","aqua":"0,255,255","azure":"240,255,255","beige":"245,245,220","bisque":"255,228,196","black":"0,0,0","blanchedalmond":"255,235,205","blueviolet":"138,43,226","blue":"0,0,255","brown":"165,42,42","burlywood":"222,184,135","cadetblue":"95,158,160","chartreuse":"127,255,0","chocolate":"210,105,30","coral":"255,127,80","cornflowerblue":"100,149,237","cornsilk":"255,248,220","crimson":"220,20,60","cyan":"0,255,255","darkblue":"0,0,139","darkcyan":"0,139,139","darkgoldenrod":"184,134,11","darkgray":"169,169,169","darkgrey":"169,169,169","darkgreen":"0,100,0","darkkhaki":"189,183,107","darkmagenta":"139,0,139","darkolivegreen":"85,107,47","darkorange":"255,140,0","darkorchid":"153,50,204","darkred":"139,0,0","darksalmon":"233,150,122","darkseagreen":"143,188,143","darkslateblue":"72,61,139","darkslategray":"47,79,79","darkturquoise":"0,206,209","darkviolet":"148,0,211","deeppink":"255,20,147","deepskyblue":"0,191,255","dimgray":"105,105,105","dimgrey":"105,105,105","dodgerblue":"30,144,255","firebrick":"178,34,34","floralwhite":"255,250,240","forestgreen":"34,139,34","fuchsia":"255,0,255","gainsboro":"220,220,220","ghostwhite":"248,248,255","gold":"255,215,0","goldenrod":"218,165,32","gray":"128,128,128","grey":"128,128,128","greenyellow":"173,255,47","green":"0,128,0","honeydew":"240,255,240","hotpink":"255,105,180","indianred":"205,92,92","indigo":"75,0,130","ivory":"255,255,240","khaki":"240,230,140","lavenderblush":"255,240,245","lavender":"230,230,250","lawngreen":"124,252,0","lemonchiffon":"255,250,205","lightblue":"173,216,230","lightcoral":"240,128,128","lightcyan":"224,255,255","lightgoldenrodyellow":"250,250,210","lightgray":"211,211,211","lightgrey":"211,211,211","lightgreen":"144,238,144","lightpink":"255,182,193","lightsalmon":"255,160,122","lightseagreen":"32,178,170","lightskyblue":"135,206,250","lightslategray":"119,136,153","lightsteelblue":"176,196,222","lightyellow":"255,255,224","limegreen":"50,205,50","lime":"0,255,0","linen":"250,240,230","magenta":"255,0,255","maroon":"128,0,0","mediumaquamarine":"102,205,170","mediumblue":"0,0,205","mediumorchid":"186,85,211","mediumpurple":"147,112,219","mediumseagreen":"60,179,113","mediumslateblue":"123,104,238","mediumspringgreen":"0,250,154","mediumturquoise":"72,209,204","mediumvioletred":"199,21,133","midnightblue":"25,25,112","mintcream":"245,255,250","mistyrose":"255,228,225","moccasin":"255,228,181","navajowhite":"255,222,173","navy":"0,0,128","oldlace":"253,245,230","olivedrab":"107,142,35","olive":"128,128,0","orangered":"255,69,0","orange":"255,165,0","orchid":"218,112,214","palegoldenrod":"238,232,170","palegreen":"152,251,152","paleturquoise":"175,238,238","palevioletred":"219,112,147","papayawhip":"255,239,213","peachpuff":"255,218,185","peru":"205,133,63","pink":"255,192,203","plum":"221,160,221","powderblue":"176,224,230","purple":"128,0,128","red":"255,0,0","rosybrown":"188,143,143","royalblue":"65,105,225","saddlebrown":"139,69,19","salmon":"250,128,114","sandybrown":"244,164,96","seagreen":"46,139,87","seashell":"255,245,238","sienna":"160,82,45","silver":"192,192,192","skyblue":"135,206,235","slateblue":"106,90,205","slategray":"112,128,144","snow":"255,250,250","springgreen":"0,255,127","steelblue":"70,130,180","tan":"210,180,140","teal":"0,128,128","thistle":"216,191,216","tomato":"255,99,71","turquoise":"64,224,208","violet":"238,130,238","wheat":"245,222,179","whitesmoke":"245,245,245","white":"255,255,255","yellowgreen":"154,205,50","yellow":"255,255,0"}}, /************ + Hooks + ************/ /* Hooks allow a subproperty (e.g. "boxShadowBlur") of a compound-value CSS property + (e.g. "boxShadow: X Y Blur Spread Color") to be animated as if it were a discrete property. */ /* Note: Beyond enabling fine-grained property animation, hooking is necessary since Velocity only + tweens properties with single numeric values; unlike CSS transitions, Velocity does not interpolate compound-values. */Hooks:{ /******************** + Registration + ********************/ /* Templates are a concise way of indicating which subproperties must be individually registered for each compound-value CSS property. */ /* Each template consists of the compound-value's base name, its constituent subproperty names, and those subproperties' default values. */templates:{"textShadow":["Color X Y Blur","black 0px 0px 0px"],"boxShadow":["Color X Y Blur Spread","black 0px 0px 0px 0px"],"clip":["Top Right Bottom Left","0px 0px 0px 0px"],"backgroundPosition":["X Y","0% 0%"],"transformOrigin":["X Y Z","50% 50% 0px"],"perspectiveOrigin":["X Y","50% 50%"]}, /* A "registered" hook is one that has been converted from its template form into a live, + tweenable property. It contains data to associate it with its root property. */registered:{ /* Note: A registered hook looks like this ==> textShadowBlur: [ "textShadow", 3 ], + which consists of the subproperty's name, the associated root property's name, + and the subproperty's position in the root's value. */}, /* Convert the templates into individual hooks then append them to the registered object above. */register:function register(){ /* Color hooks registration: Colors are defaulted to white -- as opposed to black -- since colors that are + currently set to "transparent" default to their respective template below when color-animated, + and white is typically a closer match to transparent than black is. An exception is made for text ("color"), + which is almost always set closer to black than white. */for(var i=0;i < CSS.Lists.colors.length;i++) {var rgbComponents=CSS.Lists.colors[i] === "color"?"0 0 0 1":"255 255 255 1";CSS.Hooks.templates[CSS.Lists.colors[i]] = ["Red Green Blue Alpha",rgbComponents];}var rootProperty,hookTemplate,hookNames; /* In IE, color values inside compound-value properties are positioned at the end the value instead of at the beginning. + Thus, we re-arrange the templates accordingly. */if(IE){for(rootProperty in CSS.Hooks.templates) {if(!CSS.Hooks.templates.hasOwnProperty(rootProperty)){continue;}hookTemplate = CSS.Hooks.templates[rootProperty];hookNames = hookTemplate[0].split(" ");var defaultValues=hookTemplate[1].match(CSS.RegEx.valueSplit);if(hookNames[0] === "Color"){ /* Reposition both the hook's name and its default value to the end of their respective strings. */hookNames.push(hookNames.shift());defaultValues.push(defaultValues.shift()); /* Replace the existing template for the hook's root property. */CSS.Hooks.templates[rootProperty] = [hookNames.join(" "),defaultValues.join(" ")];}}} /* Hook registration. */for(rootProperty in CSS.Hooks.templates) {if(!CSS.Hooks.templates.hasOwnProperty(rootProperty)){continue;}hookTemplate = CSS.Hooks.templates[rootProperty];hookNames = hookTemplate[0].split(" ");for(var j in hookNames) {if(!hookNames.hasOwnProperty(j)){continue;}var fullHookName=rootProperty + hookNames[j],hookPosition=j; /* For each hook, register its full name (e.g. textShadowBlur) with its root property (e.g. textShadow) + and the hook's position in its template's default value string. */CSS.Hooks.registered[fullHookName] = [rootProperty,hookPosition];}}}, /***************************** + Injection and Extraction + *****************************/ /* Look up the root property associated with the hook (e.g. return "textShadow" for "textShadowBlur"). */ /* Since a hook cannot be set directly (the browser won't recognize it), style updating for hooks is routed through the hook's root property. */getRoot:function getRoot(property){var hookData=CSS.Hooks.registered[property];if(hookData){return hookData[0];}else { /* If there was no hook match, return the property name untouched. */return property;}},getUnit:function getUnit(str,start){var unit=(str.substr(start || 0,5).match(/^[a-z%]+/) || [])[0] || "";if(unit && _inArray(CSS.Lists.units,unit)){return unit;}return "";},fixColors:function fixColors(str){return str.replace(/(rgba?\(\s*)?(\b[a-z]+\b)/g,function($0,$1,$2){if(CSS.Lists.colorNames.hasOwnProperty($2)){return ($1?$1:"rgba(") + CSS.Lists.colorNames[$2] + ($1?"":",1)");}return $1 + $2;});}, /* Convert any rootPropertyValue, null or otherwise, into a space-delimited list of hook values so that + the targeted hook can be injected or extracted at its standard position. */cleanRootPropertyValue:function cleanRootPropertyValue(rootProperty,rootPropertyValue){ /* If the rootPropertyValue is wrapped with "rgb()", "clip()", etc., remove the wrapping to normalize the value before manipulation. */if(CSS.RegEx.valueUnwrap.test(rootPropertyValue)){rootPropertyValue = rootPropertyValue.match(CSS.RegEx.valueUnwrap)[1];} /* If rootPropertyValue is a CSS null-value (from which there's inherently no hook value to extract), + default to the root's default value as defined in CSS.Hooks.templates. */ /* Note: CSS null-values include "none", "auto", and "transparent". They must be converted into their + zero-values (e.g. textShadow: "none" ==> textShadow: "0px 0px 0px black") for hook manipulation to proceed. */if(CSS.Values.isCSSNullValue(rootPropertyValue)){rootPropertyValue = CSS.Hooks.templates[rootProperty][1];}return rootPropertyValue;}, /* Extracted the hook's value from its root property's value. This is used to get the starting value of an animating hook. */extractValue:function extractValue(fullHookName,rootPropertyValue){var hookData=CSS.Hooks.registered[fullHookName];if(hookData){var hookRoot=hookData[0],hookPosition=hookData[1];rootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot,rootPropertyValue); /* Split rootPropertyValue into its constituent hook values then grab the desired hook at its standard position. */return rootPropertyValue.toString().match(CSS.RegEx.valueSplit)[hookPosition];}else { /* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */return rootPropertyValue;}}, /* Inject the hook's value into its root property's value. This is used to piece back together the root property + once Velocity has updated one of its individually hooked values through tweening. */injectValue:function injectValue(fullHookName,hookValue,rootPropertyValue){var hookData=CSS.Hooks.registered[fullHookName];if(hookData){var hookRoot=hookData[0],hookPosition=hookData[1],rootPropertyValueParts,rootPropertyValueUpdated;rootPropertyValue = CSS.Hooks.cleanRootPropertyValue(hookRoot,rootPropertyValue); /* Split rootPropertyValue into its individual hook values, replace the targeted value with hookValue, + then reconstruct the rootPropertyValue string. */rootPropertyValueParts = rootPropertyValue.toString().match(CSS.RegEx.valueSplit);rootPropertyValueParts[hookPosition] = hookValue;rootPropertyValueUpdated = rootPropertyValueParts.join(" ");return rootPropertyValueUpdated;}else { /* If the provided fullHookName isn't a registered hook, return the rootPropertyValue that was passed in. */return rootPropertyValue;}}}, /******************* + Normalizations + *******************/ /* Normalizations standardize CSS property manipulation by pollyfilling browser-specific implementations (e.g. opacity) + and reformatting special properties (e.g. clip, rgba) to look like standard ones. */Normalizations:{ /* Normalizations are passed a normalization target (either the property's name, its extracted value, or its injected value), + the targeted element (which may need to be queried), and the targeted property value. */registered:{clip:function clip(type,element,propertyValue){switch(type){case "name":return "clip"; /* Clip needs to be unwrapped and stripped of its commas during extraction. */case "extract":var extracted; /* If Velocity also extracted this value, skip extraction. */if(CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)){extracted = propertyValue;}else { /* Remove the "rect()" wrapper. */extracted = propertyValue.toString().match(CSS.RegEx.valueUnwrap); /* Strip off commas. */extracted = extracted?extracted[1].replace(/,(\s+)?/g," "):propertyValue;}return extracted; /* Clip needs to be re-wrapped during injection. */case "inject":return "rect(" + propertyValue + ")";}},blur:function blur(type,element,propertyValue){switch(type){case "name":return Velocity.State.isFirefox?"filter":"-webkit-filter";case "extract":var extracted=parseFloat(propertyValue); /* If extracted is NaN, meaning the value isn't already extracted. */if(!(extracted || extracted === 0)){var blurComponent=propertyValue.toString().match(/blur\(([0-9]+[A-z]+)\)/i); /* If the filter string had a blur component, return just the blur value and unit type. */if(blurComponent){extracted = blurComponent[1]; /* If the component doesn't exist, default blur to 0. */}else {extracted = 0;}}return extracted; /* Blur needs to be re-wrapped during injection. */case "inject": /* For the blur effect to be fully de-applied, it needs to be set to "none" instead of 0. */if(!parseFloat(propertyValue)){return "none";}else {return "blur(" + propertyValue + ")";}}}, /* <=IE8 do not support the standard opacity property. They use filter:alpha(opacity=INT) instead. */opacity:function opacity(type,element,propertyValue){if(IE <= 8){switch(type){case "name":return "filter";case "extract": /* <=IE8 return a "filter" value of "alpha(opacity=\d{1,3})". + Extract the value and convert it to a decimal value to match the standard CSS opacity property's formatting. */var extracted=propertyValue.toString().match(/alpha\(opacity=(.*)\)/i);if(extracted){ /* Convert to decimal value. */propertyValue = extracted[1] / 100;}else { /* When extracting opacity, default to 1 since a null value means opacity hasn't been set. */propertyValue = 1;}return propertyValue;case "inject": /* Opacified elements are required to have their zoom property set to a non-zero value. */element.style.zoom = 1; /* Setting the filter property on elements with certain font property combinations can result in a + highly unappealing ultra-bolding effect. There's no way to remedy this throughout a tween, but dropping the + value altogether (when opacity hits 1) at leasts ensures that the glitch is gone post-tweening. */if(parseFloat(propertyValue) >= 1){return "";}else { /* As per the filter property's spec, convert the decimal value to a whole number and wrap the value. */return "alpha(opacity=" + parseInt(parseFloat(propertyValue) * 100,10) + ")";}} /* With all other browsers, normalization is not required; return the same values that were passed in. */}else {switch(type){case "name":return "opacity";case "extract":return propertyValue;case "inject":return propertyValue;}}}}, /***************************** + Batched Registrations + *****************************/ /* Note: Batched normalizations extend the CSS.Normalizations.registered object. */register:function register(){ /***************** + Transforms + *****************/ /* Transforms are the subproperties contained by the CSS "transform" property. Transforms must undergo normalization + so that they can be referenced in a properties map by their individual names. */ /* Note: When transforms are "set", they are actually assigned to a per-element transformCache. When all transform + setting is complete complete, CSS.flushTransformCache() must be manually called to flush the values to the DOM. + Transform setting is batched in this way to improve performance: the transform style only needs to be updated + once when multiple transform subproperties are being animated simultaneously. */ /* Note: IE9 and Android Gingerbread have support for 2D -- but not 3D -- transforms. Since animating unsupported + transform properties results in the browser ignoring the *entire* transform string, we prevent these 3D values + from being normalized for these browsers so that tweening skips these properties altogether + (since it will ignore them as being unsupported by the browser.) */if((!IE || IE > 9) && !Velocity.State.isGingerbread){ /* Note: Since the standalone CSS "perspective" property and the CSS transform "perspective" subproperty + share the same name, the latter is given a unique token within Velocity: "transformPerspective". */CSS.Lists.transformsBase = CSS.Lists.transformsBase.concat(CSS.Lists.transforms3D);}for(var i=0;i < CSS.Lists.transformsBase.length;i++) { /* Wrap the dynamically generated normalization function in a new scope so that transformName's value is + paired with its respective function. (Otherwise, all functions would take the final for loop's transformName.) */(function(){var transformName=CSS.Lists.transformsBase[i];CSS.Normalizations.registered[transformName] = function(type,element,propertyValue){switch(type){ /* The normalized property name is the parent "transform" property -- the property that is actually set in CSS. */case "name":return "transform"; /* Transform values are cached onto a per-element transformCache object. */case "extract": /* If this transform has yet to be assigned a value, return its null value. */if(Data(element) === undefined || Data(element).transformCache[transformName] === undefined){ /* Scale CSS.Lists.transformsBase default to 1 whereas all other transform properties default to 0. */return (/^scale/i.test(transformName)?1:0); /* When transform values are set, they are wrapped in parentheses as per the CSS spec. + Thus, when extracting their values (for tween calculations), we strip off the parentheses. */}return Data(element).transformCache[transformName].replace(/[()]/g,"");case "inject":var invalid=false; /* If an individual transform property contains an unsupported unit type, the browser ignores the *entire* transform property. + Thus, protect users from themselves by skipping setting for transform values supplied with invalid unit types. */ /* Switch on the base transform type; ignore the axis by removing the last letter from the transform's name. */switch(transformName.substr(0,transformName.length - 1)){ /* Whitelist unit types for each transform. */case "translate":invalid = !/(%|px|em|rem|vw|vh|\d)$/i.test(propertyValue);break; /* Since an axis-free "scale" property is supported as well, a little hack is used here to detect it by chopping off its last letter. */case "scal":case "scale": /* Chrome on Android has a bug in which scaled elements blur if their initial scale + value is below 1 (which can happen with forcefeeding). Thus, we detect a yet-unset scale property + and ensure that its first value is always 1. More info: http://stackoverflow.com/questions/10417890/css3-animations-with-transform-causes-blurred-elements-on-webkit/10417962#10417962 */if(Velocity.State.isAndroid && Data(element).transformCache[transformName] === undefined && propertyValue < 1){propertyValue = 1;}invalid = !/(\d)$/i.test(propertyValue);break;case "skew":invalid = !/(deg|\d)$/i.test(propertyValue);break;case "rotate":invalid = !/(deg|\d)$/i.test(propertyValue);break;}if(!invalid){ /* As per the CSS spec, wrap the value in parentheses. */Data(element).transformCache[transformName] = "(" + propertyValue + ")";} /* Although the value is set on the transformCache object, return the newly-updated value for the calling code to process as normal. */return Data(element).transformCache[transformName];}};})();} /************* + Colors + *************/ /* Since Velocity only animates a single numeric value per property, color animation is achieved by hooking the individual RGBA components of CSS color properties. + Accordingly, color values must be normalized (e.g. "#ff0000", "red", and "rgb(255, 0, 0)" ==> "255 0 0 1") so that their components can be injected/extracted by CSS.Hooks logic. */for(var j=0;j < CSS.Lists.colors.length;j++) { /* Wrap the dynamically generated normalization function in a new scope so that colorName's value is paired with its respective function. + (Otherwise, all functions would take the final for loop's colorName.) */(function(){var colorName=CSS.Lists.colors[j]; /* Note: In IE<=8, which support rgb but not rgba, color properties are reverted to rgb by stripping off the alpha component. */CSS.Normalizations.registered[colorName] = function(type,element,propertyValue){switch(type){case "name":return colorName; /* Convert all color values into the rgb format. (Old IE can return hex values and color names instead of rgb/rgba.) */case "extract":var extracted; /* If the color is already in its hookable form (e.g. "255 255 255 1") due to having been previously extracted, skip extraction. */if(CSS.RegEx.wrappedValueAlreadyExtracted.test(propertyValue)){extracted = propertyValue;}else {var converted,colorNames={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"}; /* Convert color names to rgb. */if(/^[A-z]+$/i.test(propertyValue)){if(colorNames[propertyValue] !== undefined){converted = colorNames[propertyValue];}else { /* If an unmatched color name is provided, default to black. */converted = colorNames.black;} /* Convert hex values to rgb. */}else if(CSS.RegEx.isHex.test(propertyValue)){converted = "rgb(" + CSS.Values.hexToRgb(propertyValue).join(" ") + ")"; /* If the provided color doesn't match any of the accepted color formats, default to black. */}else if(!/^rgba?\(/i.test(propertyValue)){converted = colorNames.black;} /* Remove the surrounding "rgb/rgba()" string then replace commas with spaces and strip + repeated spaces (in case the value included spaces to begin with). */extracted = (converted || propertyValue).toString().match(CSS.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ");} /* So long as this isn't <=IE8, add a fourth (alpha) component if it's missing and default it to 1 (visible). */if((!IE || IE > 8) && extracted.split(" ").length === 3){extracted += " 1";}return extracted;case "inject": /* If we have a pattern then it might already have the right values */if(/^rgb/.test(propertyValue)){return propertyValue;} /* If this is IE<=8 and an alpha component exists, strip it off. */if(IE <= 8){if(propertyValue.split(" ").length === 4){propertyValue = propertyValue.split(/\s+/).slice(0,3).join(" ");} /* Otherwise, add a fourth (alpha) component if it's missing and default it to 1 (visible). */}else if(propertyValue.split(" ").length === 3){propertyValue += " 1";} /* Re-insert the browser-appropriate wrapper("rgb/rgba()"), insert commas, and strip off decimal units + on all values but the fourth (R, G, and B only accept whole numbers). */return (IE <= 8?"rgb":"rgba") + "(" + propertyValue.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"") + ")";}};})();} /************** + Dimensions + **************/function augmentDimension(name,element,wantInner){var isBorderBox=CSS.getPropertyValue(element,"boxSizing").toString().toLowerCase() === "border-box";if(isBorderBox === (wantInner || false)){ /* in box-sizing mode, the CSS width / height accessors already give the outerWidth / outerHeight. */var i,value,augment=0,sides=name === "width"?["Left","Right"]:["Top","Bottom"],fields=["padding" + sides[0],"padding" + sides[1],"border" + sides[0] + "Width","border" + sides[1] + "Width"];for(i = 0;i < fields.length;i++) {value = parseFloat(CSS.getPropertyValue(element,fields[i]));if(!isNaN(value)){augment += value;}}return wantInner?-augment:augment;}return 0;}function getDimension(name,wantInner){return function(type,element,propertyValue){switch(type){case "name":return name;case "extract":return parseFloat(propertyValue) + augmentDimension(name,element,wantInner);case "inject":return parseFloat(propertyValue) - augmentDimension(name,element,wantInner) + "px";}};}CSS.Normalizations.registered.innerWidth = getDimension("width",true);CSS.Normalizations.registered.innerHeight = getDimension("height",true);CSS.Normalizations.registered.outerWidth = getDimension("width");CSS.Normalizations.registered.outerHeight = getDimension("height");}}, /************************ + CSS Property Names + ************************/Names:{ /* Camelcase a property name into its JavaScript notation (e.g. "background-color" ==> "backgroundColor"). + Camelcasing is used to normalize property names between and across calls. */camelCase:function camelCase(property){return property.replace(/-(\w)/g,function(match,subMatch){return subMatch.toUpperCase();});}, /* For SVG elements, some properties (namely, dimensional ones) are GET/SET via the element's HTML attributes (instead of via CSS styles). */SVGAttribute:function SVGAttribute(property){var SVGAttributes="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2"; /* Certain browsers require an SVG transform to be applied as an attribute. (Otherwise, application via CSS is preferable due to 3D support.) */if(IE || Velocity.State.isAndroid && !Velocity.State.isChrome){SVGAttributes += "|transform";}return new RegExp("^(" + SVGAttributes + ")$","i").test(property);}, /* Determine whether a property should be set with a vendor prefix. */ /* If a prefixed version of the property exists, return it. Otherwise, return the original property name. + If the property is not at all supported by the browser, return a false flag. */prefixCheck:function prefixCheck(property){ /* If this property has already been checked, return the cached value. */if(Velocity.State.prefixMatches[property]){return [Velocity.State.prefixMatches[property],true];}else {var vendors=["","Webkit","Moz","ms","O"];for(var i=0,vendorsLength=vendors.length;i < vendorsLength;i++) {var propertyPrefixed;if(i === 0){propertyPrefixed = property;}else { /* Capitalize the first letter of the property to conform to JavaScript vendor prefix notation (e.g. webkitFilter). */propertyPrefixed = vendors[i] + property.replace(/^\w/,function(match){return match.toUpperCase();});} /* Check if the browser supports this property as prefixed. */if(Type.isString(Velocity.State.prefixElement.style[propertyPrefixed])){ /* Cache the match. */Velocity.State.prefixMatches[property] = propertyPrefixed;return [propertyPrefixed,true];}} /* If the browser doesn't support this property in any form, include a false flag so that the caller can decide how to proceed. */return [property,false];}}}, /************************ + CSS Property Values + ************************/Values:{ /* Hex to RGB conversion. Copyright Tim Down: http://stackoverflow.com/questions/5623838/rgb-to-hex-and-hex-to-rgb */hexToRgb:function hexToRgb(hex){var shortformRegex=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,longformRegex=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgbParts;hex = hex.replace(shortformRegex,function(m,r,g,b){return r + r + g + g + b + b;});rgbParts = longformRegex.exec(hex);return rgbParts?[parseInt(rgbParts[1],16),parseInt(rgbParts[2],16),parseInt(rgbParts[3],16)]:[0,0,0];},isCSSNullValue:function isCSSNullValue(value){ /* The browser defaults CSS values that have not been set to either 0 or one of several possible null-value strings. + Thus, we check for both falsiness and these special strings. */ /* Null-value checking is performed to default the special strings to 0 (for the sake of tweening) or their hook + templates as defined as CSS.Hooks (for the sake of hook injection/extraction). */ /* Note: Chrome returns "rgba(0, 0, 0, 0)" for an undefined color whereas IE returns "transparent". */return !value || /^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(value);}, /* Retrieve a property's default unit type. Used for assigning a unit type when one is not supplied by the user. */getUnitType:function getUnitType(property){if(/^(rotate|skew)/i.test(property)){return "deg";}else if(/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(property)){ /* The above properties are unitless. */return "";}else { /* Default to px for all other properties. */return "px";}}, /* HTML elements default to an associated display type when they're not set to display:none. */ /* Note: This function is used for correctly setting the non-"none" display value in certain Velocity redirects, such as fadeIn/Out. */getDisplayType:function getDisplayType(element){var tagName=element && element.tagName.toString().toLowerCase();if(/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(tagName)){return "inline";}else if(/^(li)$/i.test(tagName)){return "list-item";}else if(/^(tr)$/i.test(tagName)){return "table-row";}else if(/^(table)$/i.test(tagName)){return "table";}else if(/^(tbody)$/i.test(tagName)){return "table-row-group"; /* Default to "block" when no match is found. */}else {return "block";}}, /* The class add/remove functions are used to temporarily apply a "velocity-animating" class to elements while they're animating. */addClass:function addClass(element,className){if(element){if(element.classList){element.classList.add(className);}else if(Type.isString(element.className)){ // Element.className is around 15% faster then set/getAttribute +element.className += (element.className.length?" ":"") + className;}else { // Work around for IE strict mode animating SVG - and anything else that doesn't behave correctly - the same way jQuery does it +var currentClass=element.getAttribute(IE <= 7?"className":"class") || "";element.setAttribute("class",currentClass + (currentClass?" ":"") + className);}}},removeClass:function removeClass(element,className){if(element){if(element.classList){element.classList.remove(className);}else if(Type.isString(element.className)){ // Element.className is around 15% faster then set/getAttribute +// TODO: Need some jsperf tests on performance - can we get rid of the regex and maybe use split / array manipulation? +element.className = element.className.toString().replace(new RegExp("(^|\\s)" + className.split(" ").join("|") + "(\\s|$)","gi")," ");}else { // Work around for IE strict mode animating SVG - and anything else that doesn't behave correctly - the same way jQuery does it +var currentClass=element.getAttribute(IE <= 7?"className":"class") || "";element.setAttribute("class",currentClass.replace(new RegExp("(^|\s)" + className.split(" ").join("|") + "(\s|$)","gi")," "));}}}}, /**************************** + Style Getting & Setting + ****************************/ /* The singular getPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */getPropertyValue:function getPropertyValue(element,property,rootPropertyValue,forceStyleLookup){ /* Get an element's computed property value. */ /* Note: Retrieving the value of a CSS property cannot simply be performed by checking an element's + style attribute (which only reflects user-defined values). Instead, the browser must be queried for a property's + *computed* value. You can read more about getComputedStyle here: https://developer.mozilla.org/en/docs/Web/API/window.getComputedStyle */function computePropertyValue(element,property){ /* When box-sizing isn't set to border-box, height and width style values are incorrectly computed when an + element's scrollbars are visible (which expands the element's dimensions). Thus, we defer to the more accurate + offsetHeight/Width property, which includes the total dimensions for interior, border, padding, and scrollbar. + We subtract border and padding to get the sum of interior + scrollbar. */var computedValue=0; /* IE<=8 doesn't support window.getComputedStyle, thus we defer to jQuery, which has an extensive array + of hacks to accurately retrieve IE8 property values. Re-implementing that logic here is not worth bloating the + codebase for a dying browser. The performance repercussions of using jQuery here are minimal since + Velocity is optimized to rarely (and sometimes never) query the DOM. Further, the $.css() codepath isn't that slow. */if(IE <= 8){computedValue = $.css(element,property); /* GET */ /* All other browsers support getComputedStyle. The returned live object reference is cached onto its + associated element so that it does not need to be refetched upon every GET. */}else { /* Browsers do not return height and width values for elements that are set to display:"none". Thus, we temporarily + toggle display to the element type's default value. */var toggleDisplay=false;if(/^(width|height)$/.test(property) && CSS.getPropertyValue(element,"display") === 0){toggleDisplay = true;CSS.setPropertyValue(element,"display",CSS.Values.getDisplayType(element));}var revertDisplay=function revertDisplay(){if(toggleDisplay){CSS.setPropertyValue(element,"display","none");}};if(!forceStyleLookup){if(property === "height" && CSS.getPropertyValue(element,"boxSizing").toString().toLowerCase() !== "border-box"){var contentBoxHeight=element.offsetHeight - (parseFloat(CSS.getPropertyValue(element,"borderTopWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element,"borderBottomWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element,"paddingTop")) || 0) - (parseFloat(CSS.getPropertyValue(element,"paddingBottom")) || 0);revertDisplay();return contentBoxHeight;}else if(property === "width" && CSS.getPropertyValue(element,"boxSizing").toString().toLowerCase() !== "border-box"){var contentBoxWidth=element.offsetWidth - (parseFloat(CSS.getPropertyValue(element,"borderLeftWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element,"borderRightWidth")) || 0) - (parseFloat(CSS.getPropertyValue(element,"paddingLeft")) || 0) - (parseFloat(CSS.getPropertyValue(element,"paddingRight")) || 0);revertDisplay();return contentBoxWidth;}}var computedStyle; /* For elements that Velocity hasn't been called on directly (e.g. when Velocity queries the DOM on behalf + of a parent of an element its animating), perform a direct getComputedStyle lookup since the object isn't cached. */if(Data(element) === undefined){computedStyle = window.getComputedStyle(element,null); /* GET */ /* If the computedStyle object has yet to be cached, do so now. */}else if(!Data(element).computedStyle){computedStyle = Data(element).computedStyle = window.getComputedStyle(element,null); /* GET */ /* If computedStyle is cached, use it. */}else {computedStyle = Data(element).computedStyle;} /* IE and Firefox do not return a value for the generic borderColor -- they only return individual values for each border side's color. + Also, in all browsers, when border colors aren't all the same, a compound value is returned that Velocity isn't setup to parse. + So, as a polyfill for querying individual border side colors, we just return the top border's color and animate all borders from that value. */if(property === "borderColor"){property = "borderTopColor";} /* IE9 has a bug in which the "filter" property must be accessed from computedStyle using the getPropertyValue method + instead of a direct property lookup. The getPropertyValue method is slower than a direct lookup, which is why we avoid it by default. */if(IE === 9 && property === "filter"){computedValue = computedStyle.getPropertyValue(property); /* GET */}else {computedValue = computedStyle[property];} /* Fall back to the property's style value (if defined) when computedValue returns nothing, + which can happen when the element hasn't been painted. */if(computedValue === "" || computedValue === null){computedValue = element.style[property];}revertDisplay();} /* For top, right, bottom, and left (TRBL) values that are set to "auto" on elements of "fixed" or "absolute" position, + defer to jQuery for converting "auto" to a numeric value. (For elements with a "static" or "relative" position, "auto" has the same + effect as being set to 0, so no conversion is necessary.) */ /* An example of why numeric conversion is necessary: When an element with "position:absolute" has an untouched "left" + property, which reverts to "auto", left's value is 0 relative to its parent element, but is often non-zero relative + to its *containing* (not parent) element, which is the nearest "position:relative" ancestor or the viewport (and always the viewport in the case of "position:fixed"). */if(computedValue === "auto" && /^(top|right|bottom|left)$/i.test(property)){var position=computePropertyValue(element,"position"); /* GET */ /* For absolute positioning, jQuery's $.position() only returns values for top and left; + right and bottom will have their "auto" value reverted to 0. */ /* Note: A jQuery object must be created here since jQuery doesn't have a low-level alias for $.position(). + Not a big deal since we're currently in a GET batch anyway. */if(position === "fixed" || position === "absolute" && /top|left/i.test(property)){ /* Note: jQuery strips the pixel unit from its returned values; we re-add it here to conform with computePropertyValue's behavior. */computedValue = $(element).position()[property] + "px"; /* GET */}}return computedValue;}var propertyValue; /* If this is a hooked property (e.g. "clipLeft" instead of the root property of "clip"), + extract the hook's value from a normalized rootPropertyValue using CSS.Hooks.extractValue(). */if(CSS.Hooks.registered[property]){var hook=property,hookRoot=CSS.Hooks.getRoot(hook); /* If a cached rootPropertyValue wasn't passed in (which Velocity always attempts to do in order to avoid requerying the DOM), + query the DOM for the root property's value. */if(rootPropertyValue === undefined){ /* Since the browser is now being directly queried, use the official post-prefixing property name for this lookup. */rootPropertyValue = CSS.getPropertyValue(element,CSS.Names.prefixCheck(hookRoot)[0]); /* GET */} /* If this root has a normalization registered, peform the associated normalization extraction. */if(CSS.Normalizations.registered[hookRoot]){rootPropertyValue = CSS.Normalizations.registered[hookRoot]("extract",element,rootPropertyValue);} /* Extract the hook's value. */propertyValue = CSS.Hooks.extractValue(hook,rootPropertyValue); /* If this is a normalized property (e.g. "opacity" becomes "filter" in <=IE8) or "translateX" becomes "transform"), + normalize the property's name and value, and handle the special case of transforms. */ /* Note: Normalizing a property is mutually exclusive from hooking a property since hook-extracted values are strictly + numerical and therefore do not require normalization extraction. */}else if(CSS.Normalizations.registered[property]){var normalizedPropertyName,normalizedPropertyValue;normalizedPropertyName = CSS.Normalizations.registered[property]("name",element); /* Transform values are calculated via normalization extraction (see below), which checks against the element's transformCache. + At no point do transform GETs ever actually query the DOM; initial stylesheet values are never processed. + This is because parsing 3D transform matrices is not always accurate and would bloat our codebase; + thus, normalization extraction defaults initial transform values to their zero-values (e.g. 1 for scaleX and 0 for translateX). */if(normalizedPropertyName !== "transform"){normalizedPropertyValue = computePropertyValue(element,CSS.Names.prefixCheck(normalizedPropertyName)[0]); /* GET */ /* If the value is a CSS null-value and this property has a hook template, use that zero-value template so that hooks can be extracted from it. */if(CSS.Values.isCSSNullValue(normalizedPropertyValue) && CSS.Hooks.templates[property]){normalizedPropertyValue = CSS.Hooks.templates[property][1];}}propertyValue = CSS.Normalizations.registered[property]("extract",element,normalizedPropertyValue);} /* If a (numeric) value wasn't produced via hook extraction or normalization, query the DOM. */if(!/^[\d-]/.test(propertyValue)){ /* For SVG elements, dimensional properties (which SVGAttribute() detects) are tweened via + their HTML attribute values instead of their CSS style values. */var data=Data(element);if(data && data.isSVG && CSS.Names.SVGAttribute(property)){ /* Since the height/width attribute values must be set manually, they don't reflect computed values. + Thus, we use use getBBox() to ensure we always get values for elements with undefined height/width attributes. */if(/^(height|width)$/i.test(property)){ /* Firefox throws an error if .getBBox() is called on an SVG that isn't attached to the DOM. */try{propertyValue = element.getBBox()[property];}catch(error) {propertyValue = 0;} /* Otherwise, access the attribute value directly. */}else {propertyValue = element.getAttribute(property);}}else {propertyValue = computePropertyValue(element,CSS.Names.prefixCheck(property)[0]); /* GET */}} /* Since property lookups are for animation purposes (which entails computing the numeric delta between start and end values), + convert CSS null-values to an integer of value 0. */if(CSS.Values.isCSSNullValue(propertyValue)){propertyValue = 0;}if(Velocity.debug >= 2){console.log("Get " + property + ": " + propertyValue);}return propertyValue;}, /* The singular setPropertyValue, which routes the logic for all normalizations, hooks, and standard CSS properties. */setPropertyValue:function setPropertyValue(element,property,propertyValue,rootPropertyValue,scrollData){var propertyName=property; /* In order to be subjected to call options and element queueing, scroll animation is routed through Velocity as if it were a standard CSS property. */if(property === "scroll"){ /* If a container option is present, scroll the container instead of the browser window. */if(scrollData.container){scrollData.container["scroll" + scrollData.direction] = propertyValue; /* Otherwise, Velocity defaults to scrolling the browser window. */}else {if(scrollData.direction === "Left"){window.scrollTo(propertyValue,scrollData.alternateValue);}else {window.scrollTo(scrollData.alternateValue,propertyValue);}}}else { /* Transforms (translateX, rotateZ, etc.) are applied to a per-element transformCache object, which is manually flushed via flushTransformCache(). + Thus, for now, we merely cache transforms being SET. */if(CSS.Normalizations.registered[property] && CSS.Normalizations.registered[property]("name",element) === "transform"){ /* Perform a normalization injection. */ /* Note: The normalization logic handles the transformCache updating. */CSS.Normalizations.registered[property]("inject",element,propertyValue);propertyName = "transform";propertyValue = Data(element).transformCache[property];}else { /* Inject hooks. */if(CSS.Hooks.registered[property]){var hookName=property,hookRoot=CSS.Hooks.getRoot(property); /* If a cached rootPropertyValue was not provided, query the DOM for the hookRoot's current value. */rootPropertyValue = rootPropertyValue || CSS.getPropertyValue(element,hookRoot); /* GET */propertyValue = CSS.Hooks.injectValue(hookName,propertyValue,rootPropertyValue);property = hookRoot;} /* Normalize names and values. */if(CSS.Normalizations.registered[property]){propertyValue = CSS.Normalizations.registered[property]("inject",element,propertyValue);property = CSS.Normalizations.registered[property]("name",element);} /* Assign the appropriate vendor prefix before performing an official style update. */propertyName = CSS.Names.prefixCheck(property)[0]; /* A try/catch is used for IE<=8, which throws an error when "invalid" CSS values are set, e.g. a negative width. + Try/catch is avoided for other browsers since it incurs a performance overhead. */if(IE <= 8){try{element.style[propertyName] = propertyValue;}catch(error) {if(Velocity.debug){console.log("Browser does not support [" + propertyValue + "] for [" + propertyName + "]");}} /* SVG elements have their dimensional properties (width, height, x, y, cx, etc.) applied directly as attributes instead of as styles. */ /* Note: IE8 does not support SVG elements, so it's okay that we skip it for SVG animation. */}else {var data=Data(element);if(data && data.isSVG && CSS.Names.SVGAttribute(property)){ /* Note: For SVG attributes, vendor-prefixed property names are never used. */ /* Note: Not all CSS properties can be animated via attributes, but the browser won't throw an error for unsupported properties. */element.setAttribute(property,propertyValue);}else {element.style[propertyName] = propertyValue;}}if(Velocity.debug >= 2){console.log("Set " + property + " (" + propertyName + "): " + propertyValue);}}} /* Return the normalized property name and value in case the caller wants to know how these values were modified before being applied to the DOM. */return [propertyName,propertyValue];}, /* To increase performance by batching transform updates into a single SET, transforms are not directly applied to an element until flushTransformCache() is called. */ /* Note: Velocity applies transform properties in the same order that they are chronogically introduced to the element's CSS styles. */flushTransformCache:function flushTransformCache(element){var transformString="",data=Data(element); /* Certain browsers require that SVG transforms be applied as an attribute. However, the SVG transform attribute takes a modified version of CSS's transform string + (units are dropped and, except for skewX/Y, subproperties are merged into their master property -- e.g. scaleX and scaleY are merged into scale(X Y). */if((IE || Velocity.State.isAndroid && !Velocity.State.isChrome) && data && data.isSVG){ /* Since transform values are stored in their parentheses-wrapped form, we use a helper function to strip out their numeric values. + Further, SVG transform properties only take unitless (representing pixels) values, so it's okay that parseFloat() strips the unit suffixed to the float value. */var getTransformFloat=function getTransformFloat(transformProperty){return parseFloat(CSS.getPropertyValue(element,transformProperty));}; /* Create an object to organize all the transforms that we'll apply to the SVG element. To keep the logic simple, + we process *all* transform properties -- even those that may not be explicitly applied (since they default to their zero-values anyway). */var SVGTransforms={translate:[getTransformFloat("translateX"),getTransformFloat("translateY")],skewX:[getTransformFloat("skewX")],skewY:[getTransformFloat("skewY")], /* If the scale property is set (non-1), use that value for the scaleX and scaleY values + (this behavior mimics the result of animating all these properties at once on HTML elements). */scale:getTransformFloat("scale") !== 1?[getTransformFloat("scale"),getTransformFloat("scale")]:[getTransformFloat("scaleX"),getTransformFloat("scaleY")], /* Note: SVG's rotate transform takes three values: rotation degrees followed by the X and Y values + defining the rotation's origin point. We ignore the origin values (default them to 0). */rotate:[getTransformFloat("rotateZ"),0,0]}; /* Iterate through the transform properties in the user-defined property map order. + (This mimics the behavior of non-SVG transform animation.) */$.each(Data(element).transformCache,function(transformName){ /* Except for with skewX/Y, revert the axis-specific transform subproperties to their axis-free master + properties so that they match up with SVG's accepted transform properties. */if(/^translate/i.test(transformName)){transformName = "translate";}else if(/^scale/i.test(transformName)){transformName = "scale";}else if(/^rotate/i.test(transformName)){transformName = "rotate";} /* Check that we haven't yet deleted the property from the SVGTransforms container. */if(SVGTransforms[transformName]){ /* Append the transform property in the SVG-supported transform format. As per the spec, surround the space-delimited values in parentheses. */transformString += transformName + "(" + SVGTransforms[transformName].join(" ") + ")" + " "; /* After processing an SVG transform property, delete it from the SVGTransforms container so we don't + re-insert the same master property if we encounter another one of its axis-specific properties. */delete SVGTransforms[transformName];}});}else {var transformValue,perspective; /* Transform properties are stored as members of the transformCache object. Concatenate all the members into a string. */$.each(Data(element).transformCache,function(transformName){transformValue = Data(element).transformCache[transformName]; /* Transform's perspective subproperty must be set first in order to take effect. Store it temporarily. */if(transformName === "transformPerspective"){perspective = transformValue;return true;} /* IE9 only supports one rotation type, rotateZ, which it refers to as "rotate". */if(IE === 9 && transformName === "rotateZ"){transformName = "rotate";}transformString += transformName + transformValue + " ";}); /* If present, set the perspective subproperty first. */if(perspective){transformString = "perspective" + perspective + " " + transformString;}}CSS.setPropertyValue(element,"transform",transformString);}}; /* Register hooks and normalizations. */CSS.Hooks.register();CSS.Normalizations.register(); /* Allow hook setting in the same fashion as jQuery's $.css(). */Velocity.hook = function(elements,arg2,arg3){var value;elements = sanitizeElements(elements);$.each(elements,function(i,element){ /* Initialize Velocity's per-element data cache if this element hasn't previously been animated. */if(Data(element) === undefined){Velocity.init(element);} /* Get property value. If an element set was passed in, only return the value for the first element. */if(arg3 === undefined){if(value === undefined){value = CSS.getPropertyValue(element,arg2);} /* Set property value. */}else { /* sPV returns an array of the normalized propertyName/propertyValue pair used to update the DOM. */var adjustedSet=CSS.setPropertyValue(element,arg2,arg3); /* Transform properties don't automatically set. They have to be flushed to the DOM. */if(adjustedSet[0] === "transform"){Velocity.CSS.flushTransformCache(element);}value = adjustedSet;}});return value;}; /***************** + Animation + *****************/var animate=function animate(){var opts; /****************** + Call Chain + ******************/ /* Logic for determining what to return to the call stack when exiting out of Velocity. */function getChain(){ /* If we are using the utility function, attempt to return this call's promise. If no promise library was detected, + default to null instead of returning the targeted elements so that utility function's return value is standardized. */if(isUtility){return promiseData.promise || null; /* Otherwise, if we're using $.fn, return the jQuery-/Zepto-wrapped element set. */}else {return elementsWrapped;}} /************************* + Arguments Assignment + *************************/ /* To allow for expressive CoffeeScript code, Velocity supports an alternative syntax in which "elements" (or "e"), "properties" (or "p"), and "options" (or "o") + objects are defined on a container object that's passed in as Velocity's sole argument. */ /* Note: Some browsers automatically populate arguments with a "properties" object. We detect it by checking for its default "names" property. */var syntacticSugar=arguments[0] && (arguments[0].p || $.isPlainObject(arguments[0].properties) && !arguments[0].properties.names || Type.isString(arguments[0].properties)), /* Whether Velocity was called via the utility function (as opposed to on a jQuery/Zepto object). */isUtility, /* When Velocity is called via the utility function ($.Velocity()/Velocity()), elements are explicitly + passed in as the first parameter. Thus, argument positioning varies. We normalize them here. */elementsWrapped,argumentIndex;var elements,propertiesMap,options; /* Detect jQuery/Zepto elements being animated via the $.fn method. */if(Type.isWrapped(this)){isUtility = false;argumentIndex = 0;elements = this;elementsWrapped = this; /* Otherwise, raw elements are being animated via the utility function. */}else {isUtility = true;argumentIndex = 1;elements = syntacticSugar?arguments[0].elements || arguments[0].e:arguments[0];} /*************** + Promises + ***************/var promiseData={promise:null,resolver:null,rejecter:null}; /* If this call was made via the utility function (which is the default method of invocation when jQuery/Zepto are not being used), and if + promise support was detected, create a promise object for this call and store references to its resolver and rejecter methods. The resolve + method is used when a call completes naturally or is prematurely stopped by the user. In both cases, completeCall() handles the associated + call cleanup and promise resolving logic. The reject method is used when an invalid set of arguments is passed into a Velocity call. */ /* Note: Velocity employs a call-based queueing architecture, which means that stopping an animating element actually stops the full call that + triggered it -- not that one element exclusively. Similarly, there is one promise per call, and all elements targeted by a Velocity call are + grouped together for the purposes of resolving and rejecting a promise. */if(isUtility && Velocity.Promise){promiseData.promise = new Velocity.Promise(function(resolve,reject){promiseData.resolver = resolve;promiseData.rejecter = reject;});}if(syntacticSugar){propertiesMap = arguments[0].properties || arguments[0].p;options = arguments[0].options || arguments[0].o;}else {propertiesMap = arguments[argumentIndex];options = arguments[argumentIndex + 1];}elements = sanitizeElements(elements);if(!elements){if(promiseData.promise){if(!propertiesMap || !options || options.promiseRejectEmpty !== false){promiseData.rejecter();}else {promiseData.resolver();}}return;} /* The length of the element set (in the form of a nodeList or an array of elements) is defaulted to 1 in case a + single raw DOM element is passed in (which doesn't contain a length property). */var elementsLength=elements.length,elementsIndex=0; /*************************** + Argument Overloading + ***************************/ /* Support is included for jQuery's argument overloading: $.animate(propertyMap [, duration] [, easing] [, complete]). + Overloading is detected by checking for the absence of an object being passed into options. */ /* Note: The stop/finish/pause/resume actions do not accept animation options, and are therefore excluded from this check. */if(!/^(stop|finish|finishAll|pause|resume)$/i.test(propertiesMap) && !$.isPlainObject(options)){ /* The utility function shifts all arguments one position to the right, so we adjust for that offset. */var startingArgumentPosition=argumentIndex + 1;options = {}; /* Iterate through all options arguments */for(var i=startingArgumentPosition;i < arguments.length;i++) { /* Treat a number as a duration. Parse it out. */ /* Note: The following RegEx will return true if passed an array with a number as its first item. + Thus, arrays are skipped from this check. */if(!Type.isArray(arguments[i]) && (/^(fast|normal|slow)$/i.test(arguments[i]) || /^\d/.test(arguments[i]))){options.duration = arguments[i]; /* Treat strings and arrays as easings. */}else if(Type.isString(arguments[i]) || Type.isArray(arguments[i])){options.easing = arguments[i]; /* Treat a function as a complete callback. */}else if(Type.isFunction(arguments[i])){options.complete = arguments[i];}}} /********************* + Action Detection + *********************/ /* Velocity's behavior is categorized into "actions": Elements can either be specially scrolled into view, + or they can be started, stopped, paused, resumed, or reversed . If a literal or referenced properties map is passed in as Velocity's + first argument, the associated action is "start". Alternatively, "scroll", "reverse", "pause", "resume" or "stop" can be passed in + instead of a properties map. */var action;switch(propertiesMap){case "scroll":action = "scroll";break;case "reverse":action = "reverse";break;case "pause": /******************* + Action: Pause + *******************/var currentTime=new Date().getTime(); /* Handle delay timers */$.each(elements,function(i,element){pauseDelayOnElement(element,currentTime);}); /* Pause and Resume are call-wide (not on a per element basis). Thus, calling pause or resume on a + single element will cause any calls that containt tweens for that element to be paused/resumed + as well. */ /* Iterate through all calls and pause any that contain any of our elements */$.each(Velocity.State.calls,function(i,activeCall){var found=false; /* Inactive calls are set to false by the logic inside completeCall(). Skip them. */if(activeCall){ /* Iterate through the active call's targeted elements. */$.each(activeCall[1],function(k,activeElement){var queueName=options === undefined?"":options;if(queueName !== true && activeCall[2].queue !== queueName && !(options === undefined && activeCall[2].queue === false)){return true;} /* Iterate through the calls targeted by the stop command. */$.each(elements,function(l,element){ /* Check that this call was applied to the target element. */if(element === activeElement){ /* Set call to paused */activeCall[5] = {resume:false}; /* Once we match an element, we can bounce out to the next call entirely */found = true;return false;}}); /* Proceed to check next call if we have already matched */if(found){return false;}});}}); /* Since pause creates no new tweens, exit out of Velocity. */return getChain();case "resume": /******************* + Action: Resume + *******************/ /* Handle delay timers */$.each(elements,function(i,element){resumeDelayOnElement(element,currentTime);}); /* Pause and Resume are call-wide (not on a per elemnt basis). Thus, calling pause or resume on a + single element will cause any calls that containt tweens for that element to be paused/resumed + as well. */ /* Iterate through all calls and pause any that contain any of our elements */$.each(Velocity.State.calls,function(i,activeCall){var found=false; /* Inactive calls are set to false by the logic inside completeCall(). Skip them. */if(activeCall){ /* Iterate through the active call's targeted elements. */$.each(activeCall[1],function(k,activeElement){var queueName=options === undefined?"":options;if(queueName !== true && activeCall[2].queue !== queueName && !(options === undefined && activeCall[2].queue === false)){return true;} /* Skip any calls that have never been paused */if(!activeCall[5]){return true;} /* Iterate through the calls targeted by the stop command. */$.each(elements,function(l,element){ /* Check that this call was applied to the target element. */if(element === activeElement){ /* Flag a pause object to be resumed, which will occur during the next tick. In + addition, the pause object will at that time be deleted */activeCall[5].resume = true; /* Once we match an element, we can bounce out to the next call entirely */found = true;return false;}}); /* Proceed to check next call if we have already matched */if(found){return false;}});}}); /* Since resume creates no new tweens, exit out of Velocity. */return getChain();case "finish":case "finishAll":case "stop": /******************* + Action: Stop + *******************/ /* Clear the currently-active delay on each targeted element. */$.each(elements,function(i,element){if(Data(element) && Data(element).delayTimer){ /* Stop the timer from triggering its cached next() function. */clearTimeout(Data(element).delayTimer.setTimeout); /* Manually call the next() function so that the subsequent queue items can progress. */if(Data(element).delayTimer.next){Data(element).delayTimer.next();}delete Data(element).delayTimer;} /* If we want to finish everything in the queue, we have to iterate through it + and call each function. This will make them active calls below, which will + cause them to be applied via the duration setting. */if(propertiesMap === "finishAll" && (options === true || Type.isString(options))){ /* Iterate through the items in the element's queue. */$.each($.queue(element,Type.isString(options)?options:""),function(_,item){ /* The queue array can contain an "inprogress" string, which we skip. */if(Type.isFunction(item)){item();}}); /* Clearing the $.queue() array is achieved by resetting it to []. */$.queue(element,Type.isString(options)?options:"",[]);}});var callsToStop=[]; /* When the stop action is triggered, the elements' currently active call is immediately stopped. The active call might have + been applied to multiple elements, in which case all of the call's elements will be stopped. When an element + is stopped, the next item in its animation queue is immediately triggered. */ /* An additional argument may be passed in to clear an element's remaining queued calls. Either true (which defaults to the "fx" queue) + or a custom queue string can be passed in. */ /* Note: The stop command runs prior to Velocity's Queueing phase since its behavior is intended to take effect *immediately*, + regardless of the element's current queue state. */ /* Iterate through every active call. */$.each(Velocity.State.calls,function(i,activeCall){ /* Inactive calls are set to false by the logic inside completeCall(). Skip them. */if(activeCall){ /* Iterate through the active call's targeted elements. */$.each(activeCall[1],function(k,activeElement){ /* If true was passed in as a secondary argument, clear absolutely all calls on this element. Otherwise, only + clear calls associated with the relevant queue. */ /* Call stopping logic works as follows: + - options === true --> stop current default queue calls (and queue:false calls), including remaining queued ones. + - options === undefined --> stop current queue:"" call and all queue:false calls. + - options === false --> stop only queue:false calls. + - options === "custom" --> stop current queue:"custom" call, including remaining queued ones (there is no functionality to only clear the currently-running queue:"custom" call). */var queueName=options === undefined?"":options;if(queueName !== true && activeCall[2].queue !== queueName && !(options === undefined && activeCall[2].queue === false)){return true;} /* Iterate through the calls targeted by the stop command. */$.each(elements,function(l,element){ /* Check that this call was applied to the target element. */if(element === activeElement){ /* Optionally clear the remaining queued calls. If we're doing "finishAll" this won't find anything, + due to the queue-clearing above. */if(options === true || Type.isString(options)){ /* Iterate through the items in the element's queue. */$.each($.queue(element,Type.isString(options)?options:""),function(_,item){ /* The queue array can contain an "inprogress" string, which we skip. */if(Type.isFunction(item)){ /* Pass the item's callback a flag indicating that we want to abort from the queue call. + (Specifically, the queue will resolve the call's associated promise then abort.) */item(null,true);}}); /* Clearing the $.queue() array is achieved by resetting it to []. */$.queue(element,Type.isString(options)?options:"",[]);}if(propertiesMap === "stop"){ /* Since "reverse" uses cached start values (the previous call's endValues), these values must be + changed to reflect the final value that the elements were actually tweened to. */ /* Note: If only queue:false animations are currently running on an element, it won't have a tweensContainer + object. Also, queue:false animations can't be reversed. */var data=Data(element);if(data && data.tweensContainer && queueName !== false){$.each(data.tweensContainer,function(m,activeTween){activeTween.endValue = activeTween.currentValue;});}callsToStop.push(i);}else if(propertiesMap === "finish" || propertiesMap === "finishAll"){ /* To get active tweens to finish immediately, we forcefully shorten their durations to 1ms so that + they finish upon the next rAf tick then proceed with normal call completion logic. */activeCall[2].duration = 1;}}});});}}); /* Prematurely call completeCall() on each matched active call. Pass an additional flag for "stop" to indicate + that the complete callback and display:none setting should be skipped since we're completing prematurely. */if(propertiesMap === "stop"){$.each(callsToStop,function(i,j){completeCall(j,true);});if(promiseData.promise){ /* Immediately resolve the promise associated with this stop call since stop runs synchronously. */promiseData.resolver(elements);}} /* Since we're stopping, and not proceeding with queueing, exit out of Velocity. */return getChain();default: /* Treat a non-empty plain object as a literal properties map. */if($.isPlainObject(propertiesMap) && !Type.isEmptyObject(propertiesMap)){action = "start"; /**************** + Redirects + ****************/ /* Check if a string matches a registered redirect (see Redirects above). */}else if(Type.isString(propertiesMap) && Velocity.Redirects[propertiesMap]){opts = $.extend({},options);var durationOriginal=opts.duration,delayOriginal=opts.delay || 0; /* If the backwards option was passed in, reverse the element set so that elements animate from the last to the first. */if(opts.backwards === true){elements = $.extend(true,[],elements).reverse();} /* Individually trigger the redirect for each element in the set to prevent users from having to handle iteration logic in their redirect. */$.each(elements,function(elementIndex,element){ /* If the stagger option was passed in, successively delay each element by the stagger value (in ms). Retain the original delay value. */if(parseFloat(opts.stagger)){opts.delay = delayOriginal + parseFloat(opts.stagger) * elementIndex;}else if(Type.isFunction(opts.stagger)){opts.delay = delayOriginal + opts.stagger.call(element,elementIndex,elementsLength);} /* If the drag option was passed in, successively increase/decrease (depending on the presense of opts.backwards) + the duration of each element's animation, using floors to prevent producing very short durations. */if(opts.drag){ /* Default the duration of UI pack effects (callouts and transitions) to 1000ms instead of the usual default duration of 400ms. */opts.duration = parseFloat(durationOriginal) || (/^(callout|transition)/.test(propertiesMap)?1000:DURATION_DEFAULT); /* For each element, take the greater duration of: A) animation completion percentage relative to the original duration, + B) 75% of the original duration, or C) a 200ms fallback (in case duration is already set to a low value). + The end result is a baseline of 75% of the redirect's duration that increases/decreases as the end of the element set is approached. */opts.duration = Math.max(opts.duration * (opts.backwards?1 - elementIndex / elementsLength:(elementIndex + 1) / elementsLength),opts.duration * 0.75,200);} /* Pass in the call's opts object so that the redirect can optionally extend it. It defaults to an empty object instead of null to + reduce the opts checking logic required inside the redirect. */Velocity.Redirects[propertiesMap].call(element,element,opts || {},elementIndex,elementsLength,elements,promiseData.promise?promiseData:undefined);}); /* Since the animation logic resides within the redirect's own code, abort the remainder of this call. + (The performance overhead up to this point is virtually non-existant.) */ /* Note: The jQuery call chain is kept intact by returning the complete element set. */return getChain();}else {var abortError="Velocity: First argument (" + propertiesMap + ") was not a property map, a known action, or a registered redirect. Aborting.";if(promiseData.promise){promiseData.rejecter(new Error(abortError));}else if(window.console){console.log(abortError);}return getChain();}} /************************** + Call-Wide Variables + **************************/ /* A container for CSS unit conversion ratios (e.g. %, rem, and em ==> px) that is used to cache ratios across all elements + being animated in a single Velocity call. Calculating unit ratios necessitates DOM querying and updating, and is therefore + avoided (via caching) wherever possible. This container is call-wide instead of page-wide to avoid the risk of using stale + conversion metrics across Velocity animations that are not immediately consecutively chained. */var callUnitConversionData={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null}; /* A container for all the ensuing tween data and metadata associated with this call. This container gets pushed to the page-wide + Velocity.State.calls array that is processed during animation ticking. */var call=[]; /************************ + Element Processing + ************************/ /* Element processing consists of three parts -- data processing that cannot go stale and data processing that *can* go stale (i.e. third-party style modifications): + 1) Pre-Queueing: Element-wide variables, including the element's data storage, are instantiated. Call options are prepared. If triggered, the Stop action is executed. + 2) Queueing: The logic that runs once this call has reached its point of execution in the element's $.queue() stack. Most logic is placed here to avoid risking it becoming stale. + 3) Pushing: Consolidation of the tween data followed by its push onto the global in-progress calls container. + `elementArrayIndex` allows passing index of the element in the original array to value functions. + If `elementsIndex` were used instead the index would be determined by the elements' per-element queue. + */function processElement(element,elementArrayIndex){ /************************* + Part I: Pre-Queueing + *************************/ /*************************** + Element-Wide Variables + ***************************/var /* The runtime opts object is the extension of the current call's options and Velocity's page-wide option defaults. */opts=$.extend({},Velocity.defaults,options), /* A container for the processed data associated with each property in the propertyMap. + (Each property in the map produces its own "tween".) */tweensContainer={},elementUnitConversionData; /****************** + Element Init + ******************/if(Data(element) === undefined){Velocity.init(element);} /****************** + Option: Delay + ******************/ /* Since queue:false doesn't respect the item's existing queue, we avoid injecting its delay here (it's set later on). */ /* Note: Velocity rolls its own delay function since jQuery doesn't have a utility alias for $.fn.delay() + (and thus requires jQuery element creation, which we avoid since its overhead includes DOM querying). */if(parseFloat(opts.delay) && opts.queue !== false){$.queue(element,opts.queue,function(next){ /* This is a flag used to indicate to the upcoming completeCall() function that this queue entry was initiated by Velocity. See completeCall() for further details. */Velocity.velocityQueueEntryFlag = true; /* The ensuing queue item (which is assigned to the "next" argument that $.queue() automatically passes in) will be triggered after a setTimeout delay. + The setTimeout is stored so that it can be subjected to clearTimeout() if this animation is prematurely stopped via Velocity's "stop" command, and + delayBegin/delayTime is used to ensure we can "pause" and "resume" a tween that is still mid-delay. */ /* Temporarily store delayed elements to facilite access for global pause/resume */var callIndex=Velocity.State.delayedElements.count++;Velocity.State.delayedElements[callIndex] = element;var delayComplete=(function(index){return function(){ /* Clear the temporary element */Velocity.State.delayedElements[index] = false; /* Finally, issue the call */next();};})(callIndex);Data(element).delayBegin = new Date().getTime();Data(element).delay = parseFloat(opts.delay);Data(element).delayTimer = {setTimeout:setTimeout(next,parseFloat(opts.delay)),next:delayComplete};});} /********************* + Option: Duration + *********************/ /* Support for jQuery's named durations. */switch(opts.duration.toString().toLowerCase()){case "fast":opts.duration = 200;break;case "normal":opts.duration = DURATION_DEFAULT;break;case "slow":opts.duration = 600;break;default: /* Remove the potential "ms" suffix and default to 1 if the user is attempting to set a duration of 0 (in order to produce an immediate style change). */opts.duration = parseFloat(opts.duration) || 1;} /************************ + Global Option: Mock + ************************/if(Velocity.mock !== false){ /* In mock mode, all animations are forced to 1ms so that they occur immediately upon the next rAF tick. + Alternatively, a multiplier can be passed in to time remap all delays and durations. */if(Velocity.mock === true){opts.duration = opts.delay = 1;}else {opts.duration *= parseFloat(Velocity.mock) || 1;opts.delay *= parseFloat(Velocity.mock) || 1;}} /******************* + Option: Easing + *******************/opts.easing = getEasing(opts.easing,opts.duration); /********************** + Option: Callbacks + **********************/ /* Callbacks must functions. Otherwise, default to null. */if(opts.begin && !Type.isFunction(opts.begin)){opts.begin = null;}if(opts.progress && !Type.isFunction(opts.progress)){opts.progress = null;}if(opts.complete && !Type.isFunction(opts.complete)){opts.complete = null;} /********************************* + Option: Display & Visibility + *********************************/ /* Refer to Velocity's documentation (VelocityJS.org/#displayAndVisibility) for a description of the display and visibility options' behavior. */ /* Note: We strictly check for undefined instead of falsiness because display accepts an empty string value. */if(opts.display !== undefined && opts.display !== null){opts.display = opts.display.toString().toLowerCase(); /* Users can pass in a special "auto" value to instruct Velocity to set the element to its default display value. */if(opts.display === "auto"){opts.display = Velocity.CSS.Values.getDisplayType(element);}}if(opts.visibility !== undefined && opts.visibility !== null){opts.visibility = opts.visibility.toString().toLowerCase();} /********************** + Option: mobileHA + **********************/ /* When set to true, and if this is a mobile device, mobileHA automatically enables hardware acceleration (via a null transform hack) + on animating elements. HA is removed from the element at the completion of its animation. */ /* Note: Android Gingerbread doesn't support HA. If a null transform hack (mobileHA) is in fact set, it will prevent other tranform subproperties from taking effect. */ /* Note: You can read more about the use of mobileHA in Velocity's documentation: VelocityJS.org/#mobileHA. */opts.mobileHA = opts.mobileHA && Velocity.State.isMobile && !Velocity.State.isGingerbread; /*********************** + Part II: Queueing + ***********************/ /* When a set of elements is targeted by a Velocity call, the set is broken up and each element has the current Velocity call individually queued onto it. + In this way, each element's existing queue is respected; some elements may already be animating and accordingly should not have this current Velocity call triggered immediately. */ /* In each queue, tween data is processed for each animating property then pushed onto the call-wide calls array. When the last element in the set has had its tweens processed, + the call array is pushed to Velocity.State.calls for live processing by the requestAnimationFrame tick. */function buildQueue(next){var data,lastTweensContainer; /******************* + Option: Begin + *******************/ /* The begin callback is fired once per call -- not once per elemenet -- and is passed the full raw DOM element set as both its context and its first argument. */if(opts.begin && elementsIndex === 0){ /* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */try{opts.begin.call(elements,elements);}catch(error) {setTimeout(function(){throw error;},1);}} /***************************************** + Tween Data Construction (for Scroll) + *****************************************/ /* Note: In order to be subjected to chaining and animation options, scroll's tweening is routed through Velocity as if it were a standard CSS property animation. */if(action === "scroll"){ /* The scroll action uniquely takes an optional "offset" option -- specified in pixels -- that offsets the targeted scroll position. */var scrollDirection=/^x$/i.test(opts.axis)?"Left":"Top",scrollOffset=parseFloat(opts.offset) || 0,scrollPositionCurrent,scrollPositionCurrentAlternate,scrollPositionEnd; /* Scroll also uniquely takes an optional "container" option, which indicates the parent element that should be scrolled -- + as opposed to the browser window itself. This is useful for scrolling toward an element that's inside an overflowing parent element. */if(opts.container){ /* Ensure that either a jQuery object or a raw DOM element was passed in. */if(Type.isWrapped(opts.container) || Type.isNode(opts.container)){ /* Extract the raw DOM element from the jQuery wrapper. */opts.container = opts.container[0] || opts.container; /* Note: Unlike other properties in Velocity, the browser's scroll position is never cached since it so frequently changes + (due to the user's natural interaction with the page). */scrollPositionCurrent = opts.container["scroll" + scrollDirection]; /* GET */ /* $.position() values are relative to the container's currently viewable area (without taking into account the container's true dimensions + -- say, for example, if the container was not overflowing). Thus, the scroll end value is the sum of the child element's position *and* + the scroll container's current scroll position. */scrollPositionEnd = scrollPositionCurrent + $(element).position()[scrollDirection.toLowerCase()] + scrollOffset; /* GET */ /* If a value other than a jQuery object or a raw DOM element was passed in, default to null so that this option is ignored. */}else {opts.container = null;}}else { /* If the window itself is being scrolled -- not a containing element -- perform a live scroll position lookup using + the appropriate cached property names (which differ based on browser type). */scrollPositionCurrent = Velocity.State.scrollAnchor[Velocity.State["scrollProperty" + scrollDirection]]; /* GET */ /* When scrolling the browser window, cache the alternate axis's current value since window.scrollTo() doesn't let us change only one value at a time. */scrollPositionCurrentAlternate = Velocity.State.scrollAnchor[Velocity.State["scrollProperty" + (scrollDirection === "Left"?"Top":"Left")]]; /* GET */ /* Unlike $.position(), $.offset() values are relative to the browser window's true dimensions -- not merely its currently viewable area -- + and therefore end values do not need to be compounded onto current values. */scrollPositionEnd = $(element).offset()[scrollDirection.toLowerCase()] + scrollOffset; /* GET */} /* Since there's only one format that scroll's associated tweensContainer can take, we create it manually. */tweensContainer = {scroll:{rootPropertyValue:false,startValue:scrollPositionCurrent,currentValue:scrollPositionCurrent,endValue:scrollPositionEnd,unitType:"",easing:opts.easing,scrollData:{container:opts.container,direction:scrollDirection,alternateValue:scrollPositionCurrentAlternate}},element:element};if(Velocity.debug){console.log("tweensContainer (scroll): ",tweensContainer.scroll,element);} /****************************************** + Tween Data Construction (for Reverse) + ******************************************/ /* Reverse acts like a "start" action in that a property map is animated toward. The only difference is + that the property map used for reverse is the inverse of the map used in the previous call. Thus, we manipulate + the previous call to construct our new map: use the previous map's end values as our new map's start values. Copy over all other data. */ /* Note: Reverse can be directly called via the "reverse" parameter, or it can be indirectly triggered via the loop option. (Loops are composed of multiple reverses.) */ /* Note: Reverse calls do not need to be consecutively chained onto a currently-animating element in order to operate on cached values; + there is no harm to reverse being called on a potentially stale data cache since reverse's behavior is simply defined + as reverting to the element's values as they were prior to the previous *Velocity* call. */}else if(action === "reverse"){data = Data(element); /* Abort if there is no prior animation data to reverse to. */if(!data){return;}if(!data.tweensContainer){ /* Dequeue the element so that this queue entry releases itself immediately, allowing subsequent queue entries to run. */$.dequeue(element,opts.queue);return;}else { /********************* + Options Parsing + *********************/ /* If the element was hidden via the display option in the previous call, + revert display to "auto" prior to reversal so that the element is visible again. */if(data.opts.display === "none"){data.opts.display = "auto";}if(data.opts.visibility === "hidden"){data.opts.visibility = "visible";} /* If the loop option was set in the previous call, disable it so that "reverse" calls aren't recursively generated. + Further, remove the previous call's callback options; typically, users do not want these to be refired. */data.opts.loop = false;data.opts.begin = null;data.opts.complete = null; /* Since we're extending an opts object that has already been extended with the defaults options object, + we remove non-explicitly-defined properties that are auto-assigned values. */if(!options.easing){delete opts.easing;}if(!options.duration){delete opts.duration;} /* The opts object used for reversal is an extension of the options object optionally passed into this + reverse call plus the options used in the previous Velocity call. */opts = $.extend({},data.opts,opts); /************************************* + Tweens Container Reconstruction + *************************************/ /* Create a deepy copy (indicated via the true flag) of the previous call's tweensContainer. */lastTweensContainer = $.extend(true,{},data?data.tweensContainer:null); /* Manipulate the previous tweensContainer by replacing its end values and currentValues with its start values. */for(var lastTween in lastTweensContainer) { /* In addition to tween data, tweensContainers contain an element property that we ignore here. */if(lastTweensContainer.hasOwnProperty(lastTween) && lastTween !== "element"){var lastStartValue=lastTweensContainer[lastTween].startValue;lastTweensContainer[lastTween].startValue = lastTweensContainer[lastTween].currentValue = lastTweensContainer[lastTween].endValue;lastTweensContainer[lastTween].endValue = lastStartValue; /* Easing is the only option that embeds into the individual tween data (since it can be defined on a per-property basis). + Accordingly, every property's easing value must be updated when an options object is passed in with a reverse call. + The side effect of this extensibility is that all per-property easing values are forcefully reset to the new value. */if(!Type.isEmptyObject(options)){lastTweensContainer[lastTween].easing = opts.easing;}if(Velocity.debug){console.log("reverse tweensContainer (" + lastTween + "): " + JSON.stringify(lastTweensContainer[lastTween]),element);}}}tweensContainer = lastTweensContainer;} /***************************************** + Tween Data Construction (for Start) + *****************************************/}else if(action === "start"){ /************************* + Value Transferring + *************************/ /* If this queue entry follows a previous Velocity-initiated queue entry *and* if this entry was created + while the element was in the process of being animated by Velocity, then this current call is safe to use + the end values from the prior call as its start values. Velocity attempts to perform this value transfer + process whenever possible in order to avoid requerying the DOM. */ /* If values aren't transferred from a prior call and start values were not forcefed by the user (more on this below), + then the DOM is queried for the element's current values as a last resort. */ /* Note: Conversely, animation reversal (and looping) *always* perform inter-call value transfers; they never requery the DOM. */data = Data(element); /* The per-element isAnimating flag is used to indicate whether it's safe (i.e. the data isn't stale) + to transfer over end values to use as start values. If it's set to true and there is a previous + Velocity call to pull values from, do so. */if(data && data.tweensContainer && data.isAnimating === true){lastTweensContainer = data.tweensContainer;} /*************************** + Tween Data Calculation + ***************************/ /* This function parses property data and defaults endValue, easing, and startValue as appropriate. */ /* Property map values can either take the form of 1) a single value representing the end value, + or 2) an array in the form of [ endValue, [, easing] [, startValue] ]. + The optional third parameter is a forcefed startValue to be used instead of querying the DOM for + the element's current value. Read Velocity's docmentation to learn more about forcefeeding: VelocityJS.org/#forcefeeding */var parsePropertyValue=function parsePropertyValue(valueData,skipResolvingEasing){var endValue,easing,startValue; /* If we have a function as the main argument then resolve it first, in case it returns an array that needs to be split */if(Type.isFunction(valueData)){valueData = valueData.call(element,elementArrayIndex,elementsLength);} /* Handle the array format, which can be structured as one of three potential overloads: + A) [ endValue, easing, startValue ], B) [ endValue, easing ], or C) [ endValue, startValue ] */if(Type.isArray(valueData)){ /* endValue is always the first item in the array. Don't bother validating endValue's value now + since the ensuing property cycling logic does that. */endValue = valueData[0]; /* Two-item array format: If the second item is a number, function, or hex string, treat it as a + start value since easings can only be non-hex strings or arrays. */if(!Type.isArray(valueData[1]) && /^[\d-]/.test(valueData[1]) || Type.isFunction(valueData[1]) || CSS.RegEx.isHex.test(valueData[1])){startValue = valueData[1]; /* Two or three-item array: If the second item is a non-hex string easing name or an array, treat it as an easing. */}else if(Type.isString(valueData[1]) && !CSS.RegEx.isHex.test(valueData[1]) && Velocity.Easings[valueData[1]] || Type.isArray(valueData[1])){easing = skipResolvingEasing?valueData[1]:getEasing(valueData[1],opts.duration); /* Don't bother validating startValue's value now since the ensuing property cycling logic inherently does that. */startValue = valueData[2];}else {startValue = valueData[1] || valueData[2];} /* Handle the single-value format. */}else {endValue = valueData;} /* Default to the call's easing if a per-property easing type was not defined. */if(!skipResolvingEasing){easing = easing || opts.easing;} /* If functions were passed in as values, pass the function the current element as its context, + plus the element's index and the element set's size as arguments. Then, assign the returned value. */if(Type.isFunction(endValue)){endValue = endValue.call(element,elementArrayIndex,elementsLength);}if(Type.isFunction(startValue)){startValue = startValue.call(element,elementArrayIndex,elementsLength);} /* Allow startValue to be left as undefined to indicate to the ensuing code that its value was not forcefed. */return [endValue || 0,easing,startValue];};var fixPropertyValue=function fixPropertyValue(property,valueData){ /* In case this property is a hook, there are circumstances where we will intend to work on the hook's root property and not the hooked subproperty. */var rootProperty=CSS.Hooks.getRoot(property),rootPropertyValue=false, /* Parse out endValue, easing, and startValue from the property's data. */endValue=valueData[0],easing=valueData[1],startValue=valueData[2],pattern; /************************** + Start Value Sourcing + **************************/ /* Other than for the dummy tween property, properties that are not supported by the browser (and do not have an associated normalization) will + inherently produce no style changes when set, so they are skipped in order to decrease animation tick overhead. + Property support is determined via prefixCheck(), which returns a false flag when no supported is detected. */ /* Note: Since SVG elements have some of their properties directly applied as HTML attributes, + there is no way to check for their explicit browser support, and so we skip skip this check for them. */if((!data || !data.isSVG) && rootProperty !== "tween" && CSS.Names.prefixCheck(rootProperty)[1] === false && CSS.Normalizations.registered[rootProperty] === undefined){if(Velocity.debug){console.log("Skipping [" + rootProperty + "] due to a lack of browser support.");}return;} /* If the display option is being set to a non-"none" (e.g. "block") and opacity (filter on IE<=8) is being + animated to an endValue of non-zero, the user's intention is to fade in from invisible, thus we forcefeed opacity + a startValue of 0 if its startValue hasn't already been sourced by value transferring or prior forcefeeding. */if((opts.display !== undefined && opts.display !== null && opts.display !== "none" || opts.visibility !== undefined && opts.visibility !== "hidden") && /opacity|filter/.test(property) && !startValue && endValue !== 0){startValue = 0;} /* If values have been transferred from the previous Velocity call, extract the endValue and rootPropertyValue + for all of the current call's properties that were *also* animated in the previous call. */ /* Note: Value transferring can optionally be disabled by the user via the _cacheValues option. */if(opts._cacheValues && lastTweensContainer && lastTweensContainer[property]){if(startValue === undefined){startValue = lastTweensContainer[property].endValue + lastTweensContainer[property].unitType;} /* The previous call's rootPropertyValue is extracted from the element's data cache since that's the + instance of rootPropertyValue that gets freshly updated by the tweening process, whereas the rootPropertyValue + attached to the incoming lastTweensContainer is equal to the root property's value prior to any tweening. */rootPropertyValue = data.rootPropertyValueCache[rootProperty]; /* If values were not transferred from a previous Velocity call, query the DOM as needed. */}else { /* Handle hooked properties. */if(CSS.Hooks.registered[property]){if(startValue === undefined){rootPropertyValue = CSS.getPropertyValue(element,rootProperty); /* GET */ /* Note: The following getPropertyValue() call does not actually trigger a DOM query; + getPropertyValue() will extract the hook from rootPropertyValue. */startValue = CSS.getPropertyValue(element,property,rootPropertyValue); /* If startValue is already defined via forcefeeding, do not query the DOM for the root property's value; + just grab rootProperty's zero-value template from CSS.Hooks. This overwrites the element's actual + root property value (if one is set), but this is acceptable since the primary reason users forcefeed is + to avoid DOM queries, and thus we likewise avoid querying the DOM for the root property's value. */}else { /* Grab this hook's zero-value template, e.g. "0px 0px 0px black". */rootPropertyValue = CSS.Hooks.templates[rootProperty][1];} /* Handle non-hooked properties that haven't already been defined via forcefeeding. */}else if(startValue === undefined){startValue = CSS.getPropertyValue(element,property); /* GET */}} /************************** + Value Data Extraction + **************************/var separatedValue,endValueUnitType,startValueUnitType,operator=false; /* Separates a property value into its numeric value and its unit type. */var separateValue=function separateValue(property,value){var unitType,numericValue;numericValue = (value || "0").toString().toLowerCase() /* Match the unit type at the end of the value. */.replace(/[%A-z]+$/,function(match){ /* Grab the unit type. */unitType = match; /* Strip the unit type off of value. */return "";}); /* If no unit type was supplied, assign one that is appropriate for this property (e.g. "deg" for rotateZ or "px" for width). */if(!unitType){unitType = CSS.Values.getUnitType(property);}return [numericValue,unitType];};if(startValue !== endValue && Type.isString(startValue) && Type.isString(endValue)){pattern = "";var iStart=0, // index in startValue +iEnd=0, // index in endValue +aStart=[], // array of startValue numbers +aEnd=[], // array of endValue numbers +inCalc=0, // Keep track of being inside a "calc()" so we don't duplicate it +inRGB=0, // Keep track of being inside an RGB as we can't use fractional values +inRGBA=0; // Keep track of being inside an RGBA as we must pass fractional for the alpha channel +startValue = CSS.Hooks.fixColors(startValue);endValue = CSS.Hooks.fixColors(endValue);while(iStart < startValue.length && iEnd < endValue.length) {var cStart=startValue[iStart],cEnd=endValue[iEnd];if(/[\d\.-]/.test(cStart) && /[\d\.-]/.test(cEnd)){var tStart=cStart, // temporary character buffer +tEnd=cEnd, // temporary character buffer +dotStart=".", // Make sure we can only ever match a single dot in a decimal +dotEnd="."; // Make sure we can only ever match a single dot in a decimal +while(++iStart < startValue.length) {cStart = startValue[iStart];if(cStart === dotStart){dotStart = ".."; // Can never match two characters +}else if(!/\d/.test(cStart)){break;}tStart += cStart;}while(++iEnd < endValue.length) {cEnd = endValue[iEnd];if(cEnd === dotEnd){dotEnd = ".."; // Can never match two characters +}else if(!/\d/.test(cEnd)){break;}tEnd += cEnd;}var uStart=CSS.Hooks.getUnit(startValue,iStart), // temporary unit type +uEnd=CSS.Hooks.getUnit(endValue,iEnd); // temporary unit type +iStart += uStart.length;iEnd += uEnd.length;if(uStart === uEnd){ // Same units +if(tStart === tEnd){ // Same numbers, so just copy over +pattern += tStart + uStart;}else { // Different numbers, so store them +pattern += "{" + aStart.length + (inRGB?"!":"") + "}" + uStart;aStart.push(parseFloat(tStart));aEnd.push(parseFloat(tEnd));}}else { // Different units, so put into a "calc(from + to)" and animate each side to/from zero +var nStart=parseFloat(tStart),nEnd=parseFloat(tEnd);pattern += (inCalc < 5?"calc":"") + "(" + (nStart?"{" + aStart.length + (inRGB?"!":"") + "}":"0") + uStart + " + " + (nEnd?"{" + (aStart.length + (nStart?1:0)) + (inRGB?"!":"") + "}":"0") + uEnd + ")";if(nStart){aStart.push(nStart);aEnd.push(0);}if(nEnd){aStart.push(0);aEnd.push(nEnd);}}}else if(cStart === cEnd){pattern += cStart;iStart++;iEnd++; // Keep track of being inside a calc() +if(inCalc === 0 && cStart === "c" || inCalc === 1 && cStart === "a" || inCalc === 2 && cStart === "l" || inCalc === 3 && cStart === "c" || inCalc >= 4 && cStart === "("){inCalc++;}else if(inCalc && inCalc < 5 || inCalc >= 4 && cStart === ")" && --inCalc < 5){inCalc = 0;} // Keep track of being inside an rgb() / rgba() +if(inRGB === 0 && cStart === "r" || inRGB === 1 && cStart === "g" || inRGB === 2 && cStart === "b" || inRGB === 3 && cStart === "a" || inRGB >= 3 && cStart === "("){if(inRGB === 3 && cStart === "a"){inRGBA = 1;}inRGB++;}else if(inRGBA && cStart === ","){if(++inRGBA > 3){inRGB = inRGBA = 0;}}else if(inRGBA && inRGB < (inRGBA?5:4) || inRGB >= (inRGBA?4:3) && cStart === ")" && --inRGB < (inRGBA?5:4)){inRGB = inRGBA = 0;}}else {inCalc = 0; // TODO: changing units, fixing colours +break;}}if(iStart !== startValue.length || iEnd !== endValue.length){if(Velocity.debug){console.error("Trying to pattern match mis-matched strings [\"" + endValue + "\", \"" + startValue + "\"]");}pattern = undefined;}if(pattern){if(aStart.length){if(Velocity.debug){console.log("Pattern found \"" + pattern + "\" -> ",aStart,aEnd,"[" + startValue + "," + endValue + "]");}startValue = aStart;endValue = aEnd;endValueUnitType = startValueUnitType = "";}else {pattern = undefined;}}}if(!pattern){ /* Separate startValue. */separatedValue = separateValue(property,startValue);startValue = separatedValue[0];startValueUnitType = separatedValue[1]; /* Separate endValue, and extract a value operator (e.g. "+=", "-=") if one exists. */separatedValue = separateValue(property,endValue);endValue = separatedValue[0].replace(/^([+-\/*])=/,function(match,subMatch){operator = subMatch; /* Strip the operator off of the value. */return "";});endValueUnitType = separatedValue[1]; /* Parse float values from endValue and startValue. Default to 0 if NaN is returned. */startValue = parseFloat(startValue) || 0;endValue = parseFloat(endValue) || 0; /*************************************** + Property-Specific Value Conversion + ***************************************/ /* Custom support for properties that don't actually accept the % unit type, but where pollyfilling is trivial and relatively foolproof. */if(endValueUnitType === "%"){ /* A %-value fontSize/lineHeight is relative to the parent's fontSize (as opposed to the parent's dimensions), + which is identical to the em unit's behavior, so we piggyback off of that. */if(/^(fontSize|lineHeight)$/.test(property)){ /* Convert % into an em decimal value. */endValue = endValue / 100;endValueUnitType = "em"; /* For scaleX and scaleY, convert the value into its decimal format and strip off the unit type. */}else if(/^scale/.test(property)){endValue = endValue / 100;endValueUnitType = ""; /* For RGB components, take the defined percentage of 255 and strip off the unit type. */}else if(/(Red|Green|Blue)$/i.test(property)){endValue = endValue / 100 * 255;endValueUnitType = "";}}} /*************************** + Unit Ratio Calculation + ***************************/ /* When queried, the browser returns (most) CSS property values in pixels. Therefore, if an endValue with a unit type of + %, em, or rem is animated toward, startValue must be converted from pixels into the same unit type as endValue in order + for value manipulation logic (increment/decrement) to proceed. Further, if the startValue was forcefed or transferred + from a previous call, startValue may also not be in pixels. Unit conversion logic therefore consists of two steps: + 1) Calculating the ratio of %/em/rem/vh/vw relative to pixels + 2) Converting startValue into the same unit of measurement as endValue based on these ratios. */ /* Unit conversion ratios are calculated by inserting a sibling node next to the target node, copying over its position property, + setting values with the target unit type then comparing the returned pixel value. */ /* Note: Even if only one of these unit types is being animated, all unit ratios are calculated at once since the overhead + of batching the SETs and GETs together upfront outweights the potential overhead + of layout thrashing caused by re-querying for uncalculated ratios for subsequently-processed properties. */ /* Todo: Shift this logic into the calls' first tick instance so that it's synced with RAF. */var calculateUnitRatios=function calculateUnitRatios(){ /************************ + Same Ratio Checks + ************************/ /* The properties below are used to determine whether the element differs sufficiently from this call's + previously iterated element to also differ in its unit conversion ratios. If the properties match up with those + of the prior element, the prior element's conversion ratios are used. Like most optimizations in Velocity, + this is done to minimize DOM querying. */var sameRatioIndicators={myParent:element.parentNode || document.body, /* GET */position:CSS.getPropertyValue(element,"position"), /* GET */fontSize:CSS.getPropertyValue(element,"fontSize") /* GET */}, /* Determine if the same % ratio can be used. % is based on the element's position value and its parent's width and height dimensions. */samePercentRatio=sameRatioIndicators.position === callUnitConversionData.lastPosition && sameRatioIndicators.myParent === callUnitConversionData.lastParent, /* Determine if the same em ratio can be used. em is relative to the element's fontSize. */sameEmRatio=sameRatioIndicators.fontSize === callUnitConversionData.lastFontSize; /* Store these ratio indicators call-wide for the next element to compare against. */callUnitConversionData.lastParent = sameRatioIndicators.myParent;callUnitConversionData.lastPosition = sameRatioIndicators.position;callUnitConversionData.lastFontSize = sameRatioIndicators.fontSize; /*************************** + Element-Specific Units + ***************************/ /* Note: IE8 rounds to the nearest pixel when returning CSS values, thus we perform conversions using a measurement + of 100 (instead of 1) to give our ratios a precision of at least 2 decimal values. */var measurement=100,unitRatios={};if(!sameEmRatio || !samePercentRatio){var dummy=data && data.isSVG?document.createElementNS("http://www.w3.org/2000/svg","rect"):document.createElement("div");Velocity.init(dummy);sameRatioIndicators.myParent.appendChild(dummy); /* To accurately and consistently calculate conversion ratios, the element's cascaded overflow and box-sizing are stripped. + Similarly, since width/height can be artificially constrained by their min-/max- equivalents, these are controlled for as well. */ /* Note: Overflow must be also be controlled for per-axis since the overflow property overwrites its per-axis values. */$.each(["overflow","overflowX","overflowY"],function(i,property){Velocity.CSS.setPropertyValue(dummy,property,"hidden");});Velocity.CSS.setPropertyValue(dummy,"position",sameRatioIndicators.position);Velocity.CSS.setPropertyValue(dummy,"fontSize",sameRatioIndicators.fontSize);Velocity.CSS.setPropertyValue(dummy,"boxSizing","content-box"); /* width and height act as our proxy properties for measuring the horizontal and vertical % ratios. */$.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(i,property){Velocity.CSS.setPropertyValue(dummy,property,measurement + "%");}); /* paddingLeft arbitrarily acts as our proxy property for the em ratio. */Velocity.CSS.setPropertyValue(dummy,"paddingLeft",measurement + "em"); /* Divide the returned value by the measurement to get the ratio between 1% and 1px. Default to 1 since working with 0 can produce Infinite. */unitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth = (parseFloat(CSS.getPropertyValue(dummy,"width",null,true)) || 1) / measurement; /* GET */unitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight = (parseFloat(CSS.getPropertyValue(dummy,"height",null,true)) || 1) / measurement; /* GET */unitRatios.emToPx = callUnitConversionData.lastEmToPx = (parseFloat(CSS.getPropertyValue(dummy,"paddingLeft")) || 1) / measurement; /* GET */sameRatioIndicators.myParent.removeChild(dummy);}else {unitRatios.emToPx = callUnitConversionData.lastEmToPx;unitRatios.percentToPxWidth = callUnitConversionData.lastPercentToPxWidth;unitRatios.percentToPxHeight = callUnitConversionData.lastPercentToPxHeight;} /*************************** + Element-Agnostic Units + ***************************/ /* Whereas % and em ratios are determined on a per-element basis, the rem unit only needs to be checked + once per call since it's exclusively dependant upon document.body's fontSize. If this is the first time + that calculateUnitRatios() is being run during this call, remToPx will still be set to its default value of null, + so we calculate it now. */if(callUnitConversionData.remToPx === null){ /* Default to browsers' default fontSize of 16px in the case of 0. */callUnitConversionData.remToPx = parseFloat(CSS.getPropertyValue(document.body,"fontSize")) || 16; /* GET */} /* Similarly, viewport units are %-relative to the window's inner dimensions. */if(callUnitConversionData.vwToPx === null){callUnitConversionData.vwToPx = parseFloat(window.innerWidth) / 100; /* GET */callUnitConversionData.vhToPx = parseFloat(window.innerHeight) / 100; /* GET */}unitRatios.remToPx = callUnitConversionData.remToPx;unitRatios.vwToPx = callUnitConversionData.vwToPx;unitRatios.vhToPx = callUnitConversionData.vhToPx;if(Velocity.debug >= 1){console.log("Unit ratios: " + JSON.stringify(unitRatios),element);}return unitRatios;}; /******************** + Unit Conversion + ********************/ /* The * and / operators, which are not passed in with an associated unit, inherently use startValue's unit. Skip value and unit conversion. */if(/[\/*]/.test(operator)){endValueUnitType = startValueUnitType; /* If startValue and endValue differ in unit type, convert startValue into the same unit type as endValue so that if endValueUnitType + is a relative unit (%, em, rem), the values set during tweening will continue to be accurately relative even if the metrics they depend + on are dynamically changing during the course of the animation. Conversely, if we always normalized into px and used px for setting values, the px ratio + would become stale if the original unit being animated toward was relative and the underlying metrics change during the animation. */ /* Since 0 is 0 in any unit type, no conversion is necessary when startValue is 0 -- we just start at 0 with endValueUnitType. */}else if(startValueUnitType !== endValueUnitType && startValue !== 0){ /* Unit conversion is also skipped when endValue is 0, but *startValueUnitType* must be used for tween values to remain accurate. */ /* Note: Skipping unit conversion here means that if endValueUnitType was originally a relative unit, the animation won't relatively + match the underlying metrics if they change, but this is acceptable since we're animating toward invisibility instead of toward visibility, + which remains past the point of the animation's completion. */if(endValue === 0){endValueUnitType = startValueUnitType;}else { /* By this point, we cannot avoid unit conversion (it's undesirable since it causes layout thrashing). + If we haven't already, we trigger calculateUnitRatios(), which runs once per element per call. */elementUnitConversionData = elementUnitConversionData || calculateUnitRatios(); /* The following RegEx matches CSS properties that have their % values measured relative to the x-axis. */ /* Note: W3C spec mandates that all of margin and padding's properties (even top and bottom) are %-relative to the *width* of the parent element. */var axis=/margin|padding|left|right|width|text|word|letter/i.test(property) || /X$/.test(property) || property === "x"?"x":"y"; /* In order to avoid generating n^2 bespoke conversion functions, unit conversion is a two-step process: + 1) Convert startValue into pixels. 2) Convert this new pixel value into endValue's unit type. */switch(startValueUnitType){case "%": /* Note: translateX and translateY are the only properties that are %-relative to an element's own dimensions -- not its parent's dimensions. + Velocity does not include a special conversion process to account for this behavior. Therefore, animating translateX/Y from a % value + to a non-% value will produce an incorrect start value. Fortunately, this sort of cross-unit conversion is rarely done by users in practice. */startValue *= axis === "x"?elementUnitConversionData.percentToPxWidth:elementUnitConversionData.percentToPxHeight;break;case "px": /* px acts as our midpoint in the unit conversion process; do nothing. */break;default:startValue *= elementUnitConversionData[startValueUnitType + "ToPx"];} /* Invert the px ratios to convert into to the target unit. */switch(endValueUnitType){case "%":startValue *= 1 / (axis === "x"?elementUnitConversionData.percentToPxWidth:elementUnitConversionData.percentToPxHeight);break;case "px": /* startValue is already in px, do nothing; we're done. */break;default:startValue *= 1 / elementUnitConversionData[endValueUnitType + "ToPx"];}}} /********************* + Relative Values + *********************/ /* Operator logic must be performed last since it requires unit-normalized start and end values. */ /* Note: Relative *percent values* do not behave how most people think; while one would expect "+=50%" + to increase the property 1.5x its current value, it in fact increases the percent units in absolute terms: + 50 points is added on top of the current % value. */switch(operator){case "+":endValue = startValue + endValue;break;case "-":endValue = startValue - endValue;break;case "*":endValue = startValue * endValue;break;case "/":endValue = startValue / endValue;break;} /************************** + tweensContainer Push + **************************/ /* Construct the per-property tween object, and push it to the element's tweensContainer. */tweensContainer[property] = {rootPropertyValue:rootPropertyValue,startValue:startValue,currentValue:startValue,endValue:endValue,unitType:endValueUnitType,easing:easing};if(pattern){tweensContainer[property].pattern = pattern;}if(Velocity.debug){console.log("tweensContainer (" + property + "): " + JSON.stringify(tweensContainer[property]),element);}}; /* Create a tween out of each property, and append its associated data to tweensContainer. */for(var property in propertiesMap) {if(!propertiesMap.hasOwnProperty(property)){continue;} /* The original property name's format must be used for the parsePropertyValue() lookup, + but we then use its camelCase styling to normalize it for manipulation. */var propertyName=CSS.Names.camelCase(property),valueData=parsePropertyValue(propertiesMap[property]); /* Find shorthand color properties that have been passed a hex string. */ /* Would be quicker to use CSS.Lists.colors.includes() if possible */if(_inArray(CSS.Lists.colors,propertyName)){ /* Parse the value data for each shorthand. */var endValue=valueData[0],easing=valueData[1],startValue=valueData[2];if(CSS.RegEx.isHex.test(endValue)){ /* Convert the hex strings into their RGB component arrays. */var colorComponents=["Red","Green","Blue"],endValueRGB=CSS.Values.hexToRgb(endValue),startValueRGB=startValue?CSS.Values.hexToRgb(startValue):undefined; /* Inject the RGB component tweens into propertiesMap. */for(var i=0;i < colorComponents.length;i++) {var dataArray=[endValueRGB[i]];if(easing){dataArray.push(easing);}if(startValueRGB !== undefined){dataArray.push(startValueRGB[i]);}fixPropertyValue(propertyName + colorComponents[i],dataArray);} /* If we have replaced a shortcut color value then don't update the standard property name */continue;}}fixPropertyValue(propertyName,valueData);} /* Along with its property data, store a reference to the element itself onto tweensContainer. */tweensContainer.element = element;} /***************** + Call Push + *****************/ /* Note: tweensContainer can be empty if all of the properties in this call's property map were skipped due to not + being supported by the browser. The element property is used for checking that the tweensContainer has been appended to. */if(tweensContainer.element){ /* Apply the "velocity-animating" indicator class. */CSS.Values.addClass(element,"velocity-animating"); /* The call array houses the tweensContainers for each element being animated in the current call. */call.push(tweensContainer);data = Data(element);if(data){ /* Store the tweensContainer and options if we're working on the default effects queue, so that they can be used by the reverse command. */if(opts.queue === ""){data.tweensContainer = tweensContainer;data.opts = opts;} /* Switch on the element's animating flag. */data.isAnimating = true;} /* Once the final element in this call's element set has been processed, push the call array onto + Velocity.State.calls for the animation tick to immediately begin processing. */if(elementsIndex === elementsLength - 1){ /* Add the current call plus its associated metadata (the element set and the call's options) onto the global call container. + Anything on this call container is subjected to tick() processing. */Velocity.State.calls.push([call,elements,opts,null,promiseData.resolver,null,0]); /* If the animation tick isn't running, start it. (Velocity shuts it off when there are no active calls to process.) */if(Velocity.State.isTicking === false){Velocity.State.isTicking = true; /* Start the tick loop. */tick();}}else {elementsIndex++;}}} /* When the queue option is set to false, the call skips the element's queue and fires immediately. */if(opts.queue === false){ /* Since this buildQueue call doesn't respect the element's existing queue (which is where a delay option would have been appended), + we manually inject the delay property here with an explicit setTimeout. */if(opts.delay){ /* Temporarily store delayed elements to facilitate access for global pause/resume */var callIndex=Velocity.State.delayedElements.count++;Velocity.State.delayedElements[callIndex] = element;var delayComplete=(function(index){return function(){ /* Clear the temporary element */Velocity.State.delayedElements[index] = false; /* Finally, issue the call */buildQueue();};})(callIndex);Data(element).delayBegin = new Date().getTime();Data(element).delay = parseFloat(opts.delay);Data(element).delayTimer = {setTimeout:setTimeout(buildQueue,parseFloat(opts.delay)),next:delayComplete};}else {buildQueue();} /* Otherwise, the call undergoes element queueing as normal. */ /* Note: To interoperate with jQuery, Velocity uses jQuery's own $.queue() stack for queuing logic. */}else {$.queue(element,opts.queue,function(next,clearQueue){ /* If the clearQueue flag was passed in by the stop command, resolve this call's promise. (Promises can only be resolved once, + so it's fine if this is repeatedly triggered for each element in the associated call.) */if(clearQueue === true){if(promiseData.promise){promiseData.resolver(elements);} /* Do not continue with animation queueing. */return true;} /* This flag indicates to the upcoming completeCall() function that this queue entry was initiated by Velocity. + See completeCall() for further details. */Velocity.velocityQueueEntryFlag = true;buildQueue(next);});} /********************* + Auto-Dequeuing + *********************/ /* As per jQuery's $.queue() behavior, to fire the first non-custom-queue entry on an element, the element + must be dequeued if its queue stack consists *solely* of the current call. (This can be determined by checking + for the "inprogress" item that jQuery prepends to active queue stack arrays.) Regardless, whenever the element's + queue is further appended with additional items -- including $.delay()'s or even $.animate() calls, the queue's + first entry is automatically fired. This behavior contrasts that of custom queues, which never auto-fire. */ /* Note: When an element set is being subjected to a non-parallel Velocity call, the animation will not begin until + each one of the elements in the set has reached the end of its individually pre-existing queue chain. */ /* Note: Unfortunately, most people don't fully grasp jQuery's powerful, yet quirky, $.queue() function. + Lean more here: http://stackoverflow.com/questions/1058158/can-somebody-explain-jquery-queue-to-me */if((opts.queue === "" || opts.queue === "fx") && $.queue(element)[0] !== "inprogress"){$.dequeue(element);}} /************************** + Element Set Iteration + **************************/ /* If the "nodeType" property exists on the elements variable, we're animating a single element. + Place it in an array so that $.each() can iterate over it. */$.each(elements,function(i,element){ /* Ensure each element in a set has a nodeType (is a real element) to avoid throwing errors. */if(Type.isNode(element)){processElement(element,i);}}); /****************** + Option: Loop + ******************/ /* The loop option accepts an integer indicating how many times the element should loop between the values in the + current call's properties map and the element's property values prior to this call. */ /* Note: The loop option's logic is performed here -- after element processing -- because the current call needs + to undergo its queue insertion prior to the loop option generating its series of constituent "reverse" calls, + which chain after the current call. Two reverse calls (two "alternations") constitute one loop. */opts = $.extend({},Velocity.defaults,options);opts.loop = parseInt(opts.loop,10);var reverseCallsCount=opts.loop * 2 - 1;if(opts.loop){ /* Double the loop count to convert it into its appropriate number of "reverse" calls. + Subtract 1 from the resulting value since the current call is included in the total alternation count. */for(var x=0;x < reverseCallsCount;x++) { /* Since the logic for the reverse action occurs inside Queueing and therefore this call's options object + isn't parsed until then as well, the current call's delay option must be explicitly passed into the reverse + call so that the delay logic that occurs inside *Pre-Queueing* can process it. */var reverseOptions={delay:opts.delay,progress:opts.progress}; /* If a complete callback was passed into this call, transfer it to the loop redirect's final "reverse" call + so that it's triggered when the entire redirect is complete (and not when the very first animation is complete). */if(x === reverseCallsCount - 1){reverseOptions.display = opts.display;reverseOptions.visibility = opts.visibility;reverseOptions.complete = opts.complete;}animate(elements,"reverse",reverseOptions);}} /*************** + Chaining + ***************/ /* Return the elements back to the call chain, with wrapped elements taking precedence in case Velocity was called via the $.fn. extension. */return getChain();}; /* Turn Velocity into the animation function, extended with the pre-existing Velocity object. */Velocity = $.extend(animate,Velocity); /* For legacy support, also expose the literal animate method. */Velocity.animate = animate; /************** + Timing + **************/ /* Ticker function. */var ticker=window.requestAnimationFrame || rAFShim; /* Inactive browser tabs pause rAF, which results in all active animations immediately sprinting to their completion states when the tab refocuses. + To get around this, we dynamically switch rAF to setTimeout (which the browser *doesn't* pause) when the tab loses focus. We skip this for mobile + devices to avoid wasting battery power on inactive tabs. */ /* Note: Tab focus detection doesn't work on older versions of IE, but that's okay since they don't support rAF to begin with. */if(!Velocity.State.isMobile && document.hidden !== undefined){var updateTicker=function updateTicker(){ /* Reassign the rAF function (which the global tick() function uses) based on the tab's focus state. */if(document.hidden){ticker = function(callback){ /* The tick function needs a truthy first argument in order to pass its internal timestamp check. */return setTimeout(function(){callback(true);},16);}; /* The rAF loop has been paused by the browser, so we manually restart the tick. */tick();}else {ticker = window.requestAnimationFrame || rAFShim;}}; /* Page could be sitting in the background at this time (i.e. opened as new tab) so making sure we use correct ticker from the start */updateTicker(); /* And then run check again every time visibility changes */document.addEventListener("visibilitychange",updateTicker);} /************ + Tick + ************/ /* Note: All calls to Velocity are pushed to the Velocity.State.calls array, which is fully iterated through upon each tick. */function tick(timestamp){ /* An empty timestamp argument indicates that this is the first tick occurence since ticking was turned on. + We leverage this metadata to fully ignore the first tick pass since RAF's initial pass is fired whenever + the browser's next tick sync time occurs, which results in the first elements subjected to Velocity + calls being animated out of sync with any elements animated immediately thereafter. In short, we ignore + the first RAF tick pass so that elements being immediately consecutively animated -- instead of simultaneously animated + by the same Velocity call -- are properly batched into the same initial RAF tick and consequently remain in sync thereafter. */if(timestamp){ /* We normally use RAF's high resolution timestamp but as it can be significantly offset when the browser is + under high stress we give the option for choppiness over allowing the browser to drop huge chunks of frames. + We use performance.now() and shim it if it doesn't exist for when the tab is hidden. */var timeCurrent=Velocity.timestamp && timestamp !== true?timestamp:performance.now(); /******************** + Call Iteration + ********************/var callsLength=Velocity.State.calls.length; /* To speed up iterating over this array, it is compacted (falsey items -- calls that have completed -- are removed) + when its length has ballooned to a point that can impact tick performance. This only becomes necessary when animation + has been continuous with many elements over a long period of time; whenever all active calls are completed, completeCall() clears Velocity.State.calls. */if(callsLength > 10000){Velocity.State.calls = compactSparseArray(Velocity.State.calls);callsLength = Velocity.State.calls.length;} /* Iterate through each active call. */for(var i=0;i < callsLength;i++) { /* When a Velocity call is completed, its Velocity.State.calls entry is set to false. Continue on to the next call. */if(!Velocity.State.calls[i]){continue;} /************************ + Call-Wide Variables + ************************/var callContainer=Velocity.State.calls[i],call=callContainer[0],opts=callContainer[2],timeStart=callContainer[3],firstTick=!!timeStart,tweenDummyValue=null,pauseObject=callContainer[5],millisecondsEllapsed=callContainer[6]; /* If timeStart is undefined, then this is the first time that this call has been processed by tick(). + We assign timeStart now so that its value is as close to the real animation start time as possible. + (Conversely, had timeStart been defined when this call was added to Velocity.State.calls, the delay + between that time and now would cause the first few frames of the tween to be skipped since + percentComplete is calculated relative to timeStart.) */ /* Further, subtract 16ms (the approximate resolution of RAF) from the current time value so that the + first tick iteration isn't wasted by animating at 0% tween completion, which would produce the + same style value as the element's current value. */if(!timeStart){timeStart = Velocity.State.calls[i][3] = timeCurrent - 16;} /* If a pause object is present, skip processing unless it has been set to resume */if(pauseObject){if(pauseObject.resume === true){ /* Update the time start to accomodate the paused completion amount */timeStart = callContainer[3] = Math.round(timeCurrent - millisecondsEllapsed - 16); /* Remove pause object after processing */callContainer[5] = null;}else {continue;}}millisecondsEllapsed = callContainer[6] = timeCurrent - timeStart; /* The tween's completion percentage is relative to the tween's start time, not the tween's start value + (which would result in unpredictable tween durations since JavaScript's timers are not particularly accurate). + Accordingly, we ensure that percentComplete does not exceed 1. */var percentComplete=Math.min(millisecondsEllapsed / opts.duration,1); /********************** + Element Iteration + **********************/ /* For every call, iterate through each of the elements in its set. */for(var j=0,callLength=call.length;j < callLength;j++) {var tweensContainer=call[j],element=tweensContainer.element; /* Check to see if this element has been deleted midway through the animation by checking for the + continued existence of its data cache. If it's gone, or the element is currently paused, skip animating this element. */if(!Data(element)){continue;}var transformPropertyExists=false; /********************************** + Display & Visibility Toggling + **********************************/ /* If the display option is set to non-"none", set it upfront so that the element can become visible before tweening begins. + (Otherwise, display's "none" value is set in completeCall() once the animation has completed.) */if(opts.display !== undefined && opts.display !== null && opts.display !== "none"){if(opts.display === "flex"){var flexValues=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];$.each(flexValues,function(i,flexValue){CSS.setPropertyValue(element,"display",flexValue);});}CSS.setPropertyValue(element,"display",opts.display);} /* Same goes with the visibility option, but its "none" equivalent is "hidden". */if(opts.visibility !== undefined && opts.visibility !== "hidden"){CSS.setPropertyValue(element,"visibility",opts.visibility);} /************************ + Property Iteration + ************************/ /* For every element, iterate through each property. */for(var property in tweensContainer) { /* Note: In addition to property tween data, tweensContainer contains a reference to its associated element. */if(tweensContainer.hasOwnProperty(property) && property !== "element"){var tween=tweensContainer[property],currentValue, /* Easing can either be a pre-genereated function or a string that references a pre-registered easing + on the Velocity.Easings object. In either case, return the appropriate easing *function*. */easing=Type.isString(tween.easing)?Velocity.Easings[tween.easing]:tween.easing; /****************************** + Current Value Calculation + ******************************/if(Type.isString(tween.pattern)){var patternReplace=percentComplete === 1?function($0,index,round){var result=tween.endValue[index];return round?Math.round(result):result;}:function($0,index,round){var startValue=tween.startValue[index],tweenDelta=tween.endValue[index] - startValue,result=startValue + tweenDelta * easing(percentComplete,opts,tweenDelta);return round?Math.round(result):result;};currentValue = tween.pattern.replace(/{(\d+)(!)?}/g,patternReplace);}else if(percentComplete === 1){ /* If this is the last tick pass (if we've reached 100% completion for this tween), + ensure that currentValue is explicitly set to its target endValue so that it's not subjected to any rounding. */currentValue = tween.endValue;}else { /* Otherwise, calculate currentValue based on the current delta from startValue. */var tweenDelta=tween.endValue - tween.startValue;currentValue = tween.startValue + tweenDelta * easing(percentComplete,opts,tweenDelta); /* If no value change is occurring, don't proceed with DOM updating. */}if(!firstTick && currentValue === tween.currentValue){continue;}tween.currentValue = currentValue; /* If we're tweening a fake 'tween' property in order to log transition values, update the one-per-call variable so that + it can be passed into the progress callback. */if(property === "tween"){tweenDummyValue = currentValue;}else { /****************** + Hooks: Part I + ******************/var hookRoot; /* For hooked properties, the newly-updated rootPropertyValueCache is cached onto the element so that it can be used + for subsequent hooks in this call that are associated with the same root property. If we didn't cache the updated + rootPropertyValue, each subsequent update to the root property in this tick pass would reset the previous hook's + updates to rootPropertyValue prior to injection. A nice performance byproduct of rootPropertyValue caching is that + subsequently chained animations using the same hookRoot but a different hook can use this cached rootPropertyValue. */if(CSS.Hooks.registered[property]){hookRoot = CSS.Hooks.getRoot(property);var rootPropertyValueCache=Data(element).rootPropertyValueCache[hookRoot];if(rootPropertyValueCache){tween.rootPropertyValue = rootPropertyValueCache;}} /***************** + DOM Update + *****************/ /* setPropertyValue() returns an array of the property name and property value post any normalization that may have been performed. */ /* Note: To solve an IE<=8 positioning bug, the unit type is dropped when setting a property value of 0. */var adjustedSetData=CSS.setPropertyValue(element, /* SET */property,tween.currentValue + (IE < 9 && parseFloat(currentValue) === 0?"":tween.unitType),tween.rootPropertyValue,tween.scrollData); /******************* + Hooks: Part II + *******************/ /* Now that we have the hook's updated rootPropertyValue (the post-processed value provided by adjustedSetData), cache it onto the element. */if(CSS.Hooks.registered[property]){ /* Since adjustedSetData contains normalized data ready for DOM updating, the rootPropertyValue needs to be re-extracted from its normalized form. ?? */if(CSS.Normalizations.registered[hookRoot]){Data(element).rootPropertyValueCache[hookRoot] = CSS.Normalizations.registered[hookRoot]("extract",null,adjustedSetData[1]);}else {Data(element).rootPropertyValueCache[hookRoot] = adjustedSetData[1];}} /*************** + Transforms + ***************/ /* Flag whether a transform property is being animated so that flushTransformCache() can be triggered once this tick pass is complete. */if(adjustedSetData[0] === "transform"){transformPropertyExists = true;}}}} /**************** + mobileHA + ****************/ /* If mobileHA is enabled, set the translate3d transform to null to force hardware acceleration. + It's safe to override this property since Velocity doesn't actually support its animation (hooks are used in its place). */if(opts.mobileHA){ /* Don't set the null transform hack if we've already done so. */if(Data(element).transformCache.translate3d === undefined){ /* All entries on the transformCache object are later concatenated into a single transform string via flushTransformCache(). */Data(element).transformCache.translate3d = "(0px, 0px, 0px)";transformPropertyExists = true;}}if(transformPropertyExists){CSS.flushTransformCache(element);}} /* The non-"none" display value is only applied to an element once -- when its associated call is first ticked through. + Accordingly, it's set to false so that it isn't re-processed by this call in the next tick. */if(opts.display !== undefined && opts.display !== "none"){Velocity.State.calls[i][2].display = false;}if(opts.visibility !== undefined && opts.visibility !== "hidden"){Velocity.State.calls[i][2].visibility = false;} /* Pass the elements and the timing data (percentComplete, msRemaining, timeStart, tweenDummyValue) into the progress callback. */if(opts.progress){opts.progress.call(callContainer[1],callContainer[1],percentComplete,Math.max(0,timeStart + opts.duration - timeCurrent),timeStart,tweenDummyValue);} /* If this call has finished tweening, pass its index to completeCall() to handle call cleanup. */if(percentComplete === 1){completeCall(i);}}} /* Note: completeCall() sets the isTicking flag to false when the last call on Velocity.State.calls has completed. */if(Velocity.State.isTicking){ticker(tick);}} /********************** + Call Completion + **********************/ /* Note: Unlike tick(), which processes all active calls at once, call completion is handled on a per-call basis. */function completeCall(callIndex,isStopped){ /* Ensure the call exists. */if(!Velocity.State.calls[callIndex]){return false;} /* Pull the metadata from the call. */var call=Velocity.State.calls[callIndex][0],elements=Velocity.State.calls[callIndex][1],opts=Velocity.State.calls[callIndex][2],resolver=Velocity.State.calls[callIndex][4];var remainingCallsExist=false; /************************* + Element Finalization + *************************/for(var i=0,callLength=call.length;i < callLength;i++) {var element=call[i].element; /* If the user set display to "none" (intending to hide the element), set it now that the animation has completed. */ /* Note: display:none isn't set when calls are manually stopped (via Velocity("stop"). */ /* Note: Display gets ignored with "reverse" calls and infinite loops, since this behavior would be undesirable. */if(!isStopped && !opts.loop){if(opts.display === "none"){CSS.setPropertyValue(element,"display",opts.display);}if(opts.visibility === "hidden"){CSS.setPropertyValue(element,"visibility",opts.visibility);}} /* If the element's queue is empty (if only the "inprogress" item is left at position 0) or if its queue is about to run + a non-Velocity-initiated entry, turn off the isAnimating flag. A non-Velocity-initiatied queue entry's logic might alter + an element's CSS values and thereby cause Velocity's cached value data to go stale. To detect if a queue entry was initiated by Velocity, + we check for the existence of our special Velocity.queueEntryFlag declaration, which minifiers won't rename since the flag + is assigned to jQuery's global $ object and thus exists out of Velocity's own scope. */var data=Data(element);if(opts.loop !== true && ($.queue(element)[1] === undefined || !/\.velocityQueueEntryFlag/i.test($.queue(element)[1]))){ /* The element may have been deleted. Ensure that its data cache still exists before acting on it. */if(data){data.isAnimating = false; /* Clear the element's rootPropertyValueCache, which will become stale. */data.rootPropertyValueCache = {};var transformHAPropertyExists=false; /* If any 3D transform subproperty is at its default value (regardless of unit type), remove it. */$.each(CSS.Lists.transforms3D,function(i,transformName){var defaultValue=/^scale/.test(transformName)?1:0,currentValue=data.transformCache[transformName];if(data.transformCache[transformName] !== undefined && new RegExp("^\\(" + defaultValue + "[^.]").test(currentValue)){transformHAPropertyExists = true;delete data.transformCache[transformName];}}); /* Mobile devices have hardware acceleration removed at the end of the animation in order to avoid hogging the GPU's memory. */if(opts.mobileHA){transformHAPropertyExists = true;delete data.transformCache.translate3d;} /* Flush the subproperty removals to the DOM. */if(transformHAPropertyExists){CSS.flushTransformCache(element);} /* Remove the "velocity-animating" indicator class. */CSS.Values.removeClass(element,"velocity-animating");}} /********************* + Option: Complete + *********************/ /* Complete is fired once per call (not once per element) and is passed the full raw DOM element set as both its context and its first argument. */ /* Note: Callbacks aren't fired when calls are manually stopped (via Velocity("stop"). */if(!isStopped && opts.complete && !opts.loop && i === callLength - 1){ /* We throw callbacks in a setTimeout so that thrown errors don't halt the execution of Velocity itself. */try{opts.complete.call(elements,elements);}catch(error) {setTimeout(function(){throw error;},1);}} /********************** + Promise Resolving + **********************/ /* Note: Infinite loops don't return promises. */if(resolver && opts.loop !== true){resolver(elements);} /**************************** + Option: Loop (Infinite) + ****************************/if(data && opts.loop === true && !isStopped){ /* If a rotateX/Y/Z property is being animated by 360 deg with loop:true, swap tween start/end values to enable + continuous iterative rotation looping. (Otherise, the element would just rotate back and forth.) */$.each(data.tweensContainer,function(propertyName,tweenContainer){if(/^rotate/.test(propertyName) && (parseFloat(tweenContainer.startValue) - parseFloat(tweenContainer.endValue)) % 360 === 0){var oldStartValue=tweenContainer.startValue;tweenContainer.startValue = tweenContainer.endValue;tweenContainer.endValue = oldStartValue;}if(/^backgroundPosition/.test(propertyName) && parseFloat(tweenContainer.endValue) === 100 && tweenContainer.unitType === "%"){tweenContainer.endValue = 0;tweenContainer.startValue = 100;}});Velocity(element,"reverse",{loop:true,delay:opts.delay});} /*************** + Dequeueing + ***************/ /* Fire the next call in the queue so long as this call's queue wasn't set to false (to trigger a parallel animation), + which would have already caused the next call to fire. Note: Even if the end of the animation queue has been reached, + $.dequeue() must still be called in order to completely clear jQuery's animation queue. */if(opts.queue !== false){$.dequeue(element,opts.queue);}} /************************ + Calls Array Cleanup + ************************/ /* Since this call is complete, set it to false so that the rAF tick skips it. This array is later compacted via compactSparseArray(). + (For performance reasons, the call is set to false instead of being deleted from the array: http://www.html5rocks.com/en/tutorials/speed/v8/) */Velocity.State.calls[callIndex] = false; /* Iterate through the calls array to determine if this was the final in-progress animation. + If so, set a flag to end ticking and clear the calls array. */for(var j=0,callsLength=Velocity.State.calls.length;j < callsLength;j++) {if(Velocity.State.calls[j] !== false){remainingCallsExist = true;break;}}if(remainingCallsExist === false){ /* tick() will detect this flag upon its next iteration and subsequently turn itself off. */Velocity.State.isTicking = false; /* Clear the calls array so that its length is reset. */delete Velocity.State.calls;Velocity.State.calls = [];}} /****************** + Frameworks + ******************/ /* Both jQuery and Zepto allow their $.fn object to be extended to allow wrapped elements to be subjected to plugin calls. + If either framework is loaded, register a "velocity" extension pointing to Velocity's core animate() method. Velocity + also registers itself onto a global container (window.jQuery || window.Zepto || window) so that certain features are + accessible beyond just a per-element scope. This master object contains an .animate() method, which is later assigned to $.fn + (if jQuery or Zepto are present). Accordingly, Velocity can both act on wrapped DOM elements and stand alone for targeting raw DOM elements. */global.Velocity = Velocity;if(global !== window){ /* Assign the element function to Velocity's core animate() method. */global.fn.velocity = animate; /* Assign the object function's defaults to Velocity's global defaults object. */global.fn.velocity.defaults = Velocity.defaults;} /*********************** + Packaged Redirects + ***********************/ /* slideUp, slideDown */$.each(["Down","Up"],function(i,direction){Velocity.Redirects["slide" + direction] = function(element,options,elementsIndex,elementsSize,elements,promiseData){var opts=$.extend({},options),begin=opts.begin,complete=opts.complete,inlineValues={},computedValues={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""};if(opts.display === undefined){ /* Show the element before slideDown begins and hide the element after slideUp completes. */ /* Note: Inline elements cannot have dimensions animated, so they're reverted to inline-block. */opts.display = direction === "Down"?Velocity.CSS.Values.getDisplayType(element) === "inline"?"inline-block":"block":"none";}opts.begin = function(){ /* If the user passed in a begin callback, fire it now. */if(elementsIndex === 0 && begin){begin.call(elements,elements);} /* Cache the elements' original vertical dimensional property values so that we can animate back to them. */for(var property in computedValues) {if(!computedValues.hasOwnProperty(property)){continue;}inlineValues[property] = element.style[property]; /* For slideDown, use forcefeeding to animate all vertical properties from 0. For slideUp, + use forcefeeding to start from computed values and animate down to 0. */var propertyValue=CSS.getPropertyValue(element,property);computedValues[property] = direction === "Down"?[propertyValue,0]:[0,propertyValue];} /* Force vertical overflow content to clip so that sliding works as expected. */inlineValues.overflow = element.style.overflow;element.style.overflow = "hidden";};opts.complete = function(){ /* Reset element to its pre-slide inline values once its slide animation is complete. */for(var property in inlineValues) {if(inlineValues.hasOwnProperty(property)){element.style[property] = inlineValues[property];}} /* If the user passed in a complete callback, fire it now. */if(elementsIndex === elementsSize - 1){if(complete){complete.call(elements,elements);}if(promiseData){promiseData.resolver(elements);}}};Velocity(element,computedValues,opts);};}); /* fadeIn, fadeOut */$.each(["In","Out"],function(i,direction){Velocity.Redirects["fade" + direction] = function(element,options,elementsIndex,elementsSize,elements,promiseData){var opts=$.extend({},options),complete=opts.complete,propertiesMap={opacity:direction === "In"?1:0}; /* Since redirects are triggered individually for each element in the animated set, avoid repeatedly triggering + callbacks by firing them only when the final element has been reached. */if(elementsIndex !== 0){opts.begin = null;}if(elementsIndex !== elementsSize - 1){opts.complete = null;}else {opts.complete = function(){if(complete){complete.call(elements,elements);}if(promiseData){promiseData.resolver(elements);}};} /* If a display was passed in, use it. Otherwise, default to "none" for fadeOut or the element-specific default for fadeIn. */ /* Note: We allow users to pass in "null" to skip display setting altogether. */if(opts.display === undefined){opts.display = direction === "In"?"auto":"none";}Velocity(this,propertiesMap,opts);};});return Velocity;})(window.jQuery || window.Zepto || window,window,window?window.document:undefined);}); /****************** + Known Issues + ******************/ /* The CSS spec mandates that the translateX/Y/Z transforms are %-relative to the element itself -- not its parent. + Velocity, however, doesn't make this distinction. Thus, converting to or from the % unit with these subproperties + will produce an inaccurate conversion value. The same issue exists with the cx/cy attributes of SVG circles and ellipses. */ /* Browser support: Using this shim instead of jQuery proper removes support for IE8. */ // and will not fail on other DOM objects (as do DOM elements in IE < 9) /***/ }), /* 5 */ @@ -2877,7 +2948,7 @@ var _prestashop2 = _interopRequireDefault(_prestashop); _prestashop2['default'].responsive = _prestashop2['default'].responsive || {}; _prestashop2['default'].responsive.current_width = (0, _jquery2['default'])(window).width(); -_prestashop2['default'].responsive.min_width = 768; +_prestashop2['default'].responsive.min_width = 991; _prestashop2['default'].responsive.mobile = _prestashop2['default'].responsive.current_width < _prestashop2['default'].responsive.min_width; function swapChildren(obj1, obj2) { @@ -4824,320 +4895,190 @@ function unwrapListeners(arr) { /***/ (function(module, exports, __webpack_require__) { "use strict"; -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; +var require;var require; -!(function () { - window.flexibility = {}, Array.prototype.forEach || (Array.prototype.forEach = function (t) { - if (void 0 === this || null === this) throw new TypeError(this + "is not an object");if (!(t instanceof Function)) throw new TypeError(t + " is not a function");for (var e = Object(this), i = arguments[1], n = e instanceof String ? e.split("") : e, r = Math.max(Math.min(n.length, 9007199254740991), 0) || 0, o = -1; ++o < r;) o in n && t.call(i, n[o], o, e); - }), (function (t, e) { - true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (e), - __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? - (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), - __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : "object" == typeof exports ? module.exports = e() : t.computeLayout = e(); - })(flexibility, function () { - var t = (function () { - function t(e) { - if (((!e.layout || e.isDirty) && (e.layout = { width: void 0, height: void 0, top: 0, left: 0, right: 0, bottom: 0 }), e.style || (e.style = {}), e.children || (e.children = []), e.style.measure && e.children && e.children.length)) throw new Error("Using custom measure function is supported only for leaf nodes.");return e.children.forEach(t), e; - }function e(t) { - return void 0 === t; - }function i(t) { - return t === q || t === G; - }function n(t) { - return t === U || t === Z; - }function r(t, e) { - if (void 0 !== t.style.marginStart && i(e)) return t.style.marginStart;var n = null;switch (e) {case "row": - n = t.style.marginLeft;break;case "row-reverse": - n = t.style.marginRight;break;case "column": - n = t.style.marginTop;break;case "column-reverse": - n = t.style.marginBottom;}return void 0 !== n ? n : void 0 !== t.style.margin ? t.style.margin : 0; - }function o(t, e) { - if (void 0 !== t.style.marginEnd && i(e)) return t.style.marginEnd;var n = null;switch (e) {case "row": - n = t.style.marginRight;break;case "row-reverse": - n = t.style.marginLeft;break;case "column": - n = t.style.marginBottom;break;case "column-reverse": - n = t.style.marginTop;}return null != n ? n : void 0 !== t.style.margin ? t.style.margin : 0; - }function l(t, e) { - if (void 0 !== t.style.paddingStart && t.style.paddingStart >= 0 && i(e)) return t.style.paddingStart;var n = null;switch (e) {case "row": - n = t.style.paddingLeft;break;case "row-reverse": - n = t.style.paddingRight;break;case "column": - n = t.style.paddingTop;break;case "column-reverse": - n = t.style.paddingBottom;}return null != n && n >= 0 ? n : void 0 !== t.style.padding && t.style.padding >= 0 ? t.style.padding : 0; - }function a(t, e) { - if (void 0 !== t.style.paddingEnd && t.style.paddingEnd >= 0 && i(e)) return t.style.paddingEnd;var n = null;switch (e) {case "row": - n = t.style.paddingRight;break;case "row-reverse": - n = t.style.paddingLeft;break;case "column": - n = t.style.paddingBottom;break;case "column-reverse": - n = t.style.paddingTop;}return null != n && n >= 0 ? n : void 0 !== t.style.padding && t.style.padding >= 0 ? t.style.padding : 0; - }function d(t, e) { - if (void 0 !== t.style.borderStartWidth && t.style.borderStartWidth >= 0 && i(e)) return t.style.borderStartWidth;var n = null;switch (e) {case "row": - n = t.style.borderLeftWidth;break;case "row-reverse": - n = t.style.borderRightWidth;break;case "column": - n = t.style.borderTopWidth;break;case "column-reverse": - n = t.style.borderBottomWidth;}return null != n && n >= 0 ? n : void 0 !== t.style.borderWidth && t.style.borderWidth >= 0 ? t.style.borderWidth : 0; - }function s(t, e) { - if (void 0 !== t.style.borderEndWidth && t.style.borderEndWidth >= 0 && i(e)) return t.style.borderEndWidth;var n = null;switch (e) {case "row": - n = t.style.borderRightWidth;break;case "row-reverse": - n = t.style.borderLeftWidth;break;case "column": - n = t.style.borderBottomWidth;break;case "column-reverse": - n = t.style.borderTopWidth;}return null != n && n >= 0 ? n : void 0 !== t.style.borderWidth && t.style.borderWidth >= 0 ? t.style.borderWidth : 0; - }function u(t, e) { - return l(t, e) + d(t, e); - }function y(t, e) { - return a(t, e) + s(t, e); - }function c(t, e) { - return d(t, e) + s(t, e); - }function f(t, e) { - return r(t, e) + o(t, e); - }function h(t, e) { - return u(t, e) + y(t, e); - }function m(t) { - return t.style.justifyContent ? t.style.justifyContent : "flex-start"; - }function v(t) { - return t.style.alignContent ? t.style.alignContent : "flex-start"; - }function p(t, e) { - return e.style.alignSelf ? e.style.alignSelf : t.style.alignItems ? t.style.alignItems : "stretch"; - }function x(t, e) { - if (e === N) { - if (t === q) return G;if (t === G) return q; - }return t; - }function g(t, e) { - var i;return i = t.style.direction ? t.style.direction : M, i === M && (i = void 0 === e ? A : e), i; - }function b(t) { - return t.style.flexDirection ? t.style.flexDirection : U; - }function w(t, e) { - return n(t) ? x(q, e) : U; - }function W(t) { - return t.style.position ? t.style.position : "relative"; - }function L(t) { - return W(t) === tt && t.style.flex > 0; - }function E(t) { - return "wrap" === t.style.flexWrap; - }function S(t, e) { - return t.layout[ot[e]] + f(t, e); - }function k(t, e) { - return void 0 !== t.style[ot[e]] && t.style[ot[e]] >= 0; - }function C(t, e) { - return void 0 !== t.style[e]; - }function T(t) { - return void 0 !== t.style.measure; - }function H(t, e) { - return void 0 !== t.style[e] ? t.style[e] : 0; - }function $(t, e, i) { - var n = ({ row: t.style.minWidth, "row-reverse": t.style.minWidth, column: t.style.minHeight, "column-reverse": t.style.minHeight })[e], - r = ({ row: t.style.maxWidth, "row-reverse": t.style.maxWidth, column: t.style.maxHeight, "column-reverse": t.style.maxHeight })[e], - o = i;return void 0 !== r && r >= 0 && o > r && (o = r), void 0 !== n && n >= 0 && n > o && (o = n), o; - }function z(t, e) { - return t > e ? t : e; - }function B(t, e) { - void 0 === t.layout[ot[e]] && k(t, e) && (t.layout[ot[e]] = z($(t, e, t.style[ot[e]]), h(t, e))); - }function D(t, e, i) { - e.layout[nt[i]] = t.layout[ot[i]] - e.layout[ot[i]] - e.layout[rt[i]]; - }function I(t, e) { - return void 0 !== t.style[it[e]] ? H(t, it[e]) : -H(t, nt[e]); - }function R(t, n, l, a) { - var s = g(t, a), - R = x(b(t), s), - M = w(R, s), - A = x(q, s);B(t, R), B(t, M), t.layout.direction = s, t.layout[it[R]] += r(t, R) + I(t, R), t.layout[nt[R]] += o(t, R) + I(t, R), t.layout[it[M]] += r(t, M) + I(t, M), t.layout[nt[M]] += o(t, M) + I(t, M);var N = t.children.length, - lt = h(t, A), - at = h(t, U);if (T(t)) { - var dt = !e(t.layout[ot[A]]), - st = F;st = k(t, A) ? t.style.width : dt ? t.layout[ot[A]] : n - f(t, A), st -= lt;var ut = F;ut = k(t, U) ? t.style.height : e(t.layout[ot[U]]) ? l - f(t, A) : t.layout[ot[U]], ut -= h(t, U);var yt = !k(t, A) && !dt, - ct = !k(t, U) && e(t.layout[ot[U]]);if (yt || ct) { - var ft = t.style.measure(st, ut);yt && (t.layout.width = ft.width + lt), ct && (t.layout.height = ft.height + at); - }if (0 === N) return; - }var ht, - mt, - vt, - pt, - xt = E(t), - gt = m(t), - bt = u(t, R), - wt = u(t, M), - Wt = h(t, R), - Lt = h(t, M), - Et = !e(t.layout[ot[R]]), - St = !e(t.layout[ot[M]]), - kt = i(R), - Ct = null, - Tt = null, - Ht = F;Et && (Ht = t.layout[ot[R]] - Wt);for (var $t = 0, zt = 0, Bt = 0, Dt = 0, It = 0, Rt = 0; N > zt;) { - var jt, - Ft, - Mt = 0, - At = 0, - Nt = 0, - qt = 0, - Gt = Et && gt === O || !Et && gt !== _, - Ut = Gt ? N : $t, - Zt = !0, - Ot = N, - _t = null, - Jt = null, - Kt = bt, - Pt = 0;for (ht = $t; N > ht; ++ht) { - vt = t.children[ht], vt.lineIndex = Rt, vt.nextAbsoluteChild = null, vt.nextFlexChild = null;var Qt = p(t, vt);if (Qt === Y && W(vt) === tt && St && !k(vt, M)) vt.layout[ot[M]] = z($(vt, M, t.layout[ot[M]] - Lt - f(vt, M)), h(vt, M));else if (W(vt) === et) for (null === Ct && (Ct = vt), null !== Tt && (Tt.nextAbsoluteChild = vt), Tt = vt, mt = 0; 2 > mt; mt++) pt = 0 !== mt ? q : U, !e(t.layout[ot[pt]]) && !k(vt, pt) && C(vt, it[pt]) && C(vt, nt[pt]) && (vt.layout[ot[pt]] = z($(vt, pt, t.layout[ot[pt]] - h(t, pt) - f(vt, pt) - H(vt, it[pt]) - H(vt, nt[pt])), h(vt, pt)));var Vt = 0;if ((Et && L(vt) ? (At++, Nt += vt.style.flex, null === _t && (_t = vt), null !== Jt && (Jt.nextFlexChild = vt), Jt = vt, Vt = h(vt, R) + f(vt, R)) : (jt = F, Ft = F, kt ? Ft = k(t, U) ? t.layout[ot[U]] - at : l - f(t, U) - at : jt = k(t, A) ? t.layout[ot[A]] - lt : n - f(t, A) - lt, 0 === Bt && j(vt, jt, Ft, s), W(vt) === tt && (qt++, Vt = S(vt, R))), xt && Et && Mt + Vt > Ht && ht !== $t)) { - qt--, Bt = 1;break; - }Gt && (W(vt) !== tt || L(vt)) && (Gt = !1, Ut = ht), Zt && (W(vt) !== tt || Qt !== Y && Qt !== Q || e(vt.layout[ot[M]])) && (Zt = !1, Ot = ht), Gt && (vt.layout[rt[R]] += Kt, Et && D(t, vt, R), Kt += S(vt, R), Pt = z(Pt, $(vt, M, S(vt, M)))), Zt && (vt.layout[rt[M]] += Dt + wt, St && D(t, vt, M)), Bt = 0, Mt += Vt, zt = ht + 1; - }var Xt = 0, - Yt = 0, - te = 0;if ((te = Et ? Ht - Mt : z(Mt, 0) - Mt, 0 !== At)) { - var ee, - ie, - ne = te / Nt;for (Jt = _t; null !== Jt;) ee = ne * Jt.style.flex + h(Jt, R), ie = $(Jt, R, ee), ee !== ie && (te -= ie, Nt -= Jt.style.flex), Jt = Jt.nextFlexChild;for (ne = te / Nt, 0 > ne && (ne = 0), Jt = _t; null !== Jt;) Jt.layout[ot[R]] = $(Jt, R, ne * Jt.style.flex + h(Jt, R)), jt = F, k(t, A) ? jt = t.layout[ot[A]] - lt : kt || (jt = n - f(t, A) - lt), Ft = F, k(t, U) ? Ft = t.layout[ot[U]] - at : kt && (Ft = l - f(t, U) - at), j(Jt, jt, Ft, s), vt = Jt, Jt = Jt.nextFlexChild, vt.nextFlexChild = null; - } else gt !== O && (gt === _ ? Xt = te / 2 : gt === J ? Xt = te : gt === K ? (te = z(te, 0), Yt = At + qt - 1 !== 0 ? te / (At + qt - 1) : 0) : gt === P && (Yt = te / (At + qt), Xt = Yt / 2));for (Kt += Xt, ht = Ut; zt > ht; ++ht) vt = t.children[ht], W(vt) === et && C(vt, it[R]) ? vt.layout[rt[R]] = H(vt, it[R]) + d(t, R) + r(vt, R) : (vt.layout[rt[R]] += Kt, Et && D(t, vt, R), W(vt) === tt && (Kt += Yt + S(vt, R), Pt = z(Pt, $(vt, M, S(vt, M)))));var re = t.layout[ot[M]];for (St || (re = z($(t, M, Pt + Lt), Lt)), ht = Ot; zt > ht; ++ht) if ((vt = t.children[ht], W(vt) === et && C(vt, it[M]))) vt.layout[rt[M]] = H(vt, it[M]) + d(t, M) + r(vt, M);else { - var oe = wt;if (W(vt) === tt) { - var Qt = p(t, vt);if (Qt === Y) e(vt.layout[ot[M]]) && (vt.layout[ot[M]] = z($(vt, M, re - Lt - f(vt, M)), h(vt, M)));else if (Qt !== Q) { - var le = re - Lt - S(vt, M);oe += Qt === V ? le / 2 : le; - } - }vt.layout[rt[M]] += Dt + oe, St && D(t, vt, M); - }Dt += Pt, It = z(It, Kt), Rt += 1, $t = zt; - }if (Rt > 1 && St) { - var ae = t.layout[ot[M]] - Lt, - de = ae - Dt, - se = 0, - ue = wt, - ye = v(t);ye === X ? ue += de : ye === V ? ue += de / 2 : ye === Y && ae > Dt && (se = de / Rt);var ce = 0;for (ht = 0; Rt > ht; ++ht) { - var fe = ce, - he = 0;for (mt = fe; N > mt; ++mt) if ((vt = t.children[mt], W(vt) === tt)) { - if (vt.lineIndex !== ht) break;e(vt.layout[ot[M]]) || (he = z(he, vt.layout[ot[M]] + f(vt, M))); - }for (ce = mt, he += se, mt = fe; ce > mt; ++mt) if ((vt = t.children[mt], W(vt) === tt)) { - var me = p(t, vt);if (me === Q) vt.layout[rt[M]] = ue + r(vt, M);else if (me === X) vt.layout[rt[M]] = ue + he - o(vt, M) - vt.layout[ot[M]];else if (me === V) { - var ve = vt.layout[ot[M]];vt.layout[rt[M]] = ue + (he - ve) / 2; - } else me === Y && (vt.layout[rt[M]] = ue + r(vt, M)); - }ue += he; +!(function (e) { + if (true) module.exports = e();else if ("function" == typeof define && define.amd) define([], e);else { + var t;t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, t.flexibility = e(); + } +})(function () { + return (function e(t, r, l) { + function n(o, i) { + if (!r[o]) { + if (!t[o]) { + var s = "function" == typeof require && require;if (!i && s) return require(o, !0);if (f) return f(o, !0);var a = new Error("Cannot find module '" + o + "'");throw (a.code = "MODULE_NOT_FOUND", a); + }var c = r[o] = { exports: {} };t[o][0].call(c.exports, function (e) { + var r = t[o][1][e];return n(r ? r : e); + }, c, c.exports, e, t, r, l); + }return r[o].exports; + }for (var f = "function" == typeof require && require, o = 0; o < l.length; o++) n(l[o]);return n; + })({ 1: [function (e, t, r) { + t.exports = function (e) { + var t, + r, + l, + n = -1;if (e.lines.length > 1 && "flex-start" === e.style.alignContent) for (t = 0; l = e.lines[++n];) l.crossStart = t, t += l.cross;else if (e.lines.length > 1 && "flex-end" === e.style.alignContent) for (t = e.flexStyle.crossSpace; l = e.lines[++n];) l.crossStart = t, t += l.cross;else if (e.lines.length > 1 && "center" === e.style.alignContent) for (t = e.flexStyle.crossSpace / 2; l = e.lines[++n];) l.crossStart = t, t += l.cross;else if (e.lines.length > 1 && "space-between" === e.style.alignContent) for (r = e.flexStyle.crossSpace / (e.lines.length - 1), t = 0; l = e.lines[++n];) l.crossStart = t, t += l.cross + r;else if (e.lines.length > 1 && "space-around" === e.style.alignContent) for (r = 2 * e.flexStyle.crossSpace / (2 * e.lines.length), t = r / 2; l = e.lines[++n];) l.crossStart = t, t += l.cross + r;else for (r = e.flexStyle.crossSpace / e.lines.length, t = e.flexStyle.crossInnerBefore; l = e.lines[++n];) l.crossStart = t, l.cross += r, t += l.cross; + }; + }, {}], 2: [function (e, t, r) { + t.exports = function (e) { + for (var t, r = -1; line = e.lines[++r];) for (t = -1; child = line.children[++t];) { + var l = child.style.alignSelf;"auto" === l && (l = e.style.alignItems), "flex-start" === l ? child.flexStyle.crossStart = line.crossStart : "flex-end" === l ? child.flexStyle.crossStart = line.crossStart + line.cross - child.flexStyle.crossOuter : "center" === l ? child.flexStyle.crossStart = line.crossStart + (line.cross - child.flexStyle.crossOuter) / 2 : (child.flexStyle.crossStart = line.crossStart, child.flexStyle.crossOuter = line.cross, child.flexStyle.cross = child.flexStyle.crossOuter - child.flexStyle.crossBefore - child.flexStyle.crossAfter); + } + }; + }, {}], 3: [function (e, t, r) { + t.exports = function l(e, l) { + var t = "row" === l || "row-reverse" === l, + r = e.mainAxis;if (r) { + var n = t && "inline" === r || !t && "block" === r;n || (e.flexStyle = { main: e.flexStyle.cross, cross: e.flexStyle.main, mainOffset: e.flexStyle.crossOffset, crossOffset: e.flexStyle.mainOffset, mainBefore: e.flexStyle.crossBefore, mainAfter: e.flexStyle.crossAfter, crossBefore: e.flexStyle.mainBefore, crossAfter: e.flexStyle.mainAfter, mainInnerBefore: e.flexStyle.crossInnerBefore, mainInnerAfter: e.flexStyle.crossInnerAfter, crossInnerBefore: e.flexStyle.mainInnerBefore, crossInnerAfter: e.flexStyle.mainInnerAfter, mainBorderBefore: e.flexStyle.crossBorderBefore, mainBorderAfter: e.flexStyle.crossBorderAfter, crossBorderBefore: e.flexStyle.mainBorderBefore, crossBorderAfter: e.flexStyle.mainBorderAfter }); + } else t ? e.flexStyle = { main: e.style.width, cross: e.style.height, mainOffset: e.style.offsetWidth, crossOffset: e.style.offsetHeight, mainBefore: e.style.marginLeft, mainAfter: e.style.marginRight, crossBefore: e.style.marginTop, crossAfter: e.style.marginBottom, mainInnerBefore: e.style.paddingLeft, mainInnerAfter: e.style.paddingRight, crossInnerBefore: e.style.paddingTop, crossInnerAfter: e.style.paddingBottom, mainBorderBefore: e.style.borderLeftWidth, mainBorderAfter: e.style.borderRightWidth, crossBorderBefore: e.style.borderTopWidth, crossBorderAfter: e.style.borderBottomWidth } : e.flexStyle = { main: e.style.height, cross: e.style.width, mainOffset: e.style.offsetHeight, crossOffset: e.style.offsetWidth, mainBefore: e.style.marginTop, mainAfter: e.style.marginBottom, crossBefore: e.style.marginLeft, crossAfter: e.style.marginRight, mainInnerBefore: e.style.paddingTop, mainInnerAfter: e.style.paddingBottom, crossInnerBefore: e.style.paddingLeft, crossInnerAfter: e.style.paddingRight, mainBorderBefore: e.style.borderTopWidth, mainBorderAfter: e.style.borderBottomWidth, crossBorderBefore: e.style.borderLeftWidth, crossBorderAfter: e.style.borderRightWidth }, "content-box" === e.style.boxSizing && ("number" == typeof e.flexStyle.main && (e.flexStyle.main += e.flexStyle.mainInnerBefore + e.flexStyle.mainInnerAfter + e.flexStyle.mainBorderBefore + e.flexStyle.mainBorderAfter), "number" == typeof e.flexStyle.cross && (e.flexStyle.cross += e.flexStyle.crossInnerBefore + e.flexStyle.crossInnerAfter + e.flexStyle.crossBorderBefore + e.flexStyle.crossBorderAfter));e.mainAxis = t ? "inline" : "block", e.crossAxis = t ? "block" : "inline", "number" == typeof e.style.flexBasis && (e.flexStyle.main = e.style.flexBasis + e.flexStyle.mainInnerBefore + e.flexStyle.mainInnerAfter + e.flexStyle.mainBorderBefore + e.flexStyle.mainBorderAfter), e.flexStyle.mainOuter = e.flexStyle.main, e.flexStyle.crossOuter = e.flexStyle.cross, "auto" === e.flexStyle.mainOuter && (e.flexStyle.mainOuter = e.flexStyle.mainOffset), "auto" === e.flexStyle.crossOuter && (e.flexStyle.crossOuter = e.flexStyle.crossOffset), "number" == typeof e.flexStyle.mainBefore && (e.flexStyle.mainOuter += e.flexStyle.mainBefore), "number" == typeof e.flexStyle.mainAfter && (e.flexStyle.mainOuter += e.flexStyle.mainAfter), "number" == typeof e.flexStyle.crossBefore && (e.flexStyle.crossOuter += e.flexStyle.crossBefore), "number" == typeof e.flexStyle.crossAfter && (e.flexStyle.crossOuter += e.flexStyle.crossAfter); + }; + }, {}], 4: [function (e, t, r) { + var l = e("../reduce");t.exports = function (e) { + if (e.mainSpace > 0) { + var t = l(e.children, function (e, t) { + return e + parseFloat(t.style.flexGrow); + }, 0);t > 0 && (e.main = l(e.children, function (r, l) { + return "auto" === l.flexStyle.main ? l.flexStyle.main = l.flexStyle.mainOffset + parseFloat(l.style.flexGrow) / t * e.mainSpace : l.flexStyle.main += parseFloat(l.style.flexGrow) / t * e.mainSpace, l.flexStyle.mainOuter = l.flexStyle.main + l.flexStyle.mainBefore + l.flexStyle.mainAfter, r + l.flexStyle.mainOuter; + }, 0), e.mainSpace = 0); + } + }; + }, { "../reduce": 12 }], 5: [function (e, t, r) { + var l = e("../reduce");t.exports = function (e) { + if (e.mainSpace < 0) { + var t = l(e.children, function (e, t) { + return e + parseFloat(t.style.flexShrink); + }, 0);t > 0 && (e.main = l(e.children, function (r, l) { + return l.flexStyle.main += parseFloat(l.style.flexShrink) / t * e.mainSpace, l.flexStyle.mainOuter = l.flexStyle.main + l.flexStyle.mainBefore + l.flexStyle.mainAfter, r + l.flexStyle.mainOuter; + }, 0), e.mainSpace = 0); + } + }; + }, { "../reduce": 12 }], 6: [function (e, t, r) { + var l = e("../reduce");t.exports = function (e) { + var t;e.lines = [t = { main: 0, cross: 0, children: [] }];for (var r, n = -1; r = e.children[++n];) "nowrap" === e.style.flexWrap || 0 === t.children.length || "auto" === e.flexStyle.main || e.flexStyle.main - e.flexStyle.mainInnerBefore - e.flexStyle.mainInnerAfter - e.flexStyle.mainBorderBefore - e.flexStyle.mainBorderAfter >= t.main + r.flexStyle.mainOuter ? (t.main += r.flexStyle.mainOuter, t.cross = Math.max(t.cross, r.flexStyle.crossOuter)) : e.lines.push(t = { main: r.flexStyle.mainOuter, cross: r.flexStyle.crossOuter, children: [] }), t.children.push(r);e.flexStyle.mainLines = l(e.lines, function (e, t) { + return Math.max(e, t.main); + }, 0), e.flexStyle.crossLines = l(e.lines, function (e, t) { + return e + t.cross; + }, 0), "auto" === e.flexStyle.main && (e.flexStyle.main = Math.max(e.flexStyle.mainOffset, e.flexStyle.mainLines + e.flexStyle.mainInnerBefore + e.flexStyle.mainInnerAfter + e.flexStyle.mainBorderBefore + e.flexStyle.mainBorderAfter)), "auto" === e.flexStyle.cross && (e.flexStyle.cross = Math.max(e.flexStyle.crossOffset, e.flexStyle.crossLines + e.flexStyle.crossInnerBefore + e.flexStyle.crossInnerAfter + e.flexStyle.crossBorderBefore + e.flexStyle.crossBorderAfter)), e.flexStyle.crossSpace = e.flexStyle.cross - e.flexStyle.crossInnerBefore - e.flexStyle.crossInnerAfter - e.flexStyle.crossBorderBefore - e.flexStyle.crossBorderAfter - e.flexStyle.crossLines, e.flexStyle.mainOuter = e.flexStyle.main + e.flexStyle.mainBefore + e.flexStyle.mainAfter, e.flexStyle.crossOuter = e.flexStyle.cross + e.flexStyle.crossBefore + e.flexStyle.crossAfter; + }; + }, { "../reduce": 12 }], 7: [function (e, t, r) { + function l(t) { + for (var r, l = -1; r = t.children[++l];) e("./flex-direction")(r, t.style.flexDirection);e("./flex-direction")(t, t.style.flexDirection), e("./order")(t), e("./flexbox-lines")(t), e("./align-content")(t), l = -1;for (var n; n = t.lines[++l];) n.mainSpace = t.flexStyle.main - t.flexStyle.mainInnerBefore - t.flexStyle.mainInnerAfter - t.flexStyle.mainBorderBefore - t.flexStyle.mainBorderAfter - n.main, e("./flex-grow")(n), e("./flex-shrink")(n), e("./margin-main")(n), e("./margin-cross")(n), e("./justify-content")(n, t.style.justifyContent, t);e("./align-items")(t); + }t.exports = l; + }, { "./align-content": 1, "./align-items": 2, "./flex-direction": 3, "./flex-grow": 4, "./flex-shrink": 5, "./flexbox-lines": 6, "./justify-content": 8, "./margin-cross": 9, "./margin-main": 10, "./order": 11 }], 8: [function (e, t, r) { + t.exports = function (e, t, r) { + var l, + n, + f, + o = r.flexStyle.mainInnerBefore, + i = -1;if ("flex-end" === t) for (l = e.mainSpace, l += o; f = e.children[++i];) f.flexStyle.mainStart = l, l += f.flexStyle.mainOuter;else if ("center" === t) for (l = e.mainSpace / 2, l += o; f = e.children[++i];) f.flexStyle.mainStart = l, l += f.flexStyle.mainOuter;else if ("space-between" === t) for (n = e.mainSpace / (e.children.length - 1), l = 0, l += o; f = e.children[++i];) f.flexStyle.mainStart = l, l += f.flexStyle.mainOuter + n;else if ("space-around" === t) for (n = 2 * e.mainSpace / (2 * e.children.length), l = n / 2, l += o; f = e.children[++i];) f.flexStyle.mainStart = l, l += f.flexStyle.mainOuter + n;else for (l = 0, l += o; f = e.children[++i];) f.flexStyle.mainStart = l, l += f.flexStyle.mainOuter; + }; + }, {}], 9: [function (e, t, r) { + t.exports = function (e) { + for (var t, r = -1; t = e.children[++r];) { + var l = 0;"auto" === t.flexStyle.crossBefore && ++l, "auto" === t.flexStyle.crossAfter && ++l;var n = e.cross - t.flexStyle.crossOuter;"auto" === t.flexStyle.crossBefore && (t.flexStyle.crossBefore = n / l), "auto" === t.flexStyle.crossAfter && (t.flexStyle.crossAfter = n / l), "auto" === t.flexStyle.cross ? t.flexStyle.crossOuter = t.flexStyle.crossOffset + t.flexStyle.crossBefore + t.flexStyle.crossAfter : t.flexStyle.crossOuter = t.flexStyle.cross + t.flexStyle.crossBefore + t.flexStyle.crossAfter; + } + }; + }, {}], 10: [function (e, t, r) { + t.exports = function (e) { + for (var t, r = 0, l = -1; t = e.children[++l];) "auto" === t.flexStyle.mainBefore && ++r, "auto" === t.flexStyle.mainAfter && ++r;if (r > 0) { + for (l = -1; t = e.children[++l];) "auto" === t.flexStyle.mainBefore && (t.flexStyle.mainBefore = e.mainSpace / r), "auto" === t.flexStyle.mainAfter && (t.flexStyle.mainAfter = e.mainSpace / r), "auto" === t.flexStyle.main ? t.flexStyle.mainOuter = t.flexStyle.mainOffset + t.flexStyle.mainBefore + t.flexStyle.mainAfter : t.flexStyle.mainOuter = t.flexStyle.main + t.flexStyle.mainBefore + t.flexStyle.mainAfter;e.mainSpace = 0; + } + }; + }, {}], 11: [function (e, t, r) { + var l = /^(column|row)-reverse$/;t.exports = function (e) { + e.children.sort(function (e, t) { + return e.style.order - t.style.order || e.index - t.index; + }), l.test(e.style.flexDirection) && e.children.reverse(); + }; + }, {}], 12: [function (e, t, r) { + function l(e, t, r) { + for (var l = e.length, n = -1; ++n < l;) n in e && (r = t(r, e[n], n));return r; + }t.exports = l; + }, {}], 13: [function (e, t, r) { + function l(e) { + i(o(e)); + }var n = e("./read"), + f = e("./write"), + o = e("./readAll"), + i = e("./writeAll");t.exports = l, t.exports.read = n, t.exports.write = f, t.exports.readAll = o, t.exports.writeAll = i; + }, { "./read": 15, "./readAll": 16, "./write": 17, "./writeAll": 18 }], 14: [function (e, t, r) { + function l(e, t) { + var r = String(e).match(f);if (!r) return e;var l = r[1], + o = r[2];return "px" === o ? 1 * l : "cm" === o ? .3937 * l * 96 : "in" === o ? 96 * l : "mm" === o ? .3937 * l * 96 / 10 : "pc" === o ? 12 * l * 96 / 72 : "pt" === o ? 96 * l / 72 : "rem" === o ? 16 * l : n(e, t); + }function n(e, t) { + o.style.cssText = "border:none!important;clip:rect(0 0 0 0)!important;display:block!important;font-size:1em!important;height:0!important;margin:0!important;padding:0!important;position:relative!important;width:" + e + "!important", t.parentNode.insertBefore(o, t.nextSibling);var r = o.offsetWidth;return t.parentNode.removeChild(o), r; + }t.exports = l;var f = /^([-+]?\d*\.?\d+)(%|[a-z]+)$/, + o = document.createElement("div"); + }, {}], 15: [function (e, t, r) { + function l(e) { + var t = { alignContent: "stretch", alignItems: "stretch", alignSelf: "auto", borderBottomWidth: 0, borderLeftWidth: 0, borderRightWidth: 0, borderTopWidth: 0, boxSizing: "content-box", display: "inline", flexBasis: "auto", flexDirection: "row", flexGrow: 0, flexShrink: 1, flexWrap: "nowrap", justifyContent: "flex-start", height: "auto", marginTop: 0, marginRight: 0, marginLeft: 0, marginBottom: 0, paddingTop: 0, paddingRight: 0, paddingLeft: 0, paddingBottom: 0, maxHeight: "none", maxWidth: "none", minHeight: 0, minWidth: 0, order: 0, position: "static", width: "auto" }, + r = e instanceof Element;if (r) { + var l = e.hasAttribute("data-style"), + i = l ? e.getAttribute("data-style") : e.getAttribute("style") || "";l || e.setAttribute("data-style", i);var a = window.getComputedStyle && getComputedStyle(e) || {};o(t, a);var c = e.currentStyle || {};n(t, c), f(t, i);for (var y in t) t[y] = s(t[y], e);var x = e.getBoundingClientRect();t.offsetHeight = x.height || e.offsetHeight, t.offsetWidth = x.width || e.offsetWidth; + }var S = { element: e, style: t };return S; + }function n(e, t) { + for (var r in e) { + var l = (r in t);if (l) e[r] = t[r];else { + var n = r.replace(/[A-Z]/g, "-$&").toLowerCase(), + f = (n in t);f && (e[r] = t[n]); } - }var pe = !1, - xe = !1;if ((Et || (t.layout[ot[R]] = z($(t, R, It + y(t, R)), Wt), (R === G || R === Z) && (pe = !0)), St || (t.layout[ot[M]] = z($(t, M, Dt + Lt), Lt), (M === G || M === Z) && (xe = !0)), pe || xe)) for (ht = 0; N > ht; ++ht) vt = t.children[ht], pe && D(t, vt, R), xe && D(t, vt, M);for (Tt = Ct; null !== Tt;) { - for (mt = 0; 2 > mt; mt++) pt = 0 !== mt ? q : U, !e(t.layout[ot[pt]]) && !k(Tt, pt) && C(Tt, it[pt]) && C(Tt, nt[pt]) && (Tt.layout[ot[pt]] = z($(Tt, pt, t.layout[ot[pt]] - c(t, pt) - f(Tt, pt) - H(Tt, it[pt]) - H(Tt, nt[pt])), h(Tt, pt))), C(Tt, nt[pt]) && !C(Tt, it[pt]) && (Tt.layout[it[pt]] = t.layout[ot[pt]] - Tt.layout[ot[pt]] - H(Tt, nt[pt]));vt = Tt, Tt = Tt.nextAbsoluteChild, vt.nextAbsoluteChild = null; - } - }function j(t, e, i, n) { - t.shouldUpdate = !0;var r = t.style.direction || A, - o = !t.isDirty && t.lastLayout && t.lastLayout.requestedHeight === t.layout.height && t.lastLayout.requestedWidth === t.layout.width && t.lastLayout.parentMaxWidth === e && t.lastLayout.parentMaxHeight === i && t.lastLayout.direction === r;o ? (t.layout.width = t.lastLayout.width, t.layout.height = t.lastLayout.height, t.layout.top = t.lastLayout.top, t.layout.left = t.lastLayout.left) : (t.lastLayout || (t.lastLayout = {}), t.lastLayout.requestedWidth = t.layout.width, t.lastLayout.requestedHeight = t.layout.height, t.lastLayout.parentMaxWidth = e, t.lastLayout.parentMaxHeight = i, t.lastLayout.direction = r, t.children.forEach(function (t) { - t.layout.width = void 0, t.layout.height = void 0, t.layout.top = 0, t.layout.left = 0; - }), R(t, e, i, n), t.lastLayout.width = t.layout.width, t.lastLayout.height = t.layout.height, t.lastLayout.top = t.layout.top, t.lastLayout.left = t.layout.left); - }var F, - M = "inherit", - A = "ltr", - N = "rtl", - q = "row", - G = "row-reverse", - U = "column", - Z = "column-reverse", - O = "flex-start", - _ = "center", - J = "flex-end", - K = "space-between", - P = "space-around", - Q = "flex-start", - V = "center", - X = "flex-end", - Y = "stretch", - tt = "relative", - et = "absolute", - it = { row: "left", "row-reverse": "right", column: "top", "column-reverse": "bottom" }, - nt = { row: "right", "row-reverse": "left", column: "bottom", "column-reverse": "top" }, - rt = { row: "left", "row-reverse": "right", column: "top", "column-reverse": "bottom" }, - ot = { row: "width", "row-reverse": "width", column: "height", "column-reverse": "height" };return { layoutNodeImpl: R, computeLayout: j, fillNodes: t }; - })();return "object" == typeof exports && (module.exports = t), function (e) { - t.fillNodes(e), t.computeLayout(e); - }; - }), !window.addEventListener && window.attachEvent && (function () { - Window.prototype.addEventListener = HTMLDocument.prototype.addEventListener = Element.prototype.addEventListener = function (t, e) { - this.attachEvent("on" + t, e); - }, Window.prototype.removeEventListener = HTMLDocument.prototype.removeEventListener = Element.prototype.removeEventListener = function (t, e) { - this.detachEvent("on" + t, e); - }; - })(), flexibility.detect = function () { - var t = document.createElement("p");try { - return t.style.display = "flex", "flex" === t.style.display; - } catch (e) { - return !1; - } - }, !flexibility.detect() && document.attachEvent && document.documentElement.currentStyle && document.attachEvent("onreadystatechange", function () { - flexibility.onresize({ target: document.documentElement }); - }), flexibility.init = function (t) { - var e = t.onlayoutcomplete;return e || (e = t.onlayoutcomplete = { node: t, style: {}, children: [] }), e.style.display = t.currentStyle["-js-display"] || t.currentStyle.display, e; - };var t, - e = 1e3, - i = 15, - n = document.documentElement, - r = 0, - o = 0;flexibility.onresize = function (l) { - if (n.clientWidth !== r || n.clientHeight !== o) { - r = n.clientWidth, o = n.clientHeight, clearTimeout(t), window.removeEventListener("resize", flexibility.onresize);var a = l.target && 1 === l.target.nodeType ? l.target : document.documentElement;flexibility.walk(a), t = setTimeout(function () { - window.addEventListener("resize", flexibility.onresize); - }, e / i); - } - };var l = { alignContent: { initial: "stretch", valid: /^(flex-start|flex-end|center|space-between|space-around|stretch)/ }, alignItems: { initial: "stretch", valid: /^(flex-start|flex-end|center|baseline|stretch)$/ }, boxSizing: { initial: "content-box", valid: /^(border-box|content-box)$/ }, flexDirection: { initial: "row", valid: /^(row|row-reverse|column|column-reverse)$/ }, flexWrap: { initial: "nowrap", valid: /^(nowrap|wrap|wrap-reverse)$/ }, justifyContent: { initial: "flex-start", valid: /^(flex-start|flex-end|center|space-between|space-around)$/ } };flexibility.updateFlexContainerCache = function (t) { - var e = t.style, - i = t.node.currentStyle, - n = t.node.style, - r = {};(i["flex-flow"] || n["flex-flow"] || "").replace(/^(row|row-reverse|column|column-reverse)\s+(nowrap|wrap|wrap-reverse)$/i, function (t, e, i) { - r.flexDirection = e, r.flexWrap = i; - });for (var o in l) { - var a = o.replace(/[A-Z]/g, "-$&").toLowerCase(), - d = l[o], - s = i[a] || n[a];e[o] = d.valid.test(s) ? s : r[o] || d.initial; - } - };var a = { alignSelf: { initial: "auto", valid: /^(auto|flex-start|flex-end|center|baseline|stretch)$/ }, boxSizing: { initial: "content-box", valid: /^(border-box|content-box)$/ }, flexBasis: { initial: "auto", valid: /^((?:[-+]?0|[-+]?[0-9]*\.?[0-9]+(?:%|ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmax|vmin|vw))|auto|fill|max-content|min-content|fit-content|content)$/ }, flexGrow: { initial: 0, valid: /^\+?(0|[1-9][0-9]*)$/ }, flexShrink: { initial: 0, valid: /^\+?(0|[1-9][0-9]*)$/ }, order: { initial: 0, valid: /^([-+]?[0-9]+)$/ } };flexibility.updateFlexItemCache = function (t) { - var e = t.style, - i = t.node.currentStyle, - n = t.node.style, - r = {};(i.flex || n.flex || "").replace(/^\+?(0|[1-9][0-9]*)/, function (t) { - r.flexGrow = t; - });for (var o in a) { - var l = o.replace(/[A-Z]/g, "-$&").toLowerCase(), - d = a[o], - s = i[l] || n[l];e[o] = d.valid.test(s) ? s : r[o] || d.initial; - } - };var d = "border:0 solid;clip:rect(0 0 0 0);display:inline-block;font:0/0 serif;margin:0;max-height:none;max-width:none;min-height:0;min-width:0;overflow:hidden;padding:0;position:absolute;width:1em;", - s = { medium: 4, none: 0, thick: 6, thin: 2 }, - u = { borderBottomWidth: 0, borderLeftWidth: 0, borderRightWidth: 0, borderTopWidth: 0, height: 0, paddingBottom: 0, paddingLeft: 0, paddingRight: 0, paddingTop: 0, marginBottom: 0, marginLeft: 0, marginRight: 0, marginTop: 0, maxHeight: 0, maxWidth: 0, minHeight: 0, minWidth: 0, width: 0 }, - y = /^([-+]?0|[-+]?[0-9]*\.?[0-9]+)/, - c = 100;flexibility.updateLengthCache = function (t) { - var e, - i, - n, - r = t.node, - o = t.style, - l = r.parentNode, - a = document.createElement("_"), - f = a.runtimeStyle, - h = r.currentStyle;f.cssText = d + "font-size:" + h.fontSize, l.insertBefore(a, r.nextSibling), o.fontSize = a.offsetWidth, f.fontSize = o.fontSize + "px";for (var m in u) { - var v = h[m];y.test(v) || "auto" === v && !/(width|height)/i.test(m) ? /%$/.test(v) ? (/^(bottom|height|top)$/.test(m) ? (i || (i = l.offsetHeight), n = i) : (e || (e = l.offsetWidth), n = e), o[m] = parseFloat(v) * n / c) : (f.width = v, o[m] = a.offsetWidth) : /^border/.test(m) && v in s ? o[m] = s[v] : delete o[m]; - }l.removeChild(a), "none" === h.borderTopStyle && (o.borderTopWidth = 0), "none" === h.borderRightStyle && (o.borderRightWidth = 0), "none" === h.borderBottomStyle && (o.borderBottomWidth = 0), "none" === h.borderLeftStyle && (o.borderLeftWidth = 0), o.originalWidth = o.width, o.originalHeight = o.height, o.width || o.minWidth || (/flex/.test(o.display) ? o.width = r.offsetWidth : o.minWidth = r.offsetWidth), o.height || o.minHeight || /flex/.test(o.display) || (o.minHeight = r.offsetHeight); - }, flexibility.walk = function (t) { - var e = flexibility.init(t), - i = e.style, - n = i.display;if ("none" === n) return {};var r = n.match(/^(inline)?flex$/);if ((r && (flexibility.updateFlexContainerCache(e), t.runtimeStyle.cssText = "display:" + (r[1] ? "inline-block" : "block"), e.children = []), Array.prototype.forEach.call(t.childNodes, function (t, n) { - if (1 === t.nodeType) { - var o = flexibility.walk(t), - l = o.style;o.index = n, r && (flexibility.updateFlexItemCache(o), "auto" === l.alignSelf && (l.alignSelf = i.alignItems), l.flex = l.flexGrow, t.runtimeStyle.cssText = "display:inline-block", e.children.push(o)); - } - }), r)) { - e.children.forEach(function (t) { - flexibility.updateLengthCache(t); - }), e.children.sort(function (t, e) { - return t.style.order - e.style.order || t.index - e.index; - }), /-reverse$/.test(i.flexDirection) && (e.children.reverse(), i.flexDirection = i.flexDirection.replace(/-reverse$/, ""), "flex-start" === i.justifyContent ? i.justifyContent = "flex-end" : "flex-end" === i.justifyContent && (i.justifyContent = "flex-start")), flexibility.updateLengthCache(e), delete e.lastLayout, delete e.layout;var o = i.borderTopWidth, - l = i.borderBottomWidth;i.borderTopWidth = 0, i.borderBottomWidth = 0, i.borderLeftWidth = 0, "column" === i.flexDirection && (i.width -= i.borderRightWidth), flexibility.computeLayout(e), t.runtimeStyle.cssText = "box-sizing:border-box;display:block;position:relative;width:" + (e.layout.width + i.borderRightWidth) + "px;height:" + (e.layout.height + o + l) + "px";var a = [], - d = 1, - s = "column" === i.flexDirection ? "width" : "height";e.children.forEach(function (t) { - a[t.lineIndex] = Math.max(a[t.lineIndex] || 0, t.layout[s]), d = Math.max(d, t.lineIndex + 1); - }), e.children.forEach(function (t) { - var e = t.layout;"stretch" === t.style.alignSelf && (e[s] = a[t.lineIndex]), t.node.runtimeStyle.cssText = "box-sizing:border-box;display:block;position:absolute;margin:0;width:" + e.width + "px;height:" + e.height + "px;top:" + e.top + "px;left:" + e.left + "px"; - }); - }return e; - }; -})(); + }var o = ("-js-display" in t);o && (e.display = t["-js-display"]); + }function f(e, t) { + for (var r; r = i.exec(t);) { + var l = r[1].toLowerCase().replace(/-[a-z]/g, function (e) { + return e.slice(1).toUpperCase(); + });e[l] = r[2]; + } + }function o(e, t) { + for (var r in e) { + var l = (r in t);l && !/^(alignSelf|height|width)$/.test(r) && (e[r] = t[r]); + } + }t.exports = l;var i = /([^\s:;]+)\s*:\s*([^;]+?)\s*(;|$)/g, + s = e("./getComputedLength"); + }, { "./getComputedLength": 14 }], 16: [function (e, t, r) { + function l(e) { + var t = [];return n(e, t), t; + }function n(e, t) { + for (var r, l = f(e), i = [], s = -1; r = e.childNodes[++s];) { + var a = 3 === r.nodeType && !/^\s*$/.test(r.nodeValue);if (l && a) { + var c = r;r = e.insertBefore(document.createElement("flex-item"), c), r.appendChild(c); + }var y = r instanceof Element;if (y) { + var x = n(r, t);if (l) { + var S = r.style;S.display = "inline-block", S.position = "absolute", x.style = o(r).style, i.push(x); + } + } + }var m = { element: e, children: i };return l && (m.style = o(e).style, t.push(m)), m; + }function f(e) { + var t = e instanceof Element, + r = t && e.getAttribute("data-style"), + l = t && e.currentStyle && e.currentStyle["-js-display"], + n = i.test(r) || s.test(l);return n; + }t.exports = l;var o = e("../read"), + i = /(^|;)\s*display\s*:\s*(inline-)?flex\s*(;|$)/i, + s = /^(inline-)?flex$/i; + }, { "../read": 15 }], 17: [function (e, t, r) { + function l(e) { + f(e);var t = e.element.style, + r = "inline" === e.mainAxis ? ["main", "cross"] : ["cross", "main"];t.boxSizing = "content-box", t.display = "block", t.position = "relative", t.width = n(e.flexStyle[r[0]] - e.flexStyle[r[0] + "InnerBefore"] - e.flexStyle[r[0] + "InnerAfter"] - e.flexStyle[r[0] + "BorderBefore"] - e.flexStyle[r[0] + "BorderAfter"]), t.height = n(e.flexStyle[r[1]] - e.flexStyle[r[1] + "InnerBefore"] - e.flexStyle[r[1] + "InnerAfter"] - e.flexStyle[r[1] + "BorderBefore"] - e.flexStyle[r[1] + "BorderAfter"]);for (var l, o = -1; l = e.children[++o];) { + var i = l.element.style, + s = "inline" === l.mainAxis ? ["main", "cross"] : ["cross", "main"];i.boxSizing = "content-box", i.display = "block", i.position = "absolute", "auto" !== l.flexStyle[s[0]] && (i.width = n(l.flexStyle[s[0]] - l.flexStyle[s[0] + "InnerBefore"] - l.flexStyle[s[0] + "InnerAfter"] - l.flexStyle[s[0] + "BorderBefore"] - l.flexStyle[s[0] + "BorderAfter"])), "auto" !== l.flexStyle[s[1]] && (i.height = n(l.flexStyle[s[1]] - l.flexStyle[s[1] + "InnerBefore"] - l.flexStyle[s[1] + "InnerAfter"] - l.flexStyle[s[1] + "BorderBefore"] - l.flexStyle[s[1] + "BorderAfter"])), i.top = n(l.flexStyle[s[1] + "Start"]), i.left = n(l.flexStyle[s[0] + "Start"]), i.marginTop = n(l.flexStyle[s[1] + "Before"]), i.marginRight = n(l.flexStyle[s[0] + "After"]), i.marginBottom = n(l.flexStyle[s[1] + "After"]), i.marginLeft = n(l.flexStyle[s[0] + "Before"]); + } + }function n(e) { + return "string" == typeof e ? e : Math.max(e, 0) + "px"; + }t.exports = l;var f = e("../flexbox"); + }, { "../flexbox": 7 }], 18: [function (e, t, r) { + function l(e) { + for (var t, r = -1; t = e[++r];) n(t); + }t.exports = l;var n = e("../write"); + }, { "../write": 17 }] }, {}, [13])(13); +}); /***/ }), /* 24 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; -var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! tether 1.1.0 */ +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! tether 1.4.0 */ @@ -5178,24 +5119,55 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! tether 1.1 TetherBase = { modules: [] }; } - function getScrollParent(el) { - var _getComputedStyle = getComputedStyle(el); + var zeroElement = null; + + // Same as native getBoundingClientRect, except it takes into account parent offsets + // if the element lies within a nested document ( or