Changeset 3438713
- Timestamp:
- 01/13/2026 02:59:26 PM (3 months ago)
- Location:
- orderable
- Files:
-
- 28 edited
- 1 copied
-
tags/1.20.0 (copied) (copied from orderable/trunk)
-
tags/1.20.0/assets/admin/css/main.css (modified) (4 diffs)
-
tags/1.20.0/assets/frontend/css/main.css (modified) (20 diffs)
-
tags/1.20.0/assets/frontend/css/main.min.css (modified) (1 diff)
-
tags/1.20.0/inc/class-helpers.php (modified) (1 diff)
-
tags/1.20.0/inc/database/class-database.php (modified) (3 diffs)
-
tags/1.20.0/inc/database/tables/class-location-locations-table.php (modified) (4 diffs)
-
tags/1.20.0/inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php (modified) (6 diffs)
-
tags/1.20.0/inc/modules/location/class-location-single.php (modified) (4 diffs)
-
tags/1.20.0/inc/modules/location/class-location.php (modified) (1 diff)
-
tags/1.20.0/inc/modules/order-reminders/assets/frontend/css/order-reminders.css (modified) (1 diff)
-
tags/1.20.0/inc/modules/order-reminders/assets/frontend/css/order-reminders.min.css (modified) (1 diff)
-
tags/1.20.0/languages/orderable.pot (modified) (6 diffs)
-
tags/1.20.0/orderable.php (modified) (2 diffs)
-
tags/1.20.0/readme.txt (modified) (13 diffs)
-
trunk/assets/admin/css/main.css (modified) (4 diffs)
-
trunk/assets/frontend/css/main.css (modified) (20 diffs)
-
trunk/assets/frontend/css/main.min.css (modified) (1 diff)
-
trunk/inc/class-helpers.php (modified) (1 diff)
-
trunk/inc/database/class-database.php (modified) (3 diffs)
-
trunk/inc/database/tables/class-location-locations-table.php (modified) (4 diffs)
-
trunk/inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php (modified) (6 diffs)
-
trunk/inc/modules/location/class-location-single.php (modified) (4 diffs)
-
trunk/inc/modules/location/class-location.php (modified) (1 diff)
-
trunk/inc/modules/order-reminders/assets/frontend/css/order-reminders.css (modified) (1 diff)
-
trunk/inc/modules/order-reminders/assets/frontend/css/order-reminders.min.css (modified) (1 diff)
-
trunk/languages/orderable.pot (modified) (6 diffs)
-
trunk/orderable.php (modified) (2 diffs)
-
trunk/readme.txt (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
orderable/tags/1.20.0/assets/admin/css/main.css
r3262287 r3438713 282 282 color: #fff; 283 283 font-size: 14px; 284 /* stylelint-disable-next-line no-descending-specificity */285 284 } 286 285 … … 306 305 color: #fff; 307 306 cursor: default; 307 } 308 309 body .submit .button-primary, 310 .orderable-admin-button { 311 /* stylelint-disable-next-line no-descending-specificity */ 308 312 } 309 313 … … 607 611 -ms-flex-align: center; 608 612 align-items: center; 609 /* stylelint-disable-next-line no-descending-specificity */610 613 } 611 614 … … 624 627 font-size: 12px; 625 628 opacity: 0.8; 629 } 630 631 .orderable-fields-row__header { 632 /* stylelint-disable-next-line no-descending-specificity */ 626 633 } 627 634 -
orderable/tags/1.20.0/assets/frontend/css/main.css
r3123410 r3438713 185 185 .orderable-button.orderable-button--out-of-stock:active { 186 186 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); 189 189 background: transparent !important; 190 190 } … … 342 342 .orderable-products-list__item { 343 343 padding: 0 0 24px; 344 border-bottom: 1px solid #ecf1f3;344 border-bottom: 1px solid rgb(236.2195121951, 240.7268292683, 242.9804878049); 345 345 } 346 346 .orderable-products-list__item:last-child { … … 945 945 right: 0; 946 946 z-index: 20; 947 color: #c7d4db;947 color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 948 948 -webkit-box-shadow: none; 949 949 box-shadow: none; … … 969 969 -webkit-transition: none; 970 970 transition: none; 971 fill: #c7d4db;971 fill: rgb(198.9024390244, 212.3658536585, 219.0975609756); 972 972 margin: -10px 0 0 -10px; 973 973 } … … 1044 1044 .orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li { 1045 1045 border: 1px solid #e34f4f; 1046 background: #fce9e9;1046 background: rgb(251.5, 233, 233); 1047 1047 color: #dc2323; 1048 1048 padding: 6px 12px 6px 28px !important; … … 1162 1162 margin: 0; 1163 1163 z-index: 100; 1164 border-color: #c7d4db;1164 border-color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1165 1165 } 1166 1166 … … 1171 1171 height: 18px; 1172 1172 width: 2px; 1173 background-color: #c7d4db;1173 background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1174 1174 top: 50%; 1175 1175 margin: 0 0 0 -2px; … … 1191 1191 1192 1192 .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); 1195 1195 } 1196 1196 1197 1197 .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); 1199 1199 } 1200 1200 … … 1427 1427 white-space: nowrap; 1428 1428 line-height: 40px; 1429 color: #405763;1429 color: rgb(63.6097560976, 87.4634146341, 99.3902439024); 1430 1430 font-weight: 400; 1431 1431 border-radius: 20px; 1432 1432 -webkit-transition: all 150ms ease-out; 1433 1433 transition: all 150ms ease-out; 1434 background: #ecf1f3;1434 background: rgb(236.2195121951, 240.7268292683, 242.9804878049); 1435 1435 } 1436 1436 … … 1442 1442 1443 1443 a.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); 1445 1445 text-decoration: none; 1446 background: #c7d4db;1446 background: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1447 1447 } 1448 1448 … … 1497 1497 .orderable-accordion { 1498 1498 margin: 24px 0; 1499 background: #f6f8f9;1499 background: rgb(245.5487804878, 247.8170731707, 248.9512195122); 1500 1500 padding: 0 24px; 1501 1501 border-radius: 6px; … … 1528 1528 height: 11px; 1529 1529 width: 2px; 1530 background-color: #c7d4db;1530 background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1531 1531 top: 50%; 1532 1532 display: block; … … 1552 1552 1553 1553 .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; 1555 1555 } 1556 1556 … … 1610 1610 width: 10px; 1611 1611 border-radius: 10px; 1612 background: #d6e0e5;1612 background: rgb(214.4512195122, 224.1829268293, 229.0487804878); 1613 1613 } 1614 1614 1615 1615 .orderable-sb-scrollbar:hover { 1616 background: #c7d4db;1616 background: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1617 1617 } 1618 1618 … … 1648 1648 /* Elements */ 1649 1649 .orderable-quantity-roller__roller { 1650 border: 2px solid #c7d4db;1650 border: 2px solid rgb(198.9024390244, 212.3658536585, 219.0975609756); 1651 1651 border-radius: 20px; 1652 1652 height: 40px; … … 1670 1670 border-radius: 0; 1671 1671 text-align: center; 1672 color: #c7d4db;1672 color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1673 1673 line-height: 36px; 1674 1674 -webkit-box-shadow: none; … … 1692 1692 height: 2px; 1693 1693 width: 12px; 1694 background: #c7d4db;1694 background: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1695 1695 top: 50%; 1696 1696 left: 50%; … … 1714 1714 1715 1715 .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); 1718 1718 -webkit-box-shadow: none; 1719 1719 box-shadow: none; … … 1723 1723 1724 1724 .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); 1726 1726 } 1727 1727 … … 1792 1792 content: "x"; 1793 1793 margin: 0 8px; 1794 color: #c7d4db;1794 color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1795 1795 } 1796 1796 -
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 397 397 398 398 $allowed_html_tags['circle'] = array( 399 'cx' => array(),399 'cx' => array(), 400 400 'cy' => array(), 401 401 'r' => array(), -
orderable/tags/1.20.0/inc/database/class-database.php
r2912589 r3438713 22 22 23 23 if ( is_admin() && ! wp_doing_ajax() ) { 24 add_action( 'orderable_after_create_custom_tables', array( __CLASS__, 'upgrade s' ) );24 add_action( 'orderable_after_create_custom_tables', array( __CLASS__, 'upgrade_1_8_0' ) ); 25 25 self::create_tables(); 26 self::upgrades(); 26 27 } 27 28 … … 152 153 public static function upgrades() { 153 154 $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', 155 157 ); 156 158 … … 190 192 do_action( 'orderable_upgrade_database_routine', '1.8.0' ); 191 193 } 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 } 192 204 } -
orderable/tags/1.20.0/inc/database/tables/class-location-locations-table.php
r3101824 r3438713 54 54 override_default_open_hours boolean DEFAULT NULL, 55 55 open_hours longtext NULL, 56 enable_placing_orders_only_within_open_hours boolean DEFAULT NULL, 56 57 delivery boolean DEFAULT NULL, 57 58 pickup boolean DEFAULT NULL, … … 81 82 */ 82 83 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; 85 95 } 86 96 } … … 190 200 191 201 /** 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 /** 192 242 * Get default main location data. 193 243 * … … 196 246 public static function get_default_main_location_data() { 197 247 $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, 219 270 ); 220 271 -
orderable/tags/1.20.0/inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php
r3143111 r3438713 63 63 'orderable_override_open_hours' => $location->get_override_default_open_hours(), 64 64 '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']; 68 70 69 71 $class_toggle_field_value = $override_open_hours ? 'enabled' : 'disabled'; … … 172 174 </div> 173 175 </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> 174 201 </div> 175 202 </div> … … 215 242 $default_data = array( 216 243 'orderable_override_open_hours' => 'no', 244 'orderable_enable_placing_orders_only_within_open_hours' => 'no', 217 245 'store_general_open_hours' => array(), 218 246 ); … … 234 262 $store_open_hours_data = array( 235 263 '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' ), 236 265 'store_general_open_hours' => self::get_location_open_hours(), 237 266 ); … … 403 432 $location_id = Orderable_Location::get_location_id( $post_id ); 404 433 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' ); 407 437 408 438 $store_services = Orderable_Location_Store_Services_Meta_Box::get_store_services(); … … 424 454 425 455 $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, 439 470 ); 440 471 -
orderable/tags/1.20.0/inc/modules/location/class-location-single.php
r3192586 r3438713 18 18 */ 19 19 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, 32 33 ); 33 34 … … 60 61 */ 61 62 do_action( 'orderable_location_object_init', $this ); 63 64 add_filter( 'orderable_location_service_dates', [ $this, 'on_orderable_location_service_dates' ], 20, 3 ); 62 65 } 63 66 … … 190 193 public function get_override_default_open_hours() { 191 194 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 ); 192 204 } 193 205 … … 1172 1184 1173 1185 } 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 } 1174 1345 } -
orderable/tags/1.20.0/inc/modules/location/class-location.php
r3143111 r3438713 78 78 $location = self::get_main_location(); 79 79 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(); 89 90 90 91 return $settings; -
orderable/tags/1.20.0/inc/modules/order-reminders/assets/frontend/css/order-reminders.css
r3101824 r3438713 111 111 112 112 .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); 115 115 cursor: not-allowed; 116 116 } -
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) 202 5orderable1 # Copyright (C) 2026 orderable 2 2 # This file is distributed under the same license as the orderable package. 3 3 msgid "" … … 7 7 "Content-Type: text/plain; charset=UTF-8\n" 8 8 "Content-Transfer-Encoding: 8bit\n" 9 "POT-Creation-Date: 202 5-12-30 15:19+0000\n"9 "POT-Creation-Date: 2026-01-13 11:47+0000\n" 10 10 "X-Poedit-Basepath: ..\n" 11 11 "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" … … 434 434 msgstr "" 435 435 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:16436 #: 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 437 437 msgid "Main Location" 438 438 msgstr "" … … 640 640 msgstr "" 641 641 642 #: inc/modules/location/class-location-single.php: 495642 #: inc/modules/location/class-location-single.php:507 643 643 msgid "Closed" 644 644 msgstr "" 645 645 646 #: inc/modules/location/class-location-single.php:5 01646 #: inc/modules/location/class-location-single.php:513 647 647 msgid "Holiday" 648 648 msgstr "" 649 649 650 #: inc/modules/location/class-location-single.php:5 63, inc/modules/location/admin/meta-boxes/class-location-store-services-meta-box.php:491650 #: inc/modules/location/class-location-single.php:575, inc/modules/location/admin/meta-boxes/class-location-store-services-meta-box.php:491 651 651 msgid "All Day" 652 msgstr "" 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 656 msgid "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" 652 657 msgstr "" 653 658 … … 1044 1049 msgstr "" 1045 1050 1046 #: inc/modules/timings/class-timings-settings.php:96, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:3 521051 #: inc/modules/timings/class-timings-settings.php:96, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:381 1047 1052 msgid "Max Orders (Day)" 1048 1053 msgstr "" … … 1405 1410 msgstr "" 1406 1411 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 1413 msgctxt "Open Hours" 1414 msgid "Restrict Orders to Open Hours" 1415 msgstr "" 1416 1417 #: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:181 1418 msgctxt "Open Hours" 1419 msgid "Only allow orders during your opening hours. Customers attempting to order outside these times will see a message at checkout showing when you reopen." 1420 msgstr "" 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 1408 1423 msgid "Open Hours (From)" 1409 1424 msgstr "" 1410 1425 1411 #: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:3 51, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:3751426 #: 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 1412 1427 msgid "Open Hours (To)" 1413 1428 msgstr "" -
orderable/tags/1.20.0/orderable.php
r3429737 r3438713 4 4 * Author URI: https://orderable.com 5 5 * Description: Take local online ordering to a whole new level with Orderable. 6 * Version: 1. 19.26 * Version: 1.20.0 7 7 * Author: Orderable 8 8 * Text Domain: orderable … … 21 21 * @var string Plugin version. 22 22 */ 23 public static $version = '1. 19.2';23 public static $version = '1.20.0'; 24 24 25 25 /** -
orderable/tags/1.20.0/readme.txt
r3429737 r3438713 5 5 Tested up to: 6.9 6 6 Requires PHP: 5.6 7 Stable tag: 1. 19.27 Stable tag: 1.20.0 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 19 19 Add your dishes, create your online ordering restaurant menu, customize your pickup/food delivery schedule, and manage your orders with ease. 20 20 21 With Orderable, you ’ll have everything you need to take your restaurant business online, with no commissions and no added fees.21 With Orderable, you'll have everything you need to take your restaurant business online, with no commissions and no added fees. 22 22 23 23 ## Who is Orderable for? ## … … 34 34 * Speciality Stores 35 35 36 ## Orderable ’s Features for Online Restaurant Ordering ##36 ## Orderable's Features for Online Restaurant Ordering ## 37 37 38 38 * **[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. 39 39 * **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 you ’re 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. 41 41 * **ASAP Delivery** - Allow customers to select ASAP as their delivery/pickup preference. 42 42 * **[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. 45 46 * **Receipt/Ticket Printing** - Print orders directly to a local printer (physically or wirelessly connected). No need for a 3rd-party service. 46 47 * **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. Orderable ’s 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 haven ’t 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. 49 50 * **Floating Cart Widget** - Instead of taking customers to the default WooCommerce checkout, a floating cart widget lets them see their order at a glance. 50 51 51 52 Orderable 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. 52 53 53 ## Orderable ’s (Free) Features in Detail ##54 ## Orderable's (Free) Features in Detail ## 54 55 55 56 The 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. … … 57 58 **✔️ Online Ordering Menu** 58 59 59 By using Orderable, you ’ll be able to create your online food menu in minutes.60 61 Once 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.60 By using Orderable, you'll be able to create your online food menu in minutes. 61 62 Once 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. 62 63 63 64 **✔️ Zero Transaction Fees** … … 71 72 Orderable allows you to select which days of the week you offer your pickup or delivery services and what delivery zones these apply to. 72 73 73 You ’ll 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 Let ’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.74 You'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 76 Let'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. 76 77 77 78 **✔️ ASAP Delivery** … … 87 88 **✔️ Holiday Scheduling** 88 89 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.90 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. 90 91 91 92 For 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. 92 93 94 **✔️ Restrict Orders to Open Hours** 95 96 You 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 98 When a customer attempts to place an order out of hours, they'll see a message at checkout telling them when you'll reopen. 99 93 100 **✔️ Live Order View** 94 101 95 View, manage, and process orders in real-time with Orderable ’s live order screen.102 View, manage, and process orders in real-time with Orderable's live order screen. 96 103 97 104 This 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. … … 105 112 **✔️ Automated Pickup/Delivery Slot Reminder Emails** 106 113 107 Send automated email reminders to customers who haven ’t picked their slot yet.114 Send automated email reminders to customers who haven't picked their slot yet. 108 115 109 116 This is particularly useful for customers who checkout using Google or Apple Pay. Or if they forgot to set a date slot at the checkout. … … 119 126 ## Take It a Step Further With Orderable Pro ## 120 127 121 The 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.128 The 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. 122 129 123 130 **Here are all the additional features you get with Orderable Pro:** … … 132 139 * **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. 133 140 * **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.' 135 142 * **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 dish ’s 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. 138 145 * **Allergen Information** - Include specific allergen information to your food items and keep customers informed. 139 146 * **Pause/Resume Orders** - Got an emergency or run out of ingredients? You can pause or resume orders directly from the live order view screen. … … 146 153 == Installation == 147 154 1. 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.155 2. Activate the Orderable plugin through the ‘Plugins' menu in WordPress. 149 156 150 157 == Screenshots == … … 171 178 Orderable 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. 172 179 173 This doesn ’t include remote printing. You will need to have your printer in the same physical location as your device using Orderable.180 This doesn't include remote printing. You will need to have your printer in the same physical location as your device using Orderable. 174 181 175 182 = Can I install Orderable on my client's websites? = … … 179 186 = What is required to use Orderable? = 180 187 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 don ’t have WooCommerce installed, Orderable will install it for you.188 Orderable 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. 182 189 = What payment gateways does Orderable support? = 183 190 … … 201 208 202 209 == 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) 204 214 [new] Dev filter: `orderable_live_view_last_order_id_query_args` 205 215 [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 282 282 color: #fff; 283 283 font-size: 14px; 284 /* stylelint-disable-next-line no-descending-specificity */285 284 } 286 285 … … 306 305 color: #fff; 307 306 cursor: default; 307 } 308 309 body .submit .button-primary, 310 .orderable-admin-button { 311 /* stylelint-disable-next-line no-descending-specificity */ 308 312 } 309 313 … … 607 611 -ms-flex-align: center; 608 612 align-items: center; 609 /* stylelint-disable-next-line no-descending-specificity */610 613 } 611 614 … … 624 627 font-size: 12px; 625 628 opacity: 0.8; 629 } 630 631 .orderable-fields-row__header { 632 /* stylelint-disable-next-line no-descending-specificity */ 626 633 } 627 634 -
orderable/trunk/assets/frontend/css/main.css
r3123410 r3438713 185 185 .orderable-button.orderable-button--out-of-stock:active { 186 186 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); 189 189 background: transparent !important; 190 190 } … … 342 342 .orderable-products-list__item { 343 343 padding: 0 0 24px; 344 border-bottom: 1px solid #ecf1f3;344 border-bottom: 1px solid rgb(236.2195121951, 240.7268292683, 242.9804878049); 345 345 } 346 346 .orderable-products-list__item:last-child { … … 945 945 right: 0; 946 946 z-index: 20; 947 color: #c7d4db;947 color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 948 948 -webkit-box-shadow: none; 949 949 box-shadow: none; … … 969 969 -webkit-transition: none; 970 970 transition: none; 971 fill: #c7d4db;971 fill: rgb(198.9024390244, 212.3658536585, 219.0975609756); 972 972 margin: -10px 0 0 -10px; 973 973 } … … 1044 1044 .orderable-drawer__cart .orderable-mini-cart__notices .woocommerce-error li { 1045 1045 border: 1px solid #e34f4f; 1046 background: #fce9e9;1046 background: rgb(251.5, 233, 233); 1047 1047 color: #dc2323; 1048 1048 padding: 6px 12px 6px 28px !important; … … 1162 1162 margin: 0; 1163 1163 z-index: 100; 1164 border-color: #c7d4db;1164 border-color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1165 1165 } 1166 1166 … … 1171 1171 height: 18px; 1172 1172 width: 2px; 1173 background-color: #c7d4db;1173 background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1174 1174 top: 50%; 1175 1175 margin: 0 0 0 -2px; … … 1191 1191 1192 1192 .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); 1195 1195 } 1196 1196 1197 1197 .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); 1199 1199 } 1200 1200 … … 1427 1427 white-space: nowrap; 1428 1428 line-height: 40px; 1429 color: #405763;1429 color: rgb(63.6097560976, 87.4634146341, 99.3902439024); 1430 1430 font-weight: 400; 1431 1431 border-radius: 20px; 1432 1432 -webkit-transition: all 150ms ease-out; 1433 1433 transition: all 150ms ease-out; 1434 background: #ecf1f3;1434 background: rgb(236.2195121951, 240.7268292683, 242.9804878049); 1435 1435 } 1436 1436 … … 1442 1442 1443 1443 a.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); 1445 1445 text-decoration: none; 1446 background: #c7d4db;1446 background: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1447 1447 } 1448 1448 … … 1497 1497 .orderable-accordion { 1498 1498 margin: 24px 0; 1499 background: #f6f8f9;1499 background: rgb(245.5487804878, 247.8170731707, 248.9512195122); 1500 1500 padding: 0 24px; 1501 1501 border-radius: 6px; … … 1528 1528 height: 11px; 1529 1529 width: 2px; 1530 background-color: #c7d4db;1530 background-color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1531 1531 top: 50%; 1532 1532 display: block; … … 1552 1552 1553 1553 .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; 1555 1555 } 1556 1556 … … 1610 1610 width: 10px; 1611 1611 border-radius: 10px; 1612 background: #d6e0e5;1612 background: rgb(214.4512195122, 224.1829268293, 229.0487804878); 1613 1613 } 1614 1614 1615 1615 .orderable-sb-scrollbar:hover { 1616 background: #c7d4db;1616 background: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1617 1617 } 1618 1618 … … 1648 1648 /* Elements */ 1649 1649 .orderable-quantity-roller__roller { 1650 border: 2px solid #c7d4db;1650 border: 2px solid rgb(198.9024390244, 212.3658536585, 219.0975609756); 1651 1651 border-radius: 20px; 1652 1652 height: 40px; … … 1670 1670 border-radius: 0; 1671 1671 text-align: center; 1672 color: #c7d4db;1672 color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1673 1673 line-height: 36px; 1674 1674 -webkit-box-shadow: none; … … 1692 1692 height: 2px; 1693 1693 width: 12px; 1694 background: #c7d4db;1694 background: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1695 1695 top: 50%; 1696 1696 left: 50%; … … 1714 1714 1715 1715 .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); 1718 1718 -webkit-box-shadow: none; 1719 1719 box-shadow: none; … … 1723 1723 1724 1724 .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); 1726 1726 } 1727 1727 … … 1792 1792 content: "x"; 1793 1793 margin: 0 8px; 1794 color: #c7d4db;1794 color: rgb(198.9024390244, 212.3658536585, 219.0975609756); 1795 1795 } 1796 1796 -
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 397 397 398 398 $allowed_html_tags['circle'] = array( 399 'cx' => array(),399 'cx' => array(), 400 400 'cy' => array(), 401 401 'r' => array(), -
orderable/trunk/inc/database/class-database.php
r2912589 r3438713 22 22 23 23 if ( is_admin() && ! wp_doing_ajax() ) { 24 add_action( 'orderable_after_create_custom_tables', array( __CLASS__, 'upgrade s' ) );24 add_action( 'orderable_after_create_custom_tables', array( __CLASS__, 'upgrade_1_8_0' ) ); 25 25 self::create_tables(); 26 self::upgrades(); 26 27 } 27 28 … … 152 153 public static function upgrades() { 153 154 $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', 155 157 ); 156 158 … … 190 192 do_action( 'orderable_upgrade_database_routine', '1.8.0' ); 191 193 } 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 } 192 204 } -
orderable/trunk/inc/database/tables/class-location-locations-table.php
r3101824 r3438713 54 54 override_default_open_hours boolean DEFAULT NULL, 55 55 open_hours longtext NULL, 56 enable_placing_orders_only_within_open_hours boolean DEFAULT NULL, 56 57 delivery boolean DEFAULT NULL, 57 58 pickup boolean DEFAULT NULL, … … 81 82 */ 82 83 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; 85 95 } 86 96 } … … 190 200 191 201 /** 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 /** 192 242 * Get default main location data. 193 243 * … … 196 246 public static function get_default_main_location_data() { 197 247 $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, 219 270 ); 220 271 -
orderable/trunk/inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php
r3143111 r3438713 63 63 'orderable_override_open_hours' => $location->get_override_default_open_hours(), 64 64 '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']; 68 70 69 71 $class_toggle_field_value = $override_open_hours ? 'enabled' : 'disabled'; … … 172 174 </div> 173 175 </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> 174 201 </div> 175 202 </div> … … 215 242 $default_data = array( 216 243 'orderable_override_open_hours' => 'no', 244 'orderable_enable_placing_orders_only_within_open_hours' => 'no', 217 245 'store_general_open_hours' => array(), 218 246 ); … … 234 262 $store_open_hours_data = array( 235 263 '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' ), 236 265 'store_general_open_hours' => self::get_location_open_hours(), 237 266 ); … … 403 432 $location_id = Orderable_Location::get_location_id( $post_id ); 404 433 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' ); 407 437 408 438 $store_services = Orderable_Location_Store_Services_Meta_Box::get_store_services(); … … 424 454 425 455 $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, 439 470 ); 440 471 -
orderable/trunk/inc/modules/location/class-location-single.php
r3192586 r3438713 18 18 */ 19 19 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, 32 33 ); 33 34 … … 60 61 */ 61 62 do_action( 'orderable_location_object_init', $this ); 63 64 add_filter( 'orderable_location_service_dates', [ $this, 'on_orderable_location_service_dates' ], 20, 3 ); 62 65 } 63 66 … … 190 193 public function get_override_default_open_hours() { 191 194 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 ); 192 204 } 193 205 … … 1172 1184 1173 1185 } 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 } 1174 1345 } -
orderable/trunk/inc/modules/location/class-location.php
r3143111 r3438713 78 78 $location = self::get_main_location(); 79 79 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(); 89 90 90 91 return $settings; -
orderable/trunk/inc/modules/order-reminders/assets/frontend/css/order-reminders.css
r3101824 r3438713 111 111 112 112 .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); 115 115 cursor: not-allowed; 116 116 } -
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) 202 5orderable1 # Copyright (C) 2026 orderable 2 2 # This file is distributed under the same license as the orderable package. 3 3 msgid "" … … 7 7 "Content-Type: text/plain; charset=UTF-8\n" 8 8 "Content-Transfer-Encoding: 8bit\n" 9 "POT-Creation-Date: 202 5-12-30 15:19+0000\n"9 "POT-Creation-Date: 2026-01-13 11:47+0000\n" 10 10 "X-Poedit-Basepath: ..\n" 11 11 "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" … … 434 434 msgstr "" 435 435 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:16436 #: 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 437 437 msgid "Main Location" 438 438 msgstr "" … … 640 640 msgstr "" 641 641 642 #: inc/modules/location/class-location-single.php: 495642 #: inc/modules/location/class-location-single.php:507 643 643 msgid "Closed" 644 644 msgstr "" 645 645 646 #: inc/modules/location/class-location-single.php:5 01646 #: inc/modules/location/class-location-single.php:513 647 647 msgid "Holiday" 648 648 msgstr "" 649 649 650 #: inc/modules/location/class-location-single.php:5 63, inc/modules/location/admin/meta-boxes/class-location-store-services-meta-box.php:491650 #: inc/modules/location/class-location-single.php:575, inc/modules/location/admin/meta-boxes/class-location-store-services-meta-box.php:491 651 651 msgid "All Day" 652 msgstr "" 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 656 msgid "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" 652 657 msgstr "" 653 658 … … 1044 1049 msgstr "" 1045 1050 1046 #: inc/modules/timings/class-timings-settings.php:96, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:3 521051 #: inc/modules/timings/class-timings-settings.php:96, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:381 1047 1052 msgid "Max Orders (Day)" 1048 1053 msgstr "" … … 1405 1410 msgstr "" 1406 1411 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 1413 msgctxt "Open Hours" 1414 msgid "Restrict Orders to Open Hours" 1415 msgstr "" 1416 1417 #: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:181 1418 msgctxt "Open Hours" 1419 msgid "Only allow orders during your opening hours. Customers attempting to order outside these times will see a message at checkout showing when you reopen." 1420 msgstr "" 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 1408 1423 msgid "Open Hours (From)" 1409 1424 msgstr "" 1410 1425 1411 #: inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:3 51, inc/modules/location/admin/meta-boxes/class-location-open-hours-meta-box.php:3751426 #: 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 1412 1427 msgid "Open Hours (To)" 1413 1428 msgstr "" -
orderable/trunk/orderable.php
r3429737 r3438713 4 4 * Author URI: https://orderable.com 5 5 * Description: Take local online ordering to a whole new level with Orderable. 6 * Version: 1. 19.26 * Version: 1.20.0 7 7 * Author: Orderable 8 8 * Text Domain: orderable … … 21 21 * @var string Plugin version. 22 22 */ 23 public static $version = '1. 19.2';23 public static $version = '1.20.0'; 24 24 25 25 /** -
orderable/trunk/readme.txt
r3429737 r3438713 5 5 Tested up to: 6.9 6 6 Requires PHP: 5.6 7 Stable tag: 1. 19.27 Stable tag: 1.20.0 8 8 License: GPLv2 or later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 19 19 Add your dishes, create your online ordering restaurant menu, customize your pickup/food delivery schedule, and manage your orders with ease. 20 20 21 With Orderable, you ’ll have everything you need to take your restaurant business online, with no commissions and no added fees.21 With Orderable, you'll have everything you need to take your restaurant business online, with no commissions and no added fees. 22 22 23 23 ## Who is Orderable for? ## … … 34 34 * Speciality Stores 35 35 36 ## Orderable ’s Features for Online Restaurant Ordering ##36 ## Orderable's Features for Online Restaurant Ordering ## 37 37 38 38 * **[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. 39 39 * **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 you ’re 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. 41 41 * **ASAP Delivery** - Allow customers to select ASAP as their delivery/pickup preference. 42 42 * **[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. 45 46 * **Receipt/Ticket Printing** - Print orders directly to a local printer (physically or wirelessly connected). No need for a 3rd-party service. 46 47 * **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. Orderable ’s 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 haven ’t 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. 49 50 * **Floating Cart Widget** - Instead of taking customers to the default WooCommerce checkout, a floating cart widget lets them see their order at a glance. 50 51 51 52 Orderable 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. 52 53 53 ## Orderable ’s (Free) Features in Detail ##54 ## Orderable's (Free) Features in Detail ## 54 55 55 56 The 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. … … 57 58 **✔️ Online Ordering Menu** 58 59 59 By using Orderable, you ’ll be able to create your online food menu in minutes.60 61 Once 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.60 By using Orderable, you'll be able to create your online food menu in minutes. 61 62 Once 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. 62 63 63 64 **✔️ Zero Transaction Fees** … … 71 72 Orderable allows you to select which days of the week you offer your pickup or delivery services and what delivery zones these apply to. 72 73 73 You ’ll 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 Let ’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.74 You'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 76 Let'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. 76 77 77 78 **✔️ ASAP Delivery** … … 87 88 **✔️ Holiday Scheduling** 88 89 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.90 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. 90 91 91 92 For 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. 92 93 94 **✔️ Restrict Orders to Open Hours** 95 96 You 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 98 When a customer attempts to place an order out of hours, they'll see a message at checkout telling them when you'll reopen. 99 93 100 **✔️ Live Order View** 94 101 95 View, manage, and process orders in real-time with Orderable ’s live order screen.102 View, manage, and process orders in real-time with Orderable's live order screen. 96 103 97 104 This 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. … … 105 112 **✔️ Automated Pickup/Delivery Slot Reminder Emails** 106 113 107 Send automated email reminders to customers who haven ’t picked their slot yet.114 Send automated email reminders to customers who haven't picked their slot yet. 108 115 109 116 This is particularly useful for customers who checkout using Google or Apple Pay. Or if they forgot to set a date slot at the checkout. … … 119 126 ## Take It a Step Further With Orderable Pro ## 120 127 121 The 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.128 The 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. 122 129 123 130 **Here are all the additional features you get with Orderable Pro:** … … 132 139 * **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. 133 140 * **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.' 135 142 * **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 dish ’s 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. 138 145 * **Allergen Information** - Include specific allergen information to your food items and keep customers informed. 139 146 * **Pause/Resume Orders** - Got an emergency or run out of ingredients? You can pause or resume orders directly from the live order view screen. … … 146 153 == Installation == 147 154 1. 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.155 2. Activate the Orderable plugin through the ‘Plugins' menu in WordPress. 149 156 150 157 == Screenshots == … … 171 178 Orderable 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. 172 179 173 This doesn ’t include remote printing. You will need to have your printer in the same physical location as your device using Orderable.180 This doesn't include remote printing. You will need to have your printer in the same physical location as your device using Orderable. 174 181 175 182 = Can I install Orderable on my client's websites? = … … 179 186 = What is required to use Orderable? = 180 187 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 don ’t have WooCommerce installed, Orderable will install it for you.188 Orderable 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. 182 189 = What payment gateways does Orderable support? = 183 190 … … 201 208 202 209 == 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) 204 214 [new] Dev filter: `orderable_live_view_last_order_id_query_args` 205 215 [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.