Plugin Directory

Changeset 3438713


Ignore:
Timestamp:
01/13/2026 02:59:26 PM (3 months ago)
Author:
orderable
Message:

Update to version 1.20.0 from GitHub

Location:
orderable
Files:
28 edited
1 copied

Legend:

Unmodified
Added
Removed
  • orderable/tags/1.20.0/assets/admin/css/main.css

    r3262287 r3438713  
    282282  color: #fff;
    283283  font-size: 14px;
    284   /* stylelint-disable-next-line no-descending-specificity */
    285284}
    286285
     
    306305  color: #fff;
    307306  cursor: default;
     307}
     308
     309body .submit .button-primary,
     310.orderable-admin-button {
     311  /* stylelint-disable-next-line no-descending-specificity */
    308312}
    309313
     
    607611      -ms-flex-align: center;
    608612          align-items: center;
    609   /* stylelint-disable-next-line no-descending-specificity */
    610613}
    611614
     
    624627  font-size: 12px;
    625628  opacity: 0.8;
     629}
     630
     631.orderable-fields-row__header {
     632  /* stylelint-disable-next-line no-descending-specificity */
    626633}
    627634
  • orderable/tags/1.20.0/assets/frontend/css/main.css

    r3123410 r3438713  
    185185.orderable-button.orderable-button--out-of-stock:active {
    186186  cursor: not-allowed;
    187   border-color: #c7d4db;
    188   color: #a8bdc7;
     187  border-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
     188  color: rgb(167.8048780488, 188.7317073171, 199.1951219512);
    189189  background: transparent !important;
    190190}
     
    342342  .orderable-products-list__item {
    343343    padding: 0 0 24px;
    344     border-bottom: 1px solid #ecf1f3;
     344    border-bottom: 1px solid rgb(236.2195121951, 240.7268292683, 242.9804878049);
    345345  }
    346346  .orderable-products-list__item:last-child {
     
    945945  right: 0;
    946946  z-index: 20;
    947   color: #c7d4db;
     947  color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    948948  -webkit-box-shadow: none;
    949949          box-shadow: none;
     
    969969  -webkit-transition: none;
    970970  transition: none;
    971   fill: #c7d4db;
     971  fill: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    972972  margin: -10px 0 0 -10px;
    973973}
     
    10441044.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li {
    10451045  border: 1px solid #e34f4f;
    1046   background: #fce9e9;
     1046  background: rgb(251.5, 233, 233);
    10471047  color: #dc2323;
    10481048  padding: 6px 12px 6px 28px !important;
     
    11621162  margin: 0;
    11631163  z-index: 100;
    1164   border-color: #c7d4db;
     1164  border-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    11651165}
    11661166
     
    11711171  height: 18px;
    11721172  width: 2px;
    1173   background-color: #c7d4db;
     1173  background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    11741174  top: 50%;
    11751175  margin: 0 0 0 -2px;
     
    11911191
    11921192.orderable-drawer__close:focus, .orderable-drawer__close:active, .orderable-drawer__close:hover {
    1193   background-color: #c7d4db;
    1194   border-color: #c7d4db;
     1193  background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
     1194  border-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    11951195}
    11961196
    11971197.orderable-drawer__close:focus::before, .orderable-drawer__close:focus::after, .orderable-drawer__close:active::before, .orderable-drawer__close:active::after, .orderable-drawer__close:hover::before, .orderable-drawer__close:hover::after {
    1198   background-color: #405763;
     1198  background-color: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    11991199}
    12001200
     
    14271427  white-space: nowrap;
    14281428  line-height: 40px;
    1429   color: #405763;
     1429  color: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    14301430  font-weight: 400;
    14311431  border-radius: 20px;
    14321432  -webkit-transition: all 150ms ease-out;
    14331433  transition: all 150ms ease-out;
    1434   background: #ecf1f3;
     1434  background: rgb(236.2195121951, 240.7268292683, 242.9804878049);
    14351435}
    14361436
     
    14421442
    14431443a.orderable-tabs__link:hover, a.orderable-tabs__link:active, a.orderable-tabs__link:focus {
    1444   color: #405763;
     1444  color: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    14451445  text-decoration: none;
    1446   background: #c7d4db;
     1446  background: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    14471447}
    14481448
     
    14971497.orderable-accordion {
    14981498  margin: 24px 0;
    1499   background: #f6f8f9;
     1499  background: rgb(245.5487804878, 247.8170731707, 248.9512195122);
    15001500  padding: 0 24px;
    15011501  border-radius: 6px;
     
    15281528  height: 11px;
    15291529  width: 2px;
    1530   background-color: #c7d4db;
     1530  background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    15311531  top: 50%;
    15321532  display: block;
     
    15521552
    15531553.orderable-accordion__item-link--active::before, .orderable-accordion__item-link--active::after, .orderable-accordion__item-link:hover::before, .orderable-accordion__item-link:hover::after, .orderable-accordion__item-link:active::before, .orderable-accordion__item-link:active::after, .orderable-accordion__item-link:focus::before, .orderable-accordion__item-link:focus::after {
    1554   background-color: #405763 !important;
     1554  background-color: rgb(63.6097560976, 87.4634146341, 99.3902439024) !important;
    15551555}
    15561556
     
    16101610  width: 10px;
    16111611  border-radius: 10px;
    1612   background: #d6e0e5;
     1612  background: rgb(214.4512195122, 224.1829268293, 229.0487804878);
    16131613}
    16141614
    16151615.orderable-sb-scrollbar:hover {
    1616   background: #c7d4db;
     1616  background: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    16171617}
    16181618
     
    16481648/* Elements */
    16491649.orderable-quantity-roller__roller {
    1650   border: 2px solid #c7d4db;
     1650  border: 2px solid rgb(198.9024390244, 212.3658536585, 219.0975609756);
    16511651  border-radius: 20px;
    16521652  height: 40px;
     
    16701670  border-radius: 0;
    16711671  text-align: center;
    1672   color: #c7d4db;
     1672  color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    16731673  line-height: 36px;
    16741674  -webkit-box-shadow: none;
     
    16921692  height: 2px;
    16931693  width: 12px;
    1694   background: #c7d4db;
     1694  background: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    16951695  top: 50%;
    16961696  left: 50%;
     
    17141714
    17151715.orderable-quantity-roller__button:not(.orderable-button--loading):hover, .orderable-quantity-roller__button:not(.orderable-button--loading):focus, .orderable-quantity-roller__button:visited {
    1716   background-color: #c7d4db;
    1717   color: #405763;
     1716  background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
     1717  color: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    17181718  -webkit-box-shadow: none;
    17191719          box-shadow: none;
     
    17231723
    17241724.orderable-quantity-roller__button:not(.orderable-button--loading):hover::before, .orderable-quantity-roller__button:not(.orderable-button--loading):hover::after, .orderable-quantity-roller__button:not(.orderable-button--loading):focus::before, .orderable-quantity-roller__button:not(.orderable-button--loading):focus::after, .orderable-quantity-roller__button:visited::before, .orderable-quantity-roller__button:visited::after {
    1725   background: #405763;
     1725  background: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    17261726}
    17271727
     
    17921792  content: "x";
    17931793  margin: 0 8px;
    1794   color: #c7d4db;
     1794  color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    17951795}
    17961796
  • orderable/tags/1.20.0/assets/frontend/css/main.min.css

    r3123410 r3438713  
    1 @-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}@media screen and (min-width:620px){.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}}.orderable-button,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__close{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;position:relative}.orderable-button:active,.orderable-button:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__close:active,.orderable-drawer__close:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover,.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--hide{display:none!important}.orderable-button--filled,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{background:#000!important;color:#fff}.orderable-button--filled--hover,.orderable-button--filled:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading::after{content:"";display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading::after,.orderable-button--loading.orderable-button--hover::after,.orderable-button--loading:active::after,.orderable-button--loading:focus::after,.orderable-button--loading:hover::after,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout .orderable-button--loading::after{border-top-color:#fff;border-left-color:#fff}.orderable-button--out-of-stock.orderable-drawer__close,.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button,.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable--button-style-square .orderable-drawer__close,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable--button-style-square .button.checkout{border-radius:0}.orderable-button--icon{padding:10px!important;width:44px;height:44px;line-height:24px;border:none;background:0 0!important}body .orderable-button--icon:active,body .orderable-button--icon:focus,body .orderable-button--icon:hover{background:0 0!important;opacity:.6}.orderable-button--icon svg{width:24px;height:24px;border-radius:12px;overflow:hidden;-webkit-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.orderable-button--icon.orderable-button--loading::after{display:none}.orderable-input--select,select.orderable-input--select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #e6ecef;border-radius:8px;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c1cfd7'><polygon points='0,0 100,0 50,50'/></svg>");background-size:16px;background-position:calc(100% - 14px) 19px;background-repeat:no-repeat;cursor:pointer}.orderable-input--select:focus,select.orderable-input--select:focus{outline:0;border-color:#000;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23000000'><polygon points='0,0 100,0 50,50'/></svg>")}.orderable-input.orderable-input--text{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #e6ecef;border-radius:8px;width:100%;background-color:#fff;-webkit-box-shadow:none;box-shadow:none}.orderable-input.orderable-input--text:focus{outline:0;border-color:#000;background-color:#fff}.orderable-category-heading{margin:0 0 24px}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__hero{width:200px}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}.orderable-products-list--list .orderable-products-list__item .orderable-product{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__content-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none none outside}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0 0}.orderable-product__options{margin:0 0 24px;padding:0;border-radius:6px}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions:last-child{margin-bottom:0}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-drawer__inner .orderable-product__actions .orderable-product__actions-price{margin-right:60px}.orderable-drawer__inner .orderable-product__actions .orderable-product__actions-price .price del+ins{margin-left:0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-counter{display:none;position:absolute;top:-6px;right:-4px;white-space:nowrap;padding:0 4px;background:#000;color:#fff;height:18px;line-height:18px;font-size:12px;border-radius:11px;min-width:18px;text-align:center}.orderable-product__actions-button{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 0 0 auto}.orderable-main--quantity-roller .orderable-product__actions-button .orderable-product__actions-counter:not([data-orderable-product-quantity="0"]){display:inline}.orderable-product__actions-button .orderable-quantity-roller{display:none}.orderable-product__actions-button .orderable-quantity-roller--is-active{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-product__actions-button .orderable-quantity-roller--is-active+.orderable-product__add-to-order{display:none}.orderable-product__actions-button .orderable-quantity-roller+.orderable-product__add-to-order:not([data-orderable-trigger=product-options]) .orderable-product__actions-counter{display:none}.orderable-product__actions-button .orderable-product__cancel-update{background-color:#f2f2f3;border-color:#f2f2f3;margin-right:10px}.orderable-product__actions-button .orderable-quantity-roller__roller{border-color:#000}.orderable-product__actions-button .orderable-quantity-roller__button::after,.orderable-product__actions-button .orderable-quantity-roller__button::before{background-color:#000}.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover{background-color:#000;color:#f2f2f3}.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus::after,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus::before,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover::after,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover::before{background-color:#f2f2f3}.orderable-product__actions-button .orderable-quantity-roller__quantity{color:#000;font-weight:700}.orderable-product__actions-button .orderable-quantity-roller__button--decrease[data-orderable-quantity="1"]::before{display:none!important}.orderable-product__actions-button .orderable-quantity-roller__button--decrease:not([data-orderable-quantity="1"]) svg,.orderable-product__actions-button .orderable-quantity-roller__button--decrease[data-orderable-quantity="1"].orderable-button--loading svg{display:none}.orderable-product__tabs{margin:24px 0}.orderable-product__tabs-section{display:none}.orderable-product__tabs-section:first-child{display:block}.orderable-product__tabs-section :last-child{margin-bottom:0}.orderable-product__add-to-order.added~a.added_to_cart.wc-forward{display:none}.orderable-product__points-earned{padding:0 24px}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__hero{margin:-24px -24px 0}.orderable-product--options .orderable-product__title{text-align:left;margin:24px 0!important}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #e6ecef;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--add-to-cart,.orderable-product--product-options,.orderable-product--view-product{cursor:pointer}.orderable-product[data-orderable-product-type=subscription],.orderable-product[data-orderable-product-type=variable-subscription]{padding-bottom:12px}.orderable-product[data-orderable-product-type=subscription] .orderable-product__actions,.orderable-product[data-orderable-product-type=variable-subscription] .orderable-product__actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;padding:0 24px 12px;position:static}.orderable-product--image-cropped .orderable-product__hero{overflow:hidden;padding:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:72px}.orderable-product--image-cropped .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:95px;border-radius:6px;overflow:hidden}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-tag{display:inline-block;background:#edf2f6;border-radius:15px;height:30px;line-height:30px;white-space:nowrap;color:#495568;padding:0 12px;font-size:14px}body.orderable-drawer-open{overflow:hidden}.orderable-drawer-overlay{height:100%;z-index:999998;position:fixed;top:0;left:0;opacity:0;visibility:hidden;background-color:rgba(34,34,34,.6);-webkit-transition:opacity .2s linear,visibility .1s,width 1s ease-in;transition:opacity .2s linear,visibility .1s,width 1s ease-in}.orderable-drawer{width:100%;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transition:all .2s;transition:all .2s;border-radius:0;-webkit-box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);display:block;position:fixed;top:0;right:0;height:100%;z-index:999999;background-color:#fff;overflow:hidden;padding:24px;-webkit-box-sizing:border-box;box-sizing:border-box}@media screen and (min-width:640px){.orderable-drawer{max-width:600px}}.orderable-drawer h3{margin:0 60px 24px!important;font-size:20px;line-height:24px;text-align:center}.orderable-drawer h4{font-size:18px;line-height:22px}.orderable-drawer__inner{padding:0;height:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__inner .orderable-sb-container{-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:-1px}.orderable-drawer__cart{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart .orderable-mini-cart-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart{margin:0;padding:0;list-style:none none outside;overflow:hidden;min-height:100%}.orderable-drawer__cart .orderable-mini-cart-item{margin:0;padding:10px 104px 10px 0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart-item .orderable-quantity-roller__roller svg{display:none}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove{position:absolute;bottom:16px;right:0;z-index:20;color:#c7d4db;-webkit-box-shadow:none;box-shadow:none;height:40px;width:40px;text-indent:250%;white-space:nowrap;font-size:0;-webkit-transition:none;transition:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:none}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#c7d4db;margin:-10px 0 0 -10px}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove:hover svg{opacity:.8}.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove{border-radius:0}.orderable-drawer__cart .orderable-mini-cart-item:last-child{border-bottom:none}.orderable-drawer__cart .orderable-mini-cart-item .variation{margin:7.5px 0}.orderable-drawer__cart .orderable-mini-cart-item .variation dd,.orderable-drawer__cart .orderable-mini-cart-item .variation dt,.orderable-drawer__cart .orderable-mini-cart-item .variation p{margin:0}.orderable-drawer__cart .orderable-mini-cart-item .blockOverlay{background:#fff!important;opacity:.8!important}.orderable-drawer__cart .orderable-edit-cart-item__button{position:absolute;bottom:21px;right:50px;height:30px;line-height:normal;padding:0 13px!important;font-size:14px}.orderable-drawer__cart .orderable-edit-cart-item__button.orderable-button--loading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-drawer__cart .orderable-edit-cart-item__button.orderable-button--loading::after{position:static;margin-left:5px}.orderable-drawer__cart .quantity{font-weight:700}.orderable-drawer__cart .orderable-mini-cart__notices{padding:15px 0}.orderable-drawer__cart .orderable-mini-cart__notices.orderable-mini-cart__notices--border-top{border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error{margin:0;padding:0;list-style:none none outside}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li{border:1px solid #e34f4f;background:#fce9e9;color:#dc2323;padding:6px 12px 6px 28px!important;text-align:center;margin:0 0 6px;display:block;border-radius:8px}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li:last-child{margin-bottom:0}.orderable-drawer__cart .orderable-mini-cart__notices .button{display:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-info::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-message::before{left:12px}.orderable-drawer__cart .orderable-mini-cart__buttons,.orderable-drawer__cart .orderable-mini-cart__total{margin:0;padding:0;text-align:center}.orderable-drawer__cart .orderable-mini-cart__total{padding:15px 0;border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart__buttons .button{display:none}.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{display:block;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-drawer__cart .orderable-mini-cart__empty-message{margin:auto 0;text-align:center}.orderable-drawer__cart .orderable-services-selector__selected{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup input{width:100%;margin:0 0 8px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button{display:block;width:100%}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:first-child{margin-right:4px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:last-child{margin-left:4px}.orderable-drawer__actions{bottom:-24px;margin:auto 0 -24px;background:#fff;padding:24px 0;left:0;right:0;border-top:1px solid #f2f2f2}.orderable-drawer__actions--cart{border-top:none;padding-top:10px}.orderable-drawer__close{position:absolute;top:16px;left:24px;font-size:0;text-indent:250%!important;white-space:nowrap!important;overflow:hidden!important;padding:0!important;width:40px;height:40px;margin:0;z-index:100;border-color:#c7d4db}.orderable-drawer__close::after,.orderable-drawer__close::before{position:absolute;left:54%;content:" ";height:18px;width:2px;background-color:#c7d4db;top:50%;margin:0 0 0 -2px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;display:block;margin-top:-9px}.orderable-drawer__close::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-drawer__close::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{background-color:#c7d4db;border-color:#c7d4db}.orderable-drawer__close:active::after,.orderable-drawer__close:active::before,.orderable-drawer__close:focus::after,.orderable-drawer__close:focus::before,.orderable-drawer__close:hover::after,.orderable-drawer__close:hover::before{background-color:#405763}.orderable-drawer .orderable-product__content{padding:15px 0}.orderable-drawer-overlay--open{-webkit-transition:opacity .2s ease,width 0s;transition:opacity .2s ease,width 0s;opacity:1;width:100%;visibility:visible}.orderable-drawer--open{visibility:visible;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.orderable-floating-cart{position:fixed;z-index:20}.orderable-floating-cart--bl,.orderable-floating-cart--br{bottom:40px}.orderable-floating-cart--br,.orderable-floating-cart--tr{right:40px}.orderable-floating-cart--bl,.orderable-floating-cart--tl{left:40px}.orderable-floating-cart--tl,.orderable-floating-cart--tr{top:40px}.orderable-floating-cart__button{padding:0;width:60px;height:60px;border:none;border-radius:100%;display:block;margin:0;text-align:center;line-height:60px;background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);outline:0!important;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out,-webkit-transform 150ms ease-in-out}.orderable-floating-cart__button:hover{background:#fff;-webkit-animation:wobble-hor-bottom .8s both;animation:wobble-hor-bottom .8s both;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-floating-cart__button svg{width:24px;height:24px;display:block;margin:0 auto}.orderable-floating-cart__count{position:absolute;top:0;right:0;white-space:nowrap;padding:0 4px;background:#e52c23;color:#fff;height:22px;line-height:22px;font-size:13px;border-radius:11px;min-width:22px;text-align:center}.orderable-services-selector__selected p{margin:0}.orderable-services-selector__selected-change{padding:0;margin:0;font-size:inherit;background:0 0;display:inline;color:#333;-webkit-transition:none;transition:none;text-transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector__selected-change:active,.orderable-services-selector__selected-change:focus,.orderable-services-selector__selected-change:hover{padding:0;margin:0;background:0 0;color:#333;text-decoration:underline;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector--selected .orderable-services-selector__lookup{display:none}.orderable-open-hours__date,.orderable-open-hours__service{margin:0 0 0 6px;padding:2px 6px;background:#000;color:#fff;border-radius:4px;display:inline-block;font-size:80%}.orderable-open-hours__service--closed{background-color:#e34f4f;display:none}.orderable-open-hours__date{margin:0 4px 0 0;text-align:center;min-width:30px;border:1px solid #e6ecef;background:0 0;color:inherit}.orderable-tabs{margin:0 0 24px;position:relative}.orderable-tabs__list{margin:0 1px 0 0!important;padding:0!important;list-style:none none outside;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;overflow:-moz-scrollbars-none;scrollbar-base-color:transparent;-webkit-overflow-scrolling:touch}.orderable-tabs__list::-webkit-scrollbar{display:none}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__list{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto}}.orderable-tabs__item{display:inline-block;margin:0 10px 0 0;padding:0}.orderable-tabs__item:last-child{margin-right:0}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 12px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#405763;font-weight:400;border-radius:20px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;background:#ecf1f3}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#405763;text-decoration:none;background:#c7d4db}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-tabs__arrow{background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border:none;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:20px!important;position:absolute;top:0;right:0;text-align:center;line-height:40px;display:none}.orderable-tabs__arrow:active,.orderable-tabs__arrow:focus,.orderable-tabs__arrow:hover{background:#fff;outline:0}.orderable-tabs__arrow svg{width:21px;height:24px;margin:8px 0}.orderable-tabs__arrow-left{left:0;right:initial;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.orderable-accordion{margin:24px 0;background:#f6f8f9;padding:0 24px;border-radius:6px}.orderable-product-fields-group-wrap+.orderable-accordion,.orderable-product__options+.orderable-accordion{margin-top:36px}.orderable-accordion__item{border-top:1px solid #e6ecef}.orderable-accordion__item:first-child{border-top:none}.orderable-accordion__item-link{display:block;padding:18px 0;margin:0;color:inherit;position:relative}.orderable-accordion__item-link::after,.orderable-accordion__item-link::before{position:absolute;right:5px;content:" ";height:11px;width:2px;background-color:#c7d4db;top:50%;display:block;margin:-4px 0 0}.orderable-accordion__item-link::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-accordion__item-link::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:12px}.orderable-accordion__item-link--active,.orderable-accordion__item-link:active,.orderable-accordion__item-link:focus,.orderable-accordion__item-link:hover{color:#000;border:none;outline:0}.orderable-accordion__item-link--active::after,.orderable-accordion__item-link--active::before,.orderable-accordion__item-link:active::after,.orderable-accordion__item-link:active::before,.orderable-accordion__item-link:focus::after,.orderable-accordion__item-link:focus::before,.orderable-accordion__item-link:hover::after,.orderable-accordion__item-link:hover::before{background-color:#405763!important}.orderable-accordion__item-link--active::before{right:12px}.orderable-accordion__item-link--active::after{right:5px}.orderable-accordion__item-content{display:none}.orderable-accordion__item-content--active{display:block}.orderable-accordion__item-content::after{content:"";display:table;clear:both}.orderable-sb-container{position:relative;overflow:hidden;padding-right:25px}.orderable-sb-content{height:100%;width:120%;padding-right:20%;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-sb-scrollbar-container{position:absolute;right:0;bottom:10px;top:10px;width:10px}.orderable-sb-container-noscroll .orderable-sb-scrollbar-container{right:-20px}.orderable-sb-scrollbar{position:absolute;right:0;height:30px;width:10px;border-radius:10px;background:#d6e0e5}.orderable-sb-scrollbar:hover{background:#c7d4db}.orderable--button-style-square .orderable-sb-scrollbar{border-radius:0}.orderable-sb-container-noscroll{padding-right:0}.orderable-sb-container-noscroll .orderable-sb-content{width:100%;padding-right:0;overflow:hidden}.orderable-quantity-roller{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-quantity-roller *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-quantity-roller__roller{border:2px solid #c7d4db;border-radius:20px;height:40px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.orderable--button-style-square .orderable-quantity-roller__roller{border-radius:0}.orderable-quantity-roller__button{height:36px;width:24px;background:0 0;border:none;border-radius:0;text-align:center;color:#c7d4db;line-height:36px;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;padding:0 6px;-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;font-size:0;text-indent:250%;overflow:hidden;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.orderable-quantity-roller__button::after,.orderable-quantity-roller__button::before{content:"";position:absolute;display:block!important;height:2px;width:12px;background:#c7d4db;top:50%;left:50%;margin:-1px 0 0 -6px;-webkit-transition:background 150ms ease-out;transition:background 150ms ease-out}.orderable-quantity-roller__button.orderable-button--loading{outline-color:transparent}.orderable-quantity-roller__button.orderable-button--loading:focus,.orderable-quantity-roller__button.orderable-button--loading:hover{background-color:transparent}.orderable-quantity-roller__button.orderable-button--loading:focus::after,.orderable-quantity-roller__button.orderable-button--loading:hover::after{border-top-color:#000;border-left-color:#000}.orderable-quantity-roller__button:not(.orderable-button--loading):focus,.orderable-quantity-roller__button:not(.orderable-button--loading):hover,.orderable-quantity-roller__button:visited{background-color:#c7d4db;color:#405763;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:0}.orderable-quantity-roller__button:not(.orderable-button--loading):focus::after,.orderable-quantity-roller__button:not(.orderable-button--loading):focus::before,.orderable-quantity-roller__button:not(.orderable-button--loading):hover::after,.orderable-quantity-roller__button:not(.orderable-button--loading):hover::before,.orderable-quantity-roller__button:visited::after,.orderable-quantity-roller__button:visited::before{background:#405763}.orderable-quantity-roller__button--decrease{padding-right:4px}.orderable-quantity-roller__button--decrease svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#000;margin:-10px 0 0 -10px}.orderable-quantity-roller__button--decrease:not(.orderable-button--loading)::after{display:none!important}.orderable-quantity-roller__button--decrease:focus svg,.orderable-quantity-roller__button--decrease:hover svg{fill:#f2f2f3}.orderable-quantity-roller__button--increase{padding-left:4px}.orderable-quantity-roller__button--increase::after{height:12px;width:2px;margin:-6px 0 0 -1px}.orderable-quantity-roller__button.orderable-button--loading{padding-right:4px!important}.orderable-quantity-roller__button.orderable-button--loading::after,.orderable-quantity-roller__button.orderable-button--loading::before{background-color:transparent}.orderable-quantity-roller__button.orderable-button--loading::after{height:12px;margin-top:-5px;margin-left:-6px;width:12px}.orderable-quantity-roller__quantity{text-align:center;display:inline-block;line-height:36px;padding:0 6px;min-width:24px;outline:0}.orderable-quantity-roller__price{margin-left:8px}.orderable-quantity-roller__price::before{content:"x";margin:0 8px;color:#c7d4db}.orderable-drawer__cart .orderable-quantity-roller{margin:12px 0 6px}
     1@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}@media screen and (min-width:620px){.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}}.orderable-button,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__close{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;position:relative}.orderable-button:active,.orderable-button:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__close:active,.orderable-drawer__close:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover,.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--hide{display:none!important}.orderable-button--filled,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{background:#000!important;color:#fff}.orderable-button--filled--hover,.orderable-button--filled:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading::after{content:"";display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading::after,.orderable-button--loading.orderable-button--hover::after,.orderable-button--loading:active::after,.orderable-button--loading:focus::after,.orderable-button--loading:hover::after,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout .orderable-button--loading::after{border-top-color:#fff;border-left-color:#fff}.orderable-button--out-of-stock.orderable-drawer__close,.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout{cursor:not-allowed;border-color:rgb(198.9024390244,212.3658536585,219.0975609756);color:rgb(167.8048780488,188.7317073171,199.1951219512);background:0 0!important}.orderable--button-style-square .orderable-button,.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable--button-style-square .orderable-drawer__close,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable--button-style-square .button.checkout{border-radius:0}.orderable-button--icon{padding:10px!important;width:44px;height:44px;line-height:24px;border:none;background:0 0!important}body .orderable-button--icon:active,body .orderable-button--icon:focus,body .orderable-button--icon:hover{background:0 0!important;opacity:.6}.orderable-button--icon svg{width:24px;height:24px;border-radius:12px;overflow:hidden;-webkit-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.orderable-button--icon.orderable-button--loading::after{display:none}.orderable-input--select,select.orderable-input--select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #e6ecef;border-radius:8px;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c1cfd7'><polygon points='0,0 100,0 50,50'/></svg>");background-size:16px;background-position:calc(100% - 14px) 19px;background-repeat:no-repeat;cursor:pointer}.orderable-input--select:focus,select.orderable-input--select:focus{outline:0;border-color:#000;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23000000'><polygon points='0,0 100,0 50,50'/></svg>")}.orderable-input.orderable-input--text{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #e6ecef;border-radius:8px;width:100%;background-color:#fff;-webkit-box-shadow:none;box-shadow:none}.orderable-input.orderable-input--text:focus{outline:0;border-color:#000;background-color:#fff}.orderable-category-heading{margin:0 0 24px}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__hero{width:200px}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid rgb(236.2195121951,240.7268292683,242.9804878049)}.orderable-products-list__item:last-child{border-bottom:none}}.orderable-products-list--list .orderable-products-list__item .orderable-product{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__content-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none none outside}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0 0}.orderable-product__options{margin:0 0 24px;padding:0;border-radius:6px}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions:last-child{margin-bottom:0}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-drawer__inner .orderable-product__actions .orderable-product__actions-price{margin-right:60px}.orderable-drawer__inner .orderable-product__actions .orderable-product__actions-price .price del+ins{margin-left:0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-counter{display:none;position:absolute;top:-6px;right:-4px;white-space:nowrap;padding:0 4px;background:#000;color:#fff;height:18px;line-height:18px;font-size:12px;border-radius:11px;min-width:18px;text-align:center}.orderable-product__actions-button{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 0 0 auto}.orderable-main--quantity-roller .orderable-product__actions-button .orderable-product__actions-counter:not([data-orderable-product-quantity="0"]){display:inline}.orderable-product__actions-button .orderable-quantity-roller{display:none}.orderable-product__actions-button .orderable-quantity-roller--is-active{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-product__actions-button .orderable-quantity-roller--is-active+.orderable-product__add-to-order{display:none}.orderable-product__actions-button .orderable-quantity-roller+.orderable-product__add-to-order:not([data-orderable-trigger=product-options]) .orderable-product__actions-counter{display:none}.orderable-product__actions-button .orderable-product__cancel-update{background-color:#f2f2f3;border-color:#f2f2f3;margin-right:10px}.orderable-product__actions-button .orderable-quantity-roller__roller{border-color:#000}.orderable-product__actions-button .orderable-quantity-roller__button::after,.orderable-product__actions-button .orderable-quantity-roller__button::before{background-color:#000}.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover{background-color:#000;color:#f2f2f3}.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus::after,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus::before,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover::after,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover::before{background-color:#f2f2f3}.orderable-product__actions-button .orderable-quantity-roller__quantity{color:#000;font-weight:700}.orderable-product__actions-button .orderable-quantity-roller__button--decrease[data-orderable-quantity="1"]::before{display:none!important}.orderable-product__actions-button .orderable-quantity-roller__button--decrease:not([data-orderable-quantity="1"]) svg,.orderable-product__actions-button .orderable-quantity-roller__button--decrease[data-orderable-quantity="1"].orderable-button--loading svg{display:none}.orderable-product__tabs{margin:24px 0}.orderable-product__tabs-section{display:none}.orderable-product__tabs-section:first-child{display:block}.orderable-product__tabs-section :last-child{margin-bottom:0}.orderable-product__add-to-order.added~a.added_to_cart.wc-forward{display:none}.orderable-product__points-earned{padding:0 24px}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__hero{margin:-24px -24px 0}.orderable-product--options .orderable-product__title{text-align:left;margin:24px 0!important}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #e6ecef;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--add-to-cart,.orderable-product--product-options,.orderable-product--view-product{cursor:pointer}.orderable-product[data-orderable-product-type=subscription],.orderable-product[data-orderable-product-type=variable-subscription]{padding-bottom:12px}.orderable-product[data-orderable-product-type=subscription] .orderable-product__actions,.orderable-product[data-orderable-product-type=variable-subscription] .orderable-product__actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;padding:0 24px 12px;position:static}.orderable-product--image-cropped .orderable-product__hero{overflow:hidden;padding:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:72px}.orderable-product--image-cropped .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:95px;border-radius:6px;overflow:hidden}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-tag{display:inline-block;background:#edf2f6;border-radius:15px;height:30px;line-height:30px;white-space:nowrap;color:#495568;padding:0 12px;font-size:14px}body.orderable-drawer-open{overflow:hidden}.orderable-drawer-overlay{height:100%;z-index:999998;position:fixed;top:0;left:0;opacity:0;visibility:hidden;background-color:rgba(34,34,34,.6);-webkit-transition:opacity .2s linear,visibility .1s,width 1s ease-in;transition:opacity .2s linear,visibility .1s,width 1s ease-in}.orderable-drawer{width:100%;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transition:all .2s;transition:all .2s;border-radius:0;-webkit-box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);display:block;position:fixed;top:0;right:0;height:100%;z-index:999999;background-color:#fff;overflow:hidden;padding:24px;-webkit-box-sizing:border-box;box-sizing:border-box}@media screen and (min-width:640px){.orderable-drawer{max-width:600px}}.orderable-drawer h3{margin:0 60px 24px!important;font-size:20px;line-height:24px;text-align:center}.orderable-drawer h4{font-size:18px;line-height:22px}.orderable-drawer__inner{padding:0;height:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__inner .orderable-sb-container{-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:-1px}.orderable-drawer__cart{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart .orderable-mini-cart-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart{margin:0;padding:0;list-style:none none outside;overflow:hidden;min-height:100%}.orderable-drawer__cart .orderable-mini-cart-item{margin:0;padding:10px 104px 10px 0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart-item .orderable-quantity-roller__roller svg{display:none}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove{position:absolute;bottom:16px;right:0;z-index:20;color:rgb(198.9024390244,212.3658536585,219.0975609756);-webkit-box-shadow:none;box-shadow:none;height:40px;width:40px;text-indent:250%;white-space:nowrap;font-size:0;-webkit-transition:none;transition:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:none}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:rgb(198.9024390244,212.3658536585,219.0975609756);margin:-10px 0 0 -10px}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove:hover svg{opacity:.8}.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove{border-radius:0}.orderable-drawer__cart .orderable-mini-cart-item:last-child{border-bottom:none}.orderable-drawer__cart .orderable-mini-cart-item .variation{margin:7.5px 0}.orderable-drawer__cart .orderable-mini-cart-item .variation dd,.orderable-drawer__cart .orderable-mini-cart-item .variation dt,.orderable-drawer__cart .orderable-mini-cart-item .variation p{margin:0}.orderable-drawer__cart .orderable-mini-cart-item .blockOverlay{background:#fff!important;opacity:.8!important}.orderable-drawer__cart .orderable-edit-cart-item__button{position:absolute;bottom:21px;right:50px;height:30px;line-height:normal;padding:0 13px!important;font-size:14px}.orderable-drawer__cart .orderable-edit-cart-item__button.orderable-button--loading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-drawer__cart .orderable-edit-cart-item__button.orderable-button--loading::after{position:static;margin-left:5px}.orderable-drawer__cart .quantity{font-weight:700}.orderable-drawer__cart .orderable-mini-cart__notices{padding:15px 0}.orderable-drawer__cart .orderable-mini-cart__notices.orderable-mini-cart__notices--border-top{border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error{margin:0;padding:0;list-style:none none outside}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li{border:1px solid #e34f4f;background:rgb(251.5,233,233);color:#dc2323;padding:6px 12px 6px 28px!important;text-align:center;margin:0 0 6px;display:block;border-radius:8px}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li:last-child{margin-bottom:0}.orderable-drawer__cart .orderable-mini-cart__notices .button{display:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-info::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-message::before{left:12px}.orderable-drawer__cart .orderable-mini-cart__buttons,.orderable-drawer__cart .orderable-mini-cart__total{margin:0;padding:0;text-align:center}.orderable-drawer__cart .orderable-mini-cart__total{padding:15px 0;border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart__buttons .button{display:none}.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{display:block;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-drawer__cart .orderable-mini-cart__empty-message{margin:auto 0;text-align:center}.orderable-drawer__cart .orderable-services-selector__selected{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup input{width:100%;margin:0 0 8px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button{display:block;width:100%}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:first-child{margin-right:4px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:last-child{margin-left:4px}.orderable-drawer__actions{bottom:-24px;margin:auto 0 -24px;background:#fff;padding:24px 0;left:0;right:0;border-top:1px solid #f2f2f2}.orderable-drawer__actions--cart{border-top:none;padding-top:10px}.orderable-drawer__close{position:absolute;top:16px;left:24px;font-size:0;text-indent:250%!important;white-space:nowrap!important;overflow:hidden!important;padding:0!important;width:40px;height:40px;margin:0;z-index:100;border-color:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable-drawer__close::after,.orderable-drawer__close::before{position:absolute;left:54%;content:" ";height:18px;width:2px;background-color:rgb(198.9024390244,212.3658536585,219.0975609756);top:50%;margin:0 0 0 -2px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;display:block;margin-top:-9px}.orderable-drawer__close::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-drawer__close::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{background-color:rgb(198.9024390244,212.3658536585,219.0975609756);border-color:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable-drawer__close:active::after,.orderable-drawer__close:active::before,.orderable-drawer__close:focus::after,.orderable-drawer__close:focus::before,.orderable-drawer__close:hover::after,.orderable-drawer__close:hover::before{background-color:rgb(63.6097560976,87.4634146341,99.3902439024)}.orderable-drawer .orderable-product__content{padding:15px 0}.orderable-drawer-overlay--open{-webkit-transition:opacity .2s ease,width 0s;transition:opacity .2s ease,width 0s;opacity:1;width:100%;visibility:visible}.orderable-drawer--open{visibility:visible;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.orderable-floating-cart{position:fixed;z-index:20}.orderable-floating-cart--bl,.orderable-floating-cart--br{bottom:40px}.orderable-floating-cart--br,.orderable-floating-cart--tr{right:40px}.orderable-floating-cart--bl,.orderable-floating-cart--tl{left:40px}.orderable-floating-cart--tl,.orderable-floating-cart--tr{top:40px}.orderable-floating-cart__button{padding:0;width:60px;height:60px;border:none;border-radius:100%;display:block;margin:0;text-align:center;line-height:60px;background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);outline:0!important;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out,-webkit-transform 150ms ease-in-out}.orderable-floating-cart__button:hover{background:#fff;-webkit-animation:wobble-hor-bottom .8s both;animation:wobble-hor-bottom .8s both;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-floating-cart__button svg{width:24px;height:24px;display:block;margin:0 auto}.orderable-floating-cart__count{position:absolute;top:0;right:0;white-space:nowrap;padding:0 4px;background:#e52c23;color:#fff;height:22px;line-height:22px;font-size:13px;border-radius:11px;min-width:22px;text-align:center}.orderable-services-selector__selected p{margin:0}.orderable-services-selector__selected-change{padding:0;margin:0;font-size:inherit;background:0 0;display:inline;color:#333;-webkit-transition:none;transition:none;text-transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector__selected-change:active,.orderable-services-selector__selected-change:focus,.orderable-services-selector__selected-change:hover{padding:0;margin:0;background:0 0;color:#333;text-decoration:underline;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector--selected .orderable-services-selector__lookup{display:none}.orderable-open-hours__date,.orderable-open-hours__service{margin:0 0 0 6px;padding:2px 6px;background:#000;color:#fff;border-radius:4px;display:inline-block;font-size:80%}.orderable-open-hours__service--closed{background-color:#e34f4f;display:none}.orderable-open-hours__date{margin:0 4px 0 0;text-align:center;min-width:30px;border:1px solid #e6ecef;background:0 0;color:inherit}.orderable-tabs{margin:0 0 24px;position:relative}.orderable-tabs__list{margin:0 1px 0 0!important;padding:0!important;list-style:none none outside;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;overflow:-moz-scrollbars-none;scrollbar-base-color:transparent;-webkit-overflow-scrolling:touch}.orderable-tabs__list::-webkit-scrollbar{display:none}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__list{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto}}.orderable-tabs__item{display:inline-block;margin:0 10px 0 0;padding:0}.orderable-tabs__item:last-child{margin-right:0}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 12px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:rgb(63.6097560976,87.4634146341,99.3902439024);font-weight:400;border-radius:20px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;background:rgb(236.2195121951,240.7268292683,242.9804878049)}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:rgb(63.6097560976,87.4634146341,99.3902439024);text-decoration:none;background:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-tabs__arrow{background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border:none;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:20px!important;position:absolute;top:0;right:0;text-align:center;line-height:40px;display:none}.orderable-tabs__arrow:active,.orderable-tabs__arrow:focus,.orderable-tabs__arrow:hover{background:#fff;outline:0}.orderable-tabs__arrow svg{width:21px;height:24px;margin:8px 0}.orderable-tabs__arrow-left{left:0;right:initial;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.orderable-accordion{margin:24px 0;background:rgb(245.5487804878,247.8170731707,248.9512195122);padding:0 24px;border-radius:6px}.orderable-product-fields-group-wrap+.orderable-accordion,.orderable-product__options+.orderable-accordion{margin-top:36px}.orderable-accordion__item{border-top:1px solid #e6ecef}.orderable-accordion__item:first-child{border-top:none}.orderable-accordion__item-link{display:block;padding:18px 0;margin:0;color:inherit;position:relative}.orderable-accordion__item-link::after,.orderable-accordion__item-link::before{position:absolute;right:5px;content:" ";height:11px;width:2px;background-color:rgb(198.9024390244,212.3658536585,219.0975609756);top:50%;display:block;margin:-4px 0 0}.orderable-accordion__item-link::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-accordion__item-link::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:12px}.orderable-accordion__item-link--active,.orderable-accordion__item-link:active,.orderable-accordion__item-link:focus,.orderable-accordion__item-link:hover{color:#000;border:none;outline:0}.orderable-accordion__item-link--active::after,.orderable-accordion__item-link--active::before,.orderable-accordion__item-link:active::after,.orderable-accordion__item-link:active::before,.orderable-accordion__item-link:focus::after,.orderable-accordion__item-link:focus::before,.orderable-accordion__item-link:hover::after,.orderable-accordion__item-link:hover::before{background-color:rgb(63.6097560976,87.4634146341,99.3902439024)!important}.orderable-accordion__item-link--active::before{right:12px}.orderable-accordion__item-link--active::after{right:5px}.orderable-accordion__item-content{display:none}.orderable-accordion__item-content--active{display:block}.orderable-accordion__item-content::after{content:"";display:table;clear:both}.orderable-sb-container{position:relative;overflow:hidden;padding-right:25px}.orderable-sb-content{height:100%;width:120%;padding-right:20%;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-sb-scrollbar-container{position:absolute;right:0;bottom:10px;top:10px;width:10px}.orderable-sb-container-noscroll .orderable-sb-scrollbar-container{right:-20px}.orderable-sb-scrollbar{position:absolute;right:0;height:30px;width:10px;border-radius:10px;background:rgb(214.4512195122,224.1829268293,229.0487804878)}.orderable-sb-scrollbar:hover{background:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable--button-style-square .orderable-sb-scrollbar{border-radius:0}.orderable-sb-container-noscroll{padding-right:0}.orderable-sb-container-noscroll .orderable-sb-content{width:100%;padding-right:0;overflow:hidden}.orderable-quantity-roller{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-quantity-roller *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-quantity-roller__roller{border:2px solid rgb(198.9024390244,212.3658536585,219.0975609756);border-radius:20px;height:40px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.orderable--button-style-square .orderable-quantity-roller__roller{border-radius:0}.orderable-quantity-roller__button{height:36px;width:24px;background:0 0;border:none;border-radius:0;text-align:center;color:rgb(198.9024390244,212.3658536585,219.0975609756);line-height:36px;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;padding:0 6px;-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;font-size:0;text-indent:250%;overflow:hidden;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.orderable-quantity-roller__button::after,.orderable-quantity-roller__button::before{content:"";position:absolute;display:block!important;height:2px;width:12px;background:rgb(198.9024390244,212.3658536585,219.0975609756);top:50%;left:50%;margin:-1px 0 0 -6px;-webkit-transition:background 150ms ease-out;transition:background 150ms ease-out}.orderable-quantity-roller__button.orderable-button--loading{outline-color:transparent}.orderable-quantity-roller__button.orderable-button--loading:focus,.orderable-quantity-roller__button.orderable-button--loading:hover{background-color:transparent}.orderable-quantity-roller__button.orderable-button--loading:focus::after,.orderable-quantity-roller__button.orderable-button--loading:hover::after{border-top-color:#000;border-left-color:#000}.orderable-quantity-roller__button:not(.orderable-button--loading):focus,.orderable-quantity-roller__button:not(.orderable-button--loading):hover,.orderable-quantity-roller__button:visited{background-color:rgb(198.9024390244,212.3658536585,219.0975609756);color:rgb(63.6097560976,87.4634146341,99.3902439024);-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:0}.orderable-quantity-roller__button:not(.orderable-button--loading):focus::after,.orderable-quantity-roller__button:not(.orderable-button--loading):focus::before,.orderable-quantity-roller__button:not(.orderable-button--loading):hover::after,.orderable-quantity-roller__button:not(.orderable-button--loading):hover::before,.orderable-quantity-roller__button:visited::after,.orderable-quantity-roller__button:visited::before{background:rgb(63.6097560976,87.4634146341,99.3902439024)}.orderable-quantity-roller__button--decrease{padding-right:4px}.orderable-quantity-roller__button--decrease svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#000;margin:-10px 0 0 -10px}.orderable-quantity-roller__button--decrease:not(.orderable-button--loading)::after{display:none!important}.orderable-quantity-roller__button--decrease:focus svg,.orderable-quantity-roller__button--decrease:hover svg{fill:#f2f2f3}.orderable-quantity-roller__button--increase{padding-left:4px}.orderable-quantity-roller__button--increase::after{height:12px;width:2px;margin:-6px 0 0 -1px}.orderable-quantity-roller__button.orderable-button--loading{padding-right:4px!important}.orderable-quantity-roller__button.orderable-button--loading::after,.orderable-quantity-roller__button.orderable-button--loading::before{background-color:transparent}.orderable-quantity-roller__button.orderable-button--loading::after{height:12px;margin-top:-5px;margin-left:-6px;width:12px}.orderable-quantity-roller__quantity{text-align:center;display:inline-block;line-height:36px;padding:0 6px;min-width:24px;outline:0}.orderable-quantity-roller__price{margin-left:8px}.orderable-quantity-roller__price::before{content:"x";margin:0 8px;color:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable-drawer__cart .orderable-quantity-roller{margin:12px 0 6px}
  • orderable/tags/1.20.0/inc/class-helpers.php

    r3262287 r3438713  
    397397
    398398        $allowed_html_tags['circle'] = array(
    399             'cx' => array(),
     399            'cx' =>   array(),
    400400            'cy' => array(),
    401401            'r'  => array(),
  • orderable/tags/1.20.0/inc/database/class-database.php

    r2912589 r3438713  
    2222
    2323        if ( is_admin() && ! wp_doing_ajax() ) {
    24             add_action( 'orderable_after_create_custom_tables', array( __CLASS__, 'upgrades' ) );
     24            add_action( 'orderable_after_create_custom_tables', array( __CLASS__, 'upgrade_1_8_0' ) );
    2525            self::create_tables();
     26            self::upgrades();
    2627        }
    2728
     
    152153    public static function upgrades() {
    153154        $routines = array(
    154             '1.8.0' => 'upgrade_1_8_0',
     155            '1.8.0'  => 'upgrade_1_8_0',
     156            '1.20.0' => 'upgrade_1_20_0',
    155157        );
    156158
     
    190192        do_action( 'orderable_upgrade_database_routine', '1.8.0' );
    191193    }
     194
     195    /**
     196     * Upgrade routine to v1.20.0.
     197     *
     198     * @return void
     199     */
     200    public static function upgrade_1_20_0() {
     201        // phpcs:ignore WooCommerce.Commenting.CommentHooks
     202        do_action( 'orderable_upgrade_database_routine', '1.20.0' );
     203    }
    192204}
  • orderable/tags/1.20.0/inc/database/tables/class-location-locations-table.php

    r3101824 r3438713  
    5454  override_default_open_hours boolean DEFAULT NULL,
    5555  open_hours longtext NULL,
     56  enable_placing_orders_only_within_open_hours boolean DEFAULT NULL,
    5657  delivery boolean DEFAULT NULL,
    5758  pickup boolean DEFAULT NULL,
     
    8182     */
    8283    public static function upgrades( $version ) {
    83         if ( '1.8.0' === $version ) {
    84             self::migrate_main_location_to_custom_table();
     84        switch ( true ) {
     85            case '1.8.0' === $version:
     86                self::migrate_main_location_to_custom_table();
     87                break;
     88
     89            case '1.20.0' === $version:
     90                self::add_enable_placing_orders_only_within_open_hours_column( $version );
     91                break;
     92
     93            default:
     94                break;
    8595        }
    8696    }
     
    190200
    191201    /**
     202     * Add `enable_placing_orders_only_within_open_hours` column.
     203     *
     204     * @param string $version The database version.
     205     * @return void
     206     */
     207    protected static function add_enable_placing_orders_only_within_open_hours_column( $version ) {
     208        global $wpdb;
     209
     210        $table_name = $wpdb->prefix . self::get_table_name();
     211
     212        $table_exists = (bool) $wpdb->get_var(
     213            $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name )
     214        );
     215
     216        if ( ! $table_exists ) {
     217            return;
     218        }
     219
     220        $column = 'enable_placing_orders_only_within_open_hours';
     221
     222        $column_exists = (bool) $wpdb->get_var(
     223            // phpcs:ignore WordPress.DB.PreparedSQL
     224            $wpdb->prepare( "SHOW COLUMNS FROM {$table_name} LIKE %s", $column )
     225        );
     226
     227        if ( $column_exists ) {
     228            return;
     229        }
     230
     231        $result = $wpdb->query(
     232            // phpcs:ignore WordPress.DB.PreparedSQL
     233            $wpdb->prepare( "ALTER TABLE {$table_name} ADD {$column} boolean DEFAULT NULL AFTER open_hours" )
     234        );
     235
     236        if ( $result ) {
     237            update_option( '_orderable_db_version', $version );
     238        }
     239    }
     240
     241    /**
    192242     * Get default main location data.
    193243     *
     
    196246    public static function get_default_main_location_data() {
    197247        $data = array(
    198             'title'                            => __( 'Main Location', 'orderable' ),
    199             'address_line_1'                   => get_option( 'woocommerce_store_address', '' ),
    200             'address_line_2'                   => get_option( 'woocommerce_store_address_2', '' ),
    201             'city'                             => get_option( 'woocommerce_store_city', '' ),
    202             'country_state'                    => get_option( 'woocommerce_default_country', '' ),
    203             'postcode_zip'                     => get_option( 'woocommerce_store_postcode', '' ),
    204             'override_default_open_hours'      => (int) true,
    205             'enable_default_holidays'          => (int) true,
    206             'open_hours'                       => '',
    207             'delivery'                         => (int) false,
    208             'pickup'                           => (int) false,
    209             'pickup_hours_same_as_delivery'    => '',
    210             'asap_date'                        => (int) false,
    211             'asap_time'                        => (int) false,
    212             'lead_time'                        => '',
    213             'lead_time_period'                 => 'days',
    214             'preorder'                         => '',
    215             'delivery_days_calculation_method' => '',
    216             'is_main_location'                 => 1,
    217             'image_id'                         => null,
    218             'menu_order'                       => null,
     248            'title'                                        => __( 'Main Location', 'orderable' ),
     249            'address_line_1'                               => get_option( 'woocommerce_store_address', '' ),
     250            'address_line_2'                               => get_option( 'woocommerce_store_address_2', '' ),
     251            'city'                                         => get_option( 'woocommerce_store_city', '' ),
     252            'country_state'                                => get_option( 'woocommerce_default_country', '' ),
     253            'postcode_zip'                                 => get_option( 'woocommerce_store_postcode', '' ),
     254            'override_default_open_hours'                  => (int) true,
     255            'enable_default_holidays'                      => (int) true,
     256            'open_hours'                                   => '',
     257            'delivery'                                     => (int) false,
     258            'pickup'                                       => (int) false,
     259            'pickup_hours_same_as_delivery'                => '',
     260            'asap_date'                                    => (int) false,
     261            'asap_time'                                    => (int) false,
     262            'lead_time'                                    => '',
     263            'lead_time_period'                             => 'days',
     264            'preorder'                                     => '',
     265            'delivery_days_calculation_method'             => '',
     266            'is_main_location'                             => 1,
     267            'image_id'                                     => null,
     268            'menu_order'                                   => null,
     269            'enable_placing_orders_only_within_open_hours' => (int) false,
    219270        );
    220271
  • orderable/tags/1.20.0/inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php

    r3143111 r3438713  
    6363            'orderable_override_open_hours' => $location->get_override_default_open_hours(),
    6464            'store_general_open_hours'      => $location->get_open_hours(),
    65         );
    66 
    67         $override_open_hours = (bool) $data['orderable_override_open_hours'] || ( is_admin() && ! $should_show_override_open_hours_field );
     65            'orderable_enable_placing_orders_only_within_open_hours' => $location->get_enable_placing_orders_only_within_open_hours(),
     66        );
     67
     68        $override_open_hours                          = (bool) $data['orderable_override_open_hours'] || ( is_admin() && ! $should_show_override_open_hours_field );
     69        $enable_placing_orders_only_within_open_hours = $data['orderable_enable_placing_orders_only_within_open_hours'];
    6870
    6971        $class_toggle_field_value = $override_open_hours ? 'enabled' : 'disabled';
     
    172174                    </div>
    173175                </div>
     176
     177                <div class="orderable-fields-row__body-row orderable-store-open-hours__placing-orders-only_within-open-hours">
     178                    <div class="orderable-fields-row__body-row-left">
     179                        <h3><?php echo esc_html_x( 'Restrict Orders to Open Hours', 'Open Hours', 'orderable' ); ?></h3>
     180                        <p>
     181                            <?php echo esc_html_x( 'Only allow orders during your opening hours. Customers attempting to order outside these times will see a message at checkout showing when you reopen.', 'Open Hours', 'orderable' ); ?>
     182                        </p>
     183                    </div>
     184                    <div class="orderable-fields-row__body-row-right">
     185                        <div class="orderable-store-open-hours__enable-placing_orders_only_within_open_hours">
     186                            <span
     187                                class="orderable-toggle-field orderable-enable-placing_orders_only_within_open_hours-toggle-field woocommerce-input-toggle woocommerce-input-toggle--<?php echo $enable_placing_orders_only_within_open_hours ? esc_attr( 'enabled' ) : esc_attr( 'disabled' ); ?>"
     188                            >
     189                                <?php echo esc_html( 'Yes' ); ?>
     190                            </span>
     191
     192                            <input
     193                                type="hidden"
     194                                name="orderable_location_enable_placing_orders_only_within_open_hours"
     195                                value="<?php echo esc_attr( $enable_placing_orders_only_within_open_hours ? 'yes' : 'no' ); ?>"
     196                                class="orderable-toggle-field__input"
     197                            />
     198                        </div>
     199                    </div>
     200                </div>
    174201            </div>
    175202        </div>
     
    215242        $default_data = array(
    216243            'orderable_override_open_hours' => 'no',
     244            'orderable_enable_placing_orders_only_within_open_hours' => 'no',
    217245            'store_general_open_hours'      => array(),
    218246        );
     
    234262        $store_open_hours_data = array(
    235263            'orderable_override_open_hours' => Orderable_Location_Admin::get_posted_value( 'orderable_override_open_hours' ),
     264            'orderable_enable_placing_orders_only_within_open_hours' => Orderable_Location_Admin::get_posted_value( 'orderable_enable_placing_orders_only_within_open_hours' ),
    236265            'store_general_open_hours'      => self::get_location_open_hours(),
    237266        );
     
    403432        $location_id = Orderable_Location::get_location_id( $post_id );
    404433
    405         $override_open_hours = 'yes' === Orderable_Location_Admin::get_posted_value( 'orderable_override_open_hours' );
    406         $open_hours          = maybe_serialize( self::get_location_open_hours() );
     434        $override_open_hours                          = 'yes' === Orderable_Location_Admin::get_posted_value( 'orderable_override_open_hours' );
     435        $open_hours                                   = maybe_serialize( self::get_location_open_hours() );
     436        $enable_placing_orders_only_within_open_hours = 'yes' === Orderable_Location_Admin::get_posted_value( 'orderable_location_enable_placing_orders_only_within_open_hours' );
    407437
    408438        $store_services = Orderable_Location_Store_Services_Meta_Box::get_store_services();
     
    424454
    425455        $data = array(
    426             'post_id'                          => $post_id,
    427             'override_default_open_hours'      => (int) $override_open_hours,
    428             'open_hours'                       => $open_hours,
    429             'delivery'                         => (int) $delivery,
    430             'pickup'                           => (int) $pickup,
    431             'pickup_hours_same_as_delivery'    => (int) $pickup_hours_same_as_delivery,
    432             'asap_date'                        => (int) $asap_date,
    433             'asap_time'                        => (int) $asap_time,
    434             'lead_time'                        => $lead_time,
    435             'lead_time_period'                 => empty( $lead_time_period ) ? 'days' : $lead_time_period,
    436             'preorder'                         => $preorder,
    437             'delivery_days_calculation_method' => $delivery_days_calculation_method,
    438             'enable_default_holidays'          => $enable_default_holidays,
     456            'post_id'                                      => $post_id,
     457            'override_default_open_hours'                  => (int) $override_open_hours,
     458            'open_hours'                                   => $open_hours,
     459            'delivery'                                     => (int) $delivery,
     460            'pickup'                                       => (int) $pickup,
     461            'pickup_hours_same_as_delivery'                => (int) $pickup_hours_same_as_delivery,
     462            'asap_date'                                    => (int) $asap_date,
     463            'asap_time'                                    => (int) $asap_time,
     464            'lead_time'                                    => $lead_time,
     465            'lead_time_period'                             => empty( $lead_time_period ) ? 'days' : $lead_time_period,
     466            'preorder'                                     => $preorder,
     467            'delivery_days_calculation_method'             => $delivery_days_calculation_method,
     468            'enable_default_holidays'                      => $enable_default_holidays,
     469            'enable_placing_orders_only_within_open_hours' => (int) $enable_placing_orders_only_within_open_hours,
    439470        );
    440471
  • orderable/tags/1.20.0/inc/modules/location/class-location-single.php

    r3192586 r3438713  
    1818     */
    1919    public $location_data = array(
    20         'location_id'                   => 0,
    21         'override_default_open_hours'   => false,
    22         'asap_date'                     => '',
    23         'asap_time'                     => '',
    24         'address_line_1'                => '',
    25         'address_line_2'                => '',
    26         'city'                          => '',
    27         'country_state'                 => '',
    28         'postcode_zip'                  => '',
    29         'open_hours'                    => array(),
    30         'enable_default_holidays'       => true,
    31         'pickup_hours_same_as_delivery' => true,
     20        'location_id'                                  => 0,
     21        'override_default_open_hours'                  => false,
     22        'asap_date'                                    => '',
     23        'asap_time'                                    => '',
     24        'address_line_1'                               => '',
     25        'address_line_2'                               => '',
     26        'city'                                         => '',
     27        'country_state'                                => '',
     28        'postcode_zip'                                 => '',
     29        'open_hours'                                   => array(),
     30        'enable_default_holidays'                      => true,
     31        'pickup_hours_same_as_delivery'                => true,
     32        'enable_placing_orders_only_within_open_hours' => false,
    3233    );
    3334
     
    6061         */
    6162        do_action( 'orderable_location_object_init', $this );
     63
     64        add_filter( 'orderable_location_service_dates', [ $this, 'on_orderable_location_service_dates' ], 20, 3 );
    6265    }
    6366
     
    190193    public function get_override_default_open_hours() {
    191194        return ! in_array( $this->location_data['override_default_open_hours'], array( false, '0' ), true );
     195    }
     196
     197    /**
     198     * Get enable placing order only within open hours setting.
     199     *
     200     * @return bool
     201     */
     202    public function get_enable_placing_orders_only_within_open_hours() {
     203        return ! in_array( $this->location_data['enable_placing_orders_only_within_open_hours'], array( false, '0' ), true );
    192204    }
    193205
     
    11721184
    11731185    }
     1186
     1187    /**
     1188     * Hook on `orderable_location_service_dates` filter
     1189     *
     1190     * @param array|bool                $service_dates  The service dates available. If true,
     1191     *                                                  the service doesn't require date/time selection.
     1192     *                                                  If false, a service should be selected.
     1193     * @param string                    $type           The type of service. E.g. delivery, pickup.
     1194     * @param Orderable_Location_Single $location       The location instance.
     1195     * @return array|bool
     1196     */
     1197    public function on_orderable_location_service_dates( $service_dates, $type, $location ) {
     1198        $enable_placing_orders_only_within_open_hours = (bool) $location->location_data['enable_placing_orders_only_within_open_hours'] ?? null;
     1199
     1200        if ( ! $enable_placing_orders_only_within_open_hours ) {
     1201            return $service_dates;
     1202        }
     1203
     1204        $now = new DateTime( 'now', wp_timezone() );
     1205
     1206        if ( $this->is_within_open_hours( $now ) ) {
     1207            return $service_dates;
     1208        }
     1209
     1210        $next_open_hours = $this->get_next_available_open_hour( $now );
     1211
     1212        $store_closed_message = sprintf(
     1213            // translators: 1 - day of the week; 2 - hour; 3 - minute; 4 - period AM or PM
     1214            __( 'We\'re closed and not taking orders right now. We\'ll be taking orders again from %1$s at %2$s:%3$s %4$s', 'orderable' ),
     1215            $next_open_hours['day'],
     1216            $next_open_hours['from']['hour'],
     1217            $next_open_hours['from']['minute'],
     1218            $next_open_hours['from']['period']
     1219        );
     1220
     1221        /**
     1222         * Filter the store closed message.
     1223         *
     1224         * @since 1.20.0
     1225         * @hook orderable_location_store_closed_message
     1226         * @param string $store_closed_message The message.
     1227         * @param array|null $next_open_hours The next open hour data.
     1228         * @param array|bool                 $service_dates  The service dates available. If true,
     1229         *                                                   the service doesn't require date/time selection.
     1230         *                                                   If false, a service should be selected.
     1231         * @param string                     $type           The type of service. E.g. delivery, pickup.
     1232         * @param Orderable_Location_Single  $location       The location instance.
     1233         */
     1234        $store_closed_message = apply_filters( 'orderable_location_store_closed_message', $store_closed_message, $next_open_hours, $service_dates, $type, $location );
     1235
     1236        add_filter(
     1237            'woocommerce_no_shipping_available_html',
     1238            function( $html ) use ( $store_closed_message ) {
     1239                return $store_closed_message;
     1240            },
     1241            20
     1242        );
     1243       
     1244        add_action(
     1245            'woocommerce_before_checkout_form',
     1246            function() use ( $store_closed_message ) {
     1247                if ( ! wc_has_notice( $store_closed_message, 'notice' ) ) {
     1248                    wc_add_notice( $store_closed_message, 'notice' );
     1249                }
     1250            },
     1251            20
     1252        );
     1253
     1254        return false;
     1255    }
     1256
     1257    /**
     1258     * Check if it's within open hours.
     1259     *
     1260     * @param DateTime $date_time The date to check.
     1261     * @return boolean
     1262     */
     1263    protected function is_within_open_hours( DateTime $date_time ) {
     1264        // 0 (for Sunday) through 6 (for Saturday)
     1265        $numeric_day = (int) $date_time->format( 'w' );
     1266        $open_hours  = $this->get_open_hours();
     1267
     1268        if ( empty( $open_hours[ $numeric_day ]['enabled'] ) ) {
     1269            return false;
     1270        }
     1271
     1272        $open_from      = Orderable_Timings::convert_time_to_24_hour( $open_hours[ $numeric_day ]['from'] );
     1273        $open_from_date = clone $date_time;
     1274        $open_from_date->setTime( $open_from['hour'], $open_from['minute'] );
     1275
     1276        if ( $date_time < $open_from_date ) {
     1277            return false;
     1278        }
     1279
     1280        $open_to      = Orderable_Timings::convert_time_to_24_hour( $open_hours[ $numeric_day ]['to'] );
     1281        $open_to_date = clone $date_time;
     1282        $open_to_date->setTime( $open_to['hour'], $open_to['minute'] );
     1283
     1284        if ( $date_time >= $open_to_date ) {
     1285            return false;
     1286        }
     1287
     1288        return true;
     1289    }
     1290
     1291    /**
     1292     * Get next available open hour
     1293     *
     1294     * @param DateTime $current The date time to be checked.
     1295     * @return array|null
     1296     */
     1297    protected function get_next_available_open_hour( DateTime $current ) {
     1298        // 0 (for Sunday) through 6 (for Saturday)
     1299        $numeric_day = (int) $current->format( 'w' );
     1300        $open_hours  = $this->get_open_hours();
     1301
     1302        // Keep only enabled days.
     1303        $open_hours = array_filter(
     1304            $open_hours,
     1305            function( $day_hours ) {
     1306                return ! empty( $day_hours['enabled'] );
     1307            }
     1308        );
     1309
     1310        if ( empty( $open_hours ) ) {
     1311            return null;
     1312        }
     1313
     1314        $days = Orderable_Timings::get_days_of_the_week();
     1315
     1316        $with_day_label = function( array $open_hour, int $day ) use ( $days, $numeric_day ) : array {
     1317            $open_hour['day'] = ( $day === $numeric_day )
     1318                ? 'today'
     1319                : ( $days[ $day ] ?? (string) $day );
     1320
     1321            return $open_hour;
     1322        };
     1323
     1324        if ( isset( $open_hours[ $numeric_day ] ) && ! empty( $open_hours[ $numeric_day ]['from'] ) ) {
     1325            $from = Orderable_Timings::convert_time_to_24_hour( $open_hours[ $numeric_day ]['from'] );
     1326
     1327            $open_from = clone $current;
     1328            $open_from->setTime( (int) $from['hour'], (int) $from['minute'] );
     1329
     1330            if ( $current < $open_from ) {
     1331                return $with_day_label( $open_hours[ $numeric_day ], $numeric_day );
     1332            }
     1333        }
     1334
     1335        for ( $i = 1; $i <= 7; $i++ ) {
     1336            $day = ( $numeric_day + $i ) % 7;
     1337
     1338            if ( isset( $open_hours[ $day ] ) ) {
     1339                return $with_day_label( $open_hours[ $day ], $day );
     1340            }
     1341        }
     1342       
     1343        return null;
     1344    }
    11741345}
  • orderable/tags/1.20.0/inc/modules/location/class-location.php

    r3143111 r3438713  
    7878        $location = self::get_main_location();
    7979
    80         $settings['store_general_service_hours_delivery']    = $location->get_service_hours( 'delivery' );
    81         $settings['store_general_service_hours_pickup']      = $location->get_service_hours( 'pickup' );
    82         $settings['store_general_services']                  = $location->get_services();
    83         $settings['store_general_service_hours_pickup_same'] = $location->get_pickup_hours_same_as_delivery();
    84         $settings['store_general_asap']                      = $location->get_asap_settings();
    85         $settings['store_general_lead_time']                 = $location->get_lead_time();
    86         $settings['store_general_preorder']                  = $location->get_preorder_days();
    87         $settings['store_general_calculation_method']        = $location->get_delivery_calculation_method();
    88         $settings['orderable_override_open_hours']           = $location->get_override_default_open_hours();
     80        $settings['store_general_service_hours_delivery']                   = $location->get_service_hours( 'delivery' );
     81        $settings['store_general_service_hours_pickup']                     = $location->get_service_hours( 'pickup' );
     82        $settings['store_general_services']                                 = $location->get_services();
     83        $settings['store_general_service_hours_pickup_same']                = $location->get_pickup_hours_same_as_delivery();
     84        $settings['store_general_asap']                                     = $location->get_asap_settings();
     85        $settings['store_general_lead_time']                                = $location->get_lead_time();
     86        $settings['store_general_preorder']                                 = $location->get_preorder_days();
     87        $settings['store_general_calculation_method']                       = $location->get_delivery_calculation_method();
     88        $settings['orderable_override_open_hours']                          = $location->get_override_default_open_hours();
     89        $settings['orderable_enable_placing_orders_only_within_open_hours'] = $location->get_enable_placing_orders_only_within_open_hours();
    8990
    9091        return $settings;
  • orderable/tags/1.20.0/inc/modules/order-reminders/assets/frontend/css/order-reminders.css

    r3101824 r3438713  
    111111
    112112.orderable-order-date-time-reminders-modal__select[disabled] {
    113   background-color: oklch(0.961151 0 0);
    114   color: oklch(0.278078 0.029596 256.848/0.4);
     113  background-color: oklch(96.1151% 0 0deg);
     114  color: oklch(27.8078% 0.029596 256.848deg / 0.4);
    115115  cursor: not-allowed;
    116116}
  • orderable/tags/1.20.0/inc/modules/order-reminders/assets/frontend/css/order-reminders.min.css

    r3101824 r3438713  
    1 .orderable-order-date-time-reminders-modal{position:fixed;width:100%;background:#000;top:0;left:0;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000}.orderable-order-date-time-reminders-modal__inner{background:#fff;width:470px;border-radius:8px;padding:36px 36px 10px}.orderable-order-date-time-reminders-modal__header{text-align:center;font-weight:500;font-size:28px;color:#000;margin-bottom:26px}.orderable-order-date-time-reminders-modal__label{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:unset;line-height:1.4;color:#000;display:block;margin-bottom:5px}.orderable-order-date-time-reminders-modal__select{background-color:transparent;background-image:url(../svg/arrow-down.svg)!important;background-position:right 15px top 50%;background-repeat:no-repeat;background-size:10px 10px;cursor:pointer;border:1px solid #dad9dd;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:none;box-shadow:none;color:#000;display:block;line-height:1em;max-width:unset;opacity:1;padding:10px 37px 12px 12px;width:100%;min-height:43px;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:unset;-webkit-appearance:none;-moz-appearance:none;appearance:none}.orderable-order-date-time-reminders-modal__select:focus{outline:unset;border-color:#000}.orderable-order-date-time-reminders-modal__save{font-size:18px;border-radius:30px;height:50px}.orderable-order-date-time-reminders-modal__cancel{font-size:16px;border-radius:30px;background-color:transparent}.orderable-order-date-time-reminders-modal__footer{text-align:center}.orderable-order-date-time-reminders-modal__form{margin-bottom:10px}.orderable-order-date-time-reminders-modal__time{margin-top:15px}.orderable-order-date-time-reminders-modal--hidden{display:none}.orderable-order-date-time-reminders-modal__select[disabled]{background-color:oklch(.961151 0 0);color:oklch(.278078 .029596 256.848/.4);cursor:not-allowed}
     1.orderable-order-date-time-reminders-modal{position:fixed;width:100%;background:#000;top:0;left:0;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000}.orderable-order-date-time-reminders-modal__inner{background:#fff;width:470px;border-radius:8px;padding:36px 36px 10px}.orderable-order-date-time-reminders-modal__header{text-align:center;font-weight:500;font-size:28px;color:#000;margin-bottom:26px}.orderable-order-date-time-reminders-modal__label{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:unset;line-height:1.4;color:#000;display:block;margin-bottom:5px}.orderable-order-date-time-reminders-modal__select{background-color:transparent;background-image:url(../svg/arrow-down.svg)!important;background-position:right 15px top 50%;background-repeat:no-repeat;background-size:10px 10px;cursor:pointer;border:1px solid #dad9dd;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:none;box-shadow:none;color:#000;display:block;line-height:1em;max-width:unset;opacity:1;padding:10px 37px 12px 12px;width:100%;min-height:43px;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:unset;-webkit-appearance:none;-moz-appearance:none;appearance:none}.orderable-order-date-time-reminders-modal__select:focus{outline:unset;border-color:#000}.orderable-order-date-time-reminders-modal__save{font-size:18px;border-radius:30px;height:50px}.orderable-order-date-time-reminders-modal__cancel{font-size:16px;border-radius:30px;background-color:transparent}.orderable-order-date-time-reminders-modal__footer{text-align:center}.orderable-order-date-time-reminders-modal__form{margin-bottom:10px}.orderable-order-date-time-reminders-modal__time{margin-top:15px}.orderable-order-date-time-reminders-modal--hidden{display:none}.orderable-order-date-time-reminders-modal__select[disabled]{background-color:oklch(96.1151% 0 0deg);color:oklch(27.8078% .029596 256.848deg / .4);cursor:not-allowed}
  • orderable/tags/1.20.0/languages/orderable.pot

    r3429737 r3438713  
    1 # Copyright (C) 2025 orderable
     1# Copyright (C) 2026 orderable
    22# This file is distributed under the same license as the orderable package.
    33msgid ""
     
    77"Content-Type: text/plain; charset=UTF-8\n"
    88"Content-Transfer-Encoding: 8bit\n"
    9 "POT-Creation-Date: 2025-12-30 15:19+0000\n"
     9"POT-Creation-Date: 2026-01-13 11:47+0000\n"
    1010"X-Poedit-Basepath: ..\n"
    1111"X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
     
    434434msgstr ""
    435435
    436 #: inc/database/tables/class-location-locations-table.php:198, inc/modules/receipt-layouts/blocks/order-location/build/render.php:16, inc/modules/receipt-layouts/blocks/order-location/src/render.php:16
     436#: inc/database/tables/class-location-locations-table.php:248, inc/modules/receipt-layouts/blocks/order-location/build/render.php:16, inc/modules/receipt-layouts/blocks/order-location/src/render.php:16
    437437msgid "Main Location"
    438438msgstr ""
     
    640640msgstr ""
    641641
    642 #: inc/modules/location/class-location-single.php:495
     642#: inc/modules/location/class-location-single.php:507
    643643msgid "Closed"
    644644msgstr ""
    645645
    646 #: inc/modules/location/class-location-single.php:501
     646#: inc/modules/location/class-location-single.php:513
    647647msgid "Holiday"
    648648msgstr ""
    649649
    650 #: inc/modules/location/class-location-single.php:563, inc/modules/location/admin/meta-boxes/class-location-store-services-meta-box.php:491
     650#: inc/modules/location/class-location-single.php:575, inc/modules/location/admin/meta-boxes/class-location-store-services-meta-box.php:491
    651651msgid "All Day"
     652msgstr ""
     653
     654#. translators: 1 - day of the week; 2 - hour; 3 - minute; 4 - period AM or PM
     655#: inc/modules/location/class-location-single.php:1214
     656msgid "We're closed and not taking orders right now. We'll be taking orders again from %1$s at %2$s:%3$s %4$s"
    652657msgstr ""
    653658
     
    10441049msgstr ""
    10451050
    1046 #: inc/modules/timings/class-timings-settings.php:96, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:352
     1051#: inc/modules/timings/class-timings-settings.php:96, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:381
    10471052msgid "Max Orders (Day)"
    10481053msgstr ""
     
    14051410msgstr ""
    14061411
    1407 #: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:350, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:371
     1412#: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:179
     1413msgctxt "Open Hours"
     1414msgid "Restrict Orders to Open Hours"
     1415msgstr ""
     1416
     1417#: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:181
     1418msgctxt "Open Hours"
     1419msgid "Only allow orders during your opening hours. Customers attempting to order outside these times will see a message at checkout showing when you reopen."
     1420msgstr ""
     1421
     1422#: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:379, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:400
    14081423msgid "Open Hours (From)"
    14091424msgstr ""
    14101425
    1411 #: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:351, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:375
     1426#: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:380, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:404
    14121427msgid "Open Hours (To)"
    14131428msgstr ""
  • orderable/tags/1.20.0/orderable.php

    r3429737 r3438713  
    44 * Author URI: https://orderable.com
    55 * Description: Take local online ordering to a whole new level with Orderable.
    6  * Version: 1.19.2
     6 * Version: 1.20.0
    77 * Author: Orderable
    88 * Text Domain: orderable
     
    2121     * @var string Plugin version.
    2222     */
    23     public static $version = '1.19.2';
     23    public static $version = '1.20.0';
    2424
    2525    /**
  • orderable/tags/1.20.0/readme.txt

    r3429737 r3438713  
    55Tested up to: 6.9
    66Requires PHP: 5.6
    7 Stable tag: 1.19.2
     7Stable tag: 1.20.0
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    1919Add your dishes, create your online ordering restaurant menu, customize your pickup/food delivery schedule, and manage your orders with ease.
    2020
    21 With Orderable, youll have everything you need to take your restaurant business online, with no commissions and no added fees.
     21With Orderable, you'll have everything you need to take your restaurant business online, with no commissions and no added fees.
    2222
    2323## Who is Orderable for? ##
     
    3434* Speciality Stores
    3535
    36 ## Orderables Features for Online Restaurant Ordering ##
     36## Orderable's Features for Online Restaurant Ordering ##
    3737
    3838* **[Online Ordering Menu](https://orderable.com/docs/how-to-create-product-layouts/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - With our ready-made layouts, no coding skills are required to create your online menu.
    3939* **Zero Transaction Fees** - We charge no fees per transaction, and there are no hidden costs.
    40 * **[Delivery/Pickup Date Slots](https://orderable.com/docs/pickup-delivery-date-slots/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Make restaurant management easy by setting exactly when youre available to deliver and accept pickup orders.
     40* **[Delivery/Pickup Date Slots](https://orderable.com/docs/pickup-delivery-date-slots/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Make restaurant management easy by setting exactly when you're available to deliver and accept pickup orders.
    4141* **ASAP Delivery** - Allow customers to select ASAP as their delivery/pickup preference.
    4242* **[Lead Time](https://orderable.com/docs/how-to-set-your-order-lead-time/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme) and Preorder Days** - Set lead time and preorder days for your orders so you have full control over your delivery schedule.
    43 * **[Holiday Scheduling](https://orderable.com/docs/how-to-set-holiday-hours/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Prevent orders you can’t fulfill on specific dates/special occasions.
    44 * **[Live Order View](https://orderable.com/docs/how-to-process-orders/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - View, manage, and process orders in real-time via Orderable’s live order screen.
     43* **[Holiday Scheduling](https://orderable.com/docs/how-to-set-holiday-hours/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Prevent orders you can't fulfill on specific dates/special occasions.
     44* **Restrict Orders to Open Hours** - Set your open hours and only allow orders within those times/days.
     45* **[Live Order View](https://orderable.com/docs/how-to-process-orders/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - View, manage, and process orders in real-time via Orderable's live order screen.
    4546* **Receipt/Ticket Printing** - Print orders directly to a local printer (physically or wirelessly connected). No need for a 3rd-party service.
    4647* **Receipt/Ticket Layouts** - Create and customize your own receipt layouts/designs of any kind, including Kitchen, Delivery, Packing Slip, and Order Confirmation receipts.
    47 * **Mobile Friendly Ordering** - Allow customers to order from their mobile device. Orderables layouts are mobile-friendly.
    48 * **[Automated Pickup/Delivery Slot Reminder Emails](https://orderable.com/docs/time-slot-reminders/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Send automated email reminders to customers who havent picked their slot yet.
     48* **Mobile Friendly Ordering** - Allow customers to order from their mobile device. Orderable's layouts are mobile-friendly.
     49* **[Automated Pickup/Delivery Slot Reminder Emails](https://orderable.com/docs/time-slot-reminders/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Send automated email reminders to customers who haven't picked their slot yet.
    4950* **Floating Cart Widget** - Instead of taking customers to the default WooCommerce checkout, a floating cart widget lets them see their order at a glance.
    5051
    5152Orderable works with the ecommerce plugin, WooCommerce (it even installs it for you). So you can use any online payment providers that WooCommerce offers (PayPal, Credit Card, Apple Pay, and more), add fees, and accept coupons.
    5253
    53 ## Orderables (Free) Features in Detail ##
     54## Orderable's (Free) Features in Detail ##
    5455
    5556The core Orderable plugin is 100% free. With this, you can start taking online orders in a matter of minutes. Here are the features that make Orderable the smart choice for your restaurant business.
     
    5758**✔️ Online Ordering Menu**
    5859
    59 By using Orderable, youll be able to create your online food menu in minutes.
    60 
    61 Once youve created your menu items/dishes, you can add them to an online menu that you customize. Display it as a grid or list layout, include images or not, and decide what you want to happen when a customer clicks on a dish.
     60By using Orderable, you'll be able to create your online food menu in minutes.
     61
     62Once you've created your menu items/dishes, you can add them to an online menu that you customize. Display it as a grid or list layout, include images or not, and decide what you want to happen when a customer clicks on a dish.
    6263
    6364**✔️ Zero Transaction Fees**
     
    7172Orderable allows you to select which days of the week you offer your pickup or delivery services and what delivery zones these apply to.
    7273
    73 Youll be able to add as many of these as you like and customize them for pickup, delivery, and different days of the week.
    74 
    75 Lets say you want to offer pickup only on the weekend. You can. Or you want to offer different delivery days for different delivery zones (with added delivery fees for the distance). You can do that, too.
     74You'll be able to add as many of these as you like and customize them for pickup, delivery, and different days of the week.
     75
     76Let's say you want to offer pickup only on the weekend. You can. Or you want to offer different delivery days for different delivery zones (with added delivery fees for the distance). You can do that, too.
    7677
    7778**✔️ ASAP Delivery**
     
    8788**✔️ Holiday Scheduling**
    8889
    89 With Orderable, you’ll be able to set up specific holiday dates or special occasions where you won’t offer delivery and/or pickup services.
     90With Orderable, you'll be able to set up specific holiday dates or special occasions where you won't offer delivery and/or pickup services.
    9091
    9192For example, if your store only accepts pickup orders on Christmas Eve, you can set up a holiday schedule to accept only this service without changing your entire schedule.
    9293
     94**✔️ Restrict Orders to Open Hours**
     95
     96You can set your store's open hours with Orderable's built-in settings. Then, if you want to restrict orders to these hours, you can turn on the Orderable setting.
     97
     98When a customer attempts to place an order out of hours, they'll see a message at checkout telling them when you'll reopen.
     99
    93100**✔️ Live Order View**
    94101
    95 View, manage, and process orders in real-time with Orderables live order screen.
     102View, manage, and process orders in real-time with Orderable's live order screen.
    96103
    97104This screen makes a noise when new orders come in and can be filtered for delivery and pickup orders so restaurant managers and kitchen staff can keep track.
     
    105112**✔️ Automated Pickup/Delivery Slot Reminder Emails**
    106113
    107 Send automated email reminders to customers who havent picked their slot yet.
     114Send automated email reminders to customers who haven't picked their slot yet.
    108115
    109116This is particularly useful for customers who checkout using Google or Apple Pay. Or if they forgot to set a date slot at the checkout.
     
    119126## Take It a Step Further With Orderable Pro ##
    120127
    121 The premium version of Orderable provides you with a whole host of revenue-boosting and scheduling features. If youre looking to take online ordering up a notch, [Orderable Pro](https://orderable.com/pricing/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme) is for you.
     128The premium version of Orderable provides you with a whole host of revenue-boosting and scheduling features. If you're looking to take online ordering up a notch, [Orderable Pro](https://orderable.com/pricing/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme) is for you.
    122129
    123130**Here are all the additional features you get with Orderable Pro:**
     
    132139* **Timed Products** - Set up products/product categories that only appear on your menu for certain days of the week or times of the day. Perfect for breakfast/lunch menus.
    133140* **Maximum Orders Per Day/Slot** - Determine the maximum number of orders you can take per day or per time slot to keep on top of your orders.
    134 * **Custom Order Statuses** - Create order statuses that are custom to your business and delivery system. For example, ‘Prepping,’ ‘Ready for Delivery,’ or ‘Quality Control.’
     141* **Custom Order Statuses** - Create order statuses that are custom to your business and delivery system. For example, ‘Prepping,' ‘Ready for Delivery,' or ‘Quality Control.'
    135142* **SMS, Email, & WhatsApp Notifications** - Based on your order statuses, send order notifications to customers, staff, or delivery drivers via email, SMS, or WhatsApp.
    136 * **Dietary & Promotional Product Labels** - Customize your menu with product labels that show off specific dish features. For example, ‘Vegan,’ ‘Gluten Free,’ or ‘Chef Special.’
    137 * **Nutritional Information** - Add a table of nutritional information to your dishs description by filling in some easy-to-use fields.
     143* **Dietary & Promotional Product Labels** - Customize your menu with product labels that show off specific dish features. For example, ‘Vegan,' ‘Gluten Free,' or ‘Chef Special.'
     144* **Nutritional Information** - Add a table of nutritional information to your dish's description by filling in some easy-to-use fields.
    138145* **Allergen Information** - Include specific allergen information to your food items and keep customers informed.
    139146* **Pause/Resume Orders** - Got an emergency or run out of ingredients? You can pause or resume orders directly from the live order view screen.
     
    146153== Installation ==
    1471541. Upload the Orderable zip via the \'Plugins\' menu in WordPress, or upload the Orderable folder to the /wp-content/plugins/ directory.
    148 2. Activate the Orderable plugin through the ‘Plugins menu in WordPress.
     1552. Activate the Orderable plugin through the ‘Plugins' menu in WordPress.
    149156
    150157== Screenshots ==
     
    171178Orderable has a receipt printing feature built-in. So, all you need is a local printer (physically or wirelessly connected) to start printing tickets/receipts. No need for a 3rd-party service.
    172179
    173 This doesnt include remote printing. You will need to have your printer in the same physical location as your device using Orderable.
     180This doesn't include remote printing. You will need to have your printer in the same physical location as your device using Orderable.
    174181
    175182= Can I install Orderable on my client's websites? =
     
    179186= What is required to use Orderable? =
    180187
    181 Orderable integrates with WordPress and uses WooCommerce for the checkout. So you will need a hosting account with WordPress and WooCommerce installed. If you dont have WooCommerce installed, Orderable will install it for you.
     188Orderable integrates with WordPress and uses WooCommerce for the checkout. So you will need a hosting account with WordPress and WooCommerce installed. If you don't have WooCommerce installed, Orderable will install it for you.
    182189= What payment gateways does Orderable support? =
    183190
     
    201208
    202209== Changelog ==
    203 **v1.19.2** (30 Dez 2025)
     210**v1.20.0** (13 Jan 2026)
     211[new] Allow receiving orders only within store Open Hours 
     212
     213**v1.19.2** (30 Dec 2025)
    204214[new] Dev filter: `orderable_live_view_last_order_id_query_args`
    205215[fix] Live Order View not showing the latest order when placing an order via the Checkout block
  • orderable/trunk/assets/admin/css/main.css

    r3262287 r3438713  
    282282  color: #fff;
    283283  font-size: 14px;
    284   /* stylelint-disable-next-line no-descending-specificity */
    285284}
    286285
     
    306305  color: #fff;
    307306  cursor: default;
     307}
     308
     309body .submit .button-primary,
     310.orderable-admin-button {
     311  /* stylelint-disable-next-line no-descending-specificity */
    308312}
    309313
     
    607611      -ms-flex-align: center;
    608612          align-items: center;
    609   /* stylelint-disable-next-line no-descending-specificity */
    610613}
    611614
     
    624627  font-size: 12px;
    625628  opacity: 0.8;
     629}
     630
     631.orderable-fields-row__header {
     632  /* stylelint-disable-next-line no-descending-specificity */
    626633}
    627634
  • orderable/trunk/assets/frontend/css/main.css

    r3123410 r3438713  
    185185.orderable-button.orderable-button--out-of-stock:active {
    186186  cursor: not-allowed;
    187   border-color: #c7d4db;
    188   color: #a8bdc7;
     187  border-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
     188  color: rgb(167.8048780488, 188.7317073171, 199.1951219512);
    189189  background: transparent !important;
    190190}
     
    342342  .orderable-products-list__item {
    343343    padding: 0 0 24px;
    344     border-bottom: 1px solid #ecf1f3;
     344    border-bottom: 1px solid rgb(236.2195121951, 240.7268292683, 242.9804878049);
    345345  }
    346346  .orderable-products-list__item:last-child {
     
    945945  right: 0;
    946946  z-index: 20;
    947   color: #c7d4db;
     947  color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    948948  -webkit-box-shadow: none;
    949949          box-shadow: none;
     
    969969  -webkit-transition: none;
    970970  transition: none;
    971   fill: #c7d4db;
     971  fill: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    972972  margin: -10px 0 0 -10px;
    973973}
     
    10441044.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li {
    10451045  border: 1px solid #e34f4f;
    1046   background: #fce9e9;
     1046  background: rgb(251.5, 233, 233);
    10471047  color: #dc2323;
    10481048  padding: 6px 12px 6px 28px !important;
     
    11621162  margin: 0;
    11631163  z-index: 100;
    1164   border-color: #c7d4db;
     1164  border-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    11651165}
    11661166
     
    11711171  height: 18px;
    11721172  width: 2px;
    1173   background-color: #c7d4db;
     1173  background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    11741174  top: 50%;
    11751175  margin: 0 0 0 -2px;
     
    11911191
    11921192.orderable-drawer__close:focus, .orderable-drawer__close:active, .orderable-drawer__close:hover {
    1193   background-color: #c7d4db;
    1194   border-color: #c7d4db;
     1193  background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
     1194  border-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    11951195}
    11961196
    11971197.orderable-drawer__close:focus::before, .orderable-drawer__close:focus::after, .orderable-drawer__close:active::before, .orderable-drawer__close:active::after, .orderable-drawer__close:hover::before, .orderable-drawer__close:hover::after {
    1198   background-color: #405763;
     1198  background-color: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    11991199}
    12001200
     
    14271427  white-space: nowrap;
    14281428  line-height: 40px;
    1429   color: #405763;
     1429  color: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    14301430  font-weight: 400;
    14311431  border-radius: 20px;
    14321432  -webkit-transition: all 150ms ease-out;
    14331433  transition: all 150ms ease-out;
    1434   background: #ecf1f3;
     1434  background: rgb(236.2195121951, 240.7268292683, 242.9804878049);
    14351435}
    14361436
     
    14421442
    14431443a.orderable-tabs__link:hover, a.orderable-tabs__link:active, a.orderable-tabs__link:focus {
    1444   color: #405763;
     1444  color: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    14451445  text-decoration: none;
    1446   background: #c7d4db;
     1446  background: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    14471447}
    14481448
     
    14971497.orderable-accordion {
    14981498  margin: 24px 0;
    1499   background: #f6f8f9;
     1499  background: rgb(245.5487804878, 247.8170731707, 248.9512195122);
    15001500  padding: 0 24px;
    15011501  border-radius: 6px;
     
    15281528  height: 11px;
    15291529  width: 2px;
    1530   background-color: #c7d4db;
     1530  background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    15311531  top: 50%;
    15321532  display: block;
     
    15521552
    15531553.orderable-accordion__item-link--active::before, .orderable-accordion__item-link--active::after, .orderable-accordion__item-link:hover::before, .orderable-accordion__item-link:hover::after, .orderable-accordion__item-link:active::before, .orderable-accordion__item-link:active::after, .orderable-accordion__item-link:focus::before, .orderable-accordion__item-link:focus::after {
    1554   background-color: #405763 !important;
     1554  background-color: rgb(63.6097560976, 87.4634146341, 99.3902439024) !important;
    15551555}
    15561556
     
    16101610  width: 10px;
    16111611  border-radius: 10px;
    1612   background: #d6e0e5;
     1612  background: rgb(214.4512195122, 224.1829268293, 229.0487804878);
    16131613}
    16141614
    16151615.orderable-sb-scrollbar:hover {
    1616   background: #c7d4db;
     1616  background: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    16171617}
    16181618
     
    16481648/* Elements */
    16491649.orderable-quantity-roller__roller {
    1650   border: 2px solid #c7d4db;
     1650  border: 2px solid rgb(198.9024390244, 212.3658536585, 219.0975609756);
    16511651  border-radius: 20px;
    16521652  height: 40px;
     
    16701670  border-radius: 0;
    16711671  text-align: center;
    1672   color: #c7d4db;
     1672  color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    16731673  line-height: 36px;
    16741674  -webkit-box-shadow: none;
     
    16921692  height: 2px;
    16931693  width: 12px;
    1694   background: #c7d4db;
     1694  background: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    16951695  top: 50%;
    16961696  left: 50%;
     
    17141714
    17151715.orderable-quantity-roller__button:not(.orderable-button--loading):hover, .orderable-quantity-roller__button:not(.orderable-button--loading):focus, .orderable-quantity-roller__button:visited {
    1716   background-color: #c7d4db;
    1717   color: #405763;
     1716  background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
     1717  color: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    17181718  -webkit-box-shadow: none;
    17191719          box-shadow: none;
     
    17231723
    17241724.orderable-quantity-roller__button:not(.orderable-button--loading):hover::before, .orderable-quantity-roller__button:not(.orderable-button--loading):hover::after, .orderable-quantity-roller__button:not(.orderable-button--loading):focus::before, .orderable-quantity-roller__button:not(.orderable-button--loading):focus::after, .orderable-quantity-roller__button:visited::before, .orderable-quantity-roller__button:visited::after {
    1725   background: #405763;
     1725  background: rgb(63.6097560976, 87.4634146341, 99.3902439024);
    17261726}
    17271727
     
    17921792  content: "x";
    17931793  margin: 0 8px;
    1794   color: #c7d4db;
     1794  color: rgb(198.9024390244, 212.3658536585, 219.0975609756);
    17951795}
    17961796
  • orderable/trunk/assets/frontend/css/main.min.css

    r3123410 r3438713  
    1 @-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}@media screen and (min-width:620px){.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}}.orderable-button,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__close{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;position:relative}.orderable-button:active,.orderable-button:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__close:active,.orderable-drawer__close:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover,.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--hide{display:none!important}.orderable-button--filled,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{background:#000!important;color:#fff}.orderable-button--filled--hover,.orderable-button--filled:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading::after{content:"";display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading::after,.orderable-button--loading.orderable-button--hover::after,.orderable-button--loading:active::after,.orderable-button--loading:focus::after,.orderable-button--loading:hover::after,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout .orderable-button--loading::after{border-top-color:#fff;border-left-color:#fff}.orderable-button--out-of-stock.orderable-drawer__close,.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout{cursor:not-allowed;border-color:#c7d4db;color:#a8bdc7;background:0 0!important}.orderable--button-style-square .orderable-button,.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable--button-style-square .orderable-drawer__close,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable--button-style-square .button.checkout{border-radius:0}.orderable-button--icon{padding:10px!important;width:44px;height:44px;line-height:24px;border:none;background:0 0!important}body .orderable-button--icon:active,body .orderable-button--icon:focus,body .orderable-button--icon:hover{background:0 0!important;opacity:.6}.orderable-button--icon svg{width:24px;height:24px;border-radius:12px;overflow:hidden;-webkit-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.orderable-button--icon.orderable-button--loading::after{display:none}.orderable-input--select,select.orderable-input--select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #e6ecef;border-radius:8px;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c1cfd7'><polygon points='0,0 100,0 50,50'/></svg>");background-size:16px;background-position:calc(100% - 14px) 19px;background-repeat:no-repeat;cursor:pointer}.orderable-input--select:focus,select.orderable-input--select:focus{outline:0;border-color:#000;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23000000'><polygon points='0,0 100,0 50,50'/></svg>")}.orderable-input.orderable-input--text{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #e6ecef;border-radius:8px;width:100%;background-color:#fff;-webkit-box-shadow:none;box-shadow:none}.orderable-input.orderable-input--text:focus{outline:0;border-color:#000;background-color:#fff}.orderable-category-heading{margin:0 0 24px}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__hero{width:200px}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid #ecf1f3}.orderable-products-list__item:last-child{border-bottom:none}}.orderable-products-list--list .orderable-products-list__item .orderable-product{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__content-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none none outside}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0 0}.orderable-product__options{margin:0 0 24px;padding:0;border-radius:6px}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions:last-child{margin-bottom:0}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-drawer__inner .orderable-product__actions .orderable-product__actions-price{margin-right:60px}.orderable-drawer__inner .orderable-product__actions .orderable-product__actions-price .price del+ins{margin-left:0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-counter{display:none;position:absolute;top:-6px;right:-4px;white-space:nowrap;padding:0 4px;background:#000;color:#fff;height:18px;line-height:18px;font-size:12px;border-radius:11px;min-width:18px;text-align:center}.orderable-product__actions-button{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 0 0 auto}.orderable-main--quantity-roller .orderable-product__actions-button .orderable-product__actions-counter:not([data-orderable-product-quantity="0"]){display:inline}.orderable-product__actions-button .orderable-quantity-roller{display:none}.orderable-product__actions-button .orderable-quantity-roller--is-active{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-product__actions-button .orderable-quantity-roller--is-active+.orderable-product__add-to-order{display:none}.orderable-product__actions-button .orderable-quantity-roller+.orderable-product__add-to-order:not([data-orderable-trigger=product-options]) .orderable-product__actions-counter{display:none}.orderable-product__actions-button .orderable-product__cancel-update{background-color:#f2f2f3;border-color:#f2f2f3;margin-right:10px}.orderable-product__actions-button .orderable-quantity-roller__roller{border-color:#000}.orderable-product__actions-button .orderable-quantity-roller__button::after,.orderable-product__actions-button .orderable-quantity-roller__button::before{background-color:#000}.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover{background-color:#000;color:#f2f2f3}.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus::after,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus::before,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover::after,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover::before{background-color:#f2f2f3}.orderable-product__actions-button .orderable-quantity-roller__quantity{color:#000;font-weight:700}.orderable-product__actions-button .orderable-quantity-roller__button--decrease[data-orderable-quantity="1"]::before{display:none!important}.orderable-product__actions-button .orderable-quantity-roller__button--decrease:not([data-orderable-quantity="1"]) svg,.orderable-product__actions-button .orderable-quantity-roller__button--decrease[data-orderable-quantity="1"].orderable-button--loading svg{display:none}.orderable-product__tabs{margin:24px 0}.orderable-product__tabs-section{display:none}.orderable-product__tabs-section:first-child{display:block}.orderable-product__tabs-section :last-child{margin-bottom:0}.orderable-product__add-to-order.added~a.added_to_cart.wc-forward{display:none}.orderable-product__points-earned{padding:0 24px}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__hero{margin:-24px -24px 0}.orderable-product--options .orderable-product__title{text-align:left;margin:24px 0!important}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #e6ecef;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--add-to-cart,.orderable-product--product-options,.orderable-product--view-product{cursor:pointer}.orderable-product[data-orderable-product-type=subscription],.orderable-product[data-orderable-product-type=variable-subscription]{padding-bottom:12px}.orderable-product[data-orderable-product-type=subscription] .orderable-product__actions,.orderable-product[data-orderable-product-type=variable-subscription] .orderable-product__actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;padding:0 24px 12px;position:static}.orderable-product--image-cropped .orderable-product__hero{overflow:hidden;padding:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:72px}.orderable-product--image-cropped .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:95px;border-radius:6px;overflow:hidden}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-tag{display:inline-block;background:#edf2f6;border-radius:15px;height:30px;line-height:30px;white-space:nowrap;color:#495568;padding:0 12px;font-size:14px}body.orderable-drawer-open{overflow:hidden}.orderable-drawer-overlay{height:100%;z-index:999998;position:fixed;top:0;left:0;opacity:0;visibility:hidden;background-color:rgba(34,34,34,.6);-webkit-transition:opacity .2s linear,visibility .1s,width 1s ease-in;transition:opacity .2s linear,visibility .1s,width 1s ease-in}.orderable-drawer{width:100%;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transition:all .2s;transition:all .2s;border-radius:0;-webkit-box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);display:block;position:fixed;top:0;right:0;height:100%;z-index:999999;background-color:#fff;overflow:hidden;padding:24px;-webkit-box-sizing:border-box;box-sizing:border-box}@media screen and (min-width:640px){.orderable-drawer{max-width:600px}}.orderable-drawer h3{margin:0 60px 24px!important;font-size:20px;line-height:24px;text-align:center}.orderable-drawer h4{font-size:18px;line-height:22px}.orderable-drawer__inner{padding:0;height:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__inner .orderable-sb-container{-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:-1px}.orderable-drawer__cart{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart .orderable-mini-cart-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart{margin:0;padding:0;list-style:none none outside;overflow:hidden;min-height:100%}.orderable-drawer__cart .orderable-mini-cart-item{margin:0;padding:10px 104px 10px 0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart-item .orderable-quantity-roller__roller svg{display:none}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove{position:absolute;bottom:16px;right:0;z-index:20;color:#c7d4db;-webkit-box-shadow:none;box-shadow:none;height:40px;width:40px;text-indent:250%;white-space:nowrap;font-size:0;-webkit-transition:none;transition:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:none}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#c7d4db;margin:-10px 0 0 -10px}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove:hover svg{opacity:.8}.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove{border-radius:0}.orderable-drawer__cart .orderable-mini-cart-item:last-child{border-bottom:none}.orderable-drawer__cart .orderable-mini-cart-item .variation{margin:7.5px 0}.orderable-drawer__cart .orderable-mini-cart-item .variation dd,.orderable-drawer__cart .orderable-mini-cart-item .variation dt,.orderable-drawer__cart .orderable-mini-cart-item .variation p{margin:0}.orderable-drawer__cart .orderable-mini-cart-item .blockOverlay{background:#fff!important;opacity:.8!important}.orderable-drawer__cart .orderable-edit-cart-item__button{position:absolute;bottom:21px;right:50px;height:30px;line-height:normal;padding:0 13px!important;font-size:14px}.orderable-drawer__cart .orderable-edit-cart-item__button.orderable-button--loading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-drawer__cart .orderable-edit-cart-item__button.orderable-button--loading::after{position:static;margin-left:5px}.orderable-drawer__cart .quantity{font-weight:700}.orderable-drawer__cart .orderable-mini-cart__notices{padding:15px 0}.orderable-drawer__cart .orderable-mini-cart__notices.orderable-mini-cart__notices--border-top{border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error{margin:0;padding:0;list-style:none none outside}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li{border:1px solid #e34f4f;background:#fce9e9;color:#dc2323;padding:6px 12px 6px 28px!important;text-align:center;margin:0 0 6px;display:block;border-radius:8px}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li:last-child{margin-bottom:0}.orderable-drawer__cart .orderable-mini-cart__notices .button{display:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-info::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-message::before{left:12px}.orderable-drawer__cart .orderable-mini-cart__buttons,.orderable-drawer__cart .orderable-mini-cart__total{margin:0;padding:0;text-align:center}.orderable-drawer__cart .orderable-mini-cart__total{padding:15px 0;border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart__buttons .button{display:none}.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{display:block;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-drawer__cart .orderable-mini-cart__empty-message{margin:auto 0;text-align:center}.orderable-drawer__cart .orderable-services-selector__selected{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup input{width:100%;margin:0 0 8px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button{display:block;width:100%}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:first-child{margin-right:4px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:last-child{margin-left:4px}.orderable-drawer__actions{bottom:-24px;margin:auto 0 -24px;background:#fff;padding:24px 0;left:0;right:0;border-top:1px solid #f2f2f2}.orderable-drawer__actions--cart{border-top:none;padding-top:10px}.orderable-drawer__close{position:absolute;top:16px;left:24px;font-size:0;text-indent:250%!important;white-space:nowrap!important;overflow:hidden!important;padding:0!important;width:40px;height:40px;margin:0;z-index:100;border-color:#c7d4db}.orderable-drawer__close::after,.orderable-drawer__close::before{position:absolute;left:54%;content:" ";height:18px;width:2px;background-color:#c7d4db;top:50%;margin:0 0 0 -2px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;display:block;margin-top:-9px}.orderable-drawer__close::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-drawer__close::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{background-color:#c7d4db;border-color:#c7d4db}.orderable-drawer__close:active::after,.orderable-drawer__close:active::before,.orderable-drawer__close:focus::after,.orderable-drawer__close:focus::before,.orderable-drawer__close:hover::after,.orderable-drawer__close:hover::before{background-color:#405763}.orderable-drawer .orderable-product__content{padding:15px 0}.orderable-drawer-overlay--open{-webkit-transition:opacity .2s ease,width 0s;transition:opacity .2s ease,width 0s;opacity:1;width:100%;visibility:visible}.orderable-drawer--open{visibility:visible;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.orderable-floating-cart{position:fixed;z-index:20}.orderable-floating-cart--bl,.orderable-floating-cart--br{bottom:40px}.orderable-floating-cart--br,.orderable-floating-cart--tr{right:40px}.orderable-floating-cart--bl,.orderable-floating-cart--tl{left:40px}.orderable-floating-cart--tl,.orderable-floating-cart--tr{top:40px}.orderable-floating-cart__button{padding:0;width:60px;height:60px;border:none;border-radius:100%;display:block;margin:0;text-align:center;line-height:60px;background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);outline:0!important;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out,-webkit-transform 150ms ease-in-out}.orderable-floating-cart__button:hover{background:#fff;-webkit-animation:wobble-hor-bottom .8s both;animation:wobble-hor-bottom .8s both;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-floating-cart__button svg{width:24px;height:24px;display:block;margin:0 auto}.orderable-floating-cart__count{position:absolute;top:0;right:0;white-space:nowrap;padding:0 4px;background:#e52c23;color:#fff;height:22px;line-height:22px;font-size:13px;border-radius:11px;min-width:22px;text-align:center}.orderable-services-selector__selected p{margin:0}.orderable-services-selector__selected-change{padding:0;margin:0;font-size:inherit;background:0 0;display:inline;color:#333;-webkit-transition:none;transition:none;text-transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector__selected-change:active,.orderable-services-selector__selected-change:focus,.orderable-services-selector__selected-change:hover{padding:0;margin:0;background:0 0;color:#333;text-decoration:underline;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector--selected .orderable-services-selector__lookup{display:none}.orderable-open-hours__date,.orderable-open-hours__service{margin:0 0 0 6px;padding:2px 6px;background:#000;color:#fff;border-radius:4px;display:inline-block;font-size:80%}.orderable-open-hours__service--closed{background-color:#e34f4f;display:none}.orderable-open-hours__date{margin:0 4px 0 0;text-align:center;min-width:30px;border:1px solid #e6ecef;background:0 0;color:inherit}.orderable-tabs{margin:0 0 24px;position:relative}.orderable-tabs__list{margin:0 1px 0 0!important;padding:0!important;list-style:none none outside;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;overflow:-moz-scrollbars-none;scrollbar-base-color:transparent;-webkit-overflow-scrolling:touch}.orderable-tabs__list::-webkit-scrollbar{display:none}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__list{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto}}.orderable-tabs__item{display:inline-block;margin:0 10px 0 0;padding:0}.orderable-tabs__item:last-child{margin-right:0}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 12px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:#405763;font-weight:400;border-radius:20px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;background:#ecf1f3}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:#405763;text-decoration:none;background:#c7d4db}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-tabs__arrow{background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border:none;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:20px!important;position:absolute;top:0;right:0;text-align:center;line-height:40px;display:none}.orderable-tabs__arrow:active,.orderable-tabs__arrow:focus,.orderable-tabs__arrow:hover{background:#fff;outline:0}.orderable-tabs__arrow svg{width:21px;height:24px;margin:8px 0}.orderable-tabs__arrow-left{left:0;right:initial;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.orderable-accordion{margin:24px 0;background:#f6f8f9;padding:0 24px;border-radius:6px}.orderable-product-fields-group-wrap+.orderable-accordion,.orderable-product__options+.orderable-accordion{margin-top:36px}.orderable-accordion__item{border-top:1px solid #e6ecef}.orderable-accordion__item:first-child{border-top:none}.orderable-accordion__item-link{display:block;padding:18px 0;margin:0;color:inherit;position:relative}.orderable-accordion__item-link::after,.orderable-accordion__item-link::before{position:absolute;right:5px;content:" ";height:11px;width:2px;background-color:#c7d4db;top:50%;display:block;margin:-4px 0 0}.orderable-accordion__item-link::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-accordion__item-link::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:12px}.orderable-accordion__item-link--active,.orderable-accordion__item-link:active,.orderable-accordion__item-link:focus,.orderable-accordion__item-link:hover{color:#000;border:none;outline:0}.orderable-accordion__item-link--active::after,.orderable-accordion__item-link--active::before,.orderable-accordion__item-link:active::after,.orderable-accordion__item-link:active::before,.orderable-accordion__item-link:focus::after,.orderable-accordion__item-link:focus::before,.orderable-accordion__item-link:hover::after,.orderable-accordion__item-link:hover::before{background-color:#405763!important}.orderable-accordion__item-link--active::before{right:12px}.orderable-accordion__item-link--active::after{right:5px}.orderable-accordion__item-content{display:none}.orderable-accordion__item-content--active{display:block}.orderable-accordion__item-content::after{content:"";display:table;clear:both}.orderable-sb-container{position:relative;overflow:hidden;padding-right:25px}.orderable-sb-content{height:100%;width:120%;padding-right:20%;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-sb-scrollbar-container{position:absolute;right:0;bottom:10px;top:10px;width:10px}.orderable-sb-container-noscroll .orderable-sb-scrollbar-container{right:-20px}.orderable-sb-scrollbar{position:absolute;right:0;height:30px;width:10px;border-radius:10px;background:#d6e0e5}.orderable-sb-scrollbar:hover{background:#c7d4db}.orderable--button-style-square .orderable-sb-scrollbar{border-radius:0}.orderable-sb-container-noscroll{padding-right:0}.orderable-sb-container-noscroll .orderable-sb-content{width:100%;padding-right:0;overflow:hidden}.orderable-quantity-roller{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-quantity-roller *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-quantity-roller__roller{border:2px solid #c7d4db;border-radius:20px;height:40px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.orderable--button-style-square .orderable-quantity-roller__roller{border-radius:0}.orderable-quantity-roller__button{height:36px;width:24px;background:0 0;border:none;border-radius:0;text-align:center;color:#c7d4db;line-height:36px;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;padding:0 6px;-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;font-size:0;text-indent:250%;overflow:hidden;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.orderable-quantity-roller__button::after,.orderable-quantity-roller__button::before{content:"";position:absolute;display:block!important;height:2px;width:12px;background:#c7d4db;top:50%;left:50%;margin:-1px 0 0 -6px;-webkit-transition:background 150ms ease-out;transition:background 150ms ease-out}.orderable-quantity-roller__button.orderable-button--loading{outline-color:transparent}.orderable-quantity-roller__button.orderable-button--loading:focus,.orderable-quantity-roller__button.orderable-button--loading:hover{background-color:transparent}.orderable-quantity-roller__button.orderable-button--loading:focus::after,.orderable-quantity-roller__button.orderable-button--loading:hover::after{border-top-color:#000;border-left-color:#000}.orderable-quantity-roller__button:not(.orderable-button--loading):focus,.orderable-quantity-roller__button:not(.orderable-button--loading):hover,.orderable-quantity-roller__button:visited{background-color:#c7d4db;color:#405763;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:0}.orderable-quantity-roller__button:not(.orderable-button--loading):focus::after,.orderable-quantity-roller__button:not(.orderable-button--loading):focus::before,.orderable-quantity-roller__button:not(.orderable-button--loading):hover::after,.orderable-quantity-roller__button:not(.orderable-button--loading):hover::before,.orderable-quantity-roller__button:visited::after,.orderable-quantity-roller__button:visited::before{background:#405763}.orderable-quantity-roller__button--decrease{padding-right:4px}.orderable-quantity-roller__button--decrease svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#000;margin:-10px 0 0 -10px}.orderable-quantity-roller__button--decrease:not(.orderable-button--loading)::after{display:none!important}.orderable-quantity-roller__button--decrease:focus svg,.orderable-quantity-roller__button--decrease:hover svg{fill:#f2f2f3}.orderable-quantity-roller__button--increase{padding-left:4px}.orderable-quantity-roller__button--increase::after{height:12px;width:2px;margin:-6px 0 0 -1px}.orderable-quantity-roller__button.orderable-button--loading{padding-right:4px!important}.orderable-quantity-roller__button.orderable-button--loading::after,.orderable-quantity-roller__button.orderable-button--loading::before{background-color:transparent}.orderable-quantity-roller__button.orderable-button--loading::after{height:12px;margin-top:-5px;margin-left:-6px;width:12px}.orderable-quantity-roller__quantity{text-align:center;display:inline-block;line-height:36px;padding:0 6px;min-width:24px;outline:0}.orderable-quantity-roller__price{margin-left:8px}.orderable-quantity-roller__price::before{content:"x";margin:0 8px;color:#c7d4db}.orderable-drawer__cart .orderable-quantity-roller{margin:12px 0 6px}
     1@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}@keyframes wobble-hor-bottom{0%,100%{-webkit-transform:translateX(0);transform:translateX(0);-webkit-transform-origin:50% 50%;transform-origin:50% 50%}15%{-webkit-transform:translateX(-10%) rotate(-6deg);transform:translateX(-10%) rotate(-6deg)}30%{-webkit-transform:translateX(5%) rotate(6deg);transform:translateX(5%) rotate(6deg)}45%{-webkit-transform:translateX(-5%) rotate(-3.6deg);transform:translateX(-5%) rotate(-3.6deg)}60%{-webkit-transform:translateX(2%) rotate(2.4deg);transform:translateX(2%) rotate(2.4deg)}75%{-webkit-transform:translateX(-1%) rotate(-1.2deg);transform:translateX(-1%) rotate(-1.2deg)}}.orderable-main__group{margin:0 0 36px}.orderable-main--sections-tabs .orderable-main__group{display:none}.orderable-main--sections-tabs .orderable-main__group:first-of-type{display:block}@media screen and (min-width:620px){.orderable-main--sections-side_tabs{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-main--sections-side_tabs .orderable-main__tabs{margin:0 24px 0 0!important}.orderable-main--sections-side_tabs .orderable-main__sections{-webkit-box-flex:1;-ms-flex:1;flex:1}}.orderable-button,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable-drawer__close{display:inline-block;border:2px solid #000;background:0 0;padding:0 24px!important;height:40px;line-height:36px;white-space:nowrap;border-radius:20px;color:#000;text-transform:none;margin:0;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;position:relative}.orderable-button:active,.orderable-button:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__close:active,.orderable-drawer__close:focus{outline:0}.orderable-button--active,.orderable-button--hover,.orderable-button:active,.orderable-button:focus,.orderable-button:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:active,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:focus,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover,.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{border-color:#000;background:#000;color:#fff;text-decoration:none;-webkit-box-shadow:none;box-shadow:none}.orderable-button--hide{display:none!important}.orderable-button--filled,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{background:#000!important;color:#fff}.orderable-button--filled--hover,.orderable-button--filled:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout:hover{background:#000!important;color:#fff}.orderable-button--full{width:100%}.orderable-button--loading{position:relative;padding-right:48px!important}.orderable-button--loading::after{content:"";display:block;width:16px;height:16px;position:absolute;top:10px;right:22px;background:0 0;-webkit-box-sizing:border-box;box-sizing:border-box;border-top:2px solid #000;border-left:2px solid #000;border-right:2px solid transparent;border-bottom:2px solid transparent;border-radius:100%;-webkit-animation:spin .6s ease-out infinite;animation:spin .6s ease-out infinite}.orderable-button--filled .orderable-button--loading::after,.orderable-button--loading.orderable-button--hover::after,.orderable-button--loading:active::after,.orderable-button--loading:focus::after,.orderable-button--loading:hover::after,.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout .orderable-button--loading::after{border-top-color:#fff;border-left-color:#fff}.orderable-button--out-of-stock.orderable-drawer__close,.orderable-button.orderable-button--out-of-stock,.orderable-button.orderable-button--out-of-stock.orderable-button--hover,.orderable-button.orderable-button--out-of-stock:active,.orderable-button.orderable-button--out-of-stock:focus,.orderable-button.orderable-button--out-of-stock:hover,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable-button--out-of-stock.button.checkout{cursor:not-allowed;border-color:rgb(198.9024390244,212.3658536585,219.0975609756);color:rgb(167.8048780488,188.7317073171,199.1951219512);background:0 0!important}.orderable--button-style-square .orderable-button,.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout,.orderable--button-style-square .orderable-drawer__close,.orderable-drawer__cart .orderable-mini-cart__buttons .orderable--button-style-square .button.checkout{border-radius:0}.orderable-button--icon{padding:10px!important;width:44px;height:44px;line-height:24px;border:none;background:0 0!important}body .orderable-button--icon:active,body .orderable-button--icon:focus,body .orderable-button--icon:hover{background:0 0!important;opacity:.6}.orderable-button--icon svg{width:24px;height:24px;border-radius:12px;overflow:hidden;-webkit-transition:opacity 250ms ease-in-out;transition:opacity 250ms ease-in-out}.orderable-button--icon.orderable-button--loading::after{display:none}.orderable-input--select,select.orderable-input--select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #e6ecef;border-radius:8px;background-color:#fff;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23c1cfd7'><polygon points='0,0 100,0 50,50'/></svg>");background-size:16px;background-position:calc(100% - 14px) 19px;background-repeat:no-repeat;cursor:pointer}.orderable-input--select:focus,select.orderable-input--select:focus{outline:0;border-color:#000;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100' height='100' fill='%23000000'><polygon points='0,0 100,0 50,50'/></svg>")}.orderable-input.orderable-input--text{-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding:10px;border:2px solid #e6ecef;border-radius:8px;width:100%;background-color:#fff;-webkit-box-shadow:none;box-shadow:none}.orderable-input.orderable-input--text:focus{outline:0;border-color:#000;background-color:#fff}.orderable-category-heading{margin:0 0 24px}.orderable-products-list{margin-bottom:12px;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-products-list:last-child{margin-bottom:0}@media screen and (min-width:480px){.orderable-products-list .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__hero{width:200px}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__image{-o-object-fit:cover;object-fit:cover;width:100%!important;height:100%!important}}@media screen and (min-width:480px){.orderable-products-list .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.orderable-products-list .orderable-product__actions{padding:12px 24px 18px;margin-top:auto}.orderable-products-list__item{width:100%;margin:0 0 24px}@media screen and (max-width:480px){.orderable-products-list__item{padding:0 0 24px;border-bottom:1px solid rgb(236.2195121951,240.7268292683,242.9804878049)}.orderable-products-list__item:last-child{border-bottom:none}}.orderable-products-list--list .orderable-products-list__item .orderable-product{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}@media screen and (min-width:540px){.orderable-products-list--grid{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-left:-12px;margin-right:-12px}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-products-list__item{margin:0 0 24px;padding:0 12px;width:50%}}@media screen and (min-width:1120px){.orderable-products-list--grid .orderable-products-list__item{width:33.33%}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product{padding:0 0 88px;display:block;margin:0;-webkit-box-flex:0;-ms-flex:none;flex:none}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__hero{width:auto}.orderable-products-list--grid .orderable-product__hero img{-o-object-fit:fill;object-fit:fill;width:100%;height:auto}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__content-wrap{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}}@media screen and (min-width:768px){.orderable-products-list--grid .orderable-product__actions{padding:0;margin-top:0;position:absolute;bottom:24px;left:24px;right:24px}}.orderable-product{overflow:hidden;position:relative}.orderable-product__hero{position:relative}.orderable-product__image{border-radius:0;margin:0;display:block;width:100%;height:auto!important;max-width:none!important}.orderable-product__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:18px 24px 12px}.orderable-product__content :last-child{margin-bottom:0}.orderable-product__title{margin:0 0 12px!important}.orderable-product__description{margin:0}.orderable-product__tags{overflow:hidden;margin:0;padding:0;list-style:none none outside}img+.orderable-product__tags{position:absolute;bottom:0;left:0;padding:12px;z-index:20}.orderable-product__tags li{margin:6px 0 0 0}.orderable-product__options{margin:0 0 24px;padding:0;border-radius:6px}.orderable-product__options td,.orderable-product__options th{background-color:transparent!important;padding:0 0 12px;text-align:left;display:block;margin:0}.orderable-product__options th{line-height:22px}.orderable-product__options td{padding-bottom:24px}.orderable-product__options tr{padding:0;margin:0}.orderable-product__options tr:last-child td{padding-bottom:0}.orderable-product__actions{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-product__actions:last-child{margin-bottom:0}.orderable-product__actions-price{margin:0 4px 0 0}.orderable-drawer__inner .orderable-product__actions .orderable-product__actions-price{margin-right:60px}.orderable-drawer__inner .orderable-product__actions .orderable-product__actions-price .price del+ins{margin-left:0}.orderable-product__actions-price .amount{white-space:nowrap;margin:0 6px 0 0;font-weight:700;color:#000;font-size:20px;line-height:24px}.orderable-product__actions-counter{display:none;position:absolute;top:-6px;right:-4px;white-space:nowrap;padding:0 4px;background:#000;color:#fff;height:18px;line-height:18px;font-size:12px;border-radius:11px;min-width:18px;text-align:center}.orderable-product__actions-button{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 0 0 auto}.orderable-main--quantity-roller .orderable-product__actions-button .orderable-product__actions-counter:not([data-orderable-product-quantity="0"]){display:inline}.orderable-product__actions-button .orderable-quantity-roller{display:none}.orderable-product__actions-button .orderable-quantity-roller--is-active{display:-webkit-box;display:-ms-flexbox;display:flex}.orderable-product__actions-button .orderable-quantity-roller--is-active+.orderable-product__add-to-order{display:none}.orderable-product__actions-button .orderable-quantity-roller+.orderable-product__add-to-order:not([data-orderable-trigger=product-options]) .orderable-product__actions-counter{display:none}.orderable-product__actions-button .orderable-product__cancel-update{background-color:#f2f2f3;border-color:#f2f2f3;margin-right:10px}.orderable-product__actions-button .orderable-quantity-roller__roller{border-color:#000}.orderable-product__actions-button .orderable-quantity-roller__button::after,.orderable-product__actions-button .orderable-quantity-roller__button::before{background-color:#000}.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover{background-color:#000;color:#f2f2f3}.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus::after,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):focus::before,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover::after,.orderable-product__actions-button .orderable-quantity-roller__button:not(.orderable-button--loading):hover::before{background-color:#f2f2f3}.orderable-product__actions-button .orderable-quantity-roller__quantity{color:#000;font-weight:700}.orderable-product__actions-button .orderable-quantity-roller__button--decrease[data-orderable-quantity="1"]::before{display:none!important}.orderable-product__actions-button .orderable-quantity-roller__button--decrease:not([data-orderable-quantity="1"]) svg,.orderable-product__actions-button .orderable-quantity-roller__button--decrease[data-orderable-quantity="1"].orderable-button--loading svg{display:none}.orderable-product__tabs{margin:24px 0}.orderable-product__tabs-section{display:none}.orderable-product__tabs-section:first-child{display:block}.orderable-product__tabs-section :last-child{margin-bottom:0}.orderable-product__add-to-order.added~a.added_to_cart.wc-forward{display:none}.orderable-product__points-earned{padding:0 24px}.orderable-product--options{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:visible;height:100%}.orderable-product--options .orderable-product__hero{margin:-24px -24px 0}.orderable-product--options .orderable-product__title{text-align:left;margin:24px 0!important}.orderable-product--options .orderable-product__actions{margin-top:auto;padding-top:24px;border-top:1px solid #e6ecef;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.orderable-product--add-to-cart,.orderable-product--product-options,.orderable-product--view-product{cursor:pointer}.orderable-product[data-orderable-product-type=subscription],.orderable-product[data-orderable-product-type=variable-subscription]{padding-bottom:12px}.orderable-product[data-orderable-product-type=subscription] .orderable-product__actions,.orderable-product[data-orderable-product-type=variable-subscription] .orderable-product__actions{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column;padding:0 24px 12px;position:static}.orderable-product--image-cropped .orderable-product__hero{overflow:hidden;padding:0;text-align:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;height:72px}.orderable-product--image-cropped .orderable-product__image{-o-object-fit:cover;object-fit:cover;position:absolute;z-index:-1;width:100%;height:100%!important;left:0;top:0}.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:100%;width:100%;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border-radius:6px}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-shadow:none;box-shadow:none;border-radius:0;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__hero{width:100%;min-width:60px;max-width:95px;border-radius:6px;overflow:hidden}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__content-wrap{-webkit-box-flex:1;-ms-flex:1;flex:1}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__content{padding:0 0 0 24px}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__actions{padding:6px 0 0 24px}}@media screen and (max-width:480px){.orderable-products-list__item .orderable-product__title{margin:0 0 6px!important}}.orderable-tag{display:inline-block;background:#edf2f6;border-radius:15px;height:30px;line-height:30px;white-space:nowrap;color:#495568;padding:0 12px;font-size:14px}body.orderable-drawer-open{overflow:hidden}.orderable-drawer-overlay{height:100%;z-index:999998;position:fixed;top:0;left:0;opacity:0;visibility:hidden;background-color:rgba(34,34,34,.6);-webkit-transition:opacity .2s linear,visibility .1s,width 1s ease-in;transition:opacity .2s linear,visibility .1s,width 1s ease-in}.orderable-drawer{width:100%;visibility:hidden;-webkit-transform:translateX(100%);transform:translateX(100%);-webkit-transition:all .2s;transition:all .2s;border-radius:0;-webkit-box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);box-shadow:0 4px 56px -2px rgba(0,0,0,.2),0 3px 6px -1px rgba(0,0,0,.4);display:block;position:fixed;top:0;right:0;height:100%;z-index:999999;background-color:#fff;overflow:hidden;padding:24px;-webkit-box-sizing:border-box;box-sizing:border-box}@media screen and (min-width:640px){.orderable-drawer{max-width:600px}}.orderable-drawer h3{margin:0 60px 24px!important;font-size:20px;line-height:24px;text-align:center}.orderable-drawer h4{font-size:18px;line-height:22px}.orderable-drawer__inner{padding:0;height:100%;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__inner .orderable-sb-container{-ms-flex-preferred-size:100%;flex-basis:100%;margin-bottom:-1px}.orderable-drawer__cart{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.orderable-drawer__cart .orderable-mini-cart-wrapper{height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;overflow:hidden;border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart{margin:0;padding:0;list-style:none none outside;overflow:hidden;min-height:100%}.orderable-drawer__cart .orderable-mini-cart-item{margin:0;padding:10px 104px 10px 0;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-bottom:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart-item .orderable-quantity-roller__roller svg{display:none}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove{position:absolute;bottom:16px;right:0;z-index:20;color:rgb(198.9024390244,212.3658536585,219.0975609756);-webkit-box-shadow:none;box-shadow:none;height:40px;width:40px;text-indent:250%;white-space:nowrap;font-size:0;-webkit-transition:none;transition:none;-webkit-box-sizing:border-box;box-sizing:border-box;border:none}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:rgb(198.9024390244,212.3658536585,219.0975609756);margin:-10px 0 0 -10px}.orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove:hover svg{opacity:.8}.orderable--button-style-square .orderable-drawer__cart .orderable-mini-cart-item .orderable-mini-cart-item__remove{border-radius:0}.orderable-drawer__cart .orderable-mini-cart-item:last-child{border-bottom:none}.orderable-drawer__cart .orderable-mini-cart-item .variation{margin:7.5px 0}.orderable-drawer__cart .orderable-mini-cart-item .variation dd,.orderable-drawer__cart .orderable-mini-cart-item .variation dt,.orderable-drawer__cart .orderable-mini-cart-item .variation p{margin:0}.orderable-drawer__cart .orderable-mini-cart-item .blockOverlay{background:#fff!important;opacity:.8!important}.orderable-drawer__cart .orderable-edit-cart-item__button{position:absolute;bottom:21px;right:50px;height:30px;line-height:normal;padding:0 13px!important;font-size:14px}.orderable-drawer__cart .orderable-edit-cart-item__button.orderable-button--loading{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-drawer__cart .orderable-edit-cart-item__button.orderable-button--loading::after{position:static;margin-left:5px}.orderable-drawer__cart .quantity{font-weight:700}.orderable-drawer__cart .orderable-mini-cart__notices{padding:15px 0}.orderable-drawer__cart .orderable-mini-cart__notices.orderable-mini-cart__notices--border-top{border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error{margin:0;padding:0;list-style:none none outside}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li{border:1px solid #e34f4f;background:rgb(251.5,233,233);color:#dc2323;padding:6px 12px 6px 28px!important;text-align:center;margin:0 0 6px;display:block;border-radius:8px}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li:last-child{margin-bottom:0}.orderable-drawer__cart .orderable-mini-cart__notices .button{display:none}.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-info::before,.orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-message::before{left:12px}.orderable-drawer__cart .orderable-mini-cart__buttons,.orderable-drawer__cart .orderable-mini-cart__total{margin:0;padding:0;text-align:center}.orderable-drawer__cart .orderable-mini-cart__total{padding:15px 0;border-top:1px solid #e6ecef}.orderable-drawer__cart .orderable-mini-cart__buttons .button{display:none}.orderable-drawer__cart .orderable-mini-cart__buttons .button.checkout{display:block;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-drawer__cart .orderable-mini-cart__empty-message{margin:auto 0;text-align:center}.orderable-drawer__cart .orderable-services-selector__selected{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup{margin:0 0 15px}.orderable-drawer__cart .orderable-services-selector__lookup input{width:100%;margin:0 0 8px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button{display:block;width:100%}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:first-child{margin-right:4px}.orderable-drawer__cart .orderable-services-selector__lookup-buttons button:last-child{margin-left:4px}.orderable-drawer__actions{bottom:-24px;margin:auto 0 -24px;background:#fff;padding:24px 0;left:0;right:0;border-top:1px solid #f2f2f2}.orderable-drawer__actions--cart{border-top:none;padding-top:10px}.orderable-drawer__close{position:absolute;top:16px;left:24px;font-size:0;text-indent:250%!important;white-space:nowrap!important;overflow:hidden!important;padding:0!important;width:40px;height:40px;margin:0;z-index:100;border-color:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable-drawer__close::after,.orderable-drawer__close::before{position:absolute;left:54%;content:" ";height:18px;width:2px;background-color:rgb(198.9024390244,212.3658536585,219.0975609756);top:50%;margin:0 0 0 -2px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;display:block;margin-top:-9px}.orderable-drawer__close::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-drawer__close::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.orderable-drawer__close:active,.orderable-drawer__close:focus,.orderable-drawer__close:hover{background-color:rgb(198.9024390244,212.3658536585,219.0975609756);border-color:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable-drawer__close:active::after,.orderable-drawer__close:active::before,.orderable-drawer__close:focus::after,.orderable-drawer__close:focus::before,.orderable-drawer__close:hover::after,.orderable-drawer__close:hover::before{background-color:rgb(63.6097560976,87.4634146341,99.3902439024)}.orderable-drawer .orderable-product__content{padding:15px 0}.orderable-drawer-overlay--open{-webkit-transition:opacity .2s ease,width 0s;transition:opacity .2s ease,width 0s;opacity:1;width:100%;visibility:visible}.orderable-drawer--open{visibility:visible;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .2s;transition:-webkit-transform .2s;transition:transform .2s;transition:transform .2s,-webkit-transform .2s}.orderable-floating-cart{position:fixed;z-index:20}.orderable-floating-cart--bl,.orderable-floating-cart--br{bottom:40px}.orderable-floating-cart--br,.orderable-floating-cart--tr{right:40px}.orderable-floating-cart--bl,.orderable-floating-cart--tl{left:40px}.orderable-floating-cart--tl,.orderable-floating-cart--tr{top:40px}.orderable-floating-cart__button{padding:0;width:60px;height:60px;border:none;border-radius:100%;display:block;margin:0;text-align:center;line-height:60px;background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);outline:0!important;-webkit-transition:-webkit-transform 150ms ease-in-out;transition:-webkit-transform 150ms ease-in-out;transition:transform 150ms ease-in-out;transition:transform 150ms ease-in-out,-webkit-transform 150ms ease-in-out}.orderable-floating-cart__button:hover{background:#fff;-webkit-animation:wobble-hor-bottom .8s both;animation:wobble-hor-bottom .8s both;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07)}.orderable-floating-cart__button svg{width:24px;height:24px;display:block;margin:0 auto}.orderable-floating-cart__count{position:absolute;top:0;right:0;white-space:nowrap;padding:0 4px;background:#e52c23;color:#fff;height:22px;line-height:22px;font-size:13px;border-radius:11px;min-width:22px;text-align:center}.orderable-services-selector__selected p{margin:0}.orderable-services-selector__selected-change{padding:0;margin:0;font-size:inherit;background:0 0;display:inline;color:#333;-webkit-transition:none;transition:none;text-transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector__selected-change:active,.orderable-services-selector__selected-change:focus,.orderable-services-selector__selected-change:hover{padding:0;margin:0;background:0 0;color:#333;text-decoration:underline;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}.orderable-services-selector--selected .orderable-services-selector__lookup{display:none}.orderable-open-hours__date,.orderable-open-hours__service{margin:0 0 0 6px;padding:2px 6px;background:#000;color:#fff;border-radius:4px;display:inline-block;font-size:80%}.orderable-open-hours__service--closed{background-color:#e34f4f;display:none}.orderable-open-hours__date{margin:0 4px 0 0;text-align:center;min-width:30px;border:1px solid #e6ecef;background:0 0;color:inherit}.orderable-tabs{margin:0 0 24px;position:relative}.orderable-tabs__list{margin:0 1px 0 0!important;padding:0!important;list-style:none none outside;position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;overflow:-moz-scrollbars-none;scrollbar-base-color:transparent;-webkit-overflow-scrolling:touch}.orderable-tabs__list::-webkit-scrollbar{display:none}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__list{-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;height:auto}}.orderable-tabs__item{display:inline-block;margin:0 10px 0 0;padding:0}.orderable-tabs__item:last-child{margin-right:0}@media screen and (min-width:620px){.orderable-main--sections-side_tabs .orderable-tabs__item{margin:0 0 12px;display:block}.orderable-main--sections-side_tabs .orderable-tabs__item:last-child{margin:0}}a.orderable-tabs__link{text-decoration:none!important;display:inline-block;padding:0 24px;white-space:nowrap;line-height:40px;color:rgb(63.6097560976,87.4634146341,99.3902439024);font-weight:400;border-radius:20px;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out;background:rgb(236.2195121951,240.7268292683,242.9804878049)}a.orderable-tabs__link:active,a.orderable-tabs__link:focus{outline:0;-webkit-box-shadow:none;box-shadow:none}a.orderable-tabs__link:active,a.orderable-tabs__link:focus,a.orderable-tabs__link:hover{color:rgb(63.6097560976,87.4634146341,99.3902439024);text-decoration:none;background:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable-tabs__item--active a.orderable-tabs__link{background:#000;color:#fff}.orderable--button-style-square a.orderable-tabs__link{border-radius:0}.orderable-tabs__arrow{background:#fff;-webkit-box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);box-shadow:0 .4px 1.3px rgba(0,0,0,.05),0 1.3px 4.5px rgba(0,0,0,.06),0 6px 16px rgba(0,0,0,.07);border:none;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:20px!important;position:absolute;top:0;right:0;text-align:center;line-height:40px;display:none}.orderable-tabs__arrow:active,.orderable-tabs__arrow:focus,.orderable-tabs__arrow:hover{background:#fff;outline:0}.orderable-tabs__arrow svg{width:21px;height:24px;margin:8px 0}.orderable-tabs__arrow-left{left:0;right:initial;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.orderable-accordion{margin:24px 0;background:rgb(245.5487804878,247.8170731707,248.9512195122);padding:0 24px;border-radius:6px}.orderable-product-fields-group-wrap+.orderable-accordion,.orderable-product__options+.orderable-accordion{margin-top:36px}.orderable-accordion__item{border-top:1px solid #e6ecef}.orderable-accordion__item:first-child{border-top:none}.orderable-accordion__item-link{display:block;padding:18px 0;margin:0;color:inherit;position:relative}.orderable-accordion__item-link::after,.orderable-accordion__item-link::before{position:absolute;right:5px;content:" ";height:11px;width:2px;background-color:rgb(198.9024390244,212.3658536585,219.0975609756);top:50%;display:block;margin:-4px 0 0}.orderable-accordion__item-link::before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.orderable-accordion__item-link::after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:12px}.orderable-accordion__item-link--active,.orderable-accordion__item-link:active,.orderable-accordion__item-link:focus,.orderable-accordion__item-link:hover{color:#000;border:none;outline:0}.orderable-accordion__item-link--active::after,.orderable-accordion__item-link--active::before,.orderable-accordion__item-link:active::after,.orderable-accordion__item-link:active::before,.orderable-accordion__item-link:focus::after,.orderable-accordion__item-link:focus::before,.orderable-accordion__item-link:hover::after,.orderable-accordion__item-link:hover::before{background-color:rgb(63.6097560976,87.4634146341,99.3902439024)!important}.orderable-accordion__item-link--active::before{right:12px}.orderable-accordion__item-link--active::after{right:5px}.orderable-accordion__item-content{display:none}.orderable-accordion__item-content--active{display:block}.orderable-accordion__item-content::after{content:"";display:table;clear:both}.orderable-sb-container{position:relative;overflow:hidden;padding-right:25px}.orderable-sb-content{height:100%;width:120%;padding-right:20%;overflow-y:scroll;-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-sb-scrollbar-container{position:absolute;right:0;bottom:10px;top:10px;width:10px}.orderable-sb-container-noscroll .orderable-sb-scrollbar-container{right:-20px}.orderable-sb-scrollbar{position:absolute;right:0;height:30px;width:10px;border-radius:10px;background:rgb(214.4512195122,224.1829268293,229.0487804878)}.orderable-sb-scrollbar:hover{background:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable--button-style-square .orderable-sb-scrollbar{border-radius:0}.orderable-sb-container-noscroll{padding-right:0}.orderable-sb-container-noscroll .orderable-sb-content{width:100%;padding-right:0;overflow:hidden}.orderable-quantity-roller{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.orderable-quantity-roller *{-webkit-box-sizing:border-box;box-sizing:border-box}.orderable-quantity-roller__roller{border:2px solid rgb(198.9024390244,212.3658536585,219.0975609756);border-radius:20px;height:40px;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}.orderable--button-style-square .orderable-quantity-roller__roller{border-radius:0}.orderable-quantity-roller__button{height:36px;width:24px;background:0 0;border:none;border-radius:0;text-align:center;color:rgb(198.9024390244,212.3658536585,219.0975609756);line-height:36px;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;padding:0 6px;-webkit-box-sizing:content-box;box-sizing:content-box;position:relative;font-size:0;text-indent:250%;overflow:hidden;-webkit-transition:all 150ms ease-out;transition:all 150ms ease-out}.orderable-quantity-roller__button::after,.orderable-quantity-roller__button::before{content:"";position:absolute;display:block!important;height:2px;width:12px;background:rgb(198.9024390244,212.3658536585,219.0975609756);top:50%;left:50%;margin:-1px 0 0 -6px;-webkit-transition:background 150ms ease-out;transition:background 150ms ease-out}.orderable-quantity-roller__button.orderable-button--loading{outline-color:transparent}.orderable-quantity-roller__button.orderable-button--loading:focus,.orderable-quantity-roller__button.orderable-button--loading:hover{background-color:transparent}.orderable-quantity-roller__button.orderable-button--loading:focus::after,.orderable-quantity-roller__button.orderable-button--loading:hover::after{border-top-color:#000;border-left-color:#000}.orderable-quantity-roller__button:not(.orderable-button--loading):focus,.orderable-quantity-roller__button:not(.orderable-button--loading):hover,.orderable-quantity-roller__button:visited{background-color:rgb(198.9024390244,212.3658536585,219.0975609756);color:rgb(63.6097560976,87.4634146341,99.3902439024);-webkit-box-shadow:none;box-shadow:none;text-shadow:none;outline:0}.orderable-quantity-roller__button:not(.orderable-button--loading):focus::after,.orderable-quantity-roller__button:not(.orderable-button--loading):focus::before,.orderable-quantity-roller__button:not(.orderable-button--loading):hover::after,.orderable-quantity-roller__button:not(.orderable-button--loading):hover::before,.orderable-quantity-roller__button:visited::after,.orderable-quantity-roller__button:visited::before{background:rgb(63.6097560976,87.4634146341,99.3902439024)}.orderable-quantity-roller__button--decrease{padding-right:4px}.orderable-quantity-roller__button--decrease svg{display:block;height:20px;width:20px;position:absolute;left:50%;top:50%;-webkit-transition:none;transition:none;fill:#000;margin:-10px 0 0 -10px}.orderable-quantity-roller__button--decrease:not(.orderable-button--loading)::after{display:none!important}.orderable-quantity-roller__button--decrease:focus svg,.orderable-quantity-roller__button--decrease:hover svg{fill:#f2f2f3}.orderable-quantity-roller__button--increase{padding-left:4px}.orderable-quantity-roller__button--increase::after{height:12px;width:2px;margin:-6px 0 0 -1px}.orderable-quantity-roller__button.orderable-button--loading{padding-right:4px!important}.orderable-quantity-roller__button.orderable-button--loading::after,.orderable-quantity-roller__button.orderable-button--loading::before{background-color:transparent}.orderable-quantity-roller__button.orderable-button--loading::after{height:12px;margin-top:-5px;margin-left:-6px;width:12px}.orderable-quantity-roller__quantity{text-align:center;display:inline-block;line-height:36px;padding:0 6px;min-width:24px;outline:0}.orderable-quantity-roller__price{margin-left:8px}.orderable-quantity-roller__price::before{content:"x";margin:0 8px;color:rgb(198.9024390244,212.3658536585,219.0975609756)}.orderable-drawer__cart .orderable-quantity-roller{margin:12px 0 6px}
  • orderable/trunk/inc/class-helpers.php

    r3262287 r3438713  
    397397
    398398        $allowed_html_tags['circle'] = array(
    399             'cx' => array(),
     399            'cx' =>   array(),
    400400            'cy' => array(),
    401401            'r'  => array(),
  • orderable/trunk/inc/database/class-database.php

    r2912589 r3438713  
    2222
    2323        if ( is_admin() && ! wp_doing_ajax() ) {
    24             add_action( 'orderable_after_create_custom_tables', array( __CLASS__, 'upgrades' ) );
     24            add_action( 'orderable_after_create_custom_tables', array( __CLASS__, 'upgrade_1_8_0' ) );
    2525            self::create_tables();
     26            self::upgrades();
    2627        }
    2728
     
    152153    public static function upgrades() {
    153154        $routines = array(
    154             '1.8.0' => 'upgrade_1_8_0',
     155            '1.8.0'  => 'upgrade_1_8_0',
     156            '1.20.0' => 'upgrade_1_20_0',
    155157        );
    156158
     
    190192        do_action( 'orderable_upgrade_database_routine', '1.8.0' );
    191193    }
     194
     195    /**
     196     * Upgrade routine to v1.20.0.
     197     *
     198     * @return void
     199     */
     200    public static function upgrade_1_20_0() {
     201        // phpcs:ignore WooCommerce.Commenting.CommentHooks
     202        do_action( 'orderable_upgrade_database_routine', '1.20.0' );
     203    }
    192204}
  • orderable/trunk/inc/database/tables/class-location-locations-table.php

    r3101824 r3438713  
    5454  override_default_open_hours boolean DEFAULT NULL,
    5555  open_hours longtext NULL,
     56  enable_placing_orders_only_within_open_hours boolean DEFAULT NULL,
    5657  delivery boolean DEFAULT NULL,
    5758  pickup boolean DEFAULT NULL,
     
    8182     */
    8283    public static function upgrades( $version ) {
    83         if ( '1.8.0' === $version ) {
    84             self::migrate_main_location_to_custom_table();
     84        switch ( true ) {
     85            case '1.8.0' === $version:
     86                self::migrate_main_location_to_custom_table();
     87                break;
     88
     89            case '1.20.0' === $version:
     90                self::add_enable_placing_orders_only_within_open_hours_column( $version );
     91                break;
     92
     93            default:
     94                break;
    8595        }
    8696    }
     
    190200
    191201    /**
     202     * Add `enable_placing_orders_only_within_open_hours` column.
     203     *
     204     * @param string $version The database version.
     205     * @return void
     206     */
     207    protected static function add_enable_placing_orders_only_within_open_hours_column( $version ) {
     208        global $wpdb;
     209
     210        $table_name = $wpdb->prefix . self::get_table_name();
     211
     212        $table_exists = (bool) $wpdb->get_var(
     213            $wpdb->prepare( 'SHOW TABLES LIKE %s', $table_name )
     214        );
     215
     216        if ( ! $table_exists ) {
     217            return;
     218        }
     219
     220        $column = 'enable_placing_orders_only_within_open_hours';
     221
     222        $column_exists = (bool) $wpdb->get_var(
     223            // phpcs:ignore WordPress.DB.PreparedSQL
     224            $wpdb->prepare( "SHOW COLUMNS FROM {$table_name} LIKE %s", $column )
     225        );
     226
     227        if ( $column_exists ) {
     228            return;
     229        }
     230
     231        $result = $wpdb->query(
     232            // phpcs:ignore WordPress.DB.PreparedSQL
     233            $wpdb->prepare( "ALTER TABLE {$table_name} ADD {$column} boolean DEFAULT NULL AFTER open_hours" )
     234        );
     235
     236        if ( $result ) {
     237            update_option( '_orderable_db_version', $version );
     238        }
     239    }
     240
     241    /**
    192242     * Get default main location data.
    193243     *
     
    196246    public static function get_default_main_location_data() {
    197247        $data = array(
    198             'title'                            => __( 'Main Location', 'orderable' ),
    199             'address_line_1'                   => get_option( 'woocommerce_store_address', '' ),
    200             'address_line_2'                   => get_option( 'woocommerce_store_address_2', '' ),
    201             'city'                             => get_option( 'woocommerce_store_city', '' ),
    202             'country_state'                    => get_option( 'woocommerce_default_country', '' ),
    203             'postcode_zip'                     => get_option( 'woocommerce_store_postcode', '' ),
    204             'override_default_open_hours'      => (int) true,
    205             'enable_default_holidays'          => (int) true,
    206             'open_hours'                       => '',
    207             'delivery'                         => (int) false,
    208             'pickup'                           => (int) false,
    209             'pickup_hours_same_as_delivery'    => '',
    210             'asap_date'                        => (int) false,
    211             'asap_time'                        => (int) false,
    212             'lead_time'                        => '',
    213             'lead_time_period'                 => 'days',
    214             'preorder'                         => '',
    215             'delivery_days_calculation_method' => '',
    216             'is_main_location'                 => 1,
    217             'image_id'                         => null,
    218             'menu_order'                       => null,
     248            'title'                                        => __( 'Main Location', 'orderable' ),
     249            'address_line_1'                               => get_option( 'woocommerce_store_address', '' ),
     250            'address_line_2'                               => get_option( 'woocommerce_store_address_2', '' ),
     251            'city'                                         => get_option( 'woocommerce_store_city', '' ),
     252            'country_state'                                => get_option( 'woocommerce_default_country', '' ),
     253            'postcode_zip'                                 => get_option( 'woocommerce_store_postcode', '' ),
     254            'override_default_open_hours'                  => (int) true,
     255            'enable_default_holidays'                      => (int) true,
     256            'open_hours'                                   => '',
     257            'delivery'                                     => (int) false,
     258            'pickup'                                       => (int) false,
     259            'pickup_hours_same_as_delivery'                => '',
     260            'asap_date'                                    => (int) false,
     261            'asap_time'                                    => (int) false,
     262            'lead_time'                                    => '',
     263            'lead_time_period'                             => 'days',
     264            'preorder'                                     => '',
     265            'delivery_days_calculation_method'             => '',
     266            'is_main_location'                             => 1,
     267            'image_id'                                     => null,
     268            'menu_order'                                   => null,
     269            'enable_placing_orders_only_within_open_hours' => (int) false,
    219270        );
    220271
  • orderable/trunk/inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php

    r3143111 r3438713  
    6363            'orderable_override_open_hours' => $location->get_override_default_open_hours(),
    6464            'store_general_open_hours'      => $location->get_open_hours(),
    65         );
    66 
    67         $override_open_hours = (bool) $data['orderable_override_open_hours'] || ( is_admin() && ! $should_show_override_open_hours_field );
     65            'orderable_enable_placing_orders_only_within_open_hours' => $location->get_enable_placing_orders_only_within_open_hours(),
     66        );
     67
     68        $override_open_hours                          = (bool) $data['orderable_override_open_hours'] || ( is_admin() && ! $should_show_override_open_hours_field );
     69        $enable_placing_orders_only_within_open_hours = $data['orderable_enable_placing_orders_only_within_open_hours'];
    6870
    6971        $class_toggle_field_value = $override_open_hours ? 'enabled' : 'disabled';
     
    172174                    </div>
    173175                </div>
     176
     177                <div class="orderable-fields-row__body-row orderable-store-open-hours__placing-orders-only_within-open-hours">
     178                    <div class="orderable-fields-row__body-row-left">
     179                        <h3><?php echo esc_html_x( 'Restrict Orders to Open Hours', 'Open Hours', 'orderable' ); ?></h3>
     180                        <p>
     181                            <?php echo esc_html_x( 'Only allow orders during your opening hours. Customers attempting to order outside these times will see a message at checkout showing when you reopen.', 'Open Hours', 'orderable' ); ?>
     182                        </p>
     183                    </div>
     184                    <div class="orderable-fields-row__body-row-right">
     185                        <div class="orderable-store-open-hours__enable-placing_orders_only_within_open_hours">
     186                            <span
     187                                class="orderable-toggle-field orderable-enable-placing_orders_only_within_open_hours-toggle-field woocommerce-input-toggle woocommerce-input-toggle--<?php echo $enable_placing_orders_only_within_open_hours ? esc_attr( 'enabled' ) : esc_attr( 'disabled' ); ?>"
     188                            >
     189                                <?php echo esc_html( 'Yes' ); ?>
     190                            </span>
     191
     192                            <input
     193                                type="hidden"
     194                                name="orderable_location_enable_placing_orders_only_within_open_hours"
     195                                value="<?php echo esc_attr( $enable_placing_orders_only_within_open_hours ? 'yes' : 'no' ); ?>"
     196                                class="orderable-toggle-field__input"
     197                            />
     198                        </div>
     199                    </div>
     200                </div>
    174201            </div>
    175202        </div>
     
    215242        $default_data = array(
    216243            'orderable_override_open_hours' => 'no',
     244            'orderable_enable_placing_orders_only_within_open_hours' => 'no',
    217245            'store_general_open_hours'      => array(),
    218246        );
     
    234262        $store_open_hours_data = array(
    235263            'orderable_override_open_hours' => Orderable_Location_Admin::get_posted_value( 'orderable_override_open_hours' ),
     264            'orderable_enable_placing_orders_only_within_open_hours' => Orderable_Location_Admin::get_posted_value( 'orderable_enable_placing_orders_only_within_open_hours' ),
    236265            'store_general_open_hours'      => self::get_location_open_hours(),
    237266        );
     
    403432        $location_id = Orderable_Location::get_location_id( $post_id );
    404433
    405         $override_open_hours = 'yes' === Orderable_Location_Admin::get_posted_value( 'orderable_override_open_hours' );
    406         $open_hours          = maybe_serialize( self::get_location_open_hours() );
     434        $override_open_hours                          = 'yes' === Orderable_Location_Admin::get_posted_value( 'orderable_override_open_hours' );
     435        $open_hours                                   = maybe_serialize( self::get_location_open_hours() );
     436        $enable_placing_orders_only_within_open_hours = 'yes' === Orderable_Location_Admin::get_posted_value( 'orderable_location_enable_placing_orders_only_within_open_hours' );
    407437
    408438        $store_services = Orderable_Location_Store_Services_Meta_Box::get_store_services();
     
    424454
    425455        $data = array(
    426             'post_id'                          => $post_id,
    427             'override_default_open_hours'      => (int) $override_open_hours,
    428             'open_hours'                       => $open_hours,
    429             'delivery'                         => (int) $delivery,
    430             'pickup'                           => (int) $pickup,
    431             'pickup_hours_same_as_delivery'    => (int) $pickup_hours_same_as_delivery,
    432             'asap_date'                        => (int) $asap_date,
    433             'asap_time'                        => (int) $asap_time,
    434             'lead_time'                        => $lead_time,
    435             'lead_time_period'                 => empty( $lead_time_period ) ? 'days' : $lead_time_period,
    436             'preorder'                         => $preorder,
    437             'delivery_days_calculation_method' => $delivery_days_calculation_method,
    438             'enable_default_holidays'          => $enable_default_holidays,
     456            'post_id'                                      => $post_id,
     457            'override_default_open_hours'                  => (int) $override_open_hours,
     458            'open_hours'                                   => $open_hours,
     459            'delivery'                                     => (int) $delivery,
     460            'pickup'                                       => (int) $pickup,
     461            'pickup_hours_same_as_delivery'                => (int) $pickup_hours_same_as_delivery,
     462            'asap_date'                                    => (int) $asap_date,
     463            'asap_time'                                    => (int) $asap_time,
     464            'lead_time'                                    => $lead_time,
     465            'lead_time_period'                             => empty( $lead_time_period ) ? 'days' : $lead_time_period,
     466            'preorder'                                     => $preorder,
     467            'delivery_days_calculation_method'             => $delivery_days_calculation_method,
     468            'enable_default_holidays'                      => $enable_default_holidays,
     469            'enable_placing_orders_only_within_open_hours' => (int) $enable_placing_orders_only_within_open_hours,
    439470        );
    440471
  • orderable/trunk/inc/modules/location/class-location-single.php

    r3192586 r3438713  
    1818     */
    1919    public $location_data = array(
    20         'location_id'                   => 0,
    21         'override_default_open_hours'   => false,
    22         'asap_date'                     => '',
    23         'asap_time'                     => '',
    24         'address_line_1'                => '',
    25         'address_line_2'                => '',
    26         'city'                          => '',
    27         'country_state'                 => '',
    28         'postcode_zip'                  => '',
    29         'open_hours'                    => array(),
    30         'enable_default_holidays'       => true,
    31         'pickup_hours_same_as_delivery' => true,
     20        'location_id'                                  => 0,
     21        'override_default_open_hours'                  => false,
     22        'asap_date'                                    => '',
     23        'asap_time'                                    => '',
     24        'address_line_1'                               => '',
     25        'address_line_2'                               => '',
     26        'city'                                         => '',
     27        'country_state'                                => '',
     28        'postcode_zip'                                 => '',
     29        'open_hours'                                   => array(),
     30        'enable_default_holidays'                      => true,
     31        'pickup_hours_same_as_delivery'                => true,
     32        'enable_placing_orders_only_within_open_hours' => false,
    3233    );
    3334
     
    6061         */
    6162        do_action( 'orderable_location_object_init', $this );
     63
     64        add_filter( 'orderable_location_service_dates', [ $this, 'on_orderable_location_service_dates' ], 20, 3 );
    6265    }
    6366
     
    190193    public function get_override_default_open_hours() {
    191194        return ! in_array( $this->location_data['override_default_open_hours'], array( false, '0' ), true );
     195    }
     196
     197    /**
     198     * Get enable placing order only within open hours setting.
     199     *
     200     * @return bool
     201     */
     202    public function get_enable_placing_orders_only_within_open_hours() {
     203        return ! in_array( $this->location_data['enable_placing_orders_only_within_open_hours'], array( false, '0' ), true );
    192204    }
    193205
     
    11721184
    11731185    }
     1186
     1187    /**
     1188     * Hook on `orderable_location_service_dates` filter
     1189     *
     1190     * @param array|bool                $service_dates  The service dates available. If true,
     1191     *                                                  the service doesn't require date/time selection.
     1192     *                                                  If false, a service should be selected.
     1193     * @param string                    $type           The type of service. E.g. delivery, pickup.
     1194     * @param Orderable_Location_Single $location       The location instance.
     1195     * @return array|bool
     1196     */
     1197    public function on_orderable_location_service_dates( $service_dates, $type, $location ) {
     1198        $enable_placing_orders_only_within_open_hours = (bool) $location->location_data['enable_placing_orders_only_within_open_hours'] ?? null;
     1199
     1200        if ( ! $enable_placing_orders_only_within_open_hours ) {
     1201            return $service_dates;
     1202        }
     1203
     1204        $now = new DateTime( 'now', wp_timezone() );
     1205
     1206        if ( $this->is_within_open_hours( $now ) ) {
     1207            return $service_dates;
     1208        }
     1209
     1210        $next_open_hours = $this->get_next_available_open_hour( $now );
     1211
     1212        $store_closed_message = sprintf(
     1213            // translators: 1 - day of the week; 2 - hour; 3 - minute; 4 - period AM or PM
     1214            __( 'We\'re closed and not taking orders right now. We\'ll be taking orders again from %1$s at %2$s:%3$s %4$s', 'orderable' ),
     1215            $next_open_hours['day'],
     1216            $next_open_hours['from']['hour'],
     1217            $next_open_hours['from']['minute'],
     1218            $next_open_hours['from']['period']
     1219        );
     1220
     1221        /**
     1222         * Filter the store closed message.
     1223         *
     1224         * @since 1.20.0
     1225         * @hook orderable_location_store_closed_message
     1226         * @param string $store_closed_message The message.
     1227         * @param array|null $next_open_hours The next open hour data.
     1228         * @param array|bool                 $service_dates  The service dates available. If true,
     1229         *                                                   the service doesn't require date/time selection.
     1230         *                                                   If false, a service should be selected.
     1231         * @param string                     $type           The type of service. E.g. delivery, pickup.
     1232         * @param Orderable_Location_Single  $location       The location instance.
     1233         */
     1234        $store_closed_message = apply_filters( 'orderable_location_store_closed_message', $store_closed_message, $next_open_hours, $service_dates, $type, $location );
     1235
     1236        add_filter(
     1237            'woocommerce_no_shipping_available_html',
     1238            function( $html ) use ( $store_closed_message ) {
     1239                return $store_closed_message;
     1240            },
     1241            20
     1242        );
     1243       
     1244        add_action(
     1245            'woocommerce_before_checkout_form',
     1246            function() use ( $store_closed_message ) {
     1247                if ( ! wc_has_notice( $store_closed_message, 'notice' ) ) {
     1248                    wc_add_notice( $store_closed_message, 'notice' );
     1249                }
     1250            },
     1251            20
     1252        );
     1253
     1254        return false;
     1255    }
     1256
     1257    /**
     1258     * Check if it's within open hours.
     1259     *
     1260     * @param DateTime $date_time The date to check.
     1261     * @return boolean
     1262     */
     1263    protected function is_within_open_hours( DateTime $date_time ) {
     1264        // 0 (for Sunday) through 6 (for Saturday)
     1265        $numeric_day = (int) $date_time->format( 'w' );
     1266        $open_hours  = $this->get_open_hours();
     1267
     1268        if ( empty( $open_hours[ $numeric_day ]['enabled'] ) ) {
     1269            return false;
     1270        }
     1271
     1272        $open_from      = Orderable_Timings::convert_time_to_24_hour( $open_hours[ $numeric_day ]['from'] );
     1273        $open_from_date = clone $date_time;
     1274        $open_from_date->setTime( $open_from['hour'], $open_from['minute'] );
     1275
     1276        if ( $date_time < $open_from_date ) {
     1277            return false;
     1278        }
     1279
     1280        $open_to      = Orderable_Timings::convert_time_to_24_hour( $open_hours[ $numeric_day ]['to'] );
     1281        $open_to_date = clone $date_time;
     1282        $open_to_date->setTime( $open_to['hour'], $open_to['minute'] );
     1283
     1284        if ( $date_time >= $open_to_date ) {
     1285            return false;
     1286        }
     1287
     1288        return true;
     1289    }
     1290
     1291    /**
     1292     * Get next available open hour
     1293     *
     1294     * @param DateTime $current The date time to be checked.
     1295     * @return array|null
     1296     */
     1297    protected function get_next_available_open_hour( DateTime $current ) {
     1298        // 0 (for Sunday) through 6 (for Saturday)
     1299        $numeric_day = (int) $current->format( 'w' );
     1300        $open_hours  = $this->get_open_hours();
     1301
     1302        // Keep only enabled days.
     1303        $open_hours = array_filter(
     1304            $open_hours,
     1305            function( $day_hours ) {
     1306                return ! empty( $day_hours['enabled'] );
     1307            }
     1308        );
     1309
     1310        if ( empty( $open_hours ) ) {
     1311            return null;
     1312        }
     1313
     1314        $days = Orderable_Timings::get_days_of_the_week();
     1315
     1316        $with_day_label = function( array $open_hour, int $day ) use ( $days, $numeric_day ) : array {
     1317            $open_hour['day'] = ( $day === $numeric_day )
     1318                ? 'today'
     1319                : ( $days[ $day ] ?? (string) $day );
     1320
     1321            return $open_hour;
     1322        };
     1323
     1324        if ( isset( $open_hours[ $numeric_day ] ) && ! empty( $open_hours[ $numeric_day ]['from'] ) ) {
     1325            $from = Orderable_Timings::convert_time_to_24_hour( $open_hours[ $numeric_day ]['from'] );
     1326
     1327            $open_from = clone $current;
     1328            $open_from->setTime( (int) $from['hour'], (int) $from['minute'] );
     1329
     1330            if ( $current < $open_from ) {
     1331                return $with_day_label( $open_hours[ $numeric_day ], $numeric_day );
     1332            }
     1333        }
     1334
     1335        for ( $i = 1; $i <= 7; $i++ ) {
     1336            $day = ( $numeric_day + $i ) % 7;
     1337
     1338            if ( isset( $open_hours[ $day ] ) ) {
     1339                return $with_day_label( $open_hours[ $day ], $day );
     1340            }
     1341        }
     1342       
     1343        return null;
     1344    }
    11741345}
  • orderable/trunk/inc/modules/location/class-location.php

    r3143111 r3438713  
    7878        $location = self::get_main_location();
    7979
    80         $settings['store_general_service_hours_delivery']    = $location->get_service_hours( 'delivery' );
    81         $settings['store_general_service_hours_pickup']      = $location->get_service_hours( 'pickup' );
    82         $settings['store_general_services']                  = $location->get_services();
    83         $settings['store_general_service_hours_pickup_same'] = $location->get_pickup_hours_same_as_delivery();
    84         $settings['store_general_asap']                      = $location->get_asap_settings();
    85         $settings['store_general_lead_time']                 = $location->get_lead_time();
    86         $settings['store_general_preorder']                  = $location->get_preorder_days();
    87         $settings['store_general_calculation_method']        = $location->get_delivery_calculation_method();
    88         $settings['orderable_override_open_hours']           = $location->get_override_default_open_hours();
     80        $settings['store_general_service_hours_delivery']                   = $location->get_service_hours( 'delivery' );
     81        $settings['store_general_service_hours_pickup']                     = $location->get_service_hours( 'pickup' );
     82        $settings['store_general_services']                                 = $location->get_services();
     83        $settings['store_general_service_hours_pickup_same']                = $location->get_pickup_hours_same_as_delivery();
     84        $settings['store_general_asap']                                     = $location->get_asap_settings();
     85        $settings['store_general_lead_time']                                = $location->get_lead_time();
     86        $settings['store_general_preorder']                                 = $location->get_preorder_days();
     87        $settings['store_general_calculation_method']                       = $location->get_delivery_calculation_method();
     88        $settings['orderable_override_open_hours']                          = $location->get_override_default_open_hours();
     89        $settings['orderable_enable_placing_orders_only_within_open_hours'] = $location->get_enable_placing_orders_only_within_open_hours();
    8990
    9091        return $settings;
  • orderable/trunk/inc/modules/order-reminders/assets/frontend/css/order-reminders.css

    r3101824 r3438713  
    111111
    112112.orderable-order-date-time-reminders-modal__select[disabled] {
    113   background-color: oklch(0.961151 0 0);
    114   color: oklch(0.278078 0.029596 256.848/0.4);
     113  background-color: oklch(96.1151% 0 0deg);
     114  color: oklch(27.8078% 0.029596 256.848deg / 0.4);
    115115  cursor: not-allowed;
    116116}
  • orderable/trunk/inc/modules/order-reminders/assets/frontend/css/order-reminders.min.css

    r3101824 r3438713  
    1 .orderable-order-date-time-reminders-modal{position:fixed;width:100%;background:#000;top:0;left:0;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000}.orderable-order-date-time-reminders-modal__inner{background:#fff;width:470px;border-radius:8px;padding:36px 36px 10px}.orderable-order-date-time-reminders-modal__header{text-align:center;font-weight:500;font-size:28px;color:#000;margin-bottom:26px}.orderable-order-date-time-reminders-modal__label{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:unset;line-height:1.4;color:#000;display:block;margin-bottom:5px}.orderable-order-date-time-reminders-modal__select{background-color:transparent;background-image:url(../svg/arrow-down.svg)!important;background-position:right 15px top 50%;background-repeat:no-repeat;background-size:10px 10px;cursor:pointer;border:1px solid #dad9dd;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:none;box-shadow:none;color:#000;display:block;line-height:1em;max-width:unset;opacity:1;padding:10px 37px 12px 12px;width:100%;min-height:43px;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:unset;-webkit-appearance:none;-moz-appearance:none;appearance:none}.orderable-order-date-time-reminders-modal__select:focus{outline:unset;border-color:#000}.orderable-order-date-time-reminders-modal__save{font-size:18px;border-radius:30px;height:50px}.orderable-order-date-time-reminders-modal__cancel{font-size:16px;border-radius:30px;background-color:transparent}.orderable-order-date-time-reminders-modal__footer{text-align:center}.orderable-order-date-time-reminders-modal__form{margin-bottom:10px}.orderable-order-date-time-reminders-modal__time{margin-top:15px}.orderable-order-date-time-reminders-modal--hidden{display:none}.orderable-order-date-time-reminders-modal__select[disabled]{background-color:oklch(.961151 0 0);color:oklch(.278078 .029596 256.848/.4);cursor:not-allowed}
     1.orderable-order-date-time-reminders-modal{position:fixed;width:100%;background:#000;top:0;left:0;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;z-index:1000}.orderable-order-date-time-reminders-modal__inner{background:#fff;width:470px;border-radius:8px;padding:36px 36px 10px}.orderable-order-date-time-reminders-modal__header{text-align:center;font-weight:500;font-size:28px;color:#000;margin-bottom:26px}.orderable-order-date-time-reminders-modal__label{-webkit-box-sizing:border-box;box-sizing:border-box;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:unset;line-height:1.4;color:#000;display:block;margin-bottom:5px}.orderable-order-date-time-reminders-modal__select{background-color:transparent;background-image:url(../svg/arrow-down.svg)!important;background-position:right 15px top 50%;background-repeat:no-repeat;background-size:10px 10px;cursor:pointer;border:1px solid #dad9dd;border-radius:3px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-shadow:none;box-shadow:none;color:#000;display:block;line-height:1em;max-width:unset;opacity:1;padding:10px 37px 12px 12px;width:100%;min-height:43px;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:16px;letter-spacing:unset;-webkit-appearance:none;-moz-appearance:none;appearance:none}.orderable-order-date-time-reminders-modal__select:focus{outline:unset;border-color:#000}.orderable-order-date-time-reminders-modal__save{font-size:18px;border-radius:30px;height:50px}.orderable-order-date-time-reminders-modal__cancel{font-size:16px;border-radius:30px;background-color:transparent}.orderable-order-date-time-reminders-modal__footer{text-align:center}.orderable-order-date-time-reminders-modal__form{margin-bottom:10px}.orderable-order-date-time-reminders-modal__time{margin-top:15px}.orderable-order-date-time-reminders-modal--hidden{display:none}.orderable-order-date-time-reminders-modal__select[disabled]{background-color:oklch(96.1151% 0 0deg);color:oklch(27.8078% .029596 256.848deg / .4);cursor:not-allowed}
  • orderable/trunk/languages/orderable.pot

    r3429737 r3438713  
    1 # Copyright (C) 2025 orderable
     1# Copyright (C) 2026 orderable
    22# This file is distributed under the same license as the orderable package.
    33msgid ""
     
    77"Content-Type: text/plain; charset=UTF-8\n"
    88"Content-Transfer-Encoding: 8bit\n"
    9 "POT-Creation-Date: 2025-12-30 15:19+0000\n"
     9"POT-Creation-Date: 2026-01-13 11:47+0000\n"
    1010"X-Poedit-Basepath: ..\n"
    1111"X-Poedit-KeywordsList: __;_e;_ex:1,2c;_n:1,2;_n_noop:1,2;_nx:1,2,4c;_nx_noop:1,2,3c;_x:1,2c;esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
     
    434434msgstr ""
    435435
    436 #: inc/database/tables/class-location-locations-table.php:198, inc/modules/receipt-layouts/blocks/order-location/build/render.php:16, inc/modules/receipt-layouts/blocks/order-location/src/render.php:16
     436#: inc/database/tables/class-location-locations-table.php:248, inc/modules/receipt-layouts/blocks/order-location/build/render.php:16, inc/modules/receipt-layouts/blocks/order-location/src/render.php:16
    437437msgid "Main Location"
    438438msgstr ""
     
    640640msgstr ""
    641641
    642 #: inc/modules/location/class-location-single.php:495
     642#: inc/modules/location/class-location-single.php:507
    643643msgid "Closed"
    644644msgstr ""
    645645
    646 #: inc/modules/location/class-location-single.php:501
     646#: inc/modules/location/class-location-single.php:513
    647647msgid "Holiday"
    648648msgstr ""
    649649
    650 #: inc/modules/location/class-location-single.php:563, inc/modules/location/admin/meta-boxes/class-location-store-services-meta-box.php:491
     650#: inc/modules/location/class-location-single.php:575, inc/modules/location/admin/meta-boxes/class-location-store-services-meta-box.php:491
    651651msgid "All Day"
     652msgstr ""
     653
     654#. translators: 1 - day of the week; 2 - hour; 3 - minute; 4 - period AM or PM
     655#: inc/modules/location/class-location-single.php:1214
     656msgid "We're closed and not taking orders right now. We'll be taking orders again from %1$s at %2$s:%3$s %4$s"
    652657msgstr ""
    653658
     
    10441049msgstr ""
    10451050
    1046 #: inc/modules/timings/class-timings-settings.php:96, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:352
     1051#: inc/modules/timings/class-timings-settings.php:96, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:381
    10471052msgid "Max Orders (Day)"
    10481053msgstr ""
     
    14051410msgstr ""
    14061411
    1407 #: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:350, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:371
     1412#: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:179
     1413msgctxt "Open Hours"
     1414msgid "Restrict Orders to Open Hours"
     1415msgstr ""
     1416
     1417#: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:181
     1418msgctxt "Open Hours"
     1419msgid "Only allow orders during your opening hours. Customers attempting to order outside these times will see a message at checkout showing when you reopen."
     1420msgstr ""
     1421
     1422#: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:379, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:400
    14081423msgid "Open Hours (From)"
    14091424msgstr ""
    14101425
    1411 #: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:351, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:375
     1426#: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:380, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:404
    14121427msgid "Open Hours (To)"
    14131428msgstr ""
  • orderable/trunk/orderable.php

    r3429737 r3438713  
    44 * Author URI: https://orderable.com
    55 * Description: Take local online ordering to a whole new level with Orderable.
    6  * Version: 1.19.2
     6 * Version: 1.20.0
    77 * Author: Orderable
    88 * Text Domain: orderable
     
    2121     * @var string Plugin version.
    2222     */
    23     public static $version = '1.19.2';
     23    public static $version = '1.20.0';
    2424
    2525    /**
  • orderable/trunk/readme.txt

    r3429737 r3438713  
    55Tested up to: 6.9
    66Requires PHP: 5.6
    7 Stable tag: 1.19.2
     7Stable tag: 1.20.0
    88License: GPLv2 or later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
     
    1919Add your dishes, create your online ordering restaurant menu, customize your pickup/food delivery schedule, and manage your orders with ease.
    2020
    21 With Orderable, youll have everything you need to take your restaurant business online, with no commissions and no added fees.
     21With Orderable, you'll have everything you need to take your restaurant business online, with no commissions and no added fees.
    2222
    2323## Who is Orderable for? ##
     
    3434* Speciality Stores
    3535
    36 ## Orderables Features for Online Restaurant Ordering ##
     36## Orderable's Features for Online Restaurant Ordering ##
    3737
    3838* **[Online Ordering Menu](https://orderable.com/docs/how-to-create-product-layouts/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - With our ready-made layouts, no coding skills are required to create your online menu.
    3939* **Zero Transaction Fees** - We charge no fees per transaction, and there are no hidden costs.
    40 * **[Delivery/Pickup Date Slots](https://orderable.com/docs/pickup-delivery-date-slots/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Make restaurant management easy by setting exactly when youre available to deliver and accept pickup orders.
     40* **[Delivery/Pickup Date Slots](https://orderable.com/docs/pickup-delivery-date-slots/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Make restaurant management easy by setting exactly when you're available to deliver and accept pickup orders.
    4141* **ASAP Delivery** - Allow customers to select ASAP as their delivery/pickup preference.
    4242* **[Lead Time](https://orderable.com/docs/how-to-set-your-order-lead-time/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme) and Preorder Days** - Set lead time and preorder days for your orders so you have full control over your delivery schedule.
    43 * **[Holiday Scheduling](https://orderable.com/docs/how-to-set-holiday-hours/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Prevent orders you can’t fulfill on specific dates/special occasions.
    44 * **[Live Order View](https://orderable.com/docs/how-to-process-orders/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - View, manage, and process orders in real-time via Orderable’s live order screen.
     43* **[Holiday Scheduling](https://orderable.com/docs/how-to-set-holiday-hours/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Prevent orders you can't fulfill on specific dates/special occasions.
     44* **Restrict Orders to Open Hours** - Set your open hours and only allow orders within those times/days.
     45* **[Live Order View](https://orderable.com/docs/how-to-process-orders/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - View, manage, and process orders in real-time via Orderable's live order screen.
    4546* **Receipt/Ticket Printing** - Print orders directly to a local printer (physically or wirelessly connected). No need for a 3rd-party service.
    4647* **Receipt/Ticket Layouts** - Create and customize your own receipt layouts/designs of any kind, including Kitchen, Delivery, Packing Slip, and Order Confirmation receipts.
    47 * **Mobile Friendly Ordering** - Allow customers to order from their mobile device. Orderables layouts are mobile-friendly.
    48 * **[Automated Pickup/Delivery Slot Reminder Emails](https://orderable.com/docs/time-slot-reminders/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Send automated email reminders to customers who havent picked their slot yet.
     48* **Mobile Friendly Ordering** - Allow customers to order from their mobile device. Orderable's layouts are mobile-friendly.
     49* **[Automated Pickup/Delivery Slot Reminder Emails](https://orderable.com/docs/time-slot-reminders/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme)** - Send automated email reminders to customers who haven't picked their slot yet.
    4950* **Floating Cart Widget** - Instead of taking customers to the default WooCommerce checkout, a floating cart widget lets them see their order at a glance.
    5051
    5152Orderable works with the ecommerce plugin, WooCommerce (it even installs it for you). So you can use any online payment providers that WooCommerce offers (PayPal, Credit Card, Apple Pay, and more), add fees, and accept coupons.
    5253
    53 ## Orderables (Free) Features in Detail ##
     54## Orderable's (Free) Features in Detail ##
    5455
    5556The core Orderable plugin is 100% free. With this, you can start taking online orders in a matter of minutes. Here are the features that make Orderable the smart choice for your restaurant business.
     
    5758**✔️ Online Ordering Menu**
    5859
    59 By using Orderable, youll be able to create your online food menu in minutes.
    60 
    61 Once youve created your menu items/dishes, you can add them to an online menu that you customize. Display it as a grid or list layout, include images or not, and decide what you want to happen when a customer clicks on a dish.
     60By using Orderable, you'll be able to create your online food menu in minutes.
     61
     62Once you've created your menu items/dishes, you can add them to an online menu that you customize. Display it as a grid or list layout, include images or not, and decide what you want to happen when a customer clicks on a dish.
    6263
    6364**✔️ Zero Transaction Fees**
     
    7172Orderable allows you to select which days of the week you offer your pickup or delivery services and what delivery zones these apply to.
    7273
    73 Youll be able to add as many of these as you like and customize them for pickup, delivery, and different days of the week.
    74 
    75 Lets say you want to offer pickup only on the weekend. You can. Or you want to offer different delivery days for different delivery zones (with added delivery fees for the distance). You can do that, too.
     74You'll be able to add as many of these as you like and customize them for pickup, delivery, and different days of the week.
     75
     76Let's say you want to offer pickup only on the weekend. You can. Or you want to offer different delivery days for different delivery zones (with added delivery fees for the distance). You can do that, too.
    7677
    7778**✔️ ASAP Delivery**
     
    8788**✔️ Holiday Scheduling**
    8889
    89 With Orderable, you’ll be able to set up specific holiday dates or special occasions where you won’t offer delivery and/or pickup services.
     90With Orderable, you'll be able to set up specific holiday dates or special occasions where you won't offer delivery and/or pickup services.
    9091
    9192For example, if your store only accepts pickup orders on Christmas Eve, you can set up a holiday schedule to accept only this service without changing your entire schedule.
    9293
     94**✔️ Restrict Orders to Open Hours**
     95
     96You can set your store's open hours with Orderable's built-in settings. Then, if you want to restrict orders to these hours, you can turn on the Orderable setting.
     97
     98When a customer attempts to place an order out of hours, they'll see a message at checkout telling them when you'll reopen.
     99
    93100**✔️ Live Order View**
    94101
    95 View, manage, and process orders in real-time with Orderables live order screen.
     102View, manage, and process orders in real-time with Orderable's live order screen.
    96103
    97104This screen makes a noise when new orders come in and can be filtered for delivery and pickup orders so restaurant managers and kitchen staff can keep track.
     
    105112**✔️ Automated Pickup/Delivery Slot Reminder Emails**
    106113
    107 Send automated email reminders to customers who havent picked their slot yet.
     114Send automated email reminders to customers who haven't picked their slot yet.
    108115
    109116This is particularly useful for customers who checkout using Google or Apple Pay. Or if they forgot to set a date slot at the checkout.
     
    119126## Take It a Step Further With Orderable Pro ##
    120127
    121 The premium version of Orderable provides you with a whole host of revenue-boosting and scheduling features. If youre looking to take online ordering up a notch, [Orderable Pro](https://orderable.com/pricing/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme) is for you.
     128The premium version of Orderable provides you with a whole host of revenue-boosting and scheduling features. If you're looking to take online ordering up a notch, [Orderable Pro](https://orderable.com/pricing/?utm_source=orderable&utm_medium=wp.org&utm_campaign=readme) is for you.
    122129
    123130**Here are all the additional features you get with Orderable Pro:**
     
    132139* **Timed Products** - Set up products/product categories that only appear on your menu for certain days of the week or times of the day. Perfect for breakfast/lunch menus.
    133140* **Maximum Orders Per Day/Slot** - Determine the maximum number of orders you can take per day or per time slot to keep on top of your orders.
    134 * **Custom Order Statuses** - Create order statuses that are custom to your business and delivery system. For example, ‘Prepping,’ ‘Ready for Delivery,’ or ‘Quality Control.’
     141* **Custom Order Statuses** - Create order statuses that are custom to your business and delivery system. For example, ‘Prepping,' ‘Ready for Delivery,' or ‘Quality Control.'
    135142* **SMS, Email, & WhatsApp Notifications** - Based on your order statuses, send order notifications to customers, staff, or delivery drivers via email, SMS, or WhatsApp.
    136 * **Dietary & Promotional Product Labels** - Customize your menu with product labels that show off specific dish features. For example, ‘Vegan,’ ‘Gluten Free,’ or ‘Chef Special.’
    137 * **Nutritional Information** - Add a table of nutritional information to your dishs description by filling in some easy-to-use fields.
     143* **Dietary & Promotional Product Labels** - Customize your menu with product labels that show off specific dish features. For example, ‘Vegan,' ‘Gluten Free,' or ‘Chef Special.'
     144* **Nutritional Information** - Add a table of nutritional information to your dish's description by filling in some easy-to-use fields.
    138145* **Allergen Information** - Include specific allergen information to your food items and keep customers informed.
    139146* **Pause/Resume Orders** - Got an emergency or run out of ingredients? You can pause or resume orders directly from the live order view screen.
     
    146153== Installation ==
    1471541. Upload the Orderable zip via the \'Plugins\' menu in WordPress, or upload the Orderable folder to the /wp-content/plugins/ directory.
    148 2. Activate the Orderable plugin through the ‘Plugins menu in WordPress.
     1552. Activate the Orderable plugin through the ‘Plugins' menu in WordPress.
    149156
    150157== Screenshots ==
     
    171178Orderable has a receipt printing feature built-in. So, all you need is a local printer (physically or wirelessly connected) to start printing tickets/receipts. No need for a 3rd-party service.
    172179
    173 This doesnt include remote printing. You will need to have your printer in the same physical location as your device using Orderable.
     180This doesn't include remote printing. You will need to have your printer in the same physical location as your device using Orderable.
    174181
    175182= Can I install Orderable on my client's websites? =
     
    179186= What is required to use Orderable? =
    180187
    181 Orderable integrates with WordPress and uses WooCommerce for the checkout. So you will need a hosting account with WordPress and WooCommerce installed. If you dont have WooCommerce installed, Orderable will install it for you.
     188Orderable integrates with WordPress and uses WooCommerce for the checkout. So you will need a hosting account with WordPress and WooCommerce installed. If you don't have WooCommerce installed, Orderable will install it for you.
    182189= What payment gateways does Orderable support? =
    183190
     
    201208
    202209== Changelog ==
    203 **v1.19.2** (30 Dez 2025)
     210**v1.20.0** (13 Jan 2026)
     211[new] Allow receiving orders only within store Open Hours 
     212
     213**v1.19.2** (30 Dec 2025)
    204214[new] Dev filter: `orderable_live_view_last_order_id_query_args`
    205215[fix] Live Order View not showing the latest order when placing an order via the Checkout block
Note: See TracChangeset for help on using the changeset viewer.