@ticketboothapp/booking 0.1.23 → 1.2.24

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 (158) hide show
  1. package/package.json +2 -29
  2. package/src/index.ts +0 -79
  3. package/tsconfig.json +2 -8
  4. package/src/assets/icons/minus.svg +0 -7
  5. package/src/assets/icons/partner-logos/getyourguide.svg +0 -8
  6. package/src/assets/icons/plus.svg +0 -3
  7. package/src/colours.css +0 -23
  8. package/src/components/BookingDetails.module.css +0 -1591
  9. package/src/components/BookingDetails.tsx +0 -2264
  10. package/src/components/BookingWidget.tsx +0 -302
  11. package/src/components/ManageBookingView.tsx +0 -437
  12. package/src/components/PhoneInputWithCountry.module.css +0 -131
  13. package/src/components/PhoneInputWithCountry.tsx +0 -44
  14. package/src/components/PickupLocationDialog.module.css +0 -360
  15. package/src/components/PickupLocationDialog.tsx +0 -357
  16. package/src/components/PostBookingDependentAddOnUpsell.module.css +0 -174
  17. package/src/components/PostBookingDependentAddOnUpsell.tsx +0 -407
  18. package/src/components/booking/AddOnsSection.module.css +0 -10
  19. package/src/components/booking/AddOnsSection.tsx +0 -184
  20. package/src/components/booking/AdminPaymentChoiceModal.tsx +0 -98
  21. package/src/components/booking/BookingDialog.module.css +0 -643
  22. package/src/components/booking/BookingDialog.tsx +0 -356
  23. package/src/components/booking/BookingFlow.tsx +0 -4385
  24. package/src/components/booking/BookingFlowCollage.module.css +0 -148
  25. package/src/components/booking/BookingFlowCollage.tsx +0 -184
  26. package/src/components/booking/BookingFlowPlaceholder.module.css +0 -27
  27. package/src/components/booking/BookingFlowPlaceholder.tsx +0 -25
  28. package/src/components/booking/BookingFlowPreview.tsx +0 -51
  29. package/src/components/booking/BookingProductGrid.module.css +0 -359
  30. package/src/components/booking/BookingProductGrid.tsx +0 -497
  31. package/src/components/booking/Calendar.module.css +0 -616
  32. package/src/components/booking/Calendar.tsx +0 -1123
  33. package/src/components/booking/CancellationPolicySelector.module.css +0 -124
  34. package/src/components/booking/CancellationPolicySelector.tsx +0 -142
  35. package/src/components/booking/ChangeBookingDialog.tsx +0 -562
  36. package/src/components/booking/CheckoutForm.module.css +0 -244
  37. package/src/components/booking/CheckoutForm.tsx +0 -364
  38. package/src/components/booking/CheckoutModal.tsx +0 -451
  39. package/src/components/booking/CurrencySwitcher.tsx +0 -81
  40. package/src/components/booking/DapFlowCollage.tsx +0 -88
  41. package/src/components/booking/DapTourDescription.tsx +0 -35
  42. package/src/components/booking/DependentAddOnBookingDialog.tsx +0 -1350
  43. package/src/components/booking/DependentAddOnPaymentForm.tsx +0 -124
  44. package/src/components/booking/ErrorBoundary.tsx +0 -63
  45. package/src/components/booking/InfoTooltip.tsx +0 -108
  46. package/src/components/booking/ItineraryBox.module.css +0 -258
  47. package/src/components/booking/ItineraryBox.tsx +0 -550
  48. package/src/components/booking/ItineraryBuilder.tsx +0 -82
  49. package/src/components/booking/ItineraryPlaceholder.module.css +0 -45
  50. package/src/components/booking/ItineraryPlaceholder.tsx +0 -26
  51. package/src/components/booking/MealDrinkAddOnSelector.tsx +0 -338
  52. package/src/components/booking/PickupLocationSelector.module.css +0 -124
  53. package/src/components/booking/PickupLocationSelector.tsx +0 -1566
  54. package/src/components/booking/PickupTimeSelector.module.css +0 -134
  55. package/src/components/booking/PickupTimeSelector.tsx +0 -112
  56. package/src/components/booking/PriceBreakdown.tsx +0 -154
  57. package/src/components/booking/PriceSummary.tsx +0 -234
  58. package/src/components/booking/PrivateShuttleBookingFlow.module.css +0 -357
  59. package/src/components/booking/PrivateShuttleBookingFlow.tsx +0 -2662
  60. package/src/components/booking/PromoCodeInput.module.css +0 -166
  61. package/src/components/booking/PromoCodeInput.tsx +0 -99
  62. package/src/components/booking/ReturnTimeSelector.module.css +0 -173
  63. package/src/components/booking/ReturnTimeSelector.tsx +0 -145
  64. package/src/components/booking/TermsAcceptance.tsx +0 -111
  65. package/src/components/booking/TicketSelector.module.css +0 -164
  66. package/src/components/booking/TicketSelector.tsx +0 -199
  67. package/src/components/booking/TourDescription.module.css +0 -304
  68. package/src/components/booking/TourDescription.tsx +0 -273
  69. package/src/components/booking/booking-flow-ui.ts +0 -38
  70. package/src/components/booking/booking-flow.css +0 -944
  71. package/src/components/button.css +0 -245
  72. package/src/components/button.tsx +0 -152
  73. package/src/components/colorable-svg.tsx +0 -29
  74. package/src/components/image.css +0 -29
  75. package/src/components/image.tsx +0 -113
  76. package/src/components/partner/PartnerBookingPage.module.css +0 -130
  77. package/src/components/partner/PartnerBookingPage.tsx +0 -390
  78. package/src/components/partner/PartnerBookingPageWithBrowserMetadata.tsx +0 -45
  79. package/src/components/product-tag.module.css +0 -30
  80. package/src/components/product-tag.tsx +0 -34
  81. package/src/components/product-theme-pages/image-modal.tsx +0 -248
  82. package/src/components/product-theme-pages/photo-gallery.module.css +0 -200
  83. package/src/components/terms/TermsContent.tsx +0 -178
  84. package/src/components/value-pill.module.css +0 -59
  85. package/src/components/value-pill.tsx +0 -46
  86. package/src/constants/images.ts +0 -556
  87. package/src/constants/pill-values.ts +0 -210
  88. package/src/constants/products.ts +0 -155
  89. package/src/contexts/AvailabilitiesCacheContext.tsx +0 -125
  90. package/src/contexts/BookingAppContext.tsx +0 -134
  91. package/src/contexts/CompanyContext.tsx +0 -70
  92. package/src/data/dap-descriptions/session-couples-families-friends.en.json +0 -61
  93. package/src/data/dap-descriptions/session-elopements.en.json +0 -60
  94. package/src/data/dap-descriptions/session-proposals.en.json +0 -60
  95. package/src/data/product-descriptions/afternoon-delight.en.json +0 -35
  96. package/src/data/product-descriptions/emerald-lake-escape.en.json +0 -68
  97. package/src/data/product-descriptions/lake-louise-adventure.en.json +0 -74
  98. package/src/data/product-descriptions/moraine-lake-adventure.en.json +0 -78
  99. package/src/data/product-descriptions/moraine-lake-sunrise-lake-louise-golden-hour.en.json +0 -65
  100. package/src/data/product-descriptions/moraine-lake-sunrise.en.json +0 -64
  101. package/src/data/product-descriptions/private-tour.en.json +0 -80
  102. package/src/data/product-descriptions/two-lakes-combo.en.json +0 -65
  103. package/src/data/products-config.json +0 -101
  104. package/src/hooks/useBookingSourceMetadataFromLocation.ts +0 -21
  105. package/src/hooks/useIsBookingLaunchLive.ts +0 -49
  106. package/src/lib/analytics.ts +0 -197
  107. package/src/lib/booking/booking-source.ts +0 -51
  108. package/src/lib/booking/checkout-breakdown.ts +0 -69
  109. package/src/lib/booking/correlation-id.ts +0 -46
  110. package/src/lib/booking/i18n/config.ts +0 -21
  111. package/src/lib/booking/i18n/index.tsx +0 -144
  112. package/src/lib/booking/i18n/messages/en.json +0 -236
  113. package/src/lib/booking/i18n/messages/fr.json +0 -236
  114. package/src/lib/booking/itinerary-display.ts +0 -36
  115. package/src/lib/booking/itinerary-labels.ts +0 -70
  116. package/src/lib/booking/location-calculations.ts +0 -43
  117. package/src/lib/booking/location-utils.ts +0 -165
  118. package/src/lib/booking/map-utils.ts +0 -153
  119. package/src/lib/booking/marker-icons.ts +0 -113
  120. package/src/lib/booking/normalize-booking-product-id.ts +0 -21
  121. package/src/lib/booking/pickup-location-types.ts +0 -25
  122. package/src/lib/booking/places-api.ts +0 -154
  123. package/src/lib/booking/pricing.ts +0 -466
  124. package/src/lib/booking/product-option-id.ts +0 -35
  125. package/src/lib/booking/source-metadata.ts +0 -226
  126. package/src/lib/booking/sunday-week.ts +0 -14
  127. package/src/lib/booking/theme.ts +0 -83
  128. package/src/lib/booking/trace-context.ts +0 -62
  129. package/src/lib/booking/utils.ts +0 -9
  130. package/src/lib/booking-api.ts +0 -1793
  131. package/src/lib/booking-constants.ts +0 -23
  132. package/src/lib/booking-ref.ts +0 -13
  133. package/src/lib/booking-types.ts +0 -36
  134. package/src/lib/currency.ts +0 -81
  135. package/src/lib/dap-descriptions.ts +0 -50
  136. package/src/lib/dap-itinerary-preview.ts +0 -315
  137. package/src/lib/dependent-add-on-api.ts +0 -434
  138. package/src/lib/env.ts +0 -96
  139. package/src/lib/firebase.ts +0 -20
  140. package/src/lib/job-application-api.ts +0 -83
  141. package/src/lib/manage-booking-embed-print.ts +0 -16
  142. package/src/lib/manage-booking-post-checkout.ts +0 -68
  143. package/src/lib/photo-dap-config.ts +0 -228
  144. package/src/lib/photo-packages.ts +0 -75
  145. package/src/lib/pickup/map-utils.ts +0 -56
  146. package/src/lib/pickup/marker-icons.ts +0 -19
  147. package/src/lib/product-descriptions.ts +0 -66
  148. package/src/lib/products-config.ts +0 -73
  149. package/src/providers/booking-dialog-provider.tsx +0 -282
  150. package/src/providers/dependent-add-on-dialog-provider.tsx +0 -105
  151. package/src/radius.css +0 -5
  152. package/src/spacing.css +0 -7
  153. package/src/strings/en.json +0 -1774
  154. package/src/strings/es.json +0 -1573
  155. package/src/strings/fr.json +0 -1573
  156. package/src/strings/index.js +0 -23
  157. package/src/text-style.css +0 -56
  158. package/src/utils/currency-converter.ts +0 -101
@@ -1,1591 +0,0 @@
1
- .container {
2
- position: relative;
3
- width: 100%;
4
- max-width: 650px;
5
- margin: 0 auto;
6
- padding: var(--spacing-large);
7
- display: flex;
8
- flex-direction: column;
9
- gap: var(--spacing-large);
10
- box-sizing: border-box;
11
- }
12
-
13
- /* Light overlay while parent refetches booking (e.g. after change dialog closes) */
14
- .bookingRefreshOverlay {
15
- position: fixed;
16
- inset: 0;
17
- z-index: 900;
18
- display: flex;
19
- flex-direction: column;
20
- align-items: center;
21
- justify-content: center;
22
- gap: 1rem;
23
- background-color: rgba(254, 243, 233, 0.92);
24
- padding: 1rem;
25
- }
26
-
27
- .section {
28
- background-color: var(--primary-background);
29
- border-radius: 24px;
30
- padding: var(--spacing-large);
31
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
32
- }
33
-
34
- .headerContent {
35
- display: flex;
36
- align-items: center;
37
- gap: var(--spacing-medium);
38
- margin-bottom: var(--spacing-medium);
39
- }
40
-
41
- .checkmarkIcon {
42
- width: 64px;
43
- height: 64px;
44
- background-color: var(--accent-turquoise-60);
45
- border-radius: 50%;
46
- display: flex;
47
- align-items: center;
48
- justify-content: center;
49
- flex-shrink: 0;
50
- }
51
-
52
- .checkmarkSvg {
53
- width: 32px;
54
- height: 32px;
55
- color: var(--accent-turquoise);
56
- }
57
-
58
- .cancelledIcon {
59
- width: 64px;
60
- height: 64px;
61
- background-color: rgba(0, 0, 0, 0.08);
62
- border-radius: 50%;
63
- display: flex;
64
- align-items: center;
65
- justify-content: center;
66
- flex-shrink: 0;
67
- }
68
-
69
- .cancelledSvg {
70
- width: 32px;
71
- height: 32px;
72
- color: var(--primary-text);
73
- }
74
-
75
- .title {
76
- font-family: 'Poppins';
77
- font-weight: 800;
78
- font-size: 2rem;
79
- color: var(--primary-text);
80
- margin: 0;
81
- text-transform: none;
82
- }
83
-
84
- .reference {
85
- color: var(--grey-text);
86
- margin: 0.5rem 0 0 0;
87
- font-size: 1rem;
88
- }
89
-
90
- .printSummaryWrap {
91
- margin-top: 0.35rem;
92
- }
93
-
94
- .printSummaryButton {
95
- display: inline-flex;
96
- align-items: center;
97
- gap: 0.3rem;
98
- font-family: 'Figtree', sans-serif;
99
- font-size: 0.8125rem;
100
- font-weight: 500;
101
- padding: 0;
102
- margin: 0;
103
- border: none;
104
- border-radius: 0;
105
- background: none;
106
- color: var(--grey-text);
107
- cursor: pointer;
108
- line-height: 1.4;
109
- text-decoration: underline;
110
- text-underline-offset: 2px;
111
- }
112
-
113
- .printSummaryButton:hover {
114
- color: var(--accent-turquoise);
115
- }
116
-
117
- .printSummaryButton:focus-visible {
118
- outline: 2px solid var(--accent-turquoise);
119
- outline-offset: 2px;
120
- border-radius: 2px;
121
- }
122
-
123
- .printSummaryIcon {
124
- width: 0.8125rem;
125
- height: 0.8125rem;
126
- flex-shrink: 0;
127
- opacity: 0.65;
128
- }
129
-
130
- .gygSectionIcon {
131
- flex-shrink: 0;
132
- width: 20px;
133
- height: 20px;
134
- color: var(--accent-orange);
135
- }
136
-
137
- .gygSectionIcon path {
138
- fill: var(--accent-orange);
139
- }
140
-
141
- .gygSectionContent {
142
- display: flex;
143
- flex-direction: column;
144
- gap: 0.5rem;
145
- }
146
-
147
- .gygRefLine {
148
- margin: 0;
149
- color: var(--primary-text);
150
- font-size: 1rem;
151
- }
152
-
153
- .gygNote {
154
- color: var(--primary-text);
155
- font-size: 0.75rem;
156
- line-height: 1.4;
157
- margin: 0;
158
- }
159
-
160
- .gygNoteLink {
161
- color: var(--accent-orange);
162
- text-decoration: underline;
163
- }
164
-
165
- .gygNoteLink:hover {
166
- text-decoration: none;
167
- }
168
-
169
- .gygManageLink {
170
- display: inline-flex;
171
- align-items: center;
172
- gap: 0.5rem;
173
- color: var(--accent-orange);
174
- font-size: 0.9375rem;
175
- font-weight: 600;
176
- text-decoration: none;
177
- margin-top: 0.5rem;
178
- }
179
-
180
- .gygManageLink:hover {
181
- text-decoration: underline;
182
- }
183
-
184
- .gygManageIcon {
185
- width: 18px;
186
- height: 18px;
187
- flex-shrink: 0;
188
- }
189
-
190
- .gygSection {
191
- scroll-margin-top: 6rem;
192
- }
193
-
194
- .policyGygLink {
195
- color: var(--accent-orange);
196
- text-decoration: underline;
197
- }
198
-
199
- .policyGygLink:hover {
200
- color: var(--accent-turquoise);
201
- text-decoration: underline;
202
- }
203
-
204
- .bookingDetails {
205
- margin-top: var(--spacing-medium);
206
- padding-top: var(--spacing-medium);
207
- border-top: 1px solid var(--accent-orange-10);
208
- display: flex;
209
- flex-direction: column;
210
- gap: var(--spacing-small);
211
- }
212
-
213
- .bookingDetailRow {
214
- display: flex;
215
- gap: 0;
216
- align-items: baseline;
217
- }
218
-
219
- .bookingDetailLabel {
220
- font-weight: 600;
221
- color: var(--primary-text);
222
- margin-right: 0.35em;
223
- }
224
-
225
- .bookingDetailValue {
226
- display: inline-flex;
227
- align-items: center;
228
- flex-wrap: wrap;
229
- gap: 0;
230
- color: var(--primary-text);
231
- flex: 1;
232
- min-width: 0;
233
- overflow-wrap: break-word;
234
- }
235
-
236
- .customerMessage {
237
- color: var(--primary-text);
238
- margin-top: var(--spacing-medium);
239
- }
240
-
241
- .sectionTitle {
242
- font-family: 'Poppins';
243
- font-weight: 800;
244
- font-size: 1.5rem;
245
- color: var(--accent-orange);
246
- margin: 0 0 var(--spacing-medium) 0;
247
- display: flex;
248
- align-items: center;
249
- gap: 0.5rem;
250
- text-transform: lowercase;
251
- }
252
-
253
- .icon {
254
- width: 20px;
255
- height: 20px;
256
- color: var(--accent-orange);
257
- flex-shrink: 0;
258
- }
259
-
260
- .itinerarySectionHeader {
261
- display: flex;
262
- align-items: center;
263
- justify-content: space-between;
264
- gap: 0.5rem;
265
- margin-bottom: var(--spacing-medium);
266
- }
267
-
268
- .itinerarySectionHeader .sectionTitle {
269
- margin: 0;
270
- }
271
-
272
- .draftPill {
273
- display: inline-flex;
274
- align-items: center;
275
- padding: 0.2rem 0.6rem;
276
- font-size: 0.75rem;
277
- font-weight: 600;
278
- text-transform: uppercase;
279
- letter-spacing: 0.05em;
280
- color: white;
281
- background-color: var(--accent-orange);
282
- border-radius: 9999px;
283
- flex-shrink: 0;
284
- }
285
-
286
- .addOnSuccessBanner {
287
- display: flex;
288
- align-items: flex-start;
289
- gap: var(--spacing-medium);
290
- background-color: rgba(16, 185, 129, 0.12);
291
- border-left: 4px solid #059669;
292
- border-radius: 8px;
293
- padding: var(--spacing-medium);
294
- margin-bottom: var(--spacing-medium);
295
- }
296
-
297
- .addOnSuccessBannerIcon {
298
- width: 22px;
299
- height: 22px;
300
- color: #059669;
301
- flex-shrink: 0;
302
- margin-top: 0.125rem;
303
- }
304
-
305
- .addOnSuccessBannerText {
306
- margin: 0;
307
- flex: 1;
308
- min-width: 0;
309
- color: var(--primary-text);
310
- font-size: 0.9375rem;
311
- line-height: 1.5;
312
- }
313
-
314
- .addOnCard {
315
- border: 1px solid rgba(0, 0, 0, 0.08);
316
- border-radius: 12px;
317
- padding: var(--spacing-medium);
318
- margin-bottom: var(--spacing-small);
319
- background: rgba(0, 0, 0, 0.02);
320
- }
321
-
322
- .addOnCard:last-child {
323
- margin-bottom: 0;
324
- }
325
-
326
- .addOnCardMeta {
327
- margin: 0;
328
- font-size: 0.875rem;
329
- color: var(--grey-text);
330
- line-height: 1.45;
331
- }
332
-
333
- .addOnRefMono {
334
- font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
335
- font-size: 0.9em;
336
- }
337
-
338
- .addOnCardTitle {
339
- margin: 0 0 0.35rem 0;
340
- font-size: 1rem;
341
- font-weight: 600;
342
- color: var(--primary-text);
343
- }
344
-
345
- .draftItineraryBanner {
346
- display: flex;
347
- align-items: flex-start;
348
- gap: var(--spacing-medium);
349
- background-color: var(--accent-orange-10);
350
- border-left: 4px solid var(--accent-orange);
351
- border-radius: 8px;
352
- padding: var(--spacing-medium);
353
- margin-bottom: var(--spacing-medium);
354
- min-width: 0;
355
- }
356
-
357
- .draftItineraryBannerBelowList {
358
- margin-top: var(--spacing-medium);
359
- margin-bottom: 0;
360
- }
361
-
362
- /* Ready-for-review: full-width block, no side icon (see Action Required title) */
363
- .draftItineraryBannerActionRequired {
364
- display: block;
365
- }
366
-
367
- .draftItineraryReviewFullWidth {
368
- width: 100%;
369
- min-width: 0;
370
- }
371
-
372
- .draftItineraryActionTitle {
373
- width: 100%;
374
- display: flex;
375
- align-items: center;
376
- gap: 0.5rem;
377
- text-align: left;
378
- font-family: 'Poppins', sans-serif;
379
- font-size: 1.5rem;
380
- font-weight: 700;
381
- line-height: 1.25;
382
- color: var(--accent-orange);
383
- margin: 0 0 0.5rem 0;
384
- }
385
-
386
- .draftItineraryIcon {
387
- width: 20px;
388
- height: 20px;
389
- color: var(--accent-orange);
390
- flex-shrink: 0;
391
- margin-top: 0.125rem;
392
- }
393
-
394
- .draftItineraryText {
395
- margin: 0;
396
- flex: 1;
397
- min-width: 0;
398
- color: var(--primary-text);
399
- font-size: 0.9375rem;
400
- line-height: 1.5;
401
- }
402
-
403
- .draftItineraryReviewActions {
404
- display: flex;
405
- flex-direction: column;
406
- align-items: stretch;
407
- gap: 0.5rem;
408
- margin-top: 1rem;
409
- min-width: 0;
410
- width: 100%;
411
- }
412
-
413
- .draftItineraryReviewActions .pickupPrimaryButton {
414
- width: 100%;
415
- justify-content: center;
416
- box-sizing: border-box;
417
- }
418
-
419
- .draftItineraryRequestChangesButton {
420
- width: 100%;
421
- box-sizing: border-box;
422
- justify-content: center;
423
- }
424
-
425
- .draftItineraryFeedbackFields {
426
- margin-top: 1rem;
427
- min-width: 0;
428
- width: 100%;
429
- max-width: 100%;
430
- box-sizing: border-box;
431
- }
432
-
433
- .draftItineraryFeedbackLabel {
434
- display: block;
435
- margin-bottom: 0.35rem;
436
- font-size: 0.875rem;
437
- font-weight: 600;
438
- color: var(--primary-text);
439
- }
440
-
441
- .draftItineraryTextarea {
442
- display: block;
443
- width: 100%;
444
- max-width: 100%;
445
- min-width: 0;
446
- box-sizing: border-box;
447
- padding: 0.5rem 0.75rem;
448
- font: inherit;
449
- min-height: 5rem;
450
- border-radius: 8px;
451
- border: 1px solid rgba(0, 0, 0, 0.18);
452
- background-color: #fff;
453
- color: var(--primary-text);
454
- resize: vertical;
455
- }
456
-
457
- .draftItineraryTextarea:focus {
458
- outline: 2px solid var(--accent-orange);
459
- outline-offset: 1px;
460
- }
461
-
462
- .draftItineraryFeedbackSubmitRow {
463
- display: flex;
464
- flex-wrap: wrap;
465
- gap: 0.75rem;
466
- margin-top: 0.75rem;
467
- align-items: stretch;
468
- min-width: 0;
469
- width: 100%;
470
- }
471
-
472
- .draftItineraryFeedbackSubmitRow .payOwingButton {
473
- width: 100%;
474
- box-sizing: border-box;
475
- }
476
-
477
- .itineraryList {
478
- display: flex;
479
- flex-direction: column;
480
- gap: var(--spacing-small);
481
- }
482
-
483
- .itineraryItem {
484
- display: flex;
485
- justify-content: space-between;
486
- align-items: flex-start;
487
- gap: var(--spacing-medium);
488
- padding-left: var(--spacing-medium);
489
- border-left: 2px solid var(--accent-orange-10);
490
- }
491
-
492
- .itineraryItemDraft {
493
- flex-direction: column;
494
- align-items: flex-start;
495
- justify-content: flex-start;
496
- gap: 0.25rem;
497
- }
498
-
499
- .itineraryItemDraft .itineraryLabel {
500
- flex: none;
501
- }
502
-
503
- .itineraryTimeBlock {
504
- display: block;
505
- color: var(--grey-text);
506
- font-weight: 500;
507
- }
508
-
509
- .itineraryLabel {
510
- color: var(--primary-text);
511
- font-weight: 500;
512
- flex: 1;
513
- }
514
-
515
- .itineraryTime {
516
- display: flex;
517
- align-items: center;
518
- gap: 0.5rem;
519
- flex-shrink: 0;
520
- color: var(--grey-text);
521
- font-weight: 500;
522
- }
523
-
524
- .tbdIcon {
525
- color: var(--grey-text);
526
- cursor: help;
527
- }
528
-
529
- .timeIcon {
530
- width: 16px;
531
- height: 16px;
532
- display: inline-block;
533
- vertical-align: middle;
534
- }
535
-
536
- .tbdText {
537
- color: var(--grey-text);
538
- font-weight: 500;
539
- }
540
-
541
- .timeTooltipWrap {
542
- display: inline-flex;
543
- align-items: center;
544
- margin-left: 0.35rem;
545
- position: relative;
546
- vertical-align: middle;
547
- }
548
-
549
- .timeTooltipIcon {
550
- display: inline-flex;
551
- align-items: center;
552
- justify-content: center;
553
- color: var(--grey-text);
554
- cursor: pointer;
555
- width: 18px;
556
- height: 18px;
557
- }
558
-
559
- .timeTooltipIcon svg {
560
- width: 100%;
561
- height: 100%;
562
- }
563
-
564
-
565
- .timeTooltipIcon:hover {
566
- color: var(--accent-orange);
567
- }
568
-
569
- .timeTooltip {
570
- position: absolute;
571
- left: 0;
572
- top: 100%;
573
- margin-top: 6px;
574
- padding: 0.5rem 0.75rem;
575
- max-width: 260px;
576
- font-size: 0.8125rem;
577
- font-weight: 400;
578
- line-height: 1.4;
579
- color: #fff;
580
- background: #333;
581
- border-radius: 8px;
582
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
583
- white-space: normal;
584
- opacity: 0;
585
- visibility: hidden;
586
- transition: opacity 0.15s ease, visibility 0.15s ease;
587
- pointer-events: none;
588
- z-index: 10;
589
- }
590
-
591
- .timeTooltipWrap:hover .timeTooltip {
592
- opacity: 1;
593
- visibility: visible;
594
- pointer-events: auto;
595
- }
596
-
597
- .timeTooltipLink {
598
- color: var(--accent-orange);
599
- text-decoration: underline;
600
- }
601
-
602
- .timeTooltipLink:hover {
603
- color: #ff7a4d;
604
- text-decoration: none;
605
- }
606
-
607
- .pickupNote {
608
- margin-top: var(--spacing-medium);
609
- font-size: 0.875rem;
610
- color: var(--grey-text);
611
- }
612
-
613
- .pickupLink {
614
- color: var(--accent-orange);
615
- text-decoration: underline;
616
- }
617
-
618
- .pickupLink:hover {
619
- color: var(--accent-turquoise);
620
- }
621
-
622
- .paymentSummaryHeader {
623
- display: flex;
624
- align-items: center;
625
- justify-content: space-between;
626
- gap: 0.5rem;
627
- margin-bottom: var(--spacing-medium);
628
- }
629
-
630
- .paymentSummaryHeader .sectionTitle {
631
- margin: 0;
632
- }
633
-
634
- .paymentStatusPill {
635
- display: inline-flex;
636
- align-items: center;
637
- padding: 0.2rem 0.6rem;
638
- font-size: 0.75rem;
639
- font-weight: 600;
640
- text-transform: uppercase;
641
- letter-spacing: 0.05em;
642
- border-radius: 9999px;
643
- flex-shrink: 0;
644
- }
645
-
646
- .paymentStatusPillPaid {
647
- color: white;
648
- background-color: var(--accent-turquoise);
649
- }
650
-
651
- .paymentStatusPillDeposit {
652
- color: #92400e;
653
- background-color: #fef3c7;
654
- }
655
-
656
- .paymentStatusPillOwing {
657
- color: #92400e;
658
- background-color: #fef3c7;
659
- }
660
-
661
- .paymentStatusPillAwaiting {
662
- color: var(--grey-text);
663
- background-color: rgba(0, 0, 0, 0.08);
664
- }
665
-
666
- .priceSummary {
667
- display: flex;
668
- flex-direction: column;
669
- gap: var(--spacing-small);
670
- }
671
-
672
- .priceLine {
673
- display: flex;
674
- justify-content: space-between;
675
- color: var(--primary-text);
676
- }
677
-
678
- .priceLabel {
679
- font-weight: 400;
680
- }
681
-
682
- .priceAmount {
683
- font-weight: 500;
684
- }
685
-
686
- .totalLine {
687
- margin-top: var(--spacing-small);
688
- padding-top: var(--spacing-small);
689
- border-top: 1px solid var(--accent-orange-10);
690
- }
691
-
692
- .totalLabel {
693
- font-weight: 700;
694
- font-size: 1.125rem;
695
- }
696
-
697
- .totalAmount {
698
- font-weight: 700;
699
- font-size: 1.125rem;
700
- color: var(--accent-orange);
701
- }
702
-
703
- .changeDifferenceLine {
704
- margin-top: -0.125rem;
705
- }
706
-
707
- .changeDifferenceLabel {
708
- font-weight: 400;
709
- font-size: 0.85rem;
710
- color: var(--grey-text);
711
- }
712
-
713
- .changeDifferenceAmount {
714
- font-weight: 500;
715
- font-size: 0.85rem;
716
- color: var(--grey-text);
717
- }
718
-
719
- .payOwingSection {
720
- margin-top: var(--spacing-medium);
721
- padding-top: var(--spacing-medium);
722
- border-top: 1px solid var(--accent-orange-10);
723
- display: flex;
724
- flex-direction: column;
725
- gap: var(--spacing-small);
726
- }
727
-
728
- .payOwingRow {
729
- display: flex;
730
- justify-content: space-between;
731
- align-items: center;
732
- }
733
-
734
- .payOwingLabel {
735
- font-weight: 600;
736
- color: var(--primary-text);
737
- }
738
-
739
- .payOwingAmount {
740
- font-weight: 700;
741
- font-size: 1.125rem;
742
- color: var(--accent-orange);
743
- }
744
-
745
- .payOwingButtons {
746
- display: flex;
747
- flex-direction: column;
748
- gap: 0.5rem;
749
- margin-top: 0.5rem;
750
- width: 100%;
751
- }
752
-
753
- .payOwingButton {
754
- width: 100%;
755
- display: block;
756
- }
757
-
758
- .payOwingButtonOutline {
759
- background-color: transparent !important;
760
- border: 2px solid var(--accent-orange);
761
- color: var(--accent-orange);
762
- }
763
-
764
- .payOwingButton:disabled {
765
- opacity: 0.6;
766
- cursor: not-allowed;
767
- }
768
-
769
- .payOwingRefreshHint {
770
- font-size: 0.875rem;
771
- margin: 0.25rem 0 0 0;
772
- }
773
-
774
- .payOwingRefreshLink {
775
- padding: 0;
776
- background: none;
777
- border: none;
778
- color: var(--accent-orange);
779
- font-weight: 500;
780
- text-decoration: underline;
781
- cursor: pointer;
782
- font-family: inherit;
783
- }
784
-
785
- .payOwingRefreshLink:hover {
786
- color: var(--accent-turquoise);
787
- }
788
-
789
- .payOwingError {
790
- font-size: 0.875rem;
791
- color: #dc2626;
792
- margin: 0.25rem 0 0 0;
793
- }
794
-
795
- .payOwingDisclaimer {
796
- font-size: 0.8125rem;
797
- color: var(--grey-text);
798
- margin: 0.25rem 0 0 0;
799
- line-height: 1.4;
800
- text-align: center;
801
- }
802
-
803
- .paymentModalOverlay {
804
- position: fixed;
805
- inset: 0;
806
- z-index: 1100;
807
- display: flex;
808
- align-items: center;
809
- justify-content: center;
810
- padding: 1rem;
811
- background-color: rgba(0, 0, 0, 0.5);
812
- }
813
-
814
- .paymentModal {
815
- background-color: var(--primary-background);
816
- border-radius: 16px;
817
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
818
- max-width: 32rem;
819
- width: 100%;
820
- max-height: 90vh;
821
- overflow: hidden;
822
- display: flex;
823
- flex-direction: column;
824
- }
825
-
826
- .paymentModalHeader {
827
- display: flex;
828
- justify-content: space-between;
829
- align-items: flex-start;
830
- padding: 1.5rem;
831
- border-bottom: 1px solid var(--accent-orange-10);
832
- }
833
-
834
- .paymentModalTitle {
835
- font-size: 1.125rem;
836
- font-weight: 600;
837
- color: var(--primary-text);
838
- margin: 0;
839
- }
840
-
841
- .paymentModalClose {
842
- padding: 0.25rem;
843
- background: none;
844
- border: none;
845
- color: var(--grey-text);
846
- cursor: pointer;
847
- }
848
-
849
- .paymentModalClose:hover {
850
- color: var(--primary-text);
851
- }
852
-
853
- .paymentModalCloseIcon {
854
- width: 1.25rem;
855
- height: 1.25rem;
856
- }
857
-
858
- .paymentModalSummary {
859
- padding: 0.75rem 1.5rem 0.5rem;
860
- display: flex;
861
- flex-direction: column;
862
- gap: 0.35rem;
863
- }
864
-
865
- .paymentModalLine {
866
- display: flex;
867
- justify-content: space-between;
868
- font-size: 0.875rem;
869
- color: var(--primary-text);
870
- }
871
-
872
- .paymentModalLineLabel {
873
- font-weight: 400;
874
- }
875
-
876
- .paymentModalLineAmount {
877
- font-weight: 500;
878
- }
879
-
880
- .paymentModalTotal {
881
- display: flex;
882
- justify-content: space-between;
883
- margin-top: 0.5rem;
884
- padding-top: 0.5rem;
885
- border-top: 1px solid var(--accent-orange-10);
886
- font-size: 1rem;
887
- }
888
-
889
- .paymentModalTotalLabel {
890
- font-weight: 700;
891
- }
892
-
893
- .paymentModalTotalAmount {
894
- font-weight: 700;
895
- color: var(--accent-orange);
896
- }
897
-
898
- .paymentModalDepositDue {
899
- display: flex;
900
- justify-content: space-between;
901
- margin-top: 0.5rem;
902
- font-size: 1rem;
903
- }
904
-
905
- .paymentModalDepositDueLabel {
906
- font-weight: 700;
907
- }
908
-
909
- .paymentModalDepositDueAmount {
910
- font-weight: 700;
911
- color: var(--accent-orange);
912
- }
913
-
914
- .paymentModalBody {
915
- padding: 0.75rem 1.5rem 1.5rem;
916
- overflow: auto;
917
- flex: 1;
918
- }
919
-
920
- /* Cancel booking confirmation dialog */
921
- .cancelConfirmModal {
922
- background-color: var(--primary-background);
923
- border-radius: 16px;
924
- box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
925
- max-width: 28rem;
926
- width: 100%;
927
- padding: 1.5rem;
928
- }
929
-
930
- .cancelConfirmTitle {
931
- font-size: 1.25rem;
932
- font-weight: 600;
933
- color: var(--primary-text);
934
- margin: 0 0 0.75rem;
935
- }
936
-
937
- .cancelConfirmMessage {
938
- font-size: 0.9375rem;
939
- color: var(--primary-text);
940
- margin: 0 0 1rem;
941
- line-height: 1.5;
942
- }
943
-
944
- .cancelConfirmActions {
945
- display: flex;
946
- flex-wrap: wrap;
947
- gap: 0.75rem;
948
- justify-content: flex-end;
949
- margin-top: 0.5rem;
950
- }
951
-
952
- .cancelConfirmSecondary {
953
- padding: 0.625rem 1.25rem;
954
- background: transparent;
955
- color: var(--primary-text);
956
- border: 1px solid var(--grey-text-20, rgba(0, 0, 0, 0.2));
957
- border-radius: 8px;
958
- font-size: 0.9375rem;
959
- cursor: pointer;
960
- }
961
-
962
- .cancelConfirmSecondary:hover:not(:disabled) {
963
- background: var(--grey-text-10, rgba(0, 0, 0, 0.05));
964
- }
965
-
966
- .cancelConfirmPrimary {
967
- padding: 0.625rem 1.25rem;
968
- background: var(--accent-orange);
969
- color: white;
970
- border: none;
971
- border-radius: 8px;
972
- font-size: 0.9375rem;
973
- cursor: pointer;
974
- }
975
-
976
- .cancelConfirmPrimary:hover:not(:disabled) {
977
- opacity: 0.9;
978
- }
979
-
980
- .cancelConfirmSecondary:disabled,
981
- .cancelConfirmPrimary:disabled {
982
- opacity: 0.6;
983
- cursor: not-allowed;
984
- }
985
-
986
- .cancelBtn {
987
- border-color: var(--grey-text);
988
- color: var(--grey-text);
989
- }
990
-
991
- .cancelBtn:hover {
992
- color: var(--grey-text);
993
- }
994
-
995
- /* Full-screen overlay while cancelling booking */
996
- .cancelOverlay {
997
- position: fixed;
998
- inset: 0;
999
- z-index: 1200;
1000
- display: flex;
1001
- flex-direction: column;
1002
- align-items: center;
1003
- justify-content: center;
1004
- gap: 1rem;
1005
- background-color: var(--light-orange-background, #fef3e9);
1006
- padding: 1rem;
1007
- }
1008
-
1009
- .cancelOverlaySpinner {
1010
- width: 2.5rem;
1011
- height: 2.5rem;
1012
- border-radius: 50%;
1013
- border: 3px solid rgba(0, 0, 0, 0.1);
1014
- border-top-color: var(--accent-orange);
1015
- animation: bookingDetailsSpin 0.8s linear infinite;
1016
- }
1017
-
1018
- .cancelOverlayText {
1019
- margin: 0;
1020
- font-size: 1rem;
1021
- font-weight: 500;
1022
- color: var(--primary-text);
1023
- }
1024
-
1025
- @keyframes bookingDetailsSpin {
1026
- to {
1027
- transform: rotate(360deg);
1028
- }
1029
- }
1030
-
1031
- .paymentForm {
1032
- display: flex;
1033
- flex-direction: column;
1034
- gap: 1rem;
1035
- }
1036
-
1037
- .paymentFormError {
1038
- font-size: 0.875rem;
1039
- color: #dc2626;
1040
- margin: 0;
1041
- }
1042
-
1043
- .paymentFormActions {
1044
- display: flex;
1045
- gap: 0.75rem;
1046
- padding-top: 0.5rem;
1047
- }
1048
-
1049
- .paymentFormCancel {
1050
- flex: 1;
1051
- padding: 0.75rem 1rem;
1052
- border: 2px solid var(--accent-orange-10);
1053
- background: transparent;
1054
- color: var(--primary-text);
1055
- font-weight: 600;
1056
- font-size: 1rem;
1057
- border-radius: 12px;
1058
- cursor: pointer;
1059
- font-family: inherit;
1060
- }
1061
-
1062
- .paymentFormCancel:hover {
1063
- background-color: var(--accent-orange-10);
1064
- }
1065
-
1066
- .paymentFormSubmit {
1067
- flex: 1;
1068
- padding: 0.75rem 1rem;
1069
- background-color: var(--accent-orange);
1070
- color: white;
1071
- border: none;
1072
- font-weight: 600;
1073
- font-size: 1rem;
1074
- border-radius: 12px;
1075
- cursor: pointer;
1076
- font-family: inherit;
1077
- }
1078
-
1079
- .paymentFormSubmit:hover:not(:disabled) {
1080
- opacity: 0.9;
1081
- }
1082
-
1083
- .paymentFormSubmit:disabled {
1084
- opacity: 0.6;
1085
- cursor: not-allowed;
1086
- }
1087
-
1088
- .paymentMethods {
1089
- margin-top: var(--spacing-large);
1090
- padding-top: var(--spacing-medium);
1091
- border-top: 1px solid var(--accent-orange-10);
1092
- }
1093
-
1094
- .paymentMethodsTitle {
1095
- font-size: 0.875rem;
1096
- font-weight: 600;
1097
- color: var(--primary-text);
1098
- margin: 0 0 var(--spacing-small) 0;
1099
- }
1100
-
1101
- .paymentMethodLine {
1102
- display: flex;
1103
- justify-content: space-between;
1104
- color: var(--grey-text);
1105
- font-size: 0.875rem;
1106
- }
1107
-
1108
- .paymentStatus {
1109
- margin-top: var(--spacing-medium);
1110
- padding-top: var(--spacing-medium);
1111
- border-top: 1px solid var(--accent-orange-10);
1112
- }
1113
-
1114
- .paymentStatusLine {
1115
- display: flex;
1116
- justify-content: space-between;
1117
- font-size: 0.875rem;
1118
- }
1119
-
1120
- .paymentStatusLabel {
1121
- color: var(--grey-text);
1122
- }
1123
-
1124
- .paymentStatusValue {
1125
- font-weight: 600;
1126
- }
1127
-
1128
- .statusPaid {
1129
- color: var(--accent-turquoise);
1130
- }
1131
-
1132
- .statusDeposit {
1133
- color: #f59e0b;
1134
- }
1135
-
1136
- .statusAwaiting {
1137
- color: var(--grey-text);
1138
- }
1139
-
1140
- .balanceDue {
1141
- margin-top: var(--spacing-small);
1142
- background-color: #fef3c7;
1143
- border-radius: 8px;
1144
- padding: var(--spacing-small);
1145
- }
1146
-
1147
- .balanceDueTitle {
1148
- font-weight: 600;
1149
- color: #92400e;
1150
- margin: 0;
1151
- font-size: 0.875rem;
1152
- }
1153
-
1154
- .balanceDueDate {
1155
- font-size: 0.75rem;
1156
- color: #92400e;
1157
- margin: 0.25rem 0 0 0;
1158
- }
1159
-
1160
- .policyLabel {
1161
- color: var(--primary-text);
1162
- font-weight: 500;
1163
- font-size: 1rem;
1164
- margin-bottom: var(--spacing-small);
1165
- }
1166
-
1167
- .policyCancelBy {
1168
- margin-bottom: var(--spacing-small);
1169
- }
1170
-
1171
- .policyCancelByHeading {
1172
- font-weight: 700;
1173
- font-size: 1rem;
1174
- color: var(--primary-text);
1175
- margin: 0 0 var(--spacing-small) 0;
1176
- text-align: left;
1177
- }
1178
-
1179
- .policyTierList {
1180
- display: flex;
1181
- flex-direction: column;
1182
- gap: 0;
1183
- }
1184
-
1185
- .policyTierRow {
1186
- display: grid;
1187
- grid-template-columns: 1fr 1fr;
1188
- gap: var(--spacing-medium);
1189
- align-items: start;
1190
- padding: var(--spacing-medium) 0;
1191
- border-bottom: 1px solid var(--accent-orange-10);
1192
- font-size: 1rem;
1193
- }
1194
-
1195
- .policyTierRow:last-child {
1196
- border-bottom: none;
1197
- }
1198
-
1199
- .policyTierDeadline {
1200
- font-weight: 700;
1201
- color: var(--primary-text);
1202
- }
1203
-
1204
- .policyTierRefund {
1205
- color: var(--grey-text);
1206
- }
1207
-
1208
- .policyChangeWindow {
1209
- font-size: 1rem;
1210
- color: var(--grey-text);
1211
- margin: 0;
1212
- }
1213
-
1214
- .changeBookingCopy {
1215
- margin: 0;
1216
- color: var(--grey-text);
1217
- font-size: 0.95rem;
1218
- }
1219
-
1220
- .changeBookingActions {
1221
- margin-top: var(--spacing-medium);
1222
- display: flex;
1223
- justify-content: center;
1224
- }
1225
-
1226
- .changeBookingMeta {
1227
- margin: var(--spacing-small) 0 0 0;
1228
- color: var(--grey-text);
1229
- font-size: 0.8rem;
1230
- text-align: center;
1231
- }
1232
-
1233
- .changeBookingSuccess {
1234
- margin: 0 0 var(--spacing-medium) 0;
1235
- border: 1px solid rgba(5, 150, 105, 0.35);
1236
- background: rgba(16, 185, 129, 0.12);
1237
- color: #065f46;
1238
- border-radius: 12px;
1239
- padding: 0.75rem 1rem;
1240
- font-size: 0.9rem;
1241
- font-weight: 500;
1242
- }
1243
-
1244
- .changeBookingBlocked {
1245
- margin: var(--spacing-small) 0 0 0;
1246
- color: #b91c1c;
1247
- font-size: 0.8rem;
1248
- text-align: center;
1249
- }
1250
-
1251
- .cancelBookingSection {
1252
- margin-top: var(--spacing-large);
1253
- padding-top: var(--spacing-medium);
1254
- border-top: 1px solid var(--grey-text-20, rgba(0, 0, 0, 0.08));
1255
- align-items: center;
1256
- display: flex;
1257
- flex-direction: column;
1258
- gap: var(--spacing-small);
1259
- }
1260
-
1261
- .cancelBookingText {
1262
- font-size: 0.8rem;
1263
- color: var(--grey-text);
1264
- }
1265
-
1266
- .cancelBookingError {
1267
- font-size: 0.875rem;
1268
- color: #b91c1c;
1269
- margin: 0 0 var(--spacing-small) 0;
1270
- }
1271
-
1272
- .contactInfo {
1273
- display: flex;
1274
- flex-direction: column;
1275
- gap: 0.5rem;
1276
- color: var(--primary-text);
1277
- font-size: 1rem;
1278
- }
1279
-
1280
- .contactLine {
1281
- margin: 0;
1282
- font-size: 1rem;
1283
- }
1284
-
1285
- .contactLabel {
1286
- font-weight: 500;
1287
- font-size: 1rem;
1288
- }
1289
-
1290
- .finePrintSection {
1291
- margin-top: var(--spacing-medium);
1292
- padding-top: var(--spacing-medium);
1293
- border-top: 1px solid var(--accent-orange-10);
1294
- }
1295
-
1296
- .finePrint {
1297
- font-size: 1rem;
1298
- color: var(--grey-text);
1299
- margin: 0;
1300
- }
1301
-
1302
- .communicationLabel {
1303
- font-weight: 500;
1304
- font-size: 1rem;
1305
- }
1306
-
1307
- .whatsappLabel {
1308
- display: inline-flex;
1309
- align-items: center;
1310
- gap: 0.35rem;
1311
- }
1312
-
1313
- .whatsappIconSmall {
1314
- width: 18px;
1315
- height: 18px;
1316
- color: #25d366;
1317
- flex-shrink: 0;
1318
- }
1319
-
1320
- .contactUpdateWrap {
1321
- margin-top: var(--spacing-medium);
1322
- }
1323
-
1324
- .contactUpdateLink {
1325
- display: inline-flex;
1326
- align-items: center;
1327
- gap: 0.35rem;
1328
- padding: 0;
1329
- background: none;
1330
- border: none;
1331
- color: var(--accent-orange);
1332
- font-weight: 500;
1333
- font-size: 0.875rem;
1334
- font-family: inherit;
1335
- text-decoration: underline;
1336
- cursor: pointer;
1337
- }
1338
-
1339
- .contactForm {
1340
- display: flex;
1341
- flex-direction: column;
1342
- gap: var(--spacing-medium);
1343
- }
1344
-
1345
- .contactFieldGroup {
1346
- display: flex;
1347
- flex-direction: column;
1348
- gap: 0.35rem;
1349
- min-width: 0;
1350
- }
1351
-
1352
- .contactFieldLabel {
1353
- font-weight: 600;
1354
- font-size: 0.9375rem;
1355
- color: var(--primary-text);
1356
- display: inline-flex;
1357
- align-items: center;
1358
- gap: 0.35rem;
1359
- }
1360
-
1361
- .contactCheckboxGroup {
1362
- display: flex;
1363
- flex-direction: row;
1364
- flex-wrap: wrap;
1365
- gap: 1rem 1.5rem;
1366
- }
1367
-
1368
- .contactCheckboxLabel {
1369
- display: flex;
1370
- align-items: center;
1371
- gap: 0.5rem;
1372
- cursor: pointer;
1373
- font-size: 1rem;
1374
- color: var(--primary-text);
1375
- }
1376
-
1377
- .contactCheckbox {
1378
- width: 1.125rem;
1379
- height: 1.125rem;
1380
- accent-color: var(--accent-orange);
1381
- }
1382
-
1383
- .contactCheckboxText {
1384
- display: inline-flex;
1385
- align-items: center;
1386
- gap: 0.35rem;
1387
- }
1388
-
1389
- .contactHint {
1390
- font-size: 0.8125rem;
1391
- color: var(--grey-text);
1392
- margin: 0;
1393
- }
1394
-
1395
- .contactInput {
1396
- width: 100%;
1397
- max-width: 100%;
1398
- padding: 0.625rem 0.875rem;
1399
- font-size: 1rem;
1400
- font-family: inherit;
1401
- border: 2px solid var(--accent-orange-10, rgba(0, 0, 0, 0.08));
1402
- border-radius: 12px;
1403
- color: var(--primary-text);
1404
- box-sizing: border-box;
1405
- }
1406
-
1407
- .contactInput:focus {
1408
- outline: none;
1409
- border-color: var(--accent-orange);
1410
- }
1411
-
1412
- .contactInput::placeholder {
1413
- color: var(--grey-text);
1414
- }
1415
-
1416
- .contactError {
1417
- color: #dc2626;
1418
- font-size: 0.9375rem;
1419
- margin: 0;
1420
- }
1421
-
1422
- .contactSaveBtn {
1423
- align-self: center;
1424
- padding: 0.625rem 1.25rem;
1425
- background: var(--accent-orange);
1426
- color: white;
1427
- border: none;
1428
- border-radius: 12px;
1429
- font-family: 'Poppins', sans-serif;
1430
- font-weight: 600;
1431
- font-size: 1rem;
1432
- text-transform: lowercase;
1433
- cursor: pointer;
1434
- }
1435
-
1436
- .contactSaveBtn:hover:not(:disabled) {
1437
- opacity: 0.9;
1438
- }
1439
-
1440
- .contactSaveBtn:disabled {
1441
- opacity: 0.6;
1442
- cursor: not-allowed;
1443
- }
1444
-
1445
- #contact-details {
1446
- scroll-margin-top: 6rem;
1447
- }
1448
-
1449
- .pickupDetailsSection {
1450
- scroll-margin-top: 6rem;
1451
- }
1452
-
1453
- .pickupDetails {
1454
- color: var(--primary-text);
1455
- margin: 0;
1456
- }
1457
-
1458
- .pickupLocationBlock {
1459
- text-align: center;
1460
- }
1461
-
1462
- .pickupLocationBlock .pickupDetails {
1463
- margin: 0 0 0.25rem 0;
1464
- text-align: center;
1465
- }
1466
-
1467
- .pickupLinksWrap {
1468
- display: flex;
1469
- flex-direction: column;
1470
- align-items: center;
1471
- gap: 0.35rem;
1472
- }
1473
-
1474
- .pickupChangeLink {
1475
- display: inline-flex;
1476
- align-items: center;
1477
- gap: 0.35rem;
1478
- padding: 0;
1479
- background: none;
1480
- border: none;
1481
- color: var(--accent-orange);
1482
- font-weight: 500;
1483
- font-size: 0.875rem;
1484
- font-family: inherit;
1485
- text-decoration: underline;
1486
- cursor: pointer;
1487
- }
1488
-
1489
- .pickupChangeLink:hover:not(:disabled) {
1490
- color: var(--accent-turquoise);
1491
- }
1492
-
1493
- .pickupChangeLink:disabled {
1494
- opacity: 0.45;
1495
- cursor: not-allowed;
1496
- }
1497
-
1498
- .pickupEditIcon {
1499
- width: 16px;
1500
- height: 16px;
1501
- }
1502
-
1503
- .pickupMapLink {
1504
- display: inline-block;
1505
- color: var(--accent-orange);
1506
- font-weight: 500;
1507
- }
1508
-
1509
- .pickupMapLink:hover {
1510
- color: var(--accent-turquoise);
1511
- }
1512
-
1513
- .pickupSelectPrompt {
1514
- color: var(--primary-text);
1515
- margin: 0 0 var(--spacing-medium) 0;
1516
- font-size: 0.9375rem;
1517
- }
1518
-
1519
- .pickupButtonWrap {
1520
- display: flex;
1521
- justify-content: center;
1522
- margin-bottom: var(--spacing-medium);
1523
- }
1524
-
1525
- .pickupPrimaryButton {
1526
- display: inline-flex;
1527
- align-items: center;
1528
- gap: 0.5rem;
1529
- padding: 0.625rem 1.25rem;
1530
- background-color: var(--accent-orange);
1531
- color: white;
1532
- font-family: 'Poppins', sans-serif;
1533
- font-weight: 600;
1534
- font-size: 1rem;
1535
- border: none;
1536
- border-radius: 24px;
1537
- cursor: pointer;
1538
- text-decoration: none;
1539
- }
1540
-
1541
- .pickupPrimaryButton:hover {
1542
- background-color: #e85a2e;
1543
- }
1544
-
1545
-
1546
- /* Mobile styles */
1547
- @media (max-width: 768px) {
1548
- .container {
1549
- padding: var(--spacing-medium);
1550
- }
1551
-
1552
- .section {
1553
- padding: var(--spacing-medium);
1554
- }
1555
-
1556
- .headerContent {
1557
- flex-direction: column;
1558
- align-items: center;
1559
- text-align: center;
1560
- }
1561
-
1562
- .title {
1563
- font-size: 1.5rem;
1564
- }
1565
-
1566
- .reference {
1567
- text-align: center;
1568
- }
1569
-
1570
- .sectionTitle {
1571
- font-size: 1.25rem;
1572
- }
1573
-
1574
- .draftItineraryActionTitle {
1575
- font-size: 1.25rem;
1576
- }
1577
-
1578
- .itineraryItem {
1579
- flex-direction: column;
1580
- gap: 0.25rem;
1581
- }
1582
-
1583
- .bookingDetails {
1584
- min-width: unset;
1585
- width: 100%;
1586
- }
1587
-
1588
- .policyTierRow {
1589
- grid-template-columns: 1fr;
1590
- }
1591
- }