@salla.sa/twilight-components 3.0.18 → 3.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/dist/cjs/{Helper-D2VNt6eb.js → Helper-DqKJCL8G.js} +1 -1
  2. package/dist/cjs/{filepond-DkCudLhG.js → filepond-Byu0lc8z.js} +1 -1
  3. package/dist/cjs/{filepond-plugin-file-poster-C-uxFWfW.js → filepond-plugin-file-poster-qwx7lYZ-.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-validate-size-BikXTQW2.js → filepond-plugin-file-validate-size-C-n0P4TT.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-file-validate-type-Drs7PouU.js → filepond-plugin-file-validate-type-C8VOOXdT.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-image-edit-hxr0h9kt.js → filepond-plugin-image-edit-B9KG763Y.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-exif-orientation-CVZmWU_4.js → filepond-plugin-image-exif-orientation-Czt4pYzU.js} +1 -1
  8. package/dist/cjs/{filepond-plugin-image-preview-CBjPKx-d.js → filepond-plugin-image-preview-BFm1Zl0o.js} +1 -1
  9. package/dist/cjs/helpers-NV7wgP50.js +602 -0
  10. package/dist/cjs/{index-CTYg2zC6.js → index-CFW798jX.js} +2 -2
  11. package/dist/cjs/{intlTelInput-C9X0hKXV.js → intlTelInput-CLa2B89b.js} +1 -1
  12. package/dist/cjs/loader.cjs.js +2 -2
  13. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  14. package/dist/cjs/salla-accordion_6.cjs.entry.js +2 -2
  15. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +46 -3
  16. package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
  17. package/dist/cjs/salla-alert_2.cjs.entry.js +1 -1
  18. package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-applied-filters.cjs.entry.js +2 -2
  20. package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
  21. package/dist/cjs/salla-attachment-view_9.cjs.entry.js +11 -11
  22. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  23. package/dist/cjs/salla-basket-gap.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-bullet-delivery_3.cjs.entry.js +425 -119
  25. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  26. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-comment-form_9.cjs.entry.js +2 -2
  31. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  32. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-delivery-promise.cjs.entry.js +2 -2
  37. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  38. package/dist/cjs/salla-filters-widget.cjs.entry.js +2 -2
  39. package/dist/cjs/salla-filters.cjs.entry.js +2 -2
  40. package/dist/cjs/salla-free-shipping-banner.cjs.entry.js +1 -1
  41. package/dist/cjs/salla-free-shipping-tag.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-gift-card-redeem_2.cjs.entry.js +1 -1
  44. package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
  45. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  46. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +2 -2
  47. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  48. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  50. package/dist/cjs/salla-login-modal.cjs.entry.js +7 -2
  51. package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +1 -1
  52. package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +1 -1
  53. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  54. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  56. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  57. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-map_3.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  60. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +1 -1
  63. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +1 -1
  64. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  65. package/dist/cjs/salla-notification-item_2.cjs.entry.js +2 -2
  66. package/dist/cjs/salla-offer-modal.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  68. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  69. package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-details.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +1 -1
  75. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-order-items.cjs.entry.js +1 -1
  77. package/dist/cjs/salla-order-options-modal.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-order-payment.cjs.entry.js +1 -1
  79. package/dist/cjs/salla-order-rewards.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-order-shipments.cjs.entry.js +1 -1
  81. package/dist/cjs/salla-order-summary.cjs.entry.js +1 -1
  82. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  83. package/dist/cjs/salla-orders.cjs.entry.js +2 -2
  84. package/dist/cjs/salla-payments.cjs.entry.js +1 -1
  85. package/dist/cjs/salla-placeholder.cjs.entry.js +1 -1
  86. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  87. package/dist/cjs/salla-product-card-embed.cjs.entry.js +1 -1
  88. package/dist/cjs/salla-product-card.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-product-size-guide.cjs.entry.js +1 -1
  90. package/dist/cjs/salla-products-list.cjs.entry.js +9 -2
  91. package/dist/cjs/salla-products-slider.cjs.entry.js +2 -2
  92. package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
  93. package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +2 -2
  94. package/dist/cjs/salla-rating-modal.cjs.entry.js +2 -2
  95. package/dist/cjs/salla-review-factors-tags.cjs.entry.js +1 -1
  96. package/dist/cjs/salla-review-order-item.cjs.entry.js +1 -1
  97. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  98. package/dist/cjs/salla-search-product-card.cjs.entry.js +1 -1
  99. package/dist/cjs/salla-search.cjs.entry.js +2 -2
  100. package/dist/cjs/salla-skeleton.cjs.entry.js +1 -1
  101. package/dist/cjs/salla-social-share.cjs.entry.js +1 -1
  102. package/dist/cjs/salla-social.cjs.entry.js +1 -1
  103. package/dist/cjs/salla-tab-content_3.cjs.entry.js +1 -1
  104. package/dist/cjs/salla-thank-you-header.cjs.entry.js +1 -1
  105. package/dist/cjs/salla-thank-you-page.cjs.entry.js +1 -1
  106. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  107. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  108. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  109. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  110. package/dist/cjs/salla-user-settings.cjs.entry.js +1 -1
  111. package/dist/cjs/salla-verify.cjs.entry.js +1 -1
  112. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  113. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +1 -1
  114. package/dist/cjs/salla-wishlist-summary.cjs.entry.js +2 -2
  115. package/dist/cjs/twilight.cjs.js +2 -2
  116. package/dist/cjs/{vanilla-picker-BsLm8rHT.js → vanilla-picker-Vx_7G7bs.js} +1 -1
  117. package/dist/collection/components/salla-bullet-delivery/api-service.js +156 -25
  118. package/dist/collection/components/salla-bullet-delivery/helpers.js +143 -15
  119. package/dist/collection/components/salla-bullet-delivery/icons.js +17 -0
  120. package/dist/collection/components/salla-bullet-delivery/salla-bullet-delivery.css +490 -52
  121. package/dist/collection/components/salla-bullet-delivery/salla-bullet-delivery.js +417 -90
  122. package/dist/collection/components/salla-login-modal/salla-login-modal.js +6 -1
  123. package/dist/collection/components/salla-products-list/salla-products-list.js +7 -0
  124. package/dist/collection/components/salla-quick-buy/salla-quick-buy.js +44 -1
  125. package/dist/components/helpers.js +299 -40
  126. package/dist/components/index.js +2 -2
  127. package/dist/components/salla-bullet-delivery.js +430 -118
  128. package/dist/components/salla-login-modal2.js +6 -1
  129. package/dist/components/salla-products-list2.js +7 -0
  130. package/dist/components/salla-quick-buy2.js +44 -1
  131. package/dist/docs.json +1 -1
  132. package/dist/esm/{Helper-C1T-oD4J.js → Helper-I0CAizv1.js} +1 -1
  133. package/dist/esm/{filepond-BoWJzHeN.js → filepond-DTUYXV0J.js} +1 -1
  134. package/dist/esm/{filepond-plugin-file-poster-B6MkMtuC.js → filepond-plugin-file-poster-DydZjneT.js} +1 -1
  135. package/dist/esm/{filepond-plugin-file-validate-size-Dds_462B.js → filepond-plugin-file-validate-size-nbsCU2t9.js} +1 -1
  136. package/dist/esm/{filepond-plugin-file-validate-type-DrfGXNay.js → filepond-plugin-file-validate-type-Cl5B_DIy.js} +1 -1
  137. package/dist/esm/{filepond-plugin-image-edit-CN7eGg-7.js → filepond-plugin-image-edit-bzskFyFR.js} +1 -1
  138. package/dist/esm/{filepond-plugin-image-exif-orientation-CyhxK_6R.js → filepond-plugin-image-exif-orientation-MBDuxLaX.js} +1 -1
  139. package/dist/esm/{filepond-plugin-image-preview-DdKqAzT9.js → filepond-plugin-image-preview-N6wzEryW.js} +1 -1
  140. package/dist/esm/helpers-Cnh7Qptl.js +568 -0
  141. package/dist/esm/{index-DgUQRYr2.js → index-C9zdeQFI.js} +2 -2
  142. package/dist/esm/{intlTelInput-SwlavcFB.js → intlTelInput-B5L9nYtO.js} +1 -1
  143. package/dist/esm/loader.js +3 -3
  144. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  145. package/dist/esm/salla-accordion_6.entry.js +2 -2
  146. package/dist/esm/salla-add-product-button_5.entry.js +46 -3
  147. package/dist/esm/salla-advertisement.entry.js +1 -1
  148. package/dist/esm/salla-alert_2.entry.js +1 -1
  149. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  150. package/dist/esm/salla-applied-filters.entry.js +2 -2
  151. package/dist/esm/salla-apps-icons.entry.js +1 -1
  152. package/dist/esm/salla-attachment-view_9.entry.js +11 -11
  153. package/dist/esm/salla-badge.entry.js +1 -1
  154. package/dist/esm/salla-basket-gap.entry.js +1 -1
  155. package/dist/esm/salla-bullet-delivery_3.entry.js +425 -119
  156. package/dist/esm/salla-cart-coupons.entry.js +1 -1
  157. package/dist/esm/salla-cart-item-offers_2.entry.js +1 -1
  158. package/dist/esm/salla-cart-summary-card.entry.js +1 -1
  159. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  160. package/dist/esm/salla-comment-factors.entry.js +1 -1
  161. package/dist/esm/salla-comment-form_9.entry.js +2 -2
  162. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  163. package/dist/esm/salla-contacts.entry.js +1 -1
  164. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  165. package/dist/esm/salla-count-down.entry.js +1 -1
  166. package/dist/esm/salla-custom-fields.entry.js +1 -1
  167. package/dist/esm/salla-delivery-promise.entry.js +2 -2
  168. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  169. package/dist/esm/salla-filters-widget.entry.js +2 -2
  170. package/dist/esm/salla-filters.entry.js +2 -2
  171. package/dist/esm/salla-free-shipping-banner.entry.js +1 -1
  172. package/dist/esm/salla-free-shipping-tag.entry.js +1 -1
  173. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  174. package/dist/esm/salla-gift-card-redeem_2.entry.js +1 -1
  175. package/dist/esm/salla-gifting.entry.js +1 -1
  176. package/dist/esm/salla-hook.entry.js +1 -1
  177. package/dist/esm/salla-infinite-scroll.entry.js +2 -2
  178. package/dist/esm/salla-installment.entry.js +1 -1
  179. package/dist/esm/salla-list-tile.entry.js +1 -1
  180. package/dist/esm/salla-localization-modal.entry.js +1 -1
  181. package/dist/esm/salla-login-modal.entry.js +7 -2
  182. package/dist/esm/salla-loyalty-banner_10.entry.js +1 -1
  183. package/dist/esm/salla-loyalty-exchange-product-card.entry.js +1 -1
  184. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  185. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  186. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  187. package/dist/esm/salla-loyalty.entry.js +1 -1
  188. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  189. package/dist/esm/salla-map_3.entry.js +1 -1
  190. package/dist/esm/salla-menu.entry.js +1 -1
  191. package/dist/esm/salla-metadata.entry.js +1 -1
  192. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +1 -1
  193. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +1 -1
  194. package/dist/esm/salla-multiple-bundle-product.entry.js +1 -1
  195. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  196. package/dist/esm/salla-notification-item_2.entry.js +2 -2
  197. package/dist/esm/salla-offer-modal.entry.js +1 -1
  198. package/dist/esm/salla-offer.entry.js +1 -1
  199. package/dist/esm/salla-order-branch.entry.js +1 -1
  200. package/dist/esm/salla-order-cancel.entry.js +1 -1
  201. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  202. package/dist/esm/salla-order-details-options.entry.js +1 -1
  203. package/dist/esm/salla-order-details.entry.js +1 -1
  204. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  205. package/dist/esm/salla-order-edit-product-card.entry.js +1 -1
  206. package/dist/esm/salla-order-edit.entry.js +1 -1
  207. package/dist/esm/salla-order-items.entry.js +1 -1
  208. package/dist/esm/salla-order-options-modal.entry.js +1 -1
  209. package/dist/esm/salla-order-payment.entry.js +1 -1
  210. package/dist/esm/salla-order-rewards.entry.js +1 -1
  211. package/dist/esm/salla-order-shipments.entry.js +1 -1
  212. package/dist/esm/salla-order-summary.entry.js +1 -1
  213. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  214. package/dist/esm/salla-orders.entry.js +2 -2
  215. package/dist/esm/salla-payments.entry.js +1 -1
  216. package/dist/esm/salla-placeholder.entry.js +1 -1
  217. package/dist/esm/salla-price-range.entry.js +1 -1
  218. package/dist/esm/salla-product-card-embed.entry.js +1 -1
  219. package/dist/esm/salla-product-card.entry.js +1 -1
  220. package/dist/esm/salla-product-size-guide.entry.js +1 -1
  221. package/dist/esm/salla-products-list.entry.js +9 -2
  222. package/dist/esm/salla-products-slider.entry.js +2 -2
  223. package/dist/esm/salla-quick-order.entry.js +1 -1
  224. package/dist/esm/salla-rating-modal-v2.entry.js +2 -2
  225. package/dist/esm/salla-rating-modal.entry.js +2 -2
  226. package/dist/esm/salla-review-factors-tags.entry.js +1 -1
  227. package/dist/esm/salla-review-order-item.entry.js +1 -1
  228. package/dist/esm/salla-scopes.entry.js +1 -1
  229. package/dist/esm/salla-search-product-card.entry.js +1 -1
  230. package/dist/esm/salla-search.entry.js +2 -2
  231. package/dist/esm/salla-skeleton.entry.js +1 -1
  232. package/dist/esm/salla-social-share.entry.js +1 -1
  233. package/dist/esm/salla-social.entry.js +1 -1
  234. package/dist/esm/salla-tab-content_3.entry.js +1 -1
  235. package/dist/esm/salla-thank-you-header.entry.js +1 -1
  236. package/dist/esm/salla-thank-you-page.entry.js +1 -1
  237. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  238. package/dist/esm/salla-trust-badges.entry.js +1 -1
  239. package/dist/esm/salla-user-menu.entry.js +1 -1
  240. package/dist/esm/salla-user-profile.entry.js +1 -1
  241. package/dist/esm/salla-user-settings.entry.js +1 -1
  242. package/dist/esm/salla-verify.entry.js +1 -1
  243. package/dist/esm/salla-wallet.entry.js +1 -1
  244. package/dist/esm/salla-wishlist-actions.entry.js +1 -1
  245. package/dist/esm/salla-wishlist-summary.entry.js +2 -2
  246. package/dist/esm/twilight.js +3 -3
  247. package/dist/esm/{vanilla-picker-Buy50D7t.js → vanilla-picker-CAeu4f87.js} +1 -1
  248. package/dist/twilight/{p-bed54154.entry.js → p-01d5cd61.entry.js} +1 -1
  249. package/dist/twilight/{p-b3ada3d0.entry.js → p-0213fde4.entry.js} +1 -1
  250. package/dist/twilight/{p-d0ff9a3e.entry.js → p-036fbfc0.entry.js} +1 -1
  251. package/dist/twilight/{p-53735934.entry.js → p-0add41ce.entry.js} +1 -1
  252. package/dist/twilight/{p-bb8b2c85.entry.js → p-0b0d4942.entry.js} +1 -1
  253. package/dist/twilight/{p-d1121b3f.entry.js → p-17bcbf9b.entry.js} +1 -1
  254. package/dist/twilight/{p-6b5de500.entry.js → p-1867f7d4.entry.js} +1 -1
  255. package/dist/twilight/{p-ee65c489.entry.js → p-194ff38c.entry.js} +1 -1
  256. package/dist/twilight/{p-4ab5ee99.entry.js → p-20f9c62f.entry.js} +1 -1
  257. package/dist/twilight/{p-5e8d019e.entry.js → p-252748d9.entry.js} +1 -1
  258. package/dist/twilight/{p-6c3084c9.entry.js → p-290ce0bc.entry.js} +1 -1
  259. package/dist/twilight/{p-5694edf1.entry.js → p-2b930157.entry.js} +1 -1
  260. package/dist/twilight/{p-7fd9dc36.entry.js → p-2e4e15c5.entry.js} +1 -1
  261. package/dist/twilight/{p-b9d67694.entry.js → p-2e6537a3.entry.js} +1 -1
  262. package/dist/twilight/{p-7f97335a.entry.js → p-30d64bd1.entry.js} +1 -1
  263. package/dist/twilight/{p-516e4edc.entry.js → p-32495dd2.entry.js} +1 -1
  264. package/dist/twilight/{p-e9b03e9c.entry.js → p-32d9da31.entry.js} +1 -1
  265. package/dist/twilight/{p-9d15f22d.entry.js → p-32f100f8.entry.js} +1 -1
  266. package/dist/twilight/{p-6dccd40f.entry.js → p-386b3dcd.entry.js} +1 -1
  267. package/dist/twilight/{p-d1093a59.entry.js → p-3a4e86d1.entry.js} +1 -1
  268. package/dist/twilight/{p-f7a58656.entry.js → p-3b766a79.entry.js} +1 -1
  269. package/dist/twilight/{p-361f6033.entry.js → p-3b7a45ec.entry.js} +1 -1
  270. package/dist/twilight/{p-9cf1cfd4.entry.js → p-3bb0e184.entry.js} +1 -1
  271. package/dist/twilight/{p-b0d2e31f.entry.js → p-3cc6ca6c.entry.js} +1 -1
  272. package/dist/twilight/{p-d4fb9921.entry.js → p-4070f808.entry.js} +1 -1
  273. package/dist/twilight/{p-af49191f.entry.js → p-412fb721.entry.js} +1 -1
  274. package/dist/twilight/{p-5f6fee0e.entry.js → p-427c13b6.entry.js} +1 -1
  275. package/dist/twilight/{p-be6f8551.entry.js → p-45e0a5d0.entry.js} +1 -1
  276. package/dist/twilight/{p-c4cf0b4d.entry.js → p-4d615f9f.entry.js} +1 -1
  277. package/dist/twilight/{p-fddf1997.entry.js → p-4d7fc363.entry.js} +1 -1
  278. package/dist/twilight/{p-9e042cce.entry.js → p-5009f654.entry.js} +1 -1
  279. package/dist/twilight/{p-d9a1bf08.entry.js → p-50853b76.entry.js} +1 -1
  280. package/dist/twilight/{p-eaf0c514.entry.js → p-550ad1a6.entry.js} +1 -1
  281. package/dist/twilight/{p-3f842f32.entry.js → p-575014c4.entry.js} +1 -1
  282. package/dist/twilight/{p-66ad7a30.entry.js → p-5aee5e44.entry.js} +1 -1
  283. package/dist/twilight/{p-8c1d14f0.entry.js → p-619c709c.entry.js} +1 -1
  284. package/dist/twilight/{p-cdeb9bcc.entry.js → p-6d572fe0.entry.js} +1 -1
  285. package/dist/twilight/{p-12a25415.entry.js → p-6f84c662.entry.js} +1 -1
  286. package/dist/twilight/{p-b5a45f87.entry.js → p-703b9253.entry.js} +1 -1
  287. package/dist/twilight/{p-a5b732b3.entry.js → p-73dea22d.entry.js} +1 -1
  288. package/dist/twilight/{p-a44670a9.entry.js → p-74285af9.entry.js} +1 -1
  289. package/dist/twilight/{p-b1f808f5.entry.js → p-777d28f6.entry.js} +1 -1
  290. package/dist/twilight/{p-027cbda6.entry.js → p-7db6ccfe.entry.js} +1 -1
  291. package/dist/twilight/{p-0418c2df.entry.js → p-7db8d545.entry.js} +1 -1
  292. package/dist/twilight/{p-da0df10b.entry.js → p-7fa4d0b6.entry.js} +1 -1
  293. package/dist/twilight/{p-78a56dc6.entry.js → p-825c5b73.entry.js} +1 -1
  294. package/dist/twilight/{p-4b70e6c4.entry.js → p-8262e669.entry.js} +1 -1
  295. package/dist/twilight/p-86d55a6b.entry.js +4 -0
  296. package/dist/twilight/{p-259c995a.entry.js → p-8712f7c7.entry.js} +1 -1
  297. package/dist/twilight/{p-08a15c81.entry.js → p-8948b58c.entry.js} +1 -1
  298. package/dist/twilight/{p-aa35cf98.entry.js → p-8b8cf457.entry.js} +1 -1
  299. package/dist/twilight/{p-d0aeeb7f.entry.js → p-8c2992e7.entry.js} +1 -1
  300. package/dist/twilight/{p-79822d99.entry.js → p-8c548259.entry.js} +1 -1
  301. package/dist/twilight/{p-6af8a7b6.entry.js → p-8eb3fd92.entry.js} +1 -1
  302. package/dist/twilight/p-908716fb.entry.js +4 -0
  303. package/dist/twilight/{p-70dfb2b4.entry.js → p-90a59027.entry.js} +1 -1
  304. package/dist/twilight/{p-37192614.entry.js → p-9683535f.entry.js} +1 -1
  305. package/dist/twilight/{p-f9e5ed10.entry.js → p-982e9124.entry.js} +1 -1
  306. package/dist/twilight/{p-0d795b58.entry.js → p-995b898f.entry.js} +1 -1
  307. package/dist/twilight/{p-d1204965.entry.js → p-99cb3dba.entry.js} +1 -1
  308. package/dist/twilight/{p-071aa0e7.entry.js → p-9a0218a6.entry.js} +1 -1
  309. package/dist/twilight/{p-eefced26.entry.js → p-9cf31ff4.entry.js} +1 -1
  310. package/dist/twilight/{p-4891c565.entry.js → p-9d1a5007.entry.js} +1 -1
  311. package/dist/twilight/{p-f9587127.entry.js → p-9e429047.entry.js} +1 -1
  312. package/dist/twilight/p-9e542951.entry.js +4 -0
  313. package/dist/twilight/{p-BxQMWsr9.js → p-BcT9tEVW.js} +1 -1
  314. package/dist/twilight/{p-Y2ZIN9Ok.js → p-Bgu5gtOF.js} +1 -1
  315. package/dist/twilight/{p-DgUQRYr2.js → p-C9zdeQFI.js} +2 -2
  316. package/dist/twilight/{p-CCwsxMbZ.js → p-CSGj1pY-.js} +1 -1
  317. package/dist/twilight/{p-Ca_SZn0u.js → p-CWWgpQ8Q.js} +1 -1
  318. package/dist/twilight/{p-CgNJWeaK.js → p-Cfz9xit3.js} +1 -1
  319. package/dist/twilight/{p-BK9YeXWp.js → p-CmYSalnM.js} +1 -1
  320. package/dist/twilight/p-Cnh7Qptl.js +4 -0
  321. package/dist/twilight/{p-De1tLqQF.js → p-Dav_R_d2.js} +1 -1
  322. package/dist/twilight/{p-DMvhNbgN.js → p-JGEddAgs.js} +1 -1
  323. package/dist/twilight/{p-CBLWEyM9.js → p-RflSBQNB.js} +1 -1
  324. package/dist/twilight/{p-NqQdbGu6.js → p-Xgbueas7.js} +1 -1
  325. package/dist/twilight/{p-ba6dd59c.entry.js → p-a070cce0.entry.js} +1 -1
  326. package/dist/twilight/{p-1960020c.entry.js → p-a0bfedad.entry.js} +1 -1
  327. package/dist/twilight/{p-f7ab5825.entry.js → p-a22d9931.entry.js} +1 -1
  328. package/dist/twilight/{p-a95b0dc1.entry.js → p-a3959219.entry.js} +1 -1
  329. package/dist/twilight/p-a3ca61af.entry.js +4 -0
  330. package/dist/twilight/{p-e457e68f.entry.js → p-a55b5c44.entry.js} +1 -1
  331. package/dist/twilight/{p-23772523.entry.js → p-a5fc8358.entry.js} +1 -1
  332. package/dist/twilight/{p-3a632c69.entry.js → p-aabcd09f.entry.js} +1 -1
  333. package/dist/twilight/{p-d8955835.entry.js → p-ad00021e.entry.js} +1 -1
  334. package/dist/twilight/{p-481f52b1.entry.js → p-ade9a68c.entry.js} +1 -1
  335. package/dist/twilight/{p-4a3fa153.entry.js → p-b5e0065a.entry.js} +1 -1
  336. package/dist/twilight/{p-bed68e52.entry.js → p-bbb09d92.entry.js} +1 -1
  337. package/dist/twilight/{p-9e65451e.entry.js → p-c2df20f8.entry.js} +1 -1
  338. package/dist/twilight/{p-1af9db24.entry.js → p-c4274188.entry.js} +1 -1
  339. package/dist/twilight/{p-bfd5e263.entry.js → p-c5e2c781.entry.js} +1 -1
  340. package/dist/twilight/{p-e38a6793.entry.js → p-c64b2b22.entry.js} +1 -1
  341. package/dist/twilight/{p-3d8b77f7.entry.js → p-c92cc92f.entry.js} +1 -1
  342. package/dist/twilight/{p-ac736b30.entry.js → p-cb54adac.entry.js} +1 -1
  343. package/dist/twilight/{p-5bbf17dd.entry.js → p-ce1e45a3.entry.js} +1 -1
  344. package/dist/twilight/{p-fcb1009f.entry.js → p-d0acd7ff.entry.js} +1 -1
  345. package/dist/twilight/{p-92fd20a0.entry.js → p-d0f903ac.entry.js} +1 -1
  346. package/dist/twilight/{p-26d2b28a.entry.js → p-d57b49ff.entry.js} +1 -1
  347. package/dist/twilight/{p-8766e236.entry.js → p-db3efb27.entry.js} +1 -1
  348. package/dist/twilight/{p-0f25fedd.entry.js → p-db73d0bf.entry.js} +1 -1
  349. package/dist/twilight/{p-6e52b649.entry.js → p-e20d5e75.entry.js} +1 -1
  350. package/dist/twilight/{p-254cff9a.entry.js → p-e223beca.entry.js} +1 -1
  351. package/dist/twilight/{p-8c40278d.entry.js → p-e37da59f.entry.js} +1 -1
  352. package/dist/twilight/{p-84b0e7a9.entry.js → p-e3991836.entry.js} +1 -1
  353. package/dist/twilight/{p-cb48a5ef.entry.js → p-e455709f.entry.js} +1 -1
  354. package/dist/twilight/{p-9e0a9a5a.entry.js → p-e921b2d1.entry.js} +1 -1
  355. package/dist/twilight/{p-0ba159db.entry.js → p-ec356e5a.entry.js} +1 -1
  356. package/dist/twilight/{p-34148827.entry.js → p-eeefc285.entry.js} +1 -1
  357. package/dist/twilight/{p-6ba3808a.entry.js → p-f3b12754.entry.js} +1 -1
  358. package/dist/twilight/{p-419d6d71.entry.js → p-f6279a13.entry.js} +1 -1
  359. package/dist/twilight/{p-487b4411.entry.js → p-f83efc62.entry.js} +1 -1
  360. package/dist/twilight/{p-7b5f97e7.entry.js → p-fa622715.entry.js} +1 -1
  361. package/dist/twilight/{p-ee479819.entry.js → p-faf00404.entry.js} +1 -1
  362. package/dist/twilight/twilight.esm.js +1 -1
  363. package/dist/types/components/salla-bullet-delivery/api-service.d.ts +23 -7
  364. package/dist/types/components/salla-bullet-delivery/helpers.d.ts +61 -6
  365. package/dist/types/components/salla-bullet-delivery/icons.d.ts +14 -0
  366. package/dist/types/components/salla-bullet-delivery/interfaces.d.ts +36 -1
  367. package/dist/types/components/salla-bullet-delivery/salla-bullet-delivery.d.ts +73 -2
  368. package/dist/types/components/salla-quick-buy/salla-quick-buy.d.ts +6 -0
  369. package/package.json +5 -5
  370. package/dist/cjs/helpers-8bMfm_mm.js +0 -329
  371. package/dist/esm/helpers-DqzaeXrL.js +0 -309
  372. package/dist/twilight/p-76584a5b.entry.js +0 -4
  373. package/dist/twilight/p-DqzaeXrL.js +0 -4
  374. package/dist/twilight/p-bac25e34.entry.js +0 -4
  375. package/dist/twilight/p-d346dabd.entry.js +0 -4
  376. package/dist/twilight/p-e24fbbb4.entry.js +0 -4
@@ -2,7 +2,7 @@
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
4
  import { h, proxyCustomElement, HTMLElement, createEvent, Host } from '@stencil/core/internal/client';
5
- import { i as isSaudiArabia, b as bulletDeliveryAPI, r as requireRegionAndDistrictForSA, g as getIntentLatitude, a as getIntentLongitude, h as hasSessionAddressIntent, c as getIntentCityId, d as getIntentCountryId, e as getIntentRegionId, f as getIntentDistrictId, j as isBranchSelectable, k as filterBranches, l as getIntentBranchId, m as findNearestBranch, n as getGeolocationErrorMessage, o as clearApiCache, p as getIntentSubtitle, q as isMapOriginIntent, s as getIntentCountryCode } from './helpers.js';
5
+ import { i as isSaudiArabia, b as bulletDeliveryAPI, r as requireRegionAndDistrictForSA, c as clearBranchCache, h as hasSessionAddressIntent, g as getIntentCityId, a as getIntentCountryId, d as getIntentRegionId, e as getIntentDistrictId, f as getBranchCities, C as CACHE_TTL, j as isBranchSelectable, k as getBranchDiscountRange, l as filterBranches, m as getIntentBranchId, n as findNearestBranch, o as clearApiCache, p as getIntentSubtitle, q as isMapOriginIntent, s as isBranchVisible, t as getBranchReadinessLabel, u as groupBranchSchedule, v as getBranchWeekSchedule, w as getBranchPhoneHref, x as getBranchWhatsappHref, y as getBranchDiscount, z as formatBranchDistance, A as getBranchDirectionsHref, B as formatBranchClockTime, D as getBranchReadyTodayTime, E as isBranchBusy, F as isBranchAlwaysOpen, G as getIntentCountryCode } from './helpers.js';
6
6
  import { S as SILocation } from './location.js';
7
7
  import { S as Search } from './search.js';
8
8
  import { d as defineCustomElement$7 } from './salla-button2.js';
@@ -280,24 +280,6 @@ var GetDirections = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none"
280
280
  </svg>
281
281
  `;
282
282
 
283
- var GPS = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
284
- <path
285
- d="M13.3258 7.65006C13.3258 10.7797 10.7888 13.3167 7.65916 13.3167C4.52955 13.3167 1.99249 10.7797 1.99249 7.65006C1.99249 4.52045 4.52955 1.9834 7.65916 1.9834C10.7888 1.9834 13.3258 4.52045 13.3258 7.65006Z"
286
- stroke="#555555" stroke-width="1.3" />
287
- <path d="M14.65 7.65039H13.3167" stroke="#555555" stroke-width="1.3" stroke-linecap="round"
288
- stroke-linejoin="round" />
289
- <path d="M1.98336 7.65039L0.650024 7.65039" stroke="#555555" stroke-width="1.3"
290
- stroke-linecap="round" stroke-linejoin="round" />
291
- <path d="M7.65002 0.650065L7.65002 1.9834" stroke="#555555" stroke-width="1.3"
292
- stroke-linecap="round" stroke-linejoin="round" />
293
- <path d="M7.65002 13.3171L7.65002 14.6504" stroke="#555555" stroke-width="1.3"
294
- stroke-linecap="round" stroke-linejoin="round" />
295
- <path
296
- d="M9.64999 7.65039C9.64999 8.75496 8.75456 9.65039 7.64999 9.65039C6.54542 9.65039 5.64999 8.75496 5.64999 7.65039C5.64999 6.54582 6.54542 5.65039 7.64999 5.65039C8.75456 5.65039 9.64999 6.54582 9.64999 7.65039Z"
297
- stroke="#555555" stroke-width="1.3" />
298
- </svg>
299
- `;
300
-
301
283
  var MiniMap = `<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
302
284
  <rect x="1.90958" y="0.576577" width="30.8468" height="30.8468" rx="9.22523" style="fill:#E8E8E8" stroke="white" stroke-width="1.15315"/>
303
285
  <path d="M17.9096 6.77445L28.7204 5.33301H32.4681L32.7564 11.8195V23.6393L10.4141 23.9276V10.8105L17.9096 6.77445Z" style="fill:#97E7C8"/>
@@ -307,23 +289,36 @@ var MiniMap = `<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns
307
289
  </svg>
308
290
  `;
309
291
 
310
- var Store = `<svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
311
- <path
312
- d="M1.14453 5.83032L1.14453 9.16486C1.14453 11.0511 1.14453 11.9943 1.73032 12.5803C2.3161 13.1663 3.25891 13.1663 5.14453 13.1663L9.14453 13.1663C11.0301 13.1663 11.9729 13.1663 12.5587 12.5803C13.1445 11.9943 13.1445 11.0511 13.1445 9.16486V5.83032"
313
- stroke="currentcolor" stroke-linecap="round" />
314
- <path
315
- d="M9.14453 10.1619C8.68846 10.5667 7.9624 10.8285 7.14453 10.8285C6.32666 10.8285 5.60059 10.5667 5.14453 10.1619"
316
- stroke="currentcolor" stroke-linecap="round" />
317
- <path
318
- d="M5.90256 4.44533C5.71455 5.12426 5.03086 6.29542 3.73185 6.46516C2.58488 6.61502 1.71497 6.11437 1.49277 5.90504C1.24779 5.7353 0.689441 5.19216 0.552703 4.85269C0.415966 4.51322 0.575492 3.77771 0.689441 3.47785L1.14495 2.15892C1.25615 1.82765 1.51646 1.04411 1.78334 0.779094C2.05022 0.514073 2.59054 0.502543 2.81294 0.502543L7.48329 0.502543C8.68543 0.519525 11.3139 0.491824 11.8335 0.502545C12.3532 0.513266 12.6654 0.948828 12.7565 1.13553C13.5318 3.01341 13.8333 4.08889 13.8333 4.54717C13.7321 5.03605 13.3133 5.95787 11.8335 6.36332C10.2956 6.7847 9.42363 5.96509 9.15007 5.65043M5.27015 5.65044C5.48665 5.91635 6.16578 6.45158 7.15029 6.46516C8.1348 6.47873 8.98485 5.79188 9.28681 5.44676C9.37227 5.34492 9.55687 5.04279 9.7483 4.44533"
319
- stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" />
320
- </svg>
321
- `;
292
+ /**
293
+ * Inline icons shared with the checkout pickup picker (Checkout-Module INV-1414), kept byte-identical
294
+ * so both surfaces render the same glyphs.
295
+ */
296
+ /** Checkout `LightningIcon.vue` — the "save delivery fees" pickup-tab badge. */
297
+ const LightningIcon = `<svg width="7" height="10" viewBox="0 0 7 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.41015 0.036C5.73815 0.084 5.96415 0.222 6.08815 0.45C6.21215 0.678 6.21415 0.952 6.09415 1.272C6.03815 1.432 5.89415 1.72 5.66215 2.136L5.13415 3.108C5.03015 3.308 4.96215 3.44 4.93015 3.504C4.91415 3.544 4.90215 3.576 4.89415 3.6C4.89415 3.656 4.91815 3.7 4.96615 3.732C4.99015 3.74 5.02615 3.748 5.07415 3.756H5.51815C5.79815 3.756 5.99015 3.76 6.09415 3.768C6.30215 3.784 6.45815 3.832 6.56215 3.912C6.70615 4.008 6.81215 4.138 6.88015 4.302C6.94815 4.466 6.97015 4.636 6.94615 4.812C6.93015 4.948 6.85815 5.1 6.73015 5.268C6.66615 5.356 6.53815 5.508 6.34615 5.724L3.65815 8.82C3.35415 9.172 3.14815 9.398 3.04015 9.498C2.93215 9.598 2.83415 9.664 2.74615 9.696C2.58615 9.768 2.43415 9.766 2.29015 9.69C2.14615 9.614 2.05415 9.488 2.01415 9.312C1.99815 9.208 1.99615 9.08 2.00815 8.928C2.02015 8.776 2.07415 8.472 2.17015 8.016L2.50615 6.432C2.57815 6.104 2.61815 5.888 2.62615 5.784C2.63415 5.728 2.62215 5.686 2.59015 5.658C2.55815 5.63 2.52615 5.612 2.49415 5.604C2.39815 5.588 2.18615 5.58 1.85815 5.58H1.60615C1.19815 5.58 0.918154 5.568 0.766154 5.544C0.462154 5.504 0.246154 5.38 0.118154 5.172C-0.00984615 4.964 -0.0338462 4.704 0.0461538 4.392C0.0861538 4.24 0.190154 3.968 0.358154 3.576L1.25815 1.464C1.41015 1.112 1.51815 0.872 1.58215 0.744C1.71015 0.512 1.85815 0.34 2.02615 0.228C2.19415 0.116 2.40215 0.048 2.65015 0.024C2.79415 0.008 3.05415 0 3.43015 0H4.47415C4.93815 0 5.25015 0.012 5.41015 0.036Z" fill="white"/></svg>`;
298
+ /** Pickup-instructions line on the branch card (design-provided). */
299
+ const NotesIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.58709 4.67775L11.769 5.52554M7.90501 7.20895L9.49598 7.63284M7.98415 11.9777L8.62054 12.1472C10.4205 12.6268 11.3205 12.8666 12.0295 12.4595C12.7385 12.0525 12.9797 11.1576 13.462 9.36777L14.1441 6.83657C14.6264 5.04674 14.8675 4.15183 14.4582 3.44681C14.0488 2.7418 13.1488 2.50201 11.3489 2.02242L10.7125 1.85287C8.91249 1.37328 8.0125 1.13349 7.30349 1.54053C6.59447 1.94757 6.35332 2.84249 5.87102 4.63231L5.18894 7.16351C4.70664 8.95334 4.46549 9.84825 4.87484 10.5533C5.28419 11.2583 6.18418 11.4981 7.98415 11.9777Z" stroke="#555555" stroke-width="1.125" stroke-linecap="round"/><path d="M8.00016 13.964L7.36527 14.1369C5.56952 14.6259 4.67164 14.8704 3.96429 14.4554C3.25694 14.0404 3.01636 13.1279 2.53519 11.303L1.85471 8.72211C1.37354 6.89717 1.13295 5.98471 1.54134 5.26586C1.89461 4.64404 2.66683 4.66668 3.66683 4.66661" stroke="#555555" stroke-width="1.125" stroke-linecap="round"/></svg>`;
300
+ /** Pickup-availability (preparation time) line on the branch card (design-provided). */
301
+ const PickupAvailabilityIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="8.00016" cy="8.00004" r="6.66667" stroke="#555555" stroke-width="1.125"/><path d="M8 5.33337V8.00004L9.33333 9.33337" stroke="#555555" stroke-width="1.125" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
302
+ /** Working-hours (open/closed status) line on the branch card (design-provided). */
303
+ const WorkingHoursIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.00014 14.6667C4.31824 14.6667 1.3335 11.6819 1.3335 8.00004C1.3335 4.31814 4.31826 1.33337 8.00016 1.33337C10.9853 1.33337 13.484 3.2953 14.3335 6.00004H12.6668" stroke="#666666" stroke-width="1.125" stroke-linecap="round" stroke-linejoin="round"/><path d="M8 5.33337V8.00004L9.33333 9.33337" stroke="#666666" stroke-width="1.125" stroke-linecap="round" stroke-linejoin="round"/><path d="M14.6367 8.66667C14.6565 8.44724 14.6667 8.22486 14.6667 8M10 14.6667C10.2277 14.5917 10.4502 14.5043 10.6667 14.4052M13.8604 11.3333C13.989 11.0856 14.1036 10.8288 14.2034 10.5641M12.1283 13.4862C12.358 13.2961 12.5754 13.0905 12.7792 12.871" stroke="#666666" stroke-width="1.125" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
304
+ /** Location (country, city, district) line on the branch card (design-provided). */
305
+ const BranchLocationIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="8.00016" cy="4.66667" r="2.66667" stroke="#555555" stroke-width="1.125"/><path d="M8 7.33337L8 12" stroke="#555555" stroke-width="1.125" stroke-linecap="round"/><path d="M11.3332 12.6666C11.3332 13.403 9.84079 14 7.99984 14C6.15889 14 4.6665 13.403 4.6665 12.6666" stroke="#555555" stroke-width="1.125" stroke-linecap="round"/></svg>`;
322
306
 
323
- const sallaBulletDeliveryCss = "/*!twlt*/@charset \"UTF-8\";@supports (interpolate-size: allow-keywords) and (block-size: calc-size(auto, size)){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body,.s-bullet-delivery-inner{interpolate-size:allow-keywords}.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{overflow:clip;transition:block-size 500ms ease}.s-bullet-delivery-inner{overflow:clip;transition:block-size 500ms ease;block-size:calc-size(auto, size)}}@media screen and (min-width: 640px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){overflow:visible !important}}.s-bullet-delivery-form-actions.s-bullet-delivery-form-actions--single{padding-bottom:0;flex-direction:column;gap:0}.s-bullet-delivery-addresses-list.s-scrollbar::-webkit-scrollbar-track,.s-bullet-delivery-branches-list.s-scrollbar::-webkit-scrollbar-track{background-color:transparent}.s-bullet-delivery-back-to-list-link{display:inline-flex;align-items:center;justify-content:center;gap:2px;width:100%;margin-top:12px;background:none;border:none;color:var(--color-primary, #004956);font-size:14px;font-weight:500;cursor:pointer;padding:0}.s-bullet-delivery-back-to-list-link i{font-size:12px}.first-letter-cap::first-letter{text-transform:uppercase}.s-bullet-delivery-location-permission-btn{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border:none;border-radius:8px;background:#fdf2f2;cursor:pointer;text-align:start}.s-bullet-delivery-location-permission-icon{display:inline-flex;flex-shrink:0;width:34px;height:34px}.s-bullet-delivery-location-permission-icon svg{width:100%;height:100%}.s-bullet-delivery-location-permission-text{flex:1;min-width:0;font-size:12px;line-height:18px;color:#444}.s-bullet-delivery-location-permission-arrow{flex-shrink:0;font-size:16px;color:#666}.s-bullet-delivery-location-distance-warning{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border-radius:8px;background:#fff8e1;animation:s-bullet-delivery-fade-in 200ms ease}.s-bullet-delivery-location-distance-warning-icon{display:inline-flex;flex-shrink:0;width:34px;height:34px}.s-bullet-delivery-location-distance-warning-icon svg{width:100%;height:100%}.s-bullet-delivery-location-distance-warning-text{flex:1;min-width:0;font-size:12px;line-height:18px;color:#444}.s-bullet-delivery-map-container{width:100%;height:320px;border-radius:8px;overflow:hidden;margin-bottom:12px}.s-bullet-delivery-map-container gmap-map{display:block;width:100%;height:100%}.s-bullet-delivery-address-confirm{display:flex;flex-direction:column;gap:20px;animation:s-bullet-delivery-fade-in 200ms ease}.s-bullet-delivery-address-confirm-card{display:flex;align-items:center;gap:12px;border:1px solid #eee;border-radius:6px;padding:12px}.s-bullet-delivery-address-map-icon{overflow:hidden;border-radius:9px}.s-bullet-delivery-address-confirm-details{display:flex;flex-direction:column;align-items:flex-start;flex:1;min-width:0}.s-bullet-delivery-address-confirm-label{font-size:12px;line-height:16px;color:#666}.s-bullet-delivery-address-confirm-text{font-size:14px;font-weight:700;color:#333;margin:0;word-break:break-word}.s-bullet-delivery-address-confirm-description{display:flex;flex-direction:column;gap:8px}.s-bullet-delivery-address-confirm-description-label{font-size:14px;font-weight:500;color:#444}.s-bullet-delivery-address-confirm-description-optional{font-weight:400;color:#999;margin-inline-start:4px}.s-bullet-delivery-address-confirm-description-input{width:100%;border:1px solid #eee;border-radius:8px;padding:10px 12px;font-size:14px;margin-bottom:16px}.s-bullet-delivery-login-prompt{display:block;width:100%;text-align:center;background:none;border:none;color:var(--color-primary, #004956);font-size:14px;font-weight:500;cursor:pointer;padding:12px 0}@keyframes s-bullet-delivery-fade-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.branch-status-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 6px;max-height:20px;border-radius:20px;font-size:9px;font-weight:500;border:1px solid transparent;white-space:nowrap}.branch-status-badge.green{color:#43a047;background:#e8f5e9;border-color:#43a047}.branch-status-badge.blue{color:#1e88e5;background:#e3f2fd;border-color:#1e88e5}.branch-status-badge.red{color:#e53935;background:#fdf2f2;border-color:#e53935}.branch-status-badge.yellow{color:#f9a825;background:#fff8e1;border-color:#f9a825}.branch-status-badge.gray{color:#757575;background:#f5f5f5;border-color:#757575}.branch-status-badge.brown{color:#6d4c41;background:#efebe9;border-color:#6d4c41}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.visible{visibility:visible}.static{position:static}.mb-1{margin-bottom:0.25rem}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.gap-1{gap:0.25rem}.text-start{text-align:start}.\\!text-blue-600{--tw-text-opacity:1 !important;color:rgb(37 99 235 / var(--tw-text-opacity, 1)) !important}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-hidden{display:none}.form-input{height:2.5rem;width:100%;border-radius:0.375rem;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.form-input:focus{border-color:var(--color-primary);--tw-ring-color:transparent}.form-input:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.form-input:focus:is(.dark *){border-color:var(--color-primary)}@media (min-width: 640px){.form-input{font-size:0.875rem;line-height:1.25rem}}.\\!btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.\\!btn:hover{opacity:0.8}.btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.btn:hover{opacity:0.8}.spinner-loader.reverse{border-right-color:#9f7171 !important;background-color:#f98181}.s-hidden{display:none}.s-scrollbar::-webkit-scrollbar{width:5px}.s-scrollbar::-webkit-scrollbar-track{background-color:#eee}.s-scrollbar::-webkit-scrollbar-thumb{background-color:var(--color-primary);border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{padding:0px}@media (min-width: 768px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{max-height:70dvh;overflow-y:auto}}@media (min-width: 640px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){overflow:visible !important}}.s-bullet-delivery-inner{min-block-size:0}.s-bullet-delivery-header{margin-bottom:1.5rem;text-align:start}.s-bullet-delivery-title{display:block;font-size:1.25rem;line-height:1.75rem;font-weight:700;color:var(--color-primary-dark)}.s-bullet-delivery-subtitle{margin-top:0.25rem;display:block;font-size:0.875rem;line-height:1.25rem;color:var(--color-primary-dark)}.s-bullet-delivery-tabs{margin-bottom:1.5rem;display:flex;gap:0.5rem}.s-bullet-delivery-tab{display:flex;flex:1 1 0%;cursor:pointer;align-items:center;gap:1rem;border-radius:0.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-top:0.5rem;padding-bottom:0.5rem;padding-left:0.75rem;padding-right:0.75rem;font-size:0.875rem;line-height:1.25rem;font-weight:500;color:var(--color-primary-dark);transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:200ms}.s-bullet-delivery-tab:hover{background-color:color-mix(in srgb,var(--color-primary) 5%,transparent)}.s-bullet-delivery-tab--active{border-color:var(--color-primary-dark)}.s-bullet-delivery-tab svg{height:0.875rem;width:0.875rem;color:var(--color-primary-dark)}.s-bullet-delivery-tab-icon{display:flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-allocation-out-of-coverage{margin-bottom:1rem;display:flex;width:100%;align-items:center;gap:0.5rem;--tw-bg-opacity:1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1));padding-top:0.75rem;padding-bottom:0.75rem;padding-left:1rem;padding-right:1rem;text-align:end;--tw-text-opacity:1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.s-bullet-delivery-allocation-out-of-coverage:where([dir=\"ltr\"],[dir=\"ltr\"] *){border-left-width:4px;border-left-color:rgb(239 68 68 / 0.5)}.s-bullet-delivery-allocation-out-of-coverage:where([dir=\"rtl\"],[dir=\"rtl\"] *){border-right-width:4px;border-right-color:rgb(239 68 68 / 0.5)}.s-bullet-delivery-allocation-out-of-coverage-text{font-size:0.875rem;line-height:1.25rem;line-height:1.4}.s-bullet-delivery-allocation-out-of-coverage-icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;--tw-text-opacity:1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.s-bullet-delivery-content{margin-bottom:1.5rem;display:grid;gap:1rem}.s-bullet-delivery-content--active{animation:s-bullet-delivery-fade-in 220ms ease-out}.s-bullet-delivery-label{margin-bottom:0.5rem;display:block;font-size:0.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.s-bullet-delivery-error{margin-top:0.25rem;display:block;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-bullet-delivery-footer{display:grid;gap:0.75rem;text-align:center}.s-bullet-delivery-placeholder{margin-top:1rem;margin-bottom:1rem}.s-bullet-delivery-placeholder.s-placeholder-wrapper{margin-top:1rem !important;margin-bottom:1rem !important}.s-bullet-delivery-label-content{display:inline-flex;align-items:center;gap:0.5rem}.s-bullet-delivery-select-loader{display:inline-flex;align-items:center;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-bullet-delivery-search-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:0.5rem;padding-left:1px;padding-right:1px}.s-bullet-delivery-search-row .s-bullet-delivery-search{min-width:0px;flex:1 1 0%}.s-bullet-delivery-search-row .s-bullet-delivery-location-btn{width:auto;flex-shrink:0}.s-bullet-delivery-field-row{margin-bottom:1rem;display:flex;gap:1rem}.s-bullet-delivery-field-row .s-bullet-delivery-field{margin-bottom:0px;flex:1 1 0%}.s-bullet-delivery-saved-addresses-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.s-bullet-delivery-saved-addresses-empty-icon{margin-bottom:0.75rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-saved-addresses-empty-icon svg{height:2rem;width:2rem}.s-bullet-delivery-saved-addresses-empty-title{margin-bottom:0.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.s-bullet-delivery-saved-addresses-empty-desc{margin-bottom:1.5rem;max-width:24rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-addresses-list{position:relative;display:flex;max-height:260px;flex-direction:column;overflow-y:auto;border-radius:0.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}@media (min-width: 768px){.s-bullet-delivery-addresses-list{max-height:220px}}.s-bullet-delivery-address-item{display:flex;cursor:pointer;flex-direction:row;align-items:center;gap:0.75rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.875rem;padding-bottom:0.875rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-address-item:not(.s-bullet-delivery-address-item--disabled):hover{background-color:rgb(249 250 251 / 0.5)}.s-bullet-delivery-address-item--selected{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-address-item--disabled{cursor:not-allowed;opacity:0.6}.s-bullet-delivery-address-item--skeleton{display:flex;cursor:default;align-items:center;gap:0.75rem;border-radius:0.75rem;border-width:1px;border-bottom-width:0px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:1rem;padding-bottom:1rem}.s-bullet-delivery-address-item--skeleton .s-bullet-delivery-address-lines{gap:0.5rem}.s-bullet-delivery-address-content{display:flex;min-width:0px;flex:1 1 0%;flex-direction:column;justify-content:center;text-align:start}.s-bullet-delivery-address-lines{display:flex;flex-direction:column;gap:0.125rem}.s-bullet-delivery-address-line1{display:block;font-size:1rem;line-height:1.5rem;font-weight:400;line-height:1.375;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-address-line2{display:block;font-size:0.875rem;line-height:1.25rem;line-height:1.375;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-address-map-icon{display:grid;height:2.5rem;width:2.5rem;place-content:center}.s-bullet-delivery-address-map-icon svg{height:100%;width:100%}.s-bullet-delivery-skel-radio{flex-shrink:0;border-radius:9999px}.s-bullet-delivery-skel-map{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-search{position:relative;flex:1 1 0%}.s-bullet-delivery-search-icon{pointer-events:none;position:absolute;top:0px;bottom:0px;left:0px;display:flex;align-items:center;padding-left:0.75rem}.s-bullet-delivery-search-icon:where([dir=\"rtl\"],[dir=\"rtl\"] *){left:auto;right:0px;padding-left:0px;padding-right:0.75rem}.s-bullet-delivery-search-icon svg{height:0.875rem;width:0.875rem;stroke:var(--color-primary)}.s-bullet-delivery-branch-search-wrap{display:flex;min-height:40px;min-width:0px;flex:1 1 0%;flex-direction:row;align-items:stretch;overflow:hidden;border-radius:0.375rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.s-bullet-delivery-branch-search-wrap:focus-within{border-color:var(--color-primary-dark);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-color:var(--color-primary-dark)}.s-bullet-delivery-branch-search-icon{pointer-events:none;position:static;display:flex;flex-shrink:0;align-items:center;justify-content:center;padding-inline-start:0.5rem;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-search-icon svg{height:1.25rem;width:1.25rem}.s-bullet-delivery-branch-search-input{min-height:40px;min-width:0px;flex:1 1 0%;border-radius:0px;border-style:none;background-color:transparent;padding-top:0.5rem;padding-bottom:0.5rem;padding-inline-end:0.75rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-bullet-delivery-branch-search-input::placeholder{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-search-input:focus{outline:2px solid transparent;outline-offset:2px;border:none;box-shadow:none;--tw-ring-shadow:none}.s-bullet-delivery-location-btn{display:flex;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;gap:0.5rem;border-radius:0.5rem;border-width:1px;padding-left:1rem;padding-right:1rem;padding-top:0.5rem;padding-bottom:0.5rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-location-btn:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-location-btn:disabled{cursor:not-allowed;opacity:0.5}.s-bullet-delivery-location-btn--full{min-height:40px}.s-bullet-delivery-location-btn--loading{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-location-icon{height:0.875rem;width:0.875rem;flex-shrink:0}.s-bullet-delivery-location-icon svg{height:100%;width:100%}.s-bullet-delivery-branches-wrap{overflow:hidden}.s-bullet-delivery-branches-list{position:relative;max-height:min(260px, 32svh);overflow-y:auto;border-radius:0.5rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}@media (min-width: 768px){.s-bullet-delivery-branches-list{max-height:220px}}.s-bullet-delivery-branches-loading{overflow:hidden;border-radius:0.5rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-info{display:flex;max-width:6.25rem;flex-direction:column;gap:0.125rem}.s-bullet-delivery-branch-name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:break-word;font-size:0.875rem;line-height:1.25rem;font-weight:500;line-height:1.375;--tw-text-opacity:1;color:rgb(24 24 27 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-prep{text-align:start;font-size:0.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-time{font-size:0.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-time:where([dir=\"ltr\"],[dir=\"ltr\"] *){text-align:end}.s-bullet-delivery-branch-time:where([dir=\"rtl\"],[dir=\"rtl\"] *){text-align:start}.s-bullet-delivery-branch-map-link{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:0.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:0.5rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1));text-decoration-line:none;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-branch-map-link:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-item>.s-bullet-delivery-branch-map-link{position:relative;z-index:10;pointer-events:auto}.s-bullet-delivery-branch-map-link-icon{display:flex;height:0.875rem;width:0.875rem;align-items:center;justify-content:center}.s-bullet-delivery-branch-map-link-icon svg{height:100%;width:100%}.s-bullet-delivery-branch-skeleton-title{max-width:100%}.s-bullet-delivery-branch-skeleton-time{justify-self:end}.s-bullet-delivery-branch-item{display:grid;min-width:0px;cursor:pointer;align-items:center;gap:0.5rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;text-align:end;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;grid-template-columns:auto auto auto 1fr auto}.s-bullet-delivery-branch-item:last-child{border-bottom-width:0px}.s-bullet-delivery-branch-item:hover:not(.s-bullet-delivery-branch-item--disabled){--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-item--selected{background-color:color-mix(in srgb,var(--color-primary) 5%,transparent)}.s-bullet-delivery-branch-item--disabled{cursor:not-allowed;opacity:0.5}.s-bullet-delivery-branch-icon{display:grid;place-content:center;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));stroke:var(--color-primary-dark);padding:0.625rem;color:var(--color-primary-dark)}.s-bullet-delivery-branch-icon span{display:block;height:0.875rem;width:0.875rem}.s-bullet-delivery-branch-icon span svg{height:100%;width:100%}.s-bullet-delivery-branch-skeleton{display:grid;min-width:0px;align-items:center;gap:0.5rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;grid-template-columns:auto auto auto 1fr auto}.s-bullet-delivery-branch-skeleton:last-child{border-bottom-width:0px}.s-bullet-delivery-branch-skeleton-radio{flex-shrink:0}.s-bullet-delivery-branch-skeleton-icon{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-branch-skeleton-icon salla-skeleton{display:block}.s-bullet-delivery-branch-skeleton-map{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-branch-skeleton-map salla-skeleton{display:block}.s-bullet-delivery-branch-skeleton-content{display:flex;min-width:0px;flex-direction:column;gap:0.5rem;overflow:hidden}.s-bullet-delivery-branch-skeleton-content salla-skeleton{min-width:0px;max-width:100%}.s-bullet-delivery-radio{margin-top:2px;height:1rem;width:1rem;flex-shrink:0;cursor:pointer;appearance:none;border-radius:9999px;border-width:2px;--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-radio:checked{border-color:var(--color-primary-dark);background:radial-gradient(circle,#fff 0,#fff 22%,var(--color-primary) 22%)}.s-bullet-delivery-radio:focus{outline:2px solid transparent;outline-offset:2px}.s-bullet-delivery-radio:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-color:var(--color-primary-dark);--tw-ring-offset-width:2px}.s-bullet-delivery-skeleton{box-sizing:border-box;min-width:0px;max-width:100%;overflow:hidden;padding:1.25rem}.s-bullet-delivery-skeleton salla-skeleton{min-width:0px;max-width:100%}.s-bullet-delivery-skeleton-header{margin-bottom:1.5rem;display:flex;min-width:0px;max-width:100%;flex-direction:column;align-items:flex-start;gap:0.75rem}.s-bullet-delivery-skeleton-title{display:block;max-width:100%}.s-bullet-delivery-skeleton-subtitle{display:block;max-width:100%}.s-bullet-delivery-skeleton-tabs{margin-bottom:1.5rem;display:grid;min-width:0px;max-width:100%;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.5rem}.s-bullet-delivery-skeleton-tabs--single{grid-template-columns:repeat(1, minmax(0, 1fr))}.s-bullet-delivery-skeleton-tab{display:flex;align-items:center;gap:1rem;border-radius:0.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-bullet-delivery-skeleton-tab-icon{display:block;max-width:100%}.s-bullet-delivery-skeleton-tab-label{display:block;max-width:100%}.s-bullet-delivery-skeleton-field-label{display:block;max-width:100%}.s-bullet-delivery-skeleton-field-control{display:block;max-width:100%}.s-bullet-delivery-skeleton-content{margin-bottom:1.5rem;display:grid;min-width:0px;max-width:100%;gap:1rem}.s-bullet-delivery-skeleton-field{display:flex;min-width:0px;max-width:100%;flex-direction:column;align-items:flex-start;gap:0.5rem}.s-bullet-delivery-skeleton-footer{min-width:0px;max-width:100%}.s-bullet-delivery-add-address-header{margin-bottom:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:0.75rem}.s-bullet-delivery-add-address-title{display:flex;width:100%;flex:1 1 0%;cursor:pointer;align-items:center;border-style:none;background-color:transparent;padding:0px;text-align:start;font-size:1.125rem;line-height:1.75rem;font-weight:700;color:var(--color-primary)}.s-bullet-delivery-add-address svg{height:2.5rem;width:2.5rem;fill:currentColor}.s-bullet-delivery-allocation-out-of-coverage-icon svg{height:1.25rem;width:1.25rem}.s-bullet-delivery-add-address-form{display:grid;gap:1rem}.s-bullet-delivery-add-address-submit{width:100%}.s-bullet-delivery-form-actions{display:flex;gap:0.75rem;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));padding-top:1rem}.s-bullet-delivery-form-actions salla-button{flex:1 1 0%}.s-bullet-delivery-form-actions--single{border-top-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-top:1.25rem}.s-bullet-delivery-form-actions--single salla-button{width:100%;flex:1 1 0%}.s-bullet-delivery-market-warning-overlay{position:fixed;inset:0px;z-index:60;display:flex;align-items:center;justify-content:center;background-color:rgb(0 0 0 / 0.5)}.s-bullet-delivery-market-warning{margin-left:1rem;margin-right:1rem;width:100%;max-width:24rem;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-bullet-delivery-market-warning-title{margin-bottom:0.75rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-market-warning-message{margin-bottom:1.5rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-market-warning-actions{display:flex;gap:0.75rem}.s-bullet-delivery-market-warning-actions salla-button{flex:1 1 0%}.s-bullet-delivery-cart-view{margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;border-radius:0.75rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1rem}.s-bullet-delivery-cart-view-info{display:flex;min-width:0px;flex:1 1 0%;align-items:center;gap:0.75rem}.s-bullet-delivery-cart-view-text{display:flex;flex-direction:column;text-align:start}.s-bullet-delivery-cart-view-title{font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-cart-view-subtitle{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1));margin-block-start:0.125rem}.s-bullet-delivery-cart-view-icon{display:flex;height:3.5rem;width:3.5rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));color:var(--color-primary-dark)}.s-bullet-delivery-cart-view-icon svg{height:1.25rem;width:1.25rem;stroke:currentColor}.s-bullet-delivery-cart-view-button{flex-shrink:0;align-self:center}.s-bullet-delivery-location-permission-btn{display:flex;width:100%;cursor:pointer;align-items:center;gap:0.625rem;border-radius:0.5rem;border-width:0px;padding:0.75rem;text-align:start;background:#fdf2f2}.s-bullet-delivery-location-permission-icon{display:inline-flex;height:34px;width:34px;flex-shrink:0}.s-bullet-delivery-location-permission-icon svg{height:100%;width:100%}.s-bullet-delivery-location-permission-text{min-width:0px;flex:1 1 0%;font-size:0.75rem;line-height:1rem;line-height:18px;--tw-text-opacity:1;color:rgb(68 68 68 / var(--tw-text-opacity, 1))}.s-bullet-delivery-location-permission-arrow{flex-shrink:0;font-size:1rem;line-height:1.5rem;--tw-text-opacity:1;color:rgb(102 102 102 / var(--tw-text-opacity, 1))}.s-bullet-delivery-location-distance-warning{display:flex;width:100%;animation:s-bullet-delivery-fade-in 200ms ease;align-items:center;gap:0.625rem;border-radius:0.5rem;padding:0.75rem;background:#fff8e1}.s-bullet-delivery-location-distance-warning-icon{display:inline-flex;height:34px;width:34px;flex-shrink:0}.s-bullet-delivery-location-distance-warning-icon svg{height:100%;width:100%}.s-bullet-delivery-location-distance-warning-text{min-width:0px;flex:1 1 0%;font-size:0.75rem;line-height:1rem;line-height:18px;--tw-text-opacity:1;color:rgb(68 68 68 / var(--tw-text-opacity, 1))}";
307
+ const sallaBulletDeliveryCss = "/*!twlt*/@charset \"UTF-8\";@supports (interpolate-size: allow-keywords) and (block-size: calc-size(auto, size)){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body,.s-bullet-delivery-inner{interpolate-size:allow-keywords}.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{overflow:clip;transition:block-size 500ms ease}.s-bullet-delivery-inner{overflow:clip;transition:block-size 500ms ease;block-size:calc-size(auto, size)}}@media screen and (min-width: 640px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){overflow:visible !important}}.s-bullet-delivery-form-actions.s-bullet-delivery-form-actions--single{padding-bottom:0;flex-direction:column;gap:0}.s-bullet-delivery-addresses-list.s-scrollbar::-webkit-scrollbar-track,.s-bullet-delivery-branches-list.s-scrollbar::-webkit-scrollbar-track{background-color:transparent}.s-bullet-delivery-back-to-list-link{display:inline-flex;align-items:center;justify-content:center;gap:2px;width:100%;margin-top:12px;background:none;border:none;color:var(--color-primary, #004956);font-size:14px;font-weight:500;cursor:pointer;padding:0}.s-bullet-delivery-back-to-list-link i{font-size:12px}.s-bullet-delivery-location-permission-btn{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border:none;border-radius:8px;background:#fdf2f2;cursor:pointer;text-align:start}.s-bullet-delivery-location-permission-icon{display:inline-flex;flex-shrink:0;width:34px;height:34px}.s-bullet-delivery-location-permission-icon svg{width:100%;height:100%}.s-bullet-delivery-location-permission-text{flex:1;min-width:0;font-size:12px;line-height:18px;color:#444}.s-bullet-delivery-location-permission-arrow{flex-shrink:0;font-size:16px;color:#666}.s-bullet-delivery-location-distance-warning{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border-radius:8px;background:#fff8e1;animation:s-bullet-delivery-fade-in 200ms ease}.s-bullet-delivery-location-distance-warning-icon{display:inline-flex;flex-shrink:0;width:34px;height:34px}.s-bullet-delivery-location-distance-warning-icon svg{width:100%;height:100%}.s-bullet-delivery-location-distance-warning-text{flex:1;min-width:0;font-size:12px;line-height:18px;color:#444}.s-bullet-delivery-map-container{width:100%;height:320px;border-radius:8px;overflow:hidden;margin-bottom:12px}.s-bullet-delivery-map-container gmap-map{display:block;width:100%;height:100%}.s-bullet-delivery-address-confirm{display:flex;flex-direction:column;gap:20px;animation:s-bullet-delivery-fade-in 200ms ease}.s-bullet-delivery-address-confirm-card{display:flex;align-items:center;gap:12px;border:1px solid #eee;border-radius:6px;padding:12px}.s-bullet-delivery-address-map-icon{overflow:hidden;border-radius:9px}.s-bullet-delivery-address-confirm-details{display:flex;flex-direction:column;align-items:flex-start;flex:1;min-width:0}.s-bullet-delivery-address-confirm-label{font-size:12px;line-height:16px;color:#666}.s-bullet-delivery-address-confirm-text{font-size:14px;font-weight:700;color:#333;margin:0;word-break:break-word}.s-bullet-delivery-address-confirm-description{display:flex;flex-direction:column;gap:8px}.s-bullet-delivery-address-confirm-description-label{font-size:14px;font-weight:500;color:#444}.s-bullet-delivery-address-confirm-description-optional{font-weight:400;color:#999;margin-inline-start:4px}.s-bullet-delivery-address-confirm-description-input{width:100%;border:1px solid #eee;border-radius:8px;padding:10px 12px;font-size:14px;margin-bottom:16px}.s-bullet-delivery-login-prompt{display:block;width:100%;text-align:center;background:none;border:none;color:var(--color-primary, #004956);font-size:14px;font-weight:500;cursor:pointer;padding:12px 0}@keyframes s-bullet-delivery-fade-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (min-width: 640px){.s-bullet-delivery-modal .s-modal-sm{width:90vw !important;max-width:776px !important}}.s-bullet-delivery-modal .s-bullet-delivery-tabs{gap:4px;padding:4px;border-radius:12px;background:#f5f5f5}.s-bullet-delivery-modal .s-bullet-delivery-tab{justify-content:center;gap:8px;min-height:40px;border:0;border-radius:8px;background:transparent;color:#666;font-size:14px}.s-bullet-delivery-modal .s-bullet-delivery-tab:hover{background:transparent;color:var(--color-text, #333)}.s-bullet-delivery-modal .s-bullet-delivery-tab--active,.s-bullet-delivery-modal .s-bullet-delivery-tab--active:hover{background:#fff;color:#1a1a1a;font-weight:600;box-shadow:0 1px 2px rgba(0, 0, 0, 0.06)}.s-bullet-delivery-modal .s-bullet-delivery-tab-badge{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;padding:4px 8px;border-radius:8px;font-size:11px;font-weight:600;line-height:120%;white-space:nowrap;color:#fff;background:#5196f3}.s-bullet-delivery-modal .s-bullet-delivery-discount-badge{display:inline-flex;align-items:center;flex:0 0 auto;padding:4px 8px;border-radius:6px;font-size:12px;font-weight:600;line-height:120%;white-space:nowrap;color:#fff;background:#e5484d}.s-bullet-delivery-modal .s-bullet-delivery-tab-badge-icon{display:inline-flex}.s-bullet-delivery-modal .s-bullet-delivery-tab-badge-icon svg{width:7px;height:10px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:12px;background:#fafafa}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-field{margin:0}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters-row{display:flex;gap:12px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters-row>.s-bullet-delivery-field{flex:1;min-width:0}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters{}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-branch-search-wrap{min-height:40px;border-color:#ddd;border-radius:8px;background:#fff}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-branch-search-input{font-size:14px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-btn{height:40px;min-height:40px;padding:0 14px;gap:4px;border:1px solid var(--color-primary);border-radius:8px;background:#fff;color:#1a1a1a;font-size:14px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-btn:hover{background:#fff}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-icon{display:inline-flex}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-icon svg{width:16px;height:16px}.s-bullet-delivery-modal .s-bullet-delivery-branches-list{display:flex;flex-direction:column;gap:16px;max-height:min(400px, 45svh);border:0;border-radius:0;background:transparent}.s-bullet-delivery-modal .s-bullet-delivery-branch-item{display:grid;grid-template-columns:auto minmax(0, 1fr) auto;align-items:start;column-gap:12px;row-gap:2px;padding:16px;border:1px solid #eee;border-radius:12px;background:#fff;text-align:start;transition:border-color 0.2s}.s-bullet-delivery-modal .s-bullet-delivery-branch-item:last-child{border-bottom:1px solid #eee}.s-bullet-delivery-modal .s-bullet-delivery-branch-item:hover:not(.s-bullet-delivery-branch-item--disabled){background:#fff}.s-bullet-delivery-modal .s-bullet-delivery-branch-item--selected,.s-bullet-delivery-modal .s-bullet-delivery-branch-item--selected:last-child{border-color:var(--color-primary);background:#fff}.s-bullet-delivery-modal .s-bullet-delivery-branch-item--disabled{opacity:0.5}.s-bullet-delivery-modal .s-bullet-delivery-branch-radio{grid-column:1;grid-row:1;align-self:center;width:20px;height:20px;margin-top:0;pointer-events:none}.s-bullet-delivery-modal .s-bullet-delivery-branch-body{display:contents}.s-bullet-delivery-modal .s-bullet-delivery-branch-body>*{grid-column:2/-1;min-width:0}.s-bullet-delivery-modal .s-bullet-delivery-branch-body>.s-bullet-delivery-branch-name{grid-column:2;grid-row:1;align-self:center}.s-bullet-delivery-modal .s-bullet-delivery-branch-body>.s-bullet-delivery-branch-location{grid-column:2}.s-bullet-delivery-modal .s-bullet-delivery-branch-name{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:700;line-height:120%;color:#1a1a1a}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:#6c757d}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta i{font-size:12px}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-status--open{color:#43a047;font-weight:500}.s-bullet-delivery-modal .s-bullet-delivery-pickup-status--closed,.s-bullet-delivery-modal .s-bullet-delivery-pickup-status--busy{color:#e53935;font-weight:500}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;margin:-6px;padding:0;border:0;background:none;color:inherit;line-height:1;cursor:pointer}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-toggle i{transition:transform 0.2s ease}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-toggle i.is-expanded{transform:rotate(180deg)}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule{display:flex;flex-direction:column;margin-top:4px;border-radius:8px;overflow:hidden}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-day{display:flex;align-items:center;justify-content:space-between;gap:4px;padding:2px 12px;background:#f8f9fa;font-size:12px;font-weight:500}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-days{color:#6c757d}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-times{color:#1a1a1a}.s-bullet-delivery-modal .s-bullet-delivery-branch-instructions{align-items:flex-start;line-height:1.5;white-space:pre-line}.s-bullet-delivery-modal .s-bullet-delivery-branch-instructions .s-bullet-delivery-branch-meta-icon{margin-top:2px}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-value{color:#1a1a1a;font-weight:500}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-icon{display:inline-flex;flex-shrink:0}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-icon svg{width:16px;height:16px}.s-bullet-delivery-modal .s-bullet-delivery-branch-actions{grid-column:3;grid-row:1/span 2;display:flex;align-items:center;gap:8px}.s-bullet-delivery-modal .s-bullet-delivery-branch-action{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid var(--color-border, #eee);border-radius:8px;background:transparent;color:var(--color-text, #333);text-decoration:none;cursor:pointer;transition:all 0.2s}.s-bullet-delivery-modal .s-bullet-delivery-branch-action i{font-size:16px}.s-bullet-delivery-modal .s-bullet-delivery-branch-action:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-tt, transparent)}.s-bullet-delivery-modal .s-bullet-delivery-branch-action .s-bullet-delivery-branch-map-link-icon,.s-bullet-delivery-modal .s-bullet-delivery-branch-action .s-bullet-delivery-branch-map-link-icon svg{width:16px;height:16px}.s-bullet-delivery-modal .s-bullet-delivery-branch-action .s-bullet-delivery-branch-map-link-icon path{stroke:currentColor}.s-bullet-delivery-modal .s-bullet-delivery-branch-item .s-bullet-delivery-branch-action,.s-bullet-delivery-modal .s-bullet-delivery-branch-item .s-bullet-delivery-branch-schedule-toggle{pointer-events:auto}.s-bullet-delivery-modal .s-bullet-delivery-branch-pills{display:contents}.s-bullet-delivery-modal .s-bullet-delivery-branch-divider{display:none}@media (max-width: 480px){.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters{flex-direction:row;flex-wrap:wrap;gap:12px 8px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-branch-search,.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-search-row,.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-pickup-filters-row{display:contents}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-field{flex:1 1 calc(50% - 4px);min-width:0;order:1}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-branch-search-wrap{flex:1 1 0;min-width:0;order:2}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-btn{flex:0 0 auto;order:3;padding:0 10px;white-space:nowrap}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-error{flex-basis:100%;order:4}}@media (max-width: 480px) and (max-width: 400px){.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-btn{padding:0 12px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}@media (max-width: 480px){.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-row{display:contents}.s-bullet-delivery-modal .s-bullet-delivery-branch-pills,.s-bullet-delivery-modal .s-bullet-delivery-branch-divider,.s-bullet-delivery-modal .s-bullet-delivery-branch-open-status{grid-column:2/-1;min-width:0}.s-bullet-delivery-modal .s-bullet-delivery-branch-pills{display:flex;flex-wrap:wrap;gap:8px;order:1;margin-top:6px}.s-bullet-delivery-modal .s-bullet-delivery-branch-divider{order:2}.s-bullet-delivery-modal .s-bullet-delivery-branch-instructions{order:3}.s-bullet-delivery-modal .s-bullet-delivery-branch-open-status{order:4}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule{order:5}.s-bullet-delivery-modal .s-bullet-delivery-branch-location .s-bullet-delivery-branch-meta-icon{display:none}.s-bullet-delivery-modal .s-bullet-delivery-branch-pill{padding:4px 10px;border:1px solid var(--color-border, #eee);border-radius:999px;font-size:12px;line-height:1.4}.s-bullet-delivery-modal .s-bullet-delivery-branch-pill .s-bullet-delivery-branch-meta-label{display:none}.s-bullet-delivery-modal .s-bullet-delivery-branch-pill .s-bullet-delivery-branch-meta-value{color:inherit;font-weight:400}.s-bullet-delivery-modal .s-bullet-delivery-branch-divider{display:block;width:100%;height:0;margin:10px 0;border:0;border-top:1px solid #e0e0e0;opacity:1}.s-bullet-delivery-modal .s-bullet-delivery-branch-action,.s-bullet-delivery-modal .s-bullet-delivery-branch-action:hover{border-color:transparent}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.inline{display:inline}.inline-flex{display:inline-flex}.shrink{flex-shrink:1}.resize{resize:both}.\\!text-blue-600{--tw-text-opacity:1 !important;color:rgb(37 99 235 / var(--tw-text-opacity, 1)) !important}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-hidden{display:none}.form-input{height:2.5rem;width:100%;border-radius:0.375rem;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.form-input:focus{border-color:var(--color-primary);--tw-ring-color:transparent}.form-input:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.form-input:focus:is(.dark *){border-color:var(--color-primary)}@media (min-width: 640px){.form-input{font-size:0.875rem;line-height:1.25rem}}.\\!btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.\\!btn:hover{opacity:0.8}.btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.btn:hover{opacity:0.8}.spinner-loader.reverse{border-right-color:#9f7171 !important;background-color:#f98181}.s-hidden{display:none}.s-scrollbar::-webkit-scrollbar{width:5px}.s-scrollbar::-webkit-scrollbar-track{background-color:#eee}.s-scrollbar::-webkit-scrollbar-thumb{background-color:var(--color-primary);border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{padding:0px}@media (min-width: 768px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{max-height:70dvh;overflow-y:auto}}@media (min-width: 640px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){overflow:visible !important}}.s-bullet-delivery-inner{min-block-size:0}.s-bullet-delivery-header{margin-bottom:1.5rem;text-align:start}.s-bullet-delivery-title{display:block;font-size:1.25rem;line-height:1.75rem;font-weight:700;color:var(--color-primary-dark)}.s-bullet-delivery-subtitle{margin-top:0.25rem;display:block;font-size:0.875rem;line-height:1.25rem;color:var(--color-primary-dark)}.s-bullet-delivery-tabs{margin-bottom:1.5rem;display:flex;gap:0.5rem}.s-bullet-delivery-tab{display:flex;flex:1 1 0%;cursor:pointer;align-items:center;gap:1rem;border-radius:0.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-top:0.5rem;padding-bottom:0.5rem;padding-left:0.75rem;padding-right:0.75rem;font-size:0.875rem;line-height:1.25rem;font-weight:500;color:var(--color-primary-dark);transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:200ms}.s-bullet-delivery-tab:hover{background-color:color-mix(in srgb,var(--color-primary) 5%,transparent)}.s-bullet-delivery-tab--active{border-color:var(--color-primary-dark)}.s-bullet-delivery-tab svg{height:0.875rem;width:0.875rem;color:var(--color-primary-dark)}.s-bullet-delivery-tab-icon{display:flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-allocation-out-of-coverage{margin-bottom:1rem;display:flex;width:100%;align-items:center;gap:0.5rem;--tw-bg-opacity:1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1));padding-top:0.75rem;padding-bottom:0.75rem;padding-left:1rem;padding-right:1rem;text-align:end;--tw-text-opacity:1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.s-bullet-delivery-allocation-out-of-coverage:where([dir=\"ltr\"],[dir=\"ltr\"] *){border-left-width:4px;border-left-color:rgb(239 68 68 / 0.5)}.s-bullet-delivery-allocation-out-of-coverage:where([dir=\"rtl\"],[dir=\"rtl\"] *){border-right-width:4px;border-right-color:rgb(239 68 68 / 0.5)}.s-bullet-delivery-allocation-out-of-coverage-text{font-size:0.875rem;line-height:1.25rem;line-height:1.4}.s-bullet-delivery-allocation-out-of-coverage-icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;--tw-text-opacity:1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.s-bullet-delivery-content{margin-bottom:1.5rem;display:grid;gap:1rem}.s-bullet-delivery-content--active{animation:s-bullet-delivery-fade-in 220ms ease-out}.s-bullet-delivery-label{margin-bottom:0.5rem;display:block;font-size:0.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.s-bullet-delivery-error{margin-top:0.25rem;display:block;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-bullet-delivery-footer{display:grid;gap:0.75rem;text-align:center}.s-bullet-delivery-placeholder{margin-top:1rem;margin-bottom:1rem}.s-bullet-delivery-placeholder.s-placeholder-wrapper{margin-top:1rem !important;margin-bottom:1rem !important}.s-bullet-delivery-label-content{display:inline-flex;align-items:center;gap:0.5rem}.s-bullet-delivery-select-loader{display:inline-flex;align-items:center;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-bullet-delivery-search-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:0.5rem;padding-left:1px;padding-right:1px}.s-bullet-delivery-search-row .s-bullet-delivery-search{min-width:0px;flex:1 1 0%}.s-bullet-delivery-search-row .s-bullet-delivery-location-btn{width:auto;flex-shrink:0}.s-bullet-delivery-field-row{margin-bottom:1rem;display:flex;gap:1rem}.s-bullet-delivery-field-row .s-bullet-delivery-field{margin-bottom:0px;flex:1 1 0%}.s-bullet-delivery-saved-addresses-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.s-bullet-delivery-saved-addresses-empty-icon{margin-bottom:0.75rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-saved-addresses-empty-icon svg{height:2rem;width:2rem}.s-bullet-delivery-saved-addresses-empty-title{margin-bottom:0.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.s-bullet-delivery-saved-addresses-empty-desc{margin-bottom:1.5rem;max-width:24rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-addresses-list{position:relative;display:flex;max-height:260px;flex-direction:column;overflow-y:auto;border-radius:0.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}@media (min-width: 768px){.s-bullet-delivery-addresses-list{max-height:220px}}.s-bullet-delivery-address-item{display:flex;cursor:pointer;flex-direction:row;align-items:center;gap:0.75rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.875rem;padding-bottom:0.875rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-address-item:not(.s-bullet-delivery-address-item--disabled):hover{background-color:rgb(249 250 251 / 0.5)}.s-bullet-delivery-address-item--selected{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-address-item--disabled{cursor:not-allowed;opacity:0.6}.s-bullet-delivery-address-item--skeleton{display:flex;cursor:default;align-items:center;gap:0.75rem;border-radius:0.75rem;border-width:1px;border-bottom-width:0px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:1rem;padding-bottom:1rem}.s-bullet-delivery-address-item--skeleton .s-bullet-delivery-address-lines{gap:0.5rem}.s-bullet-delivery-address-content{display:flex;min-width:0px;flex:1 1 0%;flex-direction:column;justify-content:center;text-align:start}.s-bullet-delivery-address-lines{display:flex;flex-direction:column;gap:0.125rem}.s-bullet-delivery-address-line1{display:block;font-size:1rem;line-height:1.5rem;font-weight:400;line-height:1.375;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-address-line2{display:block;font-size:0.875rem;line-height:1.25rem;line-height:1.375;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-address-map-icon{display:grid;height:2.5rem;width:2.5rem;place-content:center}.s-bullet-delivery-address-map-icon svg{height:100%;width:100%}.s-bullet-delivery-skel-radio{flex-shrink:0;border-radius:9999px}.s-bullet-delivery-skel-map{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-search{position:relative;flex:1 1 0%}.s-bullet-delivery-search-icon{pointer-events:none;position:absolute;top:0px;bottom:0px;left:0px;display:flex;align-items:center;padding-left:0.75rem}.s-bullet-delivery-search-icon:where([dir=\"rtl\"],[dir=\"rtl\"] *){left:auto;right:0px;padding-left:0px;padding-right:0.75rem}.s-bullet-delivery-search-icon svg{height:0.875rem;width:0.875rem;stroke:var(--color-primary)}.s-bullet-delivery-branch-search-wrap{display:flex;min-height:40px;min-width:0px;flex:1 1 0%;flex-direction:row;align-items:stretch;overflow:hidden;border-radius:0.375rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.s-bullet-delivery-branch-search-wrap:focus-within{border-color:var(--color-primary-dark);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-color:var(--color-primary-dark)}.s-bullet-delivery-branch-search-icon{pointer-events:none;position:static;display:flex;flex-shrink:0;align-items:center;justify-content:center;padding-inline-start:0.5rem;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-search-icon svg{height:1.25rem;width:1.25rem}.s-bullet-delivery-branch-search-input{min-height:40px;min-width:0px;flex:1 1 0%;border-radius:0px;border-style:none;background-color:transparent;padding-top:0.5rem;padding-bottom:0.5rem;padding-inline-end:0.75rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-bullet-delivery-branch-search-input::placeholder{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-search-input:focus{outline:2px solid transparent;outline-offset:2px;border:none;box-shadow:none;--tw-ring-shadow:none}.s-bullet-delivery-location-btn{display:flex;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;gap:0.5rem;border-radius:0.5rem;border-width:1px;padding-left:1rem;padding-right:1rem;padding-top:0.5rem;padding-bottom:0.5rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-location-btn:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-location-btn:disabled{cursor:not-allowed;opacity:0.5}.s-bullet-delivery-location-btn--full{min-height:40px}.s-bullet-delivery-location-btn--loading{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-location-icon{height:0.875rem;width:0.875rem;flex-shrink:0}.s-bullet-delivery-location-icon svg{height:100%;width:100%}.s-bullet-delivery-branches-wrap{overflow:hidden}.s-bullet-delivery-branches-list{position:relative;max-height:min(260px, 32svh);overflow-y:auto;border-radius:0.5rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}@media (min-width: 768px){.s-bullet-delivery-branches-list{max-height:220px}}.s-bullet-delivery-branches-loading{overflow:hidden;border-radius:0.5rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-info{display:flex;max-width:6.25rem;flex-direction:column;gap:0.125rem}.s-bullet-delivery-branch-name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:break-word;font-size:0.875rem;line-height:1.25rem;font-weight:500;line-height:1.375;--tw-text-opacity:1;color:rgb(24 24 27 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-prep{text-align:start;font-size:0.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-time{font-size:0.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-time:where([dir=\"ltr\"],[dir=\"ltr\"] *){text-align:end}.s-bullet-delivery-branch-time:where([dir=\"rtl\"],[dir=\"rtl\"] *){text-align:start}.s-bullet-delivery-branch-map-link{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:0.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:0.5rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1));text-decoration-line:none;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-branch-map-link:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-item>.s-bullet-delivery-branch-map-link{position:relative;z-index:10;pointer-events:auto}.s-bullet-delivery-branch-map-link-icon{display:flex;height:0.875rem;width:0.875rem;align-items:center;justify-content:center}.s-bullet-delivery-branch-map-link-icon svg{height:100%;width:100%}.s-bullet-delivery-branch-skeleton-title{max-width:100%}.s-bullet-delivery-branch-skeleton-time{justify-self:end}.s-bullet-delivery-branch-item{display:grid;min-width:0px;cursor:pointer;align-items:center;gap:0.5rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;text-align:end;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;grid-template-columns:auto auto auto 1fr auto}.s-bullet-delivery-branch-item:last-child{border-bottom-width:0px}.s-bullet-delivery-branch-item:hover:not(.s-bullet-delivery-branch-item--disabled){--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-item--selected{background-color:color-mix(in srgb,var(--color-primary) 5%,transparent)}.s-bullet-delivery-branch-item--disabled{cursor:not-allowed;opacity:0.5}.s-bullet-delivery-branch-icon{display:grid;place-content:center;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));stroke:var(--color-primary-dark);padding:0.625rem;color:var(--color-primary-dark)}.s-bullet-delivery-branch-icon span{display:block;height:0.875rem;width:0.875rem}.s-bullet-delivery-branch-icon span svg{height:100%;width:100%}.s-bullet-delivery-branch-skeleton{display:grid;min-width:0px;align-items:center;gap:0.5rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;grid-template-columns:auto auto auto 1fr auto}.s-bullet-delivery-branch-skeleton:last-child{border-bottom-width:0px}.s-bullet-delivery-branch-skeleton-radio{flex-shrink:0}.s-bullet-delivery-branch-skeleton-icon{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-branch-skeleton-icon salla-skeleton{display:block}.s-bullet-delivery-branch-skeleton-map{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-branch-skeleton-map salla-skeleton{display:block}.s-bullet-delivery-branch-skeleton-content{display:flex;min-width:0px;flex-direction:column;gap:0.5rem;overflow:hidden}.s-bullet-delivery-branch-skeleton-content salla-skeleton{min-width:0px;max-width:100%}.s-bullet-delivery-radio{margin-top:2px;height:1rem;width:1rem;flex-shrink:0;cursor:pointer;appearance:none;border-radius:9999px;border-width:2px;--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-radio:checked{border-color:var(--color-primary-dark);background:radial-gradient(circle,#fff 0,#fff 22%,var(--color-primary) 22%)}.s-bullet-delivery-radio:focus{outline:2px solid transparent;outline-offset:2px}.s-bullet-delivery-radio:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-color:var(--color-primary-dark);--tw-ring-offset-width:2px}.s-bullet-delivery-skeleton{box-sizing:border-box;min-width:0px;max-width:100%;overflow:hidden;padding:1.25rem}.s-bullet-delivery-skeleton salla-skeleton{min-width:0px;max-width:100%}.s-bullet-delivery-skeleton-header{margin-bottom:1.5rem;display:flex;min-width:0px;max-width:100%;flex-direction:column;align-items:flex-start;gap:0.75rem}.s-bullet-delivery-skeleton-title{display:block;max-width:100%}.s-bullet-delivery-skeleton-subtitle{display:block;max-width:100%}.s-bullet-delivery-skeleton-tabs{margin-bottom:1.5rem;display:grid;min-width:0px;max-width:100%;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.5rem}.s-bullet-delivery-skeleton-tabs--single{grid-template-columns:repeat(1, minmax(0, 1fr))}.s-bullet-delivery-skeleton-tab{display:flex;align-items:center;gap:1rem;border-radius:0.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-bullet-delivery-skeleton-tab-icon{display:block;max-width:100%}.s-bullet-delivery-skeleton-tab-label{display:block;max-width:100%}.s-bullet-delivery-skeleton-field-label{display:block;max-width:100%}.s-bullet-delivery-skeleton-field-control{display:block;max-width:100%}.s-bullet-delivery-skeleton-content{margin-bottom:1.5rem;display:grid;min-width:0px;max-width:100%;gap:1rem}.s-bullet-delivery-skeleton-field{display:flex;min-width:0px;max-width:100%;flex-direction:column;align-items:flex-start;gap:0.5rem}.s-bullet-delivery-skeleton-footer{min-width:0px;max-width:100%}.s-bullet-delivery-add-address-header{margin-bottom:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:0.75rem}.s-bullet-delivery-add-address-title{display:flex;width:100%;flex:1 1 0%;cursor:pointer;align-items:center;border-style:none;background-color:transparent;padding:0px;text-align:start;font-size:1.125rem;line-height:1.75rem;font-weight:700;color:var(--color-primary)}.s-bullet-delivery-add-address svg{height:2.5rem;width:2.5rem;fill:currentColor}.s-bullet-delivery-allocation-out-of-coverage-icon svg{height:1.25rem;width:1.25rem}.s-bullet-delivery-add-address-form{display:grid;gap:1rem}.s-bullet-delivery-add-address-submit{width:100%}.s-bullet-delivery-form-actions{display:flex;gap:0.75rem;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));padding-top:1rem}.s-bullet-delivery-form-actions salla-button{flex:1 1 0%}.s-bullet-delivery-form-actions--single{border-top-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-top:1.25rem}.s-bullet-delivery-form-actions--single salla-button{width:100%;flex:1 1 0%}.s-bullet-delivery-market-warning-overlay{position:fixed;inset:0px;z-index:60;display:flex;align-items:center;justify-content:center;background-color:rgb(0 0 0 / 0.5)}.s-bullet-delivery-market-warning{margin-left:1rem;margin-right:1rem;width:100%;max-width:24rem;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-bullet-delivery-market-warning-title{margin-bottom:0.75rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-market-warning-message{margin-bottom:1.5rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-market-warning-actions{display:flex;gap:0.75rem}.s-bullet-delivery-market-warning-actions salla-button{flex:1 1 0%}.s-bullet-delivery-cart-view{margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;border-radius:0.75rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1rem}.s-bullet-delivery-cart-view-info{display:flex;min-width:0px;flex:1 1 0%;align-items:center;gap:0.75rem}.s-bullet-delivery-cart-view-text{display:flex;flex-direction:column;text-align:start}.s-bullet-delivery-cart-view-title{font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-cart-view-subtitle{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1));margin-block-start:0.125rem}.s-bullet-delivery-cart-view-icon{display:flex;height:3.5rem;width:3.5rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));color:var(--color-primary-dark)}.s-bullet-delivery-cart-view-icon svg{height:1.25rem;width:1.25rem;stroke:currentColor}.s-bullet-delivery-cart-view-button{flex-shrink:0;align-self:center}.s-bullet-delivery-location-permission-btn{display:flex;width:100%;cursor:pointer;align-items:center;gap:0.625rem;border-radius:0.5rem;border-width:0px;padding:0.75rem;text-align:start;background:#fdf2f2}.s-bullet-delivery-location-permission-icon{display:inline-flex;height:34px;width:34px;flex-shrink:0}.s-bullet-delivery-location-permission-icon svg{height:100%;width:100%}.s-bullet-delivery-location-permission-text{min-width:0px;flex:1 1 0%;font-size:0.75rem;line-height:1rem;line-height:18px;--tw-text-opacity:1;color:rgb(68 68 68 / var(--tw-text-opacity, 1))}.s-bullet-delivery-location-permission-arrow{flex-shrink:0;font-size:1rem;line-height:1.5rem;--tw-text-opacity:1;color:rgb(102 102 102 / var(--tw-text-opacity, 1))}.s-bullet-delivery-location-distance-warning{display:flex;width:100%;animation:s-bullet-delivery-fade-in 200ms ease;align-items:center;gap:0.625rem;border-radius:0.5rem;padding:0.75rem;background:#fff8e1}.s-bullet-delivery-location-distance-warning-icon{display:inline-flex;height:34px;width:34px;flex-shrink:0}.s-bullet-delivery-location-distance-warning-icon svg{height:100%;width:100%}.s-bullet-delivery-location-distance-warning-text{min-width:0px;flex:1 1 0%;font-size:0.75rem;line-height:1rem;line-height:18px;--tw-text-opacity:1;color:rgb(68 68 68 / var(--tw-text-opacity, 1))}";
324
308
 
325
309
  const BRANCH_SEARCH_DEBOUNCE_MS = 1000;
310
+ /** Shorter queries are filtered locally; the branches API ignores them. */
311
+ const BRANCH_SEARCH_MIN_LENGTH = 2;
326
312
  const GEOLOCATION_TIMEOUT = 10000;
313
+ /** GeolocationPositionError.PERMISSION_DENIED — inlined; the class is absent on the server. */
314
+ const GEO_PERMISSION_DENIED = 1;
315
+ /** Silent read for branch distances: a short wait, and a recent cached fix is good enough. */
316
+ const SILENT_GEOLOCATION_TIMEOUT = 5000;
317
+ const SILENT_GEOLOCATION_MAX_AGE = 10 * 60 * 1000;
318
+ /** Longest the branch list waits for that read; a later fix still serves the next list request. */
319
+ const BRANCH_LIST_LOCATION_WAIT = 1500;
320
+ /** Matches the `per_page` default of `bulletDeliveryAPI.getBranches`. */
321
+ const BRANCH_PAGE_SIZE = 20;
327
322
  /** Final fallback center used only if `user.default_geo_location` is absent (Riyadh — matches checkout map-page). */
328
323
  const DEFAULT_MAP_CENTER = { lat: 24.7756042, lng: 46.7360729 };
329
324
  const DEBUG_KEY = 'salla-bullet-delivery-debug';
@@ -344,6 +339,8 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
344
339
  this.pendingCartSubmitResolver = null;
345
340
  this.pendingCartSubmitPromise = null;
346
341
  this.cartSubmitConfirmationPending = false;
342
+ /** Query the current branch list was searched with server-side; its results are not re-filtered locally. */
343
+ this.branchesServerQuery = '';
347
344
  this.branchSearchDebounceTimer = null;
348
345
  this.countrySearchTimer = null;
349
346
  this.regionSearchTimer = null;
@@ -391,6 +388,8 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
391
388
  /** Identifies the latest reverse-geocode call so a resolved-but-superseded callback (same
392
389
  * coordinates re-picked, or the map left) can be told apart from the current one. */
393
390
  this.geocodeRequestId = 0;
391
+ /** Identifies the latest pickup-offer fetch so one from an earlier modal open is dropped. */
392
+ this.pickupDiscountRequestId = 0;
394
393
  // Core state
395
394
  this.activeTab = "address";
396
395
  this.isLoggedIn = false;
@@ -413,9 +412,27 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
413
412
  this.selectedSessionAddress = false;
414
413
  // Pickup state
415
414
  this.branches = [];
415
+ /** Pickup offer range across the store's branches (INV-1416); null shows the default tab badge. */
416
+ this.pickupDiscountRange = null;
417
+ /** False until the offer lookup settles, so the tab never flashes the default badge before an offer. */
418
+ this.pickupDiscountResolved = false;
416
419
  this.filteredBranches = [];
417
420
  this.selectedBranch = null;
418
421
  this.branchSearchQuery = "";
422
+ /** Cities that have branches in the selected country (from the unfiltered branch list). */
423
+ this.branchCities = [];
424
+ this.selectedBranchCity = null;
425
+ this.branchCitySearchQuery = '';
426
+ /** Branch whose weekly hours are expanded behind the chevron (one at a time). */
427
+ this.expandedScheduleBranchId = null;
428
+ /** Shopper's device location for branch distances (see getGrantedDeviceLocation). */
429
+ this.shopperLocation = null;
430
+ this.shopperLocationRequestId = 0;
431
+ this.nearestBranchRequestId = 0;
432
+ /** Bumped per branch-list request; overlapping city/search loads only apply the latest one. */
433
+ this.branchesRequestId = 0;
434
+ /** Shared country rows and city options expire with the API cache. */
435
+ this.allBranchCities = null;
419
436
  // Loading states
420
437
  this.loadingCountries = false;
421
438
  this.loadingCities = false;
@@ -534,6 +551,13 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
534
551
  this.displayedDistricts = this.districts;
535
552
  this.searchingDistricts = false;
536
553
  };
554
+ this.handleBranchCitySelected = (item) => {
555
+ this.selectedBranchCity = item && item.id !== -1
556
+ ? (this.branchCities.find((c) => String(c.id) === String(item.id)) ?? item)
557
+ : null;
558
+ this.selectedBranch = null;
559
+ void this.loadBranches();
560
+ };
537
561
  this.handleMapLocationChanged = (event) => {
538
562
  const detail = event.detail;
539
563
  if (!detail?.position?.lat || !detail?.position?.lng)
@@ -758,6 +782,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
758
782
  }
759
783
  // Reset state before opening
760
784
  this.resetState();
785
+ void this.loadPickupDiscountRange();
761
786
  if (!silent) {
762
787
  // Open modal immediately — fields render right away with inline loading
763
788
  this.modal.open();
@@ -809,20 +834,18 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
809
834
  }
810
835
  }
811
836
  // Load branches only when branch tab is active (lazy tab data)
812
- // Use lat/lng from session storage if available for more accurate results
813
837
  if (this.activeTab === "branch") {
814
- const intentLat = getIntentLatitude(savedIntent);
815
- const intentLng = getIntentLongitude(savedIntent);
816
- if (intentLat != null && intentLng != null) {
817
- await this.loadBranchesWithLocation(intentLat, intentLng);
818
- }
819
- else {
820
- await this.loadBranches();
821
- }
838
+ const loading = this.loadBranches();
839
+ const request = this.branchesRequestId;
840
+ await loading;
841
+ if (request !== this.branchesRequestId || this.activeTab !== 'branch' || this.branchSearchQuery.trim())
842
+ return;
822
843
  // Auto-select preselected branch if provided
823
844
  if (this.preselectedBranchId) {
824
- this.preselectBranch(this.preselectedBranchId);
845
+ await this.preselectBranch(this.preselectedBranchId);
825
846
  }
847
+ if (request !== this.branchesRequestId || this.activeTab !== 'branch' || this.branchSearchQuery.trim())
848
+ return;
826
849
  }
827
850
  // Prefill form data from session storage
828
851
  await this.prefillFromSessionStorage();
@@ -875,6 +898,17 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
875
898
  });
876
899
  }
877
900
  resetState() {
901
+ clearBranchCache();
902
+ this.allBranchCities = null;
903
+ this.pickupDiscountRequestId++;
904
+ if (this.branchSearchDebounceTimer)
905
+ clearTimeout(this.branchSearchDebounceTimer);
906
+ ++this.branchesRequestId;
907
+ this.loadingBranches = false;
908
+ ++this.shopperLocationRequestId;
909
+ ++this.nearestBranchRequestId;
910
+ this.loadingNearestBranch = false;
911
+ this.shopperLocation = null;
878
912
  this.viewMode = "main";
879
913
  this.mapLocationData = null;
880
914
  this.mapCountryCode = null;
@@ -891,11 +925,16 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
891
925
  this.selectedSessionAddress = false;
892
926
  this.selectedBranch = null;
893
927
  this.branchSearchQuery = "";
928
+ this.branchCities = [];
929
+ this.selectedBranchCity = null;
930
+ this.expandedScheduleBranchId = null;
894
931
  this.regions = [];
895
932
  this.cities = [];
896
933
  this.districts = [];
897
934
  this.branches = [];
898
935
  this.filteredBranches = [];
936
+ this.pickupDiscountRange = null;
937
+ this.pickupDiscountResolved = false;
899
938
  this.newAddressForm = { ...SallaBulletDelivery.INITIAL_ADDRESS_FORM };
900
939
  this.showCartWillBeClearedBanner = false;
901
940
  this.allocationOutOfCoverageMessage = null;
@@ -1299,15 +1338,62 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1299
1338
  });
1300
1339
  }
1301
1340
  async loadBranches() {
1341
+ const request = ++this.branchesRequestId;
1342
+ // A city change keeps the active search, so the server filters before picking the first page.
1343
+ const query = this.branchSearchQuery.trim();
1302
1344
  this.loadingBranches = true;
1303
1345
  try {
1304
- this.applyLoadedBranches(await bulletDeliveryAPI.getBranches({
1346
+ const branches = await bulletDeliveryAPI.getBranches({
1305
1347
  country_id: this.selectedCountry?.id,
1306
- }));
1348
+ city_id: this.selectedBranchCity?.id,
1349
+ query,
1350
+ ...(await this.getListLocation()),
1351
+ });
1352
+ if (request !== this.branchesRequestId)
1353
+ return;
1354
+ this.branchesServerQuery = query.length >= BRANCH_SEARCH_MIN_LENGTH ? query : '';
1355
+ this.applyLoadedBranches(branches);
1356
+ // Search results hold only the matching branches, which would shrink the city options.
1357
+ if (query.length < BRANCH_SEARCH_MIN_LENGTH)
1358
+ void this.refreshBranchCities();
1307
1359
  }
1308
1360
  finally {
1309
- this.loadingBranches = false;
1361
+ if (request === this.branchesRequestId)
1362
+ this.loadingBranches = false;
1363
+ }
1364
+ }
1365
+ /** Reuse the country's city collection while keeping visible choices usable during loading. */
1366
+ refreshBranchCities() {
1367
+ if (!this.selectedBranchCity)
1368
+ this.branchCities = getBranchCities(this.branches);
1369
+ const countryId = this.selectedCountry?.id;
1370
+ if (!this.allBranchCities || this.allBranchCities.countryId !== countryId || Date.now() - this.allBranchCities.timestamp > CACHE_TTL) {
1371
+ const branches = bulletDeliveryAPI.getAllBranches(countryId, BRANCH_PAGE_SIZE);
1372
+ this.allBranchCities = {
1373
+ countryId,
1374
+ timestamp: Date.now(),
1375
+ branches,
1376
+ cities: branches.then((all) => getBranchCities(all)),
1377
+ };
1310
1378
  }
1379
+ const pending = this.allBranchCities;
1380
+ return pending.cities.then((cities) => {
1381
+ if (this.allBranchCities !== pending || this.selectedCountry?.id !== countryId)
1382
+ return;
1383
+ if (!cities.length) {
1384
+ this.allBranchCities = null;
1385
+ return;
1386
+ }
1387
+ this.branchCities = cities;
1388
+ }).catch((error) => {
1389
+ if (this.allBranchCities === pending) {
1390
+ this.allBranchCities = null;
1391
+ if (this.selectedCountry?.id === countryId && Array.isArray(error?.branches)) {
1392
+ this.branchCities = getBranchCities([...this.branches, ...error.branches]);
1393
+ }
1394
+ }
1395
+ console.error('[BulletDelivery] Error fetching branch cities', error);
1396
+ });
1311
1397
  }
1312
1398
  /**
1313
1399
  * Store a freshly fetched branch list and reconcile the current selection with it.
@@ -1325,8 +1411,33 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1325
1411
  }
1326
1412
  this.filterBranches();
1327
1413
  }
1414
+ /** Shares a fresh branch collection with the picker on each modal open. */
1415
+ async loadPickupDiscountRange() {
1416
+ if (!this.supportsPickup)
1417
+ return;
1418
+ const requestId = ++this.pickupDiscountRequestId;
1419
+ const { branches, complete } = await bulletDeliveryAPI.getBranchCollection(undefined, 60, { requireComplete: true });
1420
+ if (requestId !== this.pickupDiscountRequestId)
1421
+ return;
1422
+ this.pickupDiscountRange = complete ? getBranchDiscountRange(branches) : null;
1423
+ this.pickupDiscountResolved = true;
1424
+ }
1425
+ /**
1426
+ * ar: "خصم 25%" / "خصم 5 – 25%" / "خصم 10 ر.س"; en: "25% discount" / "5 – 25% discount" / "10 SAR discount".
1427
+ * Money may carry the riyal-symbol SVG, so it renders as HTML.
1428
+ */
1429
+ getPickupDiscountLabel(type, min, max = min) {
1430
+ const format = (amount) => type === 'percentage' ? String(Math.round(amount * 100) / 100) : salla.money(amount);
1431
+ const value = min === max ? format(min) : `${format(min)} – ${format(max)}`;
1432
+ const amount = type === 'percentage' ? `${value}%` : `${value} `;
1433
+ const fallback = this.isArabic ? `خصم ${amount}` : ` ${amount} discount`;
1434
+ return Salla.lang.getWithDefault('pages.checkout.pickup_discount', fallback, { amount });
1435
+ }
1328
1436
  filterBranches() {
1329
- this.filteredBranches = filterBranches(this.branches, this.branchSearchQuery);
1437
+ const query = this.branchSearchQuery.trim();
1438
+ this.filteredBranches = query && query === this.branchesServerQuery
1439
+ ? this.branches
1440
+ : filterBranches(this.branches, query);
1330
1441
  }
1331
1442
  /**
1332
1443
  * Prefill form fields from session storage
@@ -1351,7 +1462,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1351
1462
  if (country) {
1352
1463
  this.selectedCountry = country;
1353
1464
  this.updateNewAddressForm({ country_id: Number(country.id) });
1354
- this.preselectBranch(getIntentBranchId(intent));
1465
+ await this.preselectBranch(getIntentBranchId(intent));
1355
1466
  }
1356
1467
  }
1357
1468
  }
@@ -1390,7 +1501,16 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1390
1501
  }
1391
1502
  }
1392
1503
  applyCountryChange(newCountry) {
1504
+ ++this.branchesRequestId;
1505
+ this.allBranchCities = null;
1506
+ this.loadingBranches = false;
1507
+ this.branches = [];
1508
+ this.filteredBranches = [];
1393
1509
  this.selectedCountry = newCountry;
1510
+ this.selectedBranchCity = null;
1511
+ this.branchCities = [];
1512
+ this.branchCitySearchQuery = '';
1513
+ this.selectedBranch = null;
1394
1514
  this.selectedRegion = null;
1395
1515
  this.regions = [];
1396
1516
  this.displayedRegions = [];
@@ -1510,19 +1630,11 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1510
1630
  void this.loadBranches();
1511
1631
  return;
1512
1632
  }
1513
- this.branchSearchDebounceTimer = setTimeout(async () => {
1514
- if (query.trim().length < 2)
1633
+ this.branchSearchDebounceTimer = setTimeout(() => {
1634
+ // Below the minimum, only reload when the list still holds an earlier server search.
1635
+ if (query.trim().length < BRANCH_SEARCH_MIN_LENGTH && !this.branchesServerQuery)
1515
1636
  return;
1516
- this.loadingBranches = true;
1517
- try {
1518
- this.applyLoadedBranches(await bulletDeliveryAPI.getBranches({
1519
- country_id: this.selectedCountry?.id,
1520
- query,
1521
- }));
1522
- }
1523
- finally {
1524
- this.loadingBranches = false;
1525
- }
1637
+ void this.loadBranches();
1526
1638
  }, BRANCH_SEARCH_DEBOUNCE_MS);
1527
1639
  }
1528
1640
  clearSearchTimers() {
@@ -1549,13 +1661,23 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1549
1661
  this.clearSearchTimers();
1550
1662
  }
1551
1663
  async loadBranchesWithLocation(lat, lng) {
1664
+ // Later list loads (city change, search) keep measuring from the device location.
1665
+ ++this.shopperLocationRequestId;
1666
+ this.shopperLocation = { lat, lng };
1667
+ const request = ++this.branchesRequestId;
1552
1668
  this.loadingBranches = true;
1553
1669
  try {
1554
- this.applyLoadedBranches(await bulletDeliveryAPI.getBranches({
1670
+ const branches = await bulletDeliveryAPI.getBranches({
1555
1671
  country_id: this.selectedCountry?.id,
1672
+ city_id: this.selectedBranchCity?.id,
1556
1673
  lat,
1557
1674
  lng,
1558
- }));
1675
+ });
1676
+ if (request !== this.branchesRequestId)
1677
+ return false;
1678
+ this.branchesServerQuery = '';
1679
+ this.applyLoadedBranches(branches);
1680
+ void this.refreshBranchCities();
1559
1681
  // Auto-select country from first branch if no country is selected
1560
1682
  if (!this.selectedCountry && this.branches.length > 0) {
1561
1683
  const firstBranch = this.branches[0];
@@ -1569,9 +1691,11 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1569
1691
  }
1570
1692
  }
1571
1693
  }
1694
+ return true;
1572
1695
  }
1573
1696
  finally {
1574
- this.loadingBranches = false;
1697
+ if (request === this.branchesRequestId)
1698
+ this.loadingBranches = false;
1575
1699
  }
1576
1700
  }
1577
1701
  /** Locate nearest branch using device geolocation (branches tab only). */
@@ -1580,6 +1704,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1580
1704
  this.locationError = Salla.lang.get("pages.checkout.current_location_not_supported");
1581
1705
  return;
1582
1706
  }
1707
+ const request = ++this.nearestBranchRequestId;
1583
1708
  this.loadingNearestBranch = true;
1584
1709
  this.locationError = "";
1585
1710
  try {
@@ -1591,7 +1716,12 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1591
1716
  });
1592
1717
  });
1593
1718
  const { latitude, longitude } = position.coords;
1594
- await this.loadBranchesWithLocation(latitude, longitude);
1719
+ if (request !== this.nearestBranchRequestId)
1720
+ return;
1721
+ if (!await this.loadBranchesWithLocation(latitude, longitude))
1722
+ return;
1723
+ if (request !== this.nearestBranchRequestId)
1724
+ return;
1595
1725
  const nearestBranch = findNearestBranch(this.branches, latitude, longitude);
1596
1726
  if (nearestBranch) {
1597
1727
  this.selectedBranch = nearestBranch;
@@ -1600,26 +1730,56 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1600
1730
  }
1601
1731
  }
1602
1732
  catch (error) {
1733
+ if (request !== this.nearestBranchRequestId)
1734
+ return;
1603
1735
  const geoError = error;
1604
1736
  const code = typeof geoError?.code === "number" ? geoError.code : -1;
1605
- this.locationError = getGeolocationErrorMessage(code);
1737
+ this.locationError = this.geolocationErrorMessage(code);
1606
1738
  }
1607
1739
  finally {
1608
- this.loadingNearestBranch = false;
1740
+ if (request === this.nearestBranchRequestId)
1741
+ this.loadingNearestBranch = false;
1609
1742
  }
1610
1743
  }
1744
+ geolocationErrorMessage(code) {
1745
+ if (code === GEO_PERMISSION_DENIED) {
1746
+ return Salla.lang.getWithDefault("pages.checkout.allow_location_permission_blocked_hint", this.isArabic
1747
+ ? "مشاركة الموقع محجوبة لهذا المتجر في متصفحك. افتح إعدادات الموقع في المتصفح، اسمح بالوصول إلى الموقع، ثم أعد المحاولة."
1748
+ : "Location sharing is blocked for this store in your browser. Open your browser's location settings, allow location access, then try again.");
1749
+ }
1750
+ return Salla.lang.getWithDefault("pages.checkout.pickup_location_unavailable", this.isArabic ? "تعذَّر تحديد موقعك. حاول مرة أخرى." : "We couldn't detect your location. Try again.");
1751
+ }
1611
1752
  handleBranchSelect(branch) {
1612
1753
  this.selectedBranch = branch;
1613
1754
  this.allocationOutOfCoverageMessage = null;
1614
1755
  }
1756
+ toggleBranchSchedule(branchId) {
1757
+ this.expandedScheduleBranchId = this.expandedScheduleBranchId === branchId ? null : branchId;
1758
+ }
1615
1759
  /**
1616
1760
  * Restore a remembered / event-provided branch — but only one the list renders as selectable,
1617
1761
  * so a branch that has closed since it was remembered is never silently preselected (INV-1407).
1618
1762
  */
1619
- preselectBranch(branchId) {
1620
- if (branchId == null)
1763
+ async preselectBranch(branchId) {
1764
+ if (branchId == null || this.selectedBranch)
1621
1765
  return;
1622
- const branch = this.branches.find((b) => b.id === branchId);
1766
+ let branch = this.branches.find((b) => b.id === branchId);
1767
+ if (!branch && this.allBranchCities) {
1768
+ const pending = this.allBranchCities;
1769
+ const request = this.branchesRequestId;
1770
+ try {
1771
+ branch = (await pending.branches).find((b) => b.id === branchId);
1772
+ }
1773
+ catch {
1774
+ return;
1775
+ }
1776
+ if (request !== this.branchesRequestId || this.activeTab !== 'branch' || this.allBranchCities !== pending || pending.countryId !== this.selectedCountry?.id || this.selectedBranch || this.branchSearchQuery.trim())
1777
+ return;
1778
+ if (this.selectedBranchCity && String(branch?.city?.id) !== String(this.selectedBranchCity.id))
1779
+ return;
1780
+ if (branch && isBranchSelectable(branch))
1781
+ this.applyLoadedBranches([...this.branches, branch]);
1782
+ }
1623
1783
  if (branch && isBranchSelectable(branch)) {
1624
1784
  this.selectedBranch = branch;
1625
1785
  }
@@ -1880,6 +2040,48 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1880
2040
  }
1881
2041
  /** Center shown before geolocation resolves — the customer's IP-based default (falls back to Riyadh). */
1882
2042
  get mapInitialCenter() {
2043
+ return this.defaultGeoLocation ?? DEFAULT_MAP_CENTER;
2044
+ }
2045
+ /** Device location for a branch list request, waiting at most BRANCH_LIST_LOCATION_WAIT. */
2046
+ getListLocation() {
2047
+ const location = this.getGrantedDeviceLocation();
2048
+ if (this.shopperLocation || !navigator.geolocation || !navigator.permissions?.query)
2049
+ return location;
2050
+ return Promise.race([location, new Promise((resolve) => setTimeout(() => resolve({}), BRANCH_LIST_LOCATION_WAIT))]);
2051
+ }
2052
+ /**
2053
+ * Where branch distances (`distance_km`) are measured from: the shopper's real device location
2054
+ * only. It comes from "nearest to my location", or is read silently when location permission was
2055
+ * already granted (never prompting). Empty otherwise: `user.default_geo_location` and the Riyadh
2056
+ * map fallback are not where the shopper is, so they would show wrong distances.
2057
+ */
2058
+ async getGrantedDeviceLocation() {
2059
+ if (this.shopperLocation)
2060
+ return this.shopperLocation;
2061
+ if (!navigator.geolocation || !navigator.permissions?.query)
2062
+ return {};
2063
+ const request = ++this.shopperLocationRequestId;
2064
+ try {
2065
+ const permission = await navigator.permissions.query({ name: 'geolocation' });
2066
+ if (request !== this.shopperLocationRequestId)
2067
+ return this.shopperLocation ?? {};
2068
+ if (permission.state !== 'granted')
2069
+ return {};
2070
+ const position = await new Promise((resolve, reject) => navigator.geolocation.getCurrentPosition(resolve, reject, {
2071
+ timeout: SILENT_GEOLOCATION_TIMEOUT,
2072
+ maximumAge: SILENT_GEOLOCATION_MAX_AGE,
2073
+ }));
2074
+ if (request !== this.shopperLocationRequestId)
2075
+ return this.shopperLocation ?? {};
2076
+ this.shopperLocation = { lat: position.coords.latitude, lng: position.coords.longitude };
2077
+ return this.shopperLocation;
2078
+ }
2079
+ catch {
2080
+ return {};
2081
+ }
2082
+ }
2083
+ /** The customer's IP-based `user.default_geo_location`, or null when it is missing or invalid. */
2084
+ get defaultGeoLocation() {
1883
2085
  const geo = salla.config.get('user.default_geo_location');
1884
2086
  // Coerce defensively: config may arrive as strings, blank/whitespace, NaN, or out-of-range
1885
2087
  // values. Reject blanks before coercion (Number('') === 0) and validate lat/lng ranges so we
@@ -1888,7 +2090,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1888
2090
  const lng = this.toCoordinate(geo?.lng);
1889
2091
  const isValid = lat != null && lng != null &&
1890
2092
  lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180;
1891
- return isValid ? { lat, lng } : DEFAULT_MAP_CENTER;
2093
+ return isValid ? { lat, lng } : null;
1892
2094
  }
1893
2095
  /** Parse a config coordinate to a finite number, treating blank/whitespace strings as missing. */
1894
2096
  toCoordinate(value) {
@@ -1902,6 +2104,8 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1902
2104
  async handleTabChange(tab) {
1903
2105
  if (this.tabChanging)
1904
2106
  return;
2107
+ ++this.branchesRequestId;
2108
+ this.loadingBranches = false;
1905
2109
  this.tabChanging = true;
1906
2110
  try {
1907
2111
  this.activeTab = tab;
@@ -1933,24 +2137,25 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
1933
2137
  this.selectedCountry = this.countries[0];
1934
2138
  }
1935
2139
  }
2140
+ if (String(previousCountryId ?? '') !== String(this.selectedCountry?.id ?? '')) {
2141
+ this.allBranchCities = null;
2142
+ this.selectedBranchCity = null;
2143
+ this.branchCities = [];
2144
+ this.branchCitySearchQuery = '';
2145
+ this.selectedBranch = null;
2146
+ this.branches = [];
2147
+ this.filteredBranches = [];
2148
+ }
1936
2149
  if (tab === "address" && this.needsMap)
1937
2150
  this.fetchAddressToken();
1938
2151
  // Load appropriate data when switching tabs if country is selected
1939
2152
  if (this.selectedCountry) {
1940
2153
  if (tab === "branch") {
1941
2154
  // Load branches when switching to branch tab
1942
- // Check session storage for lat/lng to get nearby branches
1943
2155
  const savedIntent = this.getStoredIntent();
1944
- const intentLat = getIntentLatitude(savedIntent);
1945
- const intentLng = getIntentLongitude(savedIntent);
1946
- if (intentLat != null && intentLng != null) {
1947
- await this.loadBranchesWithLocation(intentLat, intentLng);
1948
- }
1949
- else {
1950
- await this.loadBranches();
1951
- }
2156
+ await this.loadBranches();
1952
2157
  // Preselect branch from session storage if available
1953
- this.preselectBranch(getIntentBranchId(savedIntent));
2158
+ void this.preselectBranch(getIntentBranchId(savedIntent));
1954
2159
  }
1955
2160
  else if (tab === "address") {
1956
2161
  // Lazy-load saved addresses when switching to address tab (if not loaded yet).
@@ -2454,10 +2659,17 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
2454
2659
  (this.activeTab === "address"
2455
2660
  ? Salla.lang.get("pages.checkout.address_out_of_coverage")
2456
2661
  : Salla.lang.get("pages.checkout.failed_to_set_pickup"));
2457
- this.allocationOutOfCoverageMessage = `${errorMessage}.`;
2662
+ this.allocationOutOfCoverageMessage = /[.!؟?]$/.test(errorMessage.trim()) ? errorMessage : `${errorMessage}.`;
2458
2663
  this.trackSelectorResult("failed", previousIntent, []);
2459
2664
  this.confirmBtn?.stop();
2460
2665
  this.confirming = false;
2666
+ // A rejected branch may have turned busy or closed: drop it (the reload may hide it) and
2667
+ // reload so the list shows its current state.
2668
+ if (this.activeTab === "branch") {
2669
+ this.selectedBranch = null;
2670
+ clearApiCache();
2671
+ void this.loadBranches();
2672
+ }
2461
2673
  return;
2462
2674
  }
2463
2675
  // Process successful allocation response
@@ -2623,6 +2835,19 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
2623
2835
  wrapper.append(info, btn);
2624
2836
  return wrapper;
2625
2837
  }
2838
+ /**
2839
+ * A branch pickup offer (INV-1416) replaces the default "save delivery fees" badge; only one shows,
2840
+ * and neither until the offer lookup settles.
2841
+ */
2842
+ renderPickupTabBadge() {
2843
+ if (!this.pickupDiscountResolved)
2844
+ return null;
2845
+ const range = this.pickupDiscountRange;
2846
+ if (range) {
2847
+ return (h("span", { class: "s-bullet-delivery-tab-badge s-bullet-delivery-discount-badge", dir: this.isArabic ? 'rtl' : 'ltr', innerHTML: this.getPickupDiscountLabel(range.type, range.min, range.max) }));
2848
+ }
2849
+ return (h("span", { class: "s-bullet-delivery-tab-badge" }, h("span", { class: "s-bullet-delivery-tab-badge-icon", innerHTML: LightningIcon, "aria-hidden": "true" }), Salla.lang.getWithDefault("pages.checkout.save_delivery_fees", "وفّر رسوم التوصيل")));
2850
+ }
2626
2851
  renderTabs() {
2627
2852
  // Show tabs only when pickup is supported; otherwise delivery-only view with no tabs.
2628
2853
  // The pickup tab is gated by this same `supportsPickup` check, while the delivery
@@ -2632,10 +2857,10 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
2632
2857
  return (h("div", { class: "s-bullet-delivery-tabs" }, this.isSupportsDelivery && (h("button", { type: "button", class: {
2633
2858
  "s-bullet-delivery-tab": true,
2634
2859
  "s-bullet-delivery-tab--active": this.activeTab === "address",
2635
- }, onClick: () => this.handleTabChange("address") }, h("span", { class: "s-bullet-delivery-tab-icon", innerHTML: SILocation, "aria-hidden": "true" }), h("span", null, Salla.lang.get("mobile_app.strings.delivery")))), h("button", { type: "button", class: {
2860
+ }, onClick: () => this.handleTabChange("address") }, h("span", null, Salla.lang.get("mobile_app.strings.delivery")))), h("button", { type: "button", class: {
2636
2861
  "s-bullet-delivery-tab": true,
2637
2862
  "s-bullet-delivery-tab--active": this.activeTab === "branch",
2638
- }, onClick: () => this.handleTabChange("branch") }, h("span", { class: "s-bullet-delivery-tab-icon", innerHTML: Store, "aria-hidden": "true" }), h("span", null, Salla.lang.get("mobile_app.strings.pickup")))));
2863
+ }, onClick: () => this.handleTabChange("branch") }, h("span", null, Salla.lang.get("mobile_app.strings.pickup")), this.renderPickupTabBadge())));
2639
2864
  }
2640
2865
  renderAlert(message) {
2641
2866
  return (h("div", { class: "s-bullet-delivery-allocation-out-of-coverage", role: "alert" }, h("span", { class: "s-bullet-delivery-allocation-out-of-coverage-icon", "aria-hidden": "true" }, h("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", role: "img", "aria-hidden": "true" }, h("title", null, "Information"), h("circle", { cx: "10", cy: "10", r: "9", stroke: "currentColor", "stroke-width": "1.5", fill: "currentColor" }), h("text", { x: "10", y: "14", "text-anchor": "middle", fill: "white", "font-size": "12", "font-weight": "bold" }, "i"))), h("span", { class: "s-bullet-delivery-allocation-out-of-coverage-text", style: { textAlign: this.isRTL ? 'right' : 'left' } }, message)));
@@ -2659,8 +2884,9 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
2659
2884
  }
2660
2885
  return this.renderAlert(`${message} ${Salla.lang.getWithDefault('pages.cart.choose_another_address', 'Choose another address')}`);
2661
2886
  }
2662
- renderCountrySelect() {
2663
- return (h("div", { class: "s-bullet-delivery-field" }, h("salla-searchable-dropdown", { label: Salla.lang.get("blocks.buy_as_gift.receiver_country"), placeholder: Salla.lang.get("pages.checkout.select_country"), items: this.displayedCountries, selectedItem: this.selectedCountry, loading: this.loadingCountries, searching: this.searchingCountries, disabled: this.countries.length <= 1, required: true, inputId: "bullet-delivery-country", searchQuery: this.countrySearchQuery, clientSearch: true, onItemSelected: (e) => this.handleCountrySelected(e.detail), onSearchInput: (e) => this.handleCountrySearch(e.detail), onDropdownClosed: () => this.handleCountryDropdownClosed() })));
2887
+ /** `showLabel` is off in the pickup filter panel, where the selects sit label-less side by side. */
2888
+ renderCountrySelect(showLabel = true) {
2889
+ return (h("div", { class: "s-bullet-delivery-field" }, h("salla-searchable-dropdown", { label: showLabel ? Salla.lang.get("blocks.buy_as_gift.receiver_country") : undefined, placeholder: Salla.lang.get("pages.checkout.select_country"), items: this.displayedCountries, selectedItem: this.selectedCountry, loading: this.loadingCountries, searching: this.searchingCountries, disabled: this.countries.length <= 1, required: true, inputId: "bullet-delivery-country", searchQuery: this.countrySearchQuery, clientSearch: true, onItemSelected: (e) => this.handleCountrySelected(e.detail), onSearchInput: (e) => this.handleCountrySearch(e.detail), onDropdownClosed: () => this.handleCountryDropdownClosed() })));
2664
2890
  }
2665
2891
  /** Region select (SA only): shown when SA is selected; city and district disabled until region selected. */
2666
2892
  renderRegionSelect() {
@@ -2905,66 +3131,146 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
2905
3131
  return (h("form", { onSubmit: handleSubmit }, this.renderGuestDeliveryForm(), h("div", { class: "s-bullet-delivery-form-actions s-bullet-delivery-form-actions--single", style: { padding: '24px' } }, h("salla-button", { type: "submit", loading: this.confirming, disabled: !canSubmit || this.confirming, width: "wide" }, submitLabel), !this.isLoggedIn && (h("button", { type: "button", class: "s-bullet-delivery-login-prompt", onClick: () => this.handleLogin() }, Salla.lang.get('pages.checkout.login_to_use_saved_addresses'))))));
2906
3132
  }
2907
3133
  renderBranchSearch() {
2908
- return (h("div", { class: "s-bullet-delivery-branch-search" }, h("div", { class: "s-bullet-delivery-search-row" }, h("div", { class: "s-bullet-delivery-search s-bullet-delivery-branch-search-wrap" }, h("span", { class: "s-bullet-delivery-search-icon s-bullet-delivery-branch-search-icon", innerHTML: Search, "aria-hidden": "true" }), h("input", { type: "text", class: "s-bullet-delivery-branch-search-input form-input", placeholder: Salla.lang.get("pages.checkout.search_for_city_or_branch"), value: this.branchSearchQuery, onInput: (e) => this.handleBranchSearch(e), autocomplete: "off" })), h("button", { type: "button", class: {
3134
+ return (h("div", { class: "s-bullet-delivery-branch-search" }, h("div", { class: "s-bullet-delivery-search-row" }, h("div", { class: "s-bullet-delivery-search s-bullet-delivery-branch-search-wrap" }, h("span", { class: "s-bullet-delivery-search-icon s-bullet-delivery-branch-search-icon", innerHTML: Search, "aria-hidden": "true" }), h("input", { type: "text", class: "s-bullet-delivery-branch-search-input form-input", placeholder: Salla.lang.getWithDefault("pages.checkout.search_for_country_city_or_branch", this.isArabic ? "ابحث عن دولة أو مدينة أو فرع" : "Search for a country, city or branch"), value: this.branchSearchQuery, onInput: (e) => this.handleBranchSearch(e), autocomplete: "off" })), h("button", { type: "button", class: {
2909
3135
  "s-bullet-delivery-location-btn": true,
2910
3136
  "s-bullet-delivery-location-btn--full": true,
2911
3137
  "s-bullet-delivery-location-btn--loading": this.loadingNearestBranch,
2912
- }, onClick: () => this.handleFindNearestBranch(), disabled: this.loadingNearestBranch }, this.loadingNearestBranch ? (h("span", { class: "s-bullet-delivery-location-icon", "aria-hidden": "true" }, h("salla-skeleton", { height: "18px", width: "18px" }))) : (h("span", { class: "s-bullet-delivery-location-icon", innerHTML: GPS, "aria-hidden": "true" })), h("span", null, Salla.lang.get("pages.checkout.nearest_to_my_location")))), this.locationError && this.activeTab === "branch" && (h("span", { class: "s-bullet-delivery-error" }, this.locationError))));
2913
- }
2914
- /** Renders a branch's `preparation_time_range` as a localized "from - to <unit>" label. */
2915
- getPreparationTimeLabel(range) {
2916
- if (!range)
2917
- return null;
2918
- const unitKeys = {
2919
- hour: 'pages.checkout.preparation_time_hours',
2920
- minute: 'pages.checkout.preparation_time_minutes',
2921
- day: 'pages.checkout.preparation_time_days',
2922
- };
2923
- const key = unitKeys[range.from.unit];
2924
- if (!key)
2925
- return null;
2926
- return Salla.lang
2927
- .getWithDefault(key, 'من {from} إلى {to} دقائق')
2928
- ?.replace('{from}', String(range.from.value))
2929
- ?.replace('{to}', String(range.to.value));
3138
+ }, onClick: () => this.handleFindNearestBranch(), disabled: this.loadingNearestBranch, "aria-label": Salla.lang.get("pages.checkout.nearest_to_my_location") }, this.loadingNearestBranch ? (h("span", { class: "s-bullet-delivery-location-icon", "aria-hidden": "true" }, h("salla-skeleton", { height: "16px", width: "16px" }))) : (h("span", { class: "s-bullet-delivery-location-icon", innerHTML: SILocation, "aria-hidden": "true" })), h("span", { class: "s-bullet-delivery-location-label" }, Salla.lang.get("pages.checkout.nearest_to_my_location")))), this.locationError && this.activeTab === "branch" && (h("span", { class: "s-bullet-delivery-error" }, this.locationError))));
2930
3139
  }
2931
3140
  renderBranchList() {
2932
3141
  if (this.loadingBranches) {
2933
3142
  return (h("div", { class: "s-bullet-delivery-branches-wrap" }, h("div", { class: "s-bullet-delivery-branches-loading" }, [1, 2, 3, 4].map((v) => (h("div", { key: v, class: "s-bullet-delivery-branch-skeleton" }, h("salla-skeleton", { class: "s-bullet-delivery-branch-skeleton-radio", type: "circle", height: "16px", width: "16px" }), h("div", { class: "s-bullet-delivery-branch-skeleton-icon" }, h("salla-skeleton", { height: "34px", width: "34px" })), h("div", { class: "s-bullet-delivery-branch-skeleton-content" }, h("salla-skeleton", { class: "s-bullet-delivery-branch-skeleton-title", height: "12px", width: "124px" })), h("salla-skeleton", { class: "s-bullet-delivery-branch-skeleton-time", height: "12px", width: "88px" }), h("div", { class: "s-bullet-delivery-branch-skeleton-map" }, h("salla-skeleton", { height: "32px", width: "32px" }))))))));
2934
3143
  }
2935
- if (this.filteredBranches.length === 0) {
3144
+ const branches = this.filteredBranches.filter(isBranchVisible);
3145
+ if (branches.length === 0) {
2936
3146
  return (h("salla-placeholder", { alignment: "center", class: "s-bullet-delivery-placeholder" }, h("span", { slot: "title" }, Salla.lang.get("pages.checkout.no_pickup_branches_found"))));
2937
3147
  }
2938
- return (h("div", { class: "s-bullet-delivery-branches-wrap" }, h("ul", { class: "s-bullet-delivery-branches-list s-scrollbar" }, this.filteredBranches.map(branch => {
3148
+ return (h("div", { class: "s-bullet-delivery-branches-wrap" }, h("ul", { class: "s-bullet-delivery-branches-list s-scrollbar", role: "listbox" }, branches.map(branch => {
2939
3149
  const selectable = isBranchSelectable(branch);
2940
- const readiness = branch?.pickup_readiness;
3150
+ const isSelected = this.selectedBranch?.id === branch.id;
2941
3151
  const locationText = [branch.country?.name, branch.city?.name, branch.district?.name]
2942
3152
  .filter(Boolean)
2943
- .join(', ');
2944
- const preparationTimeLabel = this.getPreparationTimeLabel(branch.preparation_time_range);
3153
+ .join('، ');
3154
+ const distance = formatBranchDistance(branch.distance_km);
3155
+ // Closed but taking orders: the opening-time readiness replaces the range.
3156
+ const readinessLabel = getBranchReadinessLabel(branch) ?? this.getReadyTodayLabel(branch);
3157
+ const preparationLabel = readinessLabel ? null : this.getPreparationShortLabel(branch.preparation_time_range);
3158
+ const scheduleGroups = groupBranchSchedule(getBranchWeekSchedule(branch));
3159
+ // An always-open branch has no hours worth listing, so it gets no working-hours dropdown.
3160
+ const hasSchedule = scheduleGroups.length > 0 && !isBranchAlwaysOpen(branch);
3161
+ const scheduleOpen = hasSchedule && this.expandedScheduleBranchId === branch.id;
3162
+ const phoneHref = getBranchPhoneHref(branch);
3163
+ const whatsappHref = getBranchWhatsappHref(branch);
3164
+ const directionsHref = getBranchDirectionsHref(branch);
3165
+ const discount = getBranchDiscount(branch);
2945
3166
  return (h("li", { key: branch.id, class: {
2946
3167
  's-bullet-delivery-branch-item': true,
2947
- 's-bullet-delivery-branch-item--selected': this.selectedBranch?.id === branch.id,
3168
+ 's-bullet-delivery-branch-item--selected': isSelected,
2948
3169
  's-bullet-delivery-branch-item--disabled': !selectable,
2949
- }, tabIndex: selectable ? 0 : -1, role: "option", "aria-disabled": !selectable, onClick: () => selectable && this.handleBranchSelect(branch), onKeyDown: e => {
3170
+ }, tabIndex: selectable ? 0 : -1, role: "option", "aria-selected": isSelected, "aria-disabled": !selectable, onClick: () => selectable && this.handleBranchSelect(branch), onKeyDown: e => {
3171
+ if (e.target !== e.currentTarget)
3172
+ return;
2950
3173
  if (e.key === 'Enter' || e.key === ' ') {
2951
3174
  e.preventDefault();
2952
3175
  if (selectable)
2953
3176
  this.handleBranchSelect(branch);
2954
3177
  }
2955
- } }, h("input", { type: "radio", name: "branch", class: "s-bullet-delivery-radio", checked: this.selectedBranch?.id === branch.id, disabled: !selectable }), h("span", { class: "s-bullet-delivery-branch-icon", "aria-hidden": "true" }, h("span", { innerHTML: Store })), h("div", { class: "flex flex-col" }, h("div", { class: "flex items-center gap-1 mb-1" }, h("p", { class: "s-bullet-delivery-branch-name text-start" }, branch.name), readiness?.label && (h("p", { class: `branch-status-badge${readiness.color ? ` ${readiness.color}` : ''}` }, readiness.label))), locationText ? (h("span", { class: "s-bullet-delivery-branch-prep", style: { fontSize: '0.8rem', lineHeight: '1.1rem', textAlign: this.isRTL ? 'right' : 'left' } }, h("i", { class: "sicon-location" }), "\u00A0", h("span", { class: "first-letter-cap" }, locationText))) : null, preparationTimeLabel ? (h("span", { class: "s-bullet-delivery-branch-prep", style: { fontSize: '0.8rem', lineHeight: '1.1rem', textAlign: this.isRTL ? 'right' : 'left' } }, h("i", { class: "sicon-clock" }), "\u00A0", h("span", { class: "first-letter-cap" }, Salla.lang.get('pages.checkout.pickup_duration'), ": ", preparationTimeLabel))) : null, readiness?.detail_line && (h("span", { class: "s-bullet-delivery-branch-prep", style: { fontSize: '0.8rem', lineHeight: '1.1rem', textAlign: this.isRTL ? 'right' : 'left' } }, h("i", { class: "sicon-store" }), "\u00A0", readiness.detail_line))), h("div", { style: {
2956
- width: 'full',
2957
- maxWidth: '50px',
2958
- marginInlineStart: 'auto',
2959
- } }, branch.location?.lat != null && branch.location?.lng != null && (h("a", { href: `https://www.google.com/maps?q=${branch.location.lat},${branch.location.lng}`, target: "_blank", rel: "noopener noreferrer", class: "s-bullet-delivery-branch-map-link", title: Salla.lang.get('common.elements.open_in_google_maps'), onClick: e => e.stopPropagation() }, h("span", { class: "s-bullet-delivery-branch-map-link-icon", innerHTML: GetDirections.replace(/mask0_25437_34440/g, `mask0_branch_${branch.id}`), "aria-hidden": "true" }), h("span", { class: "sr-only" }, Salla.lang.get('common.elements.open_in_google_maps')))))));
3178
+ } }, h("input", { type: "radio", name: "branch", class: "s-bullet-delivery-radio s-bullet-delivery-branch-radio", checked: isSelected, disabled: !selectable, tabIndex: -1 }), h("div", { class: "s-bullet-delivery-branch-body" }, h("p", { class: "s-bullet-delivery-branch-name" }, h("span", null, branch.name), discount ? (h("span", { class: "s-bullet-delivery-discount-badge", dir: this.isArabic ? 'rtl' : 'ltr', innerHTML: this.getPickupDiscountLabel(discount.type, discount.amount) })) : null), locationText ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-location" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: BranchLocationIcon, "aria-hidden": "true" }), h("span", null, locationText))) : null, isSelected && branch.pickup_instructions ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-instructions" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: NotesIcon, "aria-hidden": "true" }), h("span", null, branch.pickup_instructions))) : null, h("div", { class: "s-bullet-delivery-branch-meta-row" }, distance || readinessLabel || preparationLabel ? (h("div", { class: "s-bullet-delivery-branch-pills" }, distance ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-pill s-bullet-delivery-branch-distance" }, h("i", { class: "sicon-location" }), h("span", null, this.renderDistanceLabel(distance)))) : null, readinessLabel ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-pill s-bullet-delivery-branch-prep" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: PickupAvailabilityIcon, "aria-hidden": "true" }), h("span", { class: "s-bullet-delivery-branch-meta-value" }, readinessLabel))) : preparationLabel ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-pill s-bullet-delivery-branch-prep" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: PickupAvailabilityIcon, "aria-hidden": "true" }), h("span", null, h("span", { class: "s-bullet-delivery-branch-meta-label" }, Salla.lang.getWithDefault('pages.checkout.pickup_branch_ready_in', 'Pickup available after:'), ' '), h("span", { class: "s-bullet-delivery-branch-meta-value" }, preparationLabel)))) : null)) : null, h("hr", { class: "s-bullet-delivery-branch-divider" }), this.renderBranchOpenStatus(branch, hasSchedule, scheduleOpen)), scheduleOpen && (h("div", { class: "s-bullet-delivery-branch-schedule" }, scheduleGroups.map((group, index) => (h("div", { key: index, class: "s-bullet-delivery-branch-schedule-day" }, h("span", { class: "s-bullet-delivery-branch-schedule-days" }, group.days.length > 1
3179
+ ? `${group.days[0]} - ${group.days[group.days.length - 1]}`
3180
+ : group.days[0]), h("span", { class: "s-bullet-delivery-branch-schedule-times" }, group.times
3181
+ .map(t => `${this.formatClock(t.start)} - ${this.formatClock(t.end)}`)
3182
+ .join(this.isArabic ? '، ' : ', ')))))))), h("div", { class: "s-bullet-delivery-branch-actions" }, phoneHref && (h("a", { href: phoneHref, class: "s-bullet-delivery-branch-action", title: Salla.lang.getWithDefault('pages.checkout.branch_call', 'اتصال'), onClick: e => e.stopPropagation() }, h("i", { class: "sicon-phone" }))), whatsappHref && (h("a", { href: whatsappHref, target: "_blank", rel: "noopener noreferrer", class: "s-bullet-delivery-branch-action", title: Salla.lang.getWithDefault('pages.checkout.branch_whatsapp', 'واتساب'), onClick: e => e.stopPropagation() }, h("i", { class: "sicon-whatsapp2" }))), directionsHref && (h("a", { href: directionsHref, target: "_blank", rel: "noopener noreferrer", class: "s-bullet-delivery-branch-action s-bullet-delivery-branch-map-link", title: Salla.lang.get('common.elements.open_in_google_maps'), onClick: e => e.stopPropagation() }, h("span", { class: "s-bullet-delivery-branch-map-link-icon", innerHTML: GetDirections.replace(/mask0_25437_34440/g, `mask0_branch_${branch.id}`), "aria-hidden": "true" }), h("span", { class: "sr-only" }, Salla.lang.get('common.elements.open_in_google_maps')))))));
2960
3183
  }))));
2961
3184
  }
3185
+ /** "يبعد عنك: ~" stays muted; the distance and its unit read as the value, as in checkout. */
3186
+ renderDistanceLabel(distance) {
3187
+ const template = Salla.lang.getWithDefault('pages.checkout.branch_distance_from_you', 'يبعد عنك: ~ {distance} كم');
3188
+ const index = template.indexOf('{distance}');
3189
+ if (index === -1)
3190
+ return template;
3191
+ return [
3192
+ h("span", { class: "s-bullet-delivery-branch-meta-label" }, template.slice(0, index)),
3193
+ h("span", { class: "s-bullet-delivery-branch-meta-value" }, template.slice(index).replace('{distance}', distance)),
3194
+ ];
3195
+ }
3196
+ get isArabic() {
3197
+ return (Salla.lang.getLocale?.() ?? document.documentElement.lang) === 'ar';
3198
+ }
3199
+ formatClock(time) {
3200
+ return formatBranchClockTime(time, this.isArabic ? 'ar' : 'en');
3201
+ }
3202
+ /** "جاهز اليوم 10:00 ص" for a branch that is closed now and opens later today. */
3203
+ getReadyTodayLabel(branch) {
3204
+ const time = getBranchReadyTodayTime(branch);
3205
+ return time
3206
+ ? `${Salla.lang.getWithDefault('pages.checkout.pickup_branch_ready_today_at', 'جاهز اليوم')} ${this.formatClock(time)}`
3207
+ : null;
3208
+ }
3209
+ /** "15-30 د" — compact preparation range for the card's meta row. */
3210
+ getPreparationShortLabel(range) {
3211
+ if (!range?.from || !range?.to)
3212
+ return null;
3213
+ const unitKeys = {
3214
+ minute: ['pages.checkout.preparation_time_minute_short', 'د'],
3215
+ hour: ['pages.checkout.preparation_time_hour_short', 'س'],
3216
+ day: ['pages.checkout.preparation_time_day_short', 'يوم'],
3217
+ };
3218
+ const unit = (u) => (unitKeys[u] ? Salla.lang.getWithDefault(unitKeys[u][0], unitKeys[u][1]) : null);
3219
+ const fromUnit = unit(range.from.unit);
3220
+ const toUnit = unit(range.to.unit);
3221
+ if (!fromUnit || !toUnit)
3222
+ return null;
3223
+ return range.from.unit === range.to.unit
3224
+ ? `${range.from.value}-${range.to.value} ${toUnit}`
3225
+ : `${range.from.value} ${fromUnit} - ${range.to.value} ${toUnit}`;
3226
+ }
3227
+ /**
3228
+ * Busy, always-open, or the backend's `open_status_line` ("مفتوح - يغلق عند 11:00 م"), which reads
3229
+ * the hours on the branch's clock. Without that line, `is_open` gives a bare open/closed label.
3230
+ */
3231
+ renderBranchOpenStatus(branch, hasSchedule, scheduleOpen) {
3232
+ const toggle = hasSchedule && (h("button", { type: "button", class: "s-bullet-delivery-branch-schedule-toggle", "aria-expanded": scheduleOpen ? 'true' : 'false', "aria-label": Salla.lang.getWithDefault('pages.checkout.pickup_show_weekly_hours', 'عرض ساعات العمل الأسبوعية'), onClick: e => {
3233
+ e.stopPropagation();
3234
+ this.toggleBranchSchedule(branch.id);
3235
+ } }, h("i", { class: { 'sicon-keyboard_arrow_down': true, 'is-expanded': scheduleOpen } })));
3236
+ if (isBranchBusy(branch)) {
3237
+ return (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-open-status" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: WorkingHoursIcon, "aria-hidden": "true" }), h("span", { class: "s-bullet-delivery-pickup-status--busy" }, Salla.lang.getWithDefault('pages.checkout.pickup_branch_busy', 'مشغول، لا يستقبل طلبات')), toggle));
3238
+ }
3239
+ const alwaysOpen = isBranchAlwaysOpen(branch);
3240
+ const line = branch.pickup_readiness?.open_status_line;
3241
+ if (!alwaysOpen && line) {
3242
+ return (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-open-status" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: WorkingHoursIcon, "aria-hidden": "true" }), h("span", null, line), toggle));
3243
+ }
3244
+ if (!alwaysOpen && !hasSchedule)
3245
+ return null;
3246
+ if (!alwaysOpen && typeof branch.is_open !== 'boolean') {
3247
+ return h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-open-status" }, toggle);
3248
+ }
3249
+ const isOpen = alwaysOpen || branch.is_open;
3250
+ const label = alwaysOpen
3251
+ ? Salla.lang.getWithDefault('pages.checkout.pickup_branch_always_open', 'مفتوح دائمًا 24/7')
3252
+ : isOpen
3253
+ ? Salla.lang.getWithDefault('pages.checkout.pickup_branch_open', 'مفتوح')
3254
+ : Salla.lang.getWithDefault('pages.checkout.pickup_branch_closed', 'مغلق');
3255
+ return (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-open-status" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: WorkingHoursIcon, "aria-hidden": "true" }), h("span", { class: isOpen ? 's-bullet-delivery-pickup-status--open' : 's-bullet-delivery-pickup-status--closed' }, label), toggle));
3256
+ }
2962
3257
  renderPickupTab() {
2963
3258
  return (h("div", { class: {
2964
3259
  "s-bullet-delivery-content": true,
2965
3260
  "s-bullet-delivery-content--active": this.activeTab === "branch",
2966
3261
  "s-hidden": this.activeTab !== "branch",
2967
- } }, this.renderCountrySelect(), this.renderBranchSearch(), this.renderBranchList()));
3262
+ } }, h("div", { class: "s-bullet-delivery-pickup-filters" }, h("div", { class: "s-bullet-delivery-pickup-filters-row" }, this.renderCountrySelect(false), this.renderBranchCitySelect()), this.renderBranchSearch()), this.renderBranchList()));
3263
+ }
3264
+ /** City filter for the pickup list; options come from the branches themselves, so none is empty. */
3265
+ renderBranchCitySelect() {
3266
+ return (h("div", { class: "s-bullet-delivery-field" }, h("salla-searchable-dropdown", { placeholder: Salla.lang.get("pages.checkout.select_city"), items: [{ id: -1, name: Salla.lang.getWithDefault('pages.checkout.all_cities', this.isArabic ? 'كل المدن' : 'All cities') }, ...this.branchCities], selectedItem: this.selectedBranchCity, loading: this.loadingBranches && this.branchCities.length === 0, disabled: this.branchCities.length === 0 && !this.selectedBranchCity, inputId: "bullet-delivery-branch-city", searchQuery: this.branchCitySearchQuery, clientSearch: true, onItemSelected: (e) => {
3267
+ this.branchCitySearchQuery = '';
3268
+ this.handleBranchCitySelected(e.detail);
3269
+ }, onSearchInput: (e) => {
3270
+ this.branchCitySearchQuery = e.detail;
3271
+ }, onDropdownClosed: () => {
3272
+ this.branchCitySearchQuery = '';
3273
+ } })));
2968
3274
  }
2969
3275
  /** Add-address form: map + confirm card in one screen, or dropdown fallback. */
2970
3276
  renderAddAddressForm() {
@@ -3006,7 +3312,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
3006
3312
  return (h("div", { class: "s-bullet-delivery-footer" }, h("salla-button", { ref: (btn) => {
3007
3313
  this.confirmBtn = btn;
3008
3314
  }, disabled: this.isConfirmDisabled(), onClick: () => this.handleConfirm(), "loader-position": "center", width: "wide" }, this.activeTab === "branch"
3009
- ? Salla.lang.get("pages.checkout.confirm_receipt_from_the_branch")
3315
+ ? Salla.lang.getWithDefault("pages.checkout.confirm_receipt_from_the_branch", "تأكيد الإستلام من الفرع")
3010
3316
  : Salla.lang.get("pages.checkout.confirm_address")), showAddAddressInFooter && (h("salla-button", { onClick: () => this.handleAddNewAddress(), width: "wide", shape: "link" }, Salla.lang.get("pages.checkout.add_new_address"))), !this.isLoggedIn && (h("salla-button", { shape: "link", onClick: () => this.handleLogin() }, Salla.lang.get("pages.checkout.login_to_use_saved_addresses")))));
3011
3317
  }
3012
3318
  renderMainView() {
@@ -3192,7 +3498,7 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
3192
3498
  this.handleModalVisibility(Boolean(event.detail));
3193
3499
  }, class: "s-bullet-delivery-modal", width: "sm", "data-testid": "salla-bullet-delivery-modal" }, h("div", { class: "s-bullet-delivery-inner" }, h("div", { class: "s-bullet-delivery-header" }, h("h2", { class: "s-bullet-delivery-title" }, this.activeTab === 'address'
3194
3500
  ? Salla.lang.get('blocks.home.add_address_for_order_delivery')
3195
- : Salla.lang.get('blocks.home.choose_branch_for_order_pickup')), h("p", { class: "s-bullet-delivery-subtitle" }, this.activeTab === 'address'
3501
+ : Salla.lang.getWithDefault('blocks.home.choose_pickup_branch_title', this.isArabic ? 'اختر فرع استلام طلبك' : 'Choose your pickup branch')), h("p", { class: "s-bullet-delivery-subtitle" }, this.activeTab === 'address'
3196
3502
  ? Salla.lang.get('blocks.home.products_available_for_delivery_shown_while_shopping')
3197
3503
  : Salla.lang.get('blocks.home.choose_branch_for_order_pickup_description'))), this.renderTabs(), this.viewMode === 'main' && this.renderMainView(), this.viewMode === 'add-address' && this.renderAddAddressForm()))));
3198
3504
  }
@@ -3335,9 +3641,15 @@ const SallaBulletDelivery$1 = /*@__PURE__*/ proxyCustomElement(class SallaBullet
3335
3641
  "selectedSavedAddress": [32],
3336
3642
  "selectedSessionAddress": [32],
3337
3643
  "branches": [32],
3644
+ "pickupDiscountRange": [32],
3645
+ "pickupDiscountResolved": [32],
3338
3646
  "filteredBranches": [32],
3339
3647
  "selectedBranch": [32],
3340
3648
  "branchSearchQuery": [32],
3649
+ "branchCities": [32],
3650
+ "selectedBranchCity": [32],
3651
+ "branchCitySearchQuery": [32],
3652
+ "expandedScheduleBranchId": [32],
3341
3653
  "loadingCountries": [32],
3342
3654
  "loadingCities": [32],
3343
3655
  "loadingDistricts": [32],