@bigz-app/booking-widget 1.1.0 → 1.1.3
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.
- package/dist/booking-widget.js +141 -190
- package/dist/booking-widget.js.map +1 -1
- package/dist/components/UniversalBookingWidget.d.ts.map +1 -1
- package/dist/components/booking/BookingForm.d.ts.map +1 -1
- package/dist/components/events/EventInstanceSelection.d.ts.map +1 -1
- package/dist/components/events/EventTypeSelection.d.ts.map +1 -1
- package/dist/components/upsells/UpsellCard.d.ts.map +1 -1
- package/dist/components/upsells/UpsellsStep.d.ts.map +1 -1
- package/dist/index.cjs +141 -190
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +141 -190
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -5016,7 +5016,7 @@ function Accordion({ title, priceInfo, children, isOpen, onToggle, }) {
|
|
|
5016
5016
|
transition: "background-color 0.2s ease",
|
|
5017
5017
|
}, children: [jsx("span", { style: {
|
|
5018
5018
|
fontWeight: 700,
|
|
5019
|
-
fontSize: "
|
|
5019
|
+
fontSize: "18px",
|
|
5020
5020
|
color: "var(--bw-text-color)",
|
|
5021
5021
|
}, children: title }), priceInfo && (jsx("div", { style: {
|
|
5022
5022
|
marginLeft: "auto",
|
|
@@ -9138,11 +9138,11 @@ const sectionStyles = {
|
|
|
9138
9138
|
fontSize: "16px",
|
|
9139
9139
|
fontWeight: 600,
|
|
9140
9140
|
color: "var(--bw-highlight-color)",
|
|
9141
|
+
margin: 0,
|
|
9141
9142
|
marginBottom: "12px",
|
|
9142
9143
|
fontFamily: "var(--bw-font-family)",
|
|
9143
9144
|
borderBottom: "2px solid var(--bw-highlight-color)",
|
|
9144
9145
|
paddingBottom: "4px",
|
|
9145
|
-
margin: 0,
|
|
9146
9146
|
}};
|
|
9147
9147
|
// ============================================
|
|
9148
9148
|
// TEXT
|
|
@@ -9221,6 +9221,8 @@ const errorTextStyles = formStyles.error;
|
|
|
9221
9221
|
function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError, onBackToEventInstances, onBackToEventTypes, selectedEventType, selectedEventInstance, isOpen, onClose, systemConfig, selectedUpsells = [], upsells = [], }) {
|
|
9222
9222
|
const [appliedVouchers, setAppliedVouchers] = useState([]);
|
|
9223
9223
|
const paymentSectionRef = useRef(null);
|
|
9224
|
+
// Payment option: "deposit" or "full" - only relevant when deposit is available
|
|
9225
|
+
const [paymentOption, setPaymentOption] = useState("deposit");
|
|
9224
9226
|
// Per-participant upsell selections: participantIndex -> array of upsell package IDs
|
|
9225
9227
|
const [participantUpsells, setParticipantUpsells] = useState({});
|
|
9226
9228
|
const form = useForm({
|
|
@@ -9236,11 +9238,11 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9236
9238
|
},
|
|
9237
9239
|
});
|
|
9238
9240
|
const watchedParticipants = form.watch("participants");
|
|
9241
|
+
const watchedCustomerName = form.watch("customerName");
|
|
9239
9242
|
const watchedCustomerEmail = form.watch("customerEmail");
|
|
9240
9243
|
const customerNameError = form.formState.errors.customerName;
|
|
9241
9244
|
const customerEmailError = form.formState.errors.customerEmail;
|
|
9242
9245
|
const watchedAcceptTerms = form.watch("acceptTerms");
|
|
9243
|
-
const { isValid: isFormValid } = form.formState;
|
|
9244
9246
|
// Initialize participant upsells from selectedUpsells when component mounts or participants change
|
|
9245
9247
|
useEffect(() => {
|
|
9246
9248
|
if (selectedUpsells.length > 0 && upsells.length > 0) {
|
|
@@ -9324,7 +9326,10 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9324
9326
|
const depositAmount = calculateDeposit();
|
|
9325
9327
|
// Deposit stays fixed unless the discounted total is lower than the deposit
|
|
9326
9328
|
// (discount applies to total price, not to the deposit itself)
|
|
9327
|
-
const
|
|
9329
|
+
const hasDepositOption = depositAmount > 0 && depositAmount < totalAmount;
|
|
9330
|
+
const paymentAmount = hasDepositOption && paymentOption === "deposit"
|
|
9331
|
+
? Math.min(depositAmount, totalAmount)
|
|
9332
|
+
: totalAmount;
|
|
9328
9333
|
// Convert per-participant upsells to UpsellSelection[] format for API
|
|
9329
9334
|
// Includes participantIndices to track which participants selected each upsell
|
|
9330
9335
|
const aggregatedUpsellSelections = useCallback(() => {
|
|
@@ -9357,9 +9362,18 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9357
9362
|
setAppliedVouchers((prev) => prev.filter((v) => v.code !== code));
|
|
9358
9363
|
}, []);
|
|
9359
9364
|
const isReadyForPayment = () => {
|
|
9360
|
-
const
|
|
9361
|
-
const
|
|
9362
|
-
|
|
9365
|
+
const participantsWithNames = watchedParticipants.filter((p) => p.name.trim()).length;
|
|
9366
|
+
const totalParticipantRows = watchedParticipants.length;
|
|
9367
|
+
const allParticipantsHaveNames = participantsWithNames === totalParticipantRows;
|
|
9368
|
+
const participantsWithinLimit = participantsWithNames <= (eventDetails?.availableSpots || 0);
|
|
9369
|
+
const hasValidCustomerName = watchedCustomerName && watchedCustomerName.trim().length >= 2;
|
|
9370
|
+
const hasValidCustomerEmail = watchedCustomerEmail && watchedCustomerEmail.trim().length > 0 && !customerEmailError;
|
|
9371
|
+
return allParticipantsHaveNames &&
|
|
9372
|
+
participantsWithinLimit &&
|
|
9373
|
+
participantsWithNames > 0 &&
|
|
9374
|
+
hasValidCustomerName &&
|
|
9375
|
+
hasValidCustomerEmail &&
|
|
9376
|
+
watchedAcceptTerms;
|
|
9363
9377
|
};
|
|
9364
9378
|
useEffect(() => {
|
|
9365
9379
|
if (appliedVouchers.length > 0) {
|
|
@@ -9476,7 +9490,7 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9476
9490
|
gridTemplateColumns: "repeat(auto-fit, minmax(200px, 1fr))",
|
|
9477
9491
|
gap: "12px",
|
|
9478
9492
|
fontSize: "14px",
|
|
9479
|
-
}, children: [jsxs("div", { style: {
|
|
9493
|
+
}, children: [jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [jsxs("span", { style: {
|
|
9480
9494
|
color: "var(--bw-text-muted)",
|
|
9481
9495
|
fontFamily: "var(--bw-font-family)",
|
|
9482
9496
|
display: "flex",
|
|
@@ -9522,7 +9536,7 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9522
9536
|
justifyContent: "space-between",
|
|
9523
9537
|
alignItems: "center",
|
|
9524
9538
|
marginBottom: "16px",
|
|
9525
|
-
}, children: jsx("h2", { style: { ...sectionHeaderStyles,
|
|
9539
|
+
}, children: jsx("h2", { style: { ...sectionHeaderStyles, marginBottom: 0 }, children: "Teilnehmer" }) }), jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: [watchedParticipants.map((_, index) => (jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: [jsxs("div", { style: { display: "flex", gap: "12px", alignItems: "center" }, children: [jsxs("div", { style: { flex: 1 }, children: [jsx("label", { htmlFor: `participant-name-${index}`, style: labelStyles, children: "Name *" }), jsx("input", { id: `participant-name-${index}`, ...form.register(`participants.${index}.name`), type: "text", style: inputStyles, placeholder: "Teilnehmername" }), form.formState.errors.participants?.[index]?.name && (jsx("p", { style: errorTextStyles, children: form.formState.errors.participants[index]?.name?.message }))] }), jsxs("div", { style: { width: "80px" }, children: [jsx("label", { htmlFor: `participant-age-${index}`, style: labelStyles, children: "Alter" }), jsx("input", { id: `participant-age-${index}`, ...form.register(`participants.${index}.age`, {
|
|
9526
9540
|
setValueAs: (value) => {
|
|
9527
9541
|
if (value === "" || value === null || value === undefined) {
|
|
9528
9542
|
return undefined;
|
|
@@ -9601,7 +9615,57 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9601
9615
|
}, children: ["Gutschein (", giftCard.code, "):"] }), jsxs("span", { style: { color: "var(--bw-success-color)", fontFamily: "var(--bw-font-family)" }, children: ["-", formatCurrency(giftCard.balanceToUse || giftCard.discountAmount)] })] }, giftCard.code)))] })), jsxs("div", { style: {
|
|
9602
9616
|
borderTop: "1px solid var(--bw-border-color)",
|
|
9603
9617
|
paddingTop: "12px",
|
|
9604
|
-
}, children: [
|
|
9618
|
+
}, children: [hasDepositOption && (jsxs("div", { style: {
|
|
9619
|
+
display: "flex",
|
|
9620
|
+
gap: "8px",
|
|
9621
|
+
marginBottom: "16px",
|
|
9622
|
+
}, children: [jsxs("button", { type: "button", onClick: () => setPaymentOption("deposit"), style: {
|
|
9623
|
+
flex: 1,
|
|
9624
|
+
padding: "12px",
|
|
9625
|
+
borderRadius: "var(--bw-border-radius)",
|
|
9626
|
+
border: paymentOption === "deposit"
|
|
9627
|
+
? "2px solid var(--bw-highlight-color)"
|
|
9628
|
+
: "1px solid var(--bw-border-color)",
|
|
9629
|
+
backgroundColor: paymentOption === "deposit"
|
|
9630
|
+
? "rgba(var(--bw-highlight-color-rgb, 0, 177, 170), 0.1)"
|
|
9631
|
+
: "var(--bw-surface-color)",
|
|
9632
|
+
cursor: "pointer",
|
|
9633
|
+
fontFamily: "var(--bw-font-family)",
|
|
9634
|
+
transition: "all 0.2s ease",
|
|
9635
|
+
}, children: [jsx("div", { style: {
|
|
9636
|
+
fontSize: "13px",
|
|
9637
|
+
color: "var(--bw-text-muted)",
|
|
9638
|
+
marginBottom: "4px",
|
|
9639
|
+
}, children: "Anzahlung" }), jsx("div", { style: {
|
|
9640
|
+
fontSize: "18px",
|
|
9641
|
+
fontWeight: 700,
|
|
9642
|
+
color: paymentOption === "deposit"
|
|
9643
|
+
? "var(--bw-highlight-color)"
|
|
9644
|
+
: "var(--bw-text-color)",
|
|
9645
|
+
}, children: formatCurrency(depositAmount) })] }), jsxs("button", { type: "button", onClick: () => setPaymentOption("full"), style: {
|
|
9646
|
+
flex: 1,
|
|
9647
|
+
padding: "12px",
|
|
9648
|
+
borderRadius: "var(--bw-border-radius)",
|
|
9649
|
+
border: paymentOption === "full"
|
|
9650
|
+
? "2px solid var(--bw-highlight-color)"
|
|
9651
|
+
: "1px solid var(--bw-border-color)",
|
|
9652
|
+
backgroundColor: paymentOption === "full"
|
|
9653
|
+
? "rgba(var(--bw-highlight-color-rgb, 0, 177, 170), 0.1)"
|
|
9654
|
+
: "var(--bw-surface-color)",
|
|
9655
|
+
cursor: "pointer",
|
|
9656
|
+
fontFamily: "var(--bw-font-family)",
|
|
9657
|
+
transition: "all 0.2s ease",
|
|
9658
|
+
}, children: [jsx("div", { style: {
|
|
9659
|
+
fontSize: "13px",
|
|
9660
|
+
color: "var(--bw-text-muted)",
|
|
9661
|
+
marginBottom: "4px",
|
|
9662
|
+
}, children: "Vollst\u00E4ndig bezahlen" }), jsx("div", { style: {
|
|
9663
|
+
fontSize: "18px",
|
|
9664
|
+
fontWeight: 700,
|
|
9665
|
+
color: paymentOption === "full"
|
|
9666
|
+
? "var(--bw-highlight-color)"
|
|
9667
|
+
: "var(--bw-text-color)",
|
|
9668
|
+
}, children: formatCurrency(totalAmount) })] })] })), hasDepositOption && paymentOption === "deposit" && (jsxs("div", { style: {
|
|
9605
9669
|
display: "flex",
|
|
9606
9670
|
justifyContent: "space-between",
|
|
9607
9671
|
alignItems: "center",
|
|
@@ -9617,31 +9681,48 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9617
9681
|
alignItems: "center",
|
|
9618
9682
|
fontSize: "18px",
|
|
9619
9683
|
fontWeight: 600,
|
|
9620
|
-
}, children: [jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children:
|
|
9684
|
+
}, children: [jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: hasDepositOption && paymentOption === "deposit"
|
|
9685
|
+
? "Heute zu zahlen (Anzahlung):"
|
|
9686
|
+
: "Gesamtbetrag:" }), jsx("span", { style: {
|
|
9621
9687
|
color: "var(--bw-highlight-color)",
|
|
9622
9688
|
fontFamily: "var(--bw-font-family)",
|
|
9623
9689
|
fontWeight: 700,
|
|
9624
|
-
}, children: formatCurrency(paymentAmount) })] })
|
|
9690
|
+
}, children: formatCurrency(paymentAmount) })] }), hasDepositOption && paymentOption === "deposit" && (jsxs("div", { style: {
|
|
9691
|
+
fontSize: "12px",
|
|
9692
|
+
color: "var(--bw-text-muted)",
|
|
9693
|
+
fontFamily: "var(--bw-font-family)",
|
|
9694
|
+
marginTop: "8px",
|
|
9695
|
+
textAlign: "right",
|
|
9696
|
+
}, children: ["Restbetrag (", formatCurrency(totalAmount - depositAmount), ") vor Ort f\u00E4llig."] }))] })] })] }), jsx("div", { ref: paymentSectionRef, children: stripePromise &&
|
|
9625
9697
|
(() => {
|
|
9626
9698
|
if (!isReadyForPayment()) {
|
|
9627
|
-
const
|
|
9699
|
+
const participantsWithNames = watchedParticipants.filter((p) => p.name.trim()).length;
|
|
9700
|
+
const totalParticipantRows = watchedParticipants.length;
|
|
9701
|
+
const participantsWithoutNames = totalParticipantRows - participantsWithNames;
|
|
9628
9702
|
const missing = [];
|
|
9629
|
-
if (
|
|
9630
|
-
missing.push("einen Teilnehmer");
|
|
9703
|
+
if (participantsWithNames === 0) {
|
|
9704
|
+
missing.push("mindestens einen Teilnehmer mit Namen");
|
|
9631
9705
|
}
|
|
9632
|
-
if (
|
|
9706
|
+
else if (participantsWithoutNames > 0) {
|
|
9707
|
+
missing.push(`Namen für alle ${totalParticipantRows} Teilnehmer`);
|
|
9708
|
+
}
|
|
9709
|
+
if (participantsWithNames > (eventDetails?.availableSpots || 0)) {
|
|
9633
9710
|
missing.push(`die Anzahl der Teilnehmer auf ${eventDetails?.availableSpots || 0} zu reduzieren`);
|
|
9634
9711
|
}
|
|
9635
|
-
|
|
9636
|
-
|
|
9712
|
+
// Check for empty or invalid name (min 2 chars required)
|
|
9713
|
+
if (!watchedCustomerName || watchedCustomerName.trim().length < 2 || customerNameError) {
|
|
9714
|
+
missing.push("einen gültigen Kontaktnamen");
|
|
9637
9715
|
}
|
|
9638
|
-
|
|
9716
|
+
// Check for empty or invalid email
|
|
9717
|
+
if (!watchedCustomerEmail || watchedCustomerEmail.trim().length === 0 || customerEmailError) {
|
|
9639
9718
|
missing.push("eine gültige E-Mail-Adresse");
|
|
9640
9719
|
}
|
|
9641
9720
|
if (!watchedAcceptTerms) {
|
|
9642
|
-
missing.push("die Akzeptanz der
|
|
9721
|
+
missing.push("die Akzeptanz der AGBs");
|
|
9643
9722
|
}
|
|
9644
|
-
const message =
|
|
9723
|
+
const message = missing.length > 0
|
|
9724
|
+
? `Wir benötigen mindestens ${missing.join(", ")} um fortzufahren.`
|
|
9725
|
+
: "Bitte fülle alle Pflichtfelder aus, um fortzufahren.";
|
|
9645
9726
|
return (jsx("div", { style: {
|
|
9646
9727
|
...cardStyles,
|
|
9647
9728
|
borderColor: "var(--bw-warning-color)",
|
|
@@ -9650,7 +9731,7 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9650
9731
|
textAlign: "center",
|
|
9651
9732
|
}, children: message }));
|
|
9652
9733
|
}
|
|
9653
|
-
return (jsxs("div", { style: cardStyles, children: [jsx("h2", { style: { ...sectionHeaderStyles
|
|
9734
|
+
return (jsxs("div", { style: cardStyles, children: [jsx("h2", { style: { ...sectionHeaderStyles }, children: "Zahlung" }), jsx(PaymentForm, { config: config, eventDetails: eventDetails, formData: form.getValues(), totalAmount: paymentAmount, discountCode: appliedDiscountCode
|
|
9654
9735
|
? {
|
|
9655
9736
|
id: appliedDiscountCode.id,
|
|
9656
9737
|
code: appliedDiscountCode.code,
|
|
@@ -10489,130 +10570,7 @@ function EventTypeSelection({ eventTypes, onEventTypeSelect, isLoading = false,
|
|
|
10489
10570
|
if (isLoading) {
|
|
10490
10571
|
return jsx(EventCardSkeleton, { count: skeletonCount });
|
|
10491
10572
|
}
|
|
10492
|
-
return (jsxs(Fragment, { children: [jsx("style", {
|
|
10493
|
-
__html: `
|
|
10494
|
-
@media (max-width: 600px) {
|
|
10495
|
-
.event-type-list {
|
|
10496
|
-
padding: 8px !important;
|
|
10497
|
-
gap: 12px !important;
|
|
10498
|
-
}
|
|
10499
|
-
.event-type-card {
|
|
10500
|
-
max-width: 100% !important;
|
|
10501
|
-
flex: 1 1 100% !important;
|
|
10502
|
-
padding: 0 !important;
|
|
10503
|
-
}
|
|
10504
|
-
.event-type-img {
|
|
10505
|
-
height: 160px !important;
|
|
10506
|
-
}
|
|
10507
|
-
.event-type-title {
|
|
10508
|
-
font-size: 1.1rem !important;
|
|
10509
|
-
}
|
|
10510
|
-
.event-type-desc {
|
|
10511
|
-
font-size: 0.8rem !important;
|
|
10512
|
-
min-height: 100px !important;
|
|
10513
|
-
max-height: 100px !important;
|
|
10514
|
-
}
|
|
10515
|
-
.event-type-content {
|
|
10516
|
-
padding: 16px 24px !important;
|
|
10517
|
-
}
|
|
10518
|
-
}
|
|
10519
|
-
|
|
10520
|
-
/* Markdown content styling for event type cards */
|
|
10521
|
-
.event-type-markdown {
|
|
10522
|
-
overflow: visible !important;
|
|
10523
|
-
}
|
|
10524
|
-
.event-type-markdown p {
|
|
10525
|
-
margin: 0 0 8px 0;
|
|
10526
|
-
color: var(--bw-text-muted);
|
|
10527
|
-
font-family: var(--bw-font-family);
|
|
10528
|
-
line-height: 1.6;
|
|
10529
|
-
}
|
|
10530
|
-
.event-type-markdown p:last-child {
|
|
10531
|
-
margin-bottom: 0;
|
|
10532
|
-
}
|
|
10533
|
-
.event-type-markdown h2 {
|
|
10534
|
-
font-size: 18px !important;
|
|
10535
|
-
font-weight: 700 !important;
|
|
10536
|
-
color: var(--bw-text-color) !important;
|
|
10537
|
-
margin: 12px 0 6px 0 !important;
|
|
10538
|
-
line-height: 1.3 !important;
|
|
10539
|
-
}
|
|
10540
|
-
.event-type-markdown h3 {
|
|
10541
|
-
font-size: 16px !important;
|
|
10542
|
-
font-weight: 600 !important;
|
|
10543
|
-
color: var(--bw-text-color) !important;
|
|
10544
|
-
margin: 10px 0 4px 0 !important;
|
|
10545
|
-
line-height: 1.3 !important;
|
|
10546
|
-
}
|
|
10547
|
-
.event-type-markdown strong {
|
|
10548
|
-
font-weight: 600;
|
|
10549
|
-
color: var(--bw-text-color);
|
|
10550
|
-
}
|
|
10551
|
-
.event-type-markdown em {
|
|
10552
|
-
font-style: italic;
|
|
10553
|
-
}
|
|
10554
|
-
.event-type-markdown u {
|
|
10555
|
-
text-decoration: underline;
|
|
10556
|
-
}
|
|
10557
|
-
.event-type-markdown ul {
|
|
10558
|
-
margin: 6px 0 !important;
|
|
10559
|
-
padding: 0 !important;
|
|
10560
|
-
padding-left: 24px !important;
|
|
10561
|
-
list-style: none !important;
|
|
10562
|
-
position: relative !important;
|
|
10563
|
-
}
|
|
10564
|
-
.event-type-markdown ul li {
|
|
10565
|
-
margin-bottom: 2px !important;
|
|
10566
|
-
padding-left: 0 !important;
|
|
10567
|
-
position: relative !important;
|
|
10568
|
-
color: var(--bw-text-muted) !important;
|
|
10569
|
-
font-family: var(--bw-font-family) !important;
|
|
10570
|
-
}
|
|
10571
|
-
.event-type-markdown ul li::before {
|
|
10572
|
-
content: "•" !important;
|
|
10573
|
-
color: var(--bw-text-color) !important;
|
|
10574
|
-
position: absolute !important;
|
|
10575
|
-
left: -16px !important;
|
|
10576
|
-
top: 0 !important;
|
|
10577
|
-
font-weight: bold !important;
|
|
10578
|
-
}
|
|
10579
|
-
.event-type-markdown ol {
|
|
10580
|
-
margin: 6px 0 !important;
|
|
10581
|
-
padding: 0 !important;
|
|
10582
|
-
padding-left: 24px !important;
|
|
10583
|
-
counter-reset: list-counter !important;
|
|
10584
|
-
list-style: none !important;
|
|
10585
|
-
position: relative !important;
|
|
10586
|
-
}
|
|
10587
|
-
.event-type-markdown ol li {
|
|
10588
|
-
margin-bottom: 2px !important;
|
|
10589
|
-
padding-left: 0 !important;
|
|
10590
|
-
position: relative !important;
|
|
10591
|
-
counter-increment: list-counter !important;
|
|
10592
|
-
color: var(--bw-text-muted) !important;
|
|
10593
|
-
font-family: var(--bw-font-family) !important;
|
|
10594
|
-
}
|
|
10595
|
-
.event-type-markdown ol li::before {
|
|
10596
|
-
content: counter(list-counter) "." !important;
|
|
10597
|
-
color: var(--bw-text-color) !important;
|
|
10598
|
-
position: absolute !important;
|
|
10599
|
-
left: -20px !important;
|
|
10600
|
-
top: 0 !important;
|
|
10601
|
-
font-weight: bold !important;
|
|
10602
|
-
}
|
|
10603
|
-
.event-type-markdown blockquote {
|
|
10604
|
-
margin: 4px 0;
|
|
10605
|
-
padding-left: 12px;
|
|
10606
|
-
border-left: 2px solid var(--bw-border-color);
|
|
10607
|
-
font-style: italic;
|
|
10608
|
-
color: var(--bw-text-muted);
|
|
10609
|
-
}
|
|
10610
|
-
.event-type-markdown a {
|
|
10611
|
-
color: var(--bw-highlight-color);
|
|
10612
|
-
text-decoration: underline;
|
|
10613
|
-
}
|
|
10614
|
-
`,
|
|
10615
|
-
} }), eventTypes.length === 0 ? (jsx("div", { style: { maxWidth: "600px", margin: "0 auto", padding: "24px" }, children: jsxs("div", { style: {
|
|
10573
|
+
return (jsxs(Fragment, { children: [eventTypes.length === 0 ? (jsx("div", { style: { maxWidth: "600px", margin: "0 auto", padding: "24px" }, children: jsxs("div", { style: {
|
|
10616
10574
|
backgroundColor: "var(--bw-surface-color)",
|
|
10617
10575
|
border: "1px solid var(--bw-border-color)",
|
|
10618
10576
|
borderRadius: "var(--bw-border-radius)",
|
|
@@ -10723,45 +10681,45 @@ function EventTypeSelection({ eventTypes, onEventTypeSelect, isLoading = false,
|
|
|
10723
10681
|
handleShowDetails(eventType);
|
|
10724
10682
|
}, children: eventType.highlights && eventType.highlights.length > 0 ? (
|
|
10725
10683
|
// Show highlights as list
|
|
10684
|
+
// Uses em-based sizing so it scales with font size
|
|
10685
|
+
// Fixed 5 rows * 1.5em line-height = 7.5em total
|
|
10726
10686
|
jsx("div", { className: "event-type-highlights", style: {
|
|
10727
10687
|
margin: "10px 0",
|
|
10728
|
-
|
|
10729
|
-
fontSize: "clamp(0.
|
|
10688
|
+
height: "7.5em", // Fixed height in em units
|
|
10689
|
+
fontSize: "clamp(0.9rem, 2vw, 15px)",
|
|
10730
10690
|
}, children: jsx("ul", { style: {
|
|
10731
10691
|
listStyle: "none",
|
|
10732
10692
|
padding: 0,
|
|
10733
10693
|
margin: 0,
|
|
10734
|
-
display: "
|
|
10735
|
-
|
|
10736
|
-
|
|
10737
|
-
|
|
10738
|
-
maxHeight: "128px",
|
|
10694
|
+
display: "grid",
|
|
10695
|
+
// 5 rows of exactly 1.5em each (lineHeight)
|
|
10696
|
+
gridTemplateRows: "repeat(5, 1.5em)",
|
|
10697
|
+
gap: 0,
|
|
10739
10698
|
overflow: "hidden",
|
|
10740
10699
|
}, children: eventType.highlights
|
|
10741
10700
|
.filter((highlight) => highlight.trim())
|
|
10742
10701
|
.slice(0, 5)
|
|
10743
10702
|
.map((highlight, index) => (jsxs("li", { style: {
|
|
10744
10703
|
display: "flex",
|
|
10745
|
-
alignItems: "
|
|
10746
|
-
gap: "
|
|
10704
|
+
alignItems: "center",
|
|
10705
|
+
gap: "0.5em",
|
|
10747
10706
|
fontFamily: "var(--bw-font-family)",
|
|
10748
|
-
lineHeight: 1.
|
|
10707
|
+
lineHeight: 1.5,
|
|
10708
|
+
height: "1.5em",
|
|
10749
10709
|
color: "var(--bw-text-muted)",
|
|
10750
|
-
|
|
10751
|
-
|
|
10752
|
-
}, children: [jsx("div", { style: { marginTop: "4px", flexShrink: 0 }, children: jsx(IconCheck, { size: 16, color: "var(--bw-success-color)" }) }), jsx("span", { style: {
|
|
10753
|
-
textOverflow: "ellipsis",
|
|
10754
|
-
overflow: "hidden",
|
|
10710
|
+
overflow: "hidden",
|
|
10711
|
+
}, children: [jsx("div", { style: { flexShrink: 0, display: "flex", alignItems: "center" }, children: jsx(IconCheck, { size: 14, color: "var(--bw-success-color)" }) }), jsx("span", { style: {
|
|
10755
10712
|
whiteSpace: "nowrap",
|
|
10713
|
+
overflow: "hidden",
|
|
10714
|
+
textOverflow: "ellipsis",
|
|
10756
10715
|
flex: 1,
|
|
10757
10716
|
}, children: highlight.trim() })] }, index))) }) })) : eventType.description ? (jsx("div", { className: "event-type-desc", style: {
|
|
10758
10717
|
color: "var(--bw-text-muted)",
|
|
10759
|
-
fontSize: "clamp(0.
|
|
10760
|
-
lineHeight: 1.
|
|
10718
|
+
fontSize: "clamp(0.9rem, 2vw, 15px)",
|
|
10719
|
+
lineHeight: 1.5,
|
|
10761
10720
|
fontFamily: "var(--bw-font-family)",
|
|
10762
10721
|
margin: "10px 0",
|
|
10763
|
-
|
|
10764
|
-
maxHeight: "128px",
|
|
10722
|
+
height: "7.5em", // Same height as highlights
|
|
10765
10723
|
overflow: "hidden",
|
|
10766
10724
|
textAlign: "left",
|
|
10767
10725
|
}, children: jsx("div", { className: "event-type-markdown", style: {
|
|
@@ -10772,15 +10730,8 @@ function EventTypeSelection({ eventTypes, onEventTypeSelect, isLoading = false,
|
|
|
10772
10730
|
}, children: Markdown({
|
|
10773
10731
|
children: preprocessMarkdown(eventType.description),
|
|
10774
10732
|
}) }) })) : (jsx("div", { className: "event-type-desc", style: {
|
|
10775
|
-
color: "var(--bw-text-muted)",
|
|
10776
|
-
fontSize: "clamp(0.95rem, 2vw, 16px)",
|
|
10777
|
-
lineHeight: 1.625,
|
|
10778
|
-
fontFamily: "var(--bw-font-family)",
|
|
10779
10733
|
margin: "10px 0",
|
|
10780
|
-
|
|
10781
|
-
maxHeight: "128px",
|
|
10782
|
-
overflow: "hidden",
|
|
10783
|
-
textAlign: "left",
|
|
10734
|
+
height: "7.5em", // Same height as highlights
|
|
10784
10735
|
}, children: "\u00A0" })) })] }), jsxs("div", { children: [jsxs("div", { children: [jsx("div", { className: "event-type-price", style: {
|
|
10785
10736
|
fontWeight: 700,
|
|
10786
10737
|
color: "var(--bw-text-color)",
|
|
@@ -11171,7 +11122,7 @@ function EventInstanceSelection({ eventInstances, selectedEventType, onEventInst
|
|
|
11171
11122
|
fontFamily: "var(--bw-font-family)",
|
|
11172
11123
|
}, children: "Keine verf\u00FCgbaren Termine" }), jsx("p", { style: { color: "var(--bw-text-muted)", fontFamily: "var(--bw-font-family)" }, children: "F\u00FCr diesen Event-Typ sind derzeit keine Termine verf\u00FCgbar." })] }) }) }));
|
|
11173
11124
|
}
|
|
11174
|
-
return (jsx(Sidebar, { isOpen: isOpen, onClose: handleClose, title: `${selectedEventType?.name}`, footer: footerNav, children: jsx("div", { style: { padding: "
|
|
11125
|
+
return (jsx(Sidebar, { isOpen: isOpen, onClose: handleClose, title: `${selectedEventType?.name}`, footer: footerNav, children: jsx("div", { style: { padding: "20px 10px" }, children: jsx("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: monthYearGroups.map(({ key, label, events, minPrice, year }, idx) => {
|
|
11175
11126
|
const monthPriceDisplayInfo = getMonthPriceDisplayInfo(minPrice);
|
|
11176
11127
|
return (jsxs(Fragment$1, { children: [idx > 0 && monthYearGroups[idx - 1].year !== year && (jsx("div", { style: { height: "1px", backgroundColor: "var(--bw-border-color)", margin: "4px 0" } })), jsx(Accordion, { title: label, priceInfo: jsx("div", { style: {
|
|
11177
11128
|
fontSize: "16px",
|
|
@@ -11199,7 +11150,7 @@ function EventInstanceSelection({ eventInstances, selectedEventType, onEventInst
|
|
|
11199
11150
|
border: "1px solid var(--bw-border-color)",
|
|
11200
11151
|
backgroundColor: "var(--bw-surface-color)",
|
|
11201
11152
|
borderRadius: "var(--bw-border-radius)",
|
|
11202
|
-
padding: "16px
|
|
11153
|
+
padding: "16px 10px",
|
|
11203
11154
|
transition: "all 0.2s ease",
|
|
11204
11155
|
fontFamily: "var(--bw-font-family)",
|
|
11205
11156
|
opacity: isDisabled ? 0.3 : 1,
|
|
@@ -11261,6 +11212,8 @@ function EventInstanceSelection({ eventInstances, selectedEventType, onEventInst
|
|
|
11261
11212
|
marginLeft: "6px",
|
|
11262
11213
|
backgroundColor: "rgba(0, 0, 0, 0.05)",
|
|
11263
11214
|
whiteSpace: "nowrap",
|
|
11215
|
+
padding: "2px 6px",
|
|
11216
|
+
borderRadius: "var(--bw-border-radius-small)",
|
|
11264
11217
|
}, children: [event.durationDays, " Tag", event.durationDays > 1 ? "e" : ""] })] }), jsx("div", { style: {
|
|
11265
11218
|
textAlign: "right",
|
|
11266
11219
|
display: "flex",
|
|
@@ -11826,6 +11779,7 @@ const checkboxContainerStyles = {
|
|
|
11826
11779
|
position: "absolute",
|
|
11827
11780
|
top: "12px",
|
|
11828
11781
|
right: "12px",
|
|
11782
|
+
zIndex: 1,
|
|
11829
11783
|
};
|
|
11830
11784
|
const checkboxInnerStyles = {
|
|
11831
11785
|
width: "24px",
|
|
@@ -11878,7 +11832,7 @@ const descriptionStyles = {
|
|
|
11878
11832
|
margin: "0 0 10px 0",
|
|
11879
11833
|
lineHeight: 1.4,
|
|
11880
11834
|
display: "-webkit-box",
|
|
11881
|
-
WebkitLineClamp:
|
|
11835
|
+
WebkitLineClamp: 5,
|
|
11882
11836
|
WebkitBoxOrient: "vertical",
|
|
11883
11837
|
overflow: "hidden",
|
|
11884
11838
|
fontFamily: "var(--bw-font-family)",
|
|
@@ -11992,7 +11946,7 @@ function UpsellsStep({ upsells, selectedUpsells, participantCount, isLoading, is
|
|
|
11992
11946
|
const selectedTotal = calculateTotal();
|
|
11993
11947
|
const selectedCount = selectedUpsells.length;
|
|
11994
11948
|
const footerContent = (jsxs(Fragment, { children: [jsx("button", { type: "button", onClick: onBack, style: mergeStyles(buttonStyles.secondary, buttonStyles.fullWidth), children: "\u2190 Zur\u00FCck" }), jsx("button", { type: "button", onClick: onContinue, style: mergeStyles(buttonStyles.primary, buttonStyles.fullWidth), children: selectedCount === 0 ? "Weiter ohne Extras" : `Weiter` })] }));
|
|
11995
|
-
return (jsx(Sidebar, { isOpen: isOpen, onClose: onClose, title: "Extras hinzuf\u00FCgen", footer: footerContent, children: jsxs("div", { style: { display: "flex", flexDirection: "column", height: "100%", padding: "
|
|
11949
|
+
return (jsx(Sidebar, { isOpen: isOpen, onClose: onClose, title: "Extras hinzuf\u00FCgen", footer: footerContent, children: jsxs("div", { style: { display: "flex", flexDirection: "column", height: "100%", padding: "16px 16px" }, children: [isLoading && (jsxs("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: "12px", padding: "40px 20px", ...textStyles.muted }, children: [spinner(), jsx("span", { children: "Lade verf\u00FCgbare Extras..." })] })), !isLoading && upsells.length === 0 && (jsx("div", { style: { textAlign: "center", padding: "40px 20px", ...textStyles.muted }, children: jsx("p", { children: "Keine Extras f\u00FCr diese Buchung verf\u00FCgbar." }) })), !isLoading && upsells.length > 0 && (jsx("div", { style: { display: "flex", flexDirection: "column", gap: "12px", flex: 1, overflowY: "auto", paddingBottom: "16px" }, children: upsells.map((upsell) => (jsx(UpsellCard, { upsell: upsell, isSelected: isSelected(upsell.id), participantCount: participantCount, onSelect: () => selectUpsell(upsell.id) }, upsell.id))) })), selectedCount > 0 && (jsxs("div", { style: { display: "flex", justifyContent: "space-between", alignItems: "center", marginTop: "16px", paddingBottom: "16px", paddingTop: "16px", borderTop: "1px solid var(--bw-border-color)", fontSize: "14px" }, children: [jsxs("span", { style: textStyles.muted, children: [selectedCount, " ", selectedCount === 1 ? "Extra" : "Extras", " ausgew\u00E4hlt"] }), jsxs("span", { style: { fontWeight: 600, color: "var(--bw-highlight-color)", fontFamily: "var(--bw-font-family)" }, children: ["+", formatCurrency(selectedTotal)] })] }))] }) }));
|
|
11996
11950
|
}
|
|
11997
11951
|
|
|
11998
11952
|
// Main widget component
|
|
@@ -12116,15 +12070,12 @@ function UniversalBookingWidget({ config: baseConfig }) {
|
|
|
12116
12070
|
setShouldRenderBookingForm(true);
|
|
12117
12071
|
}
|
|
12118
12072
|
}, [currentStep, shouldRenderInstanceSelection, shouldRenderBookingForm]);
|
|
12119
|
-
// Promo dialog: show
|
|
12073
|
+
// Promo dialog: show promo once per session when enabled
|
|
12120
12074
|
useEffect(() => {
|
|
12121
|
-
|
|
12122
|
-
const month = now.getMonth();
|
|
12123
|
-
const isHolidaySeason = month === 11 || month === 0;
|
|
12124
|
-
if (!isHolidaySeason) {
|
|
12075
|
+
if (!config.promo?.enabled) {
|
|
12125
12076
|
return;
|
|
12126
12077
|
}
|
|
12127
|
-
const promoId = "
|
|
12078
|
+
const promoId = config.promo.discountCode || "default";
|
|
12128
12079
|
const storageKey = `bigz-promo-${promoId}-shown`;
|
|
12129
12080
|
const globalFlagKey = `__bigzPromoShown_${promoId}`;
|
|
12130
12081
|
const alreadyShown = localStorage.getItem(storageKey) === "true";
|
|
@@ -12134,19 +12085,19 @@ function UniversalBookingWidget({ config: baseConfig }) {
|
|
|
12134
12085
|
}
|
|
12135
12086
|
window[globalFlagKey] = true;
|
|
12136
12087
|
const timer = setTimeout(() => {
|
|
12137
|
-
|
|
12138
|
-
setShowPromoDialog(true);
|
|
12139
|
-
}
|
|
12088
|
+
setShowPromoDialog(true);
|
|
12140
12089
|
}, 1000);
|
|
12141
12090
|
return () => clearTimeout(timer);
|
|
12142
|
-
}, []);
|
|
12091
|
+
}, [config.promo?.enabled, config.promo?.discountCode]);
|
|
12143
12092
|
const handlePromoDialogClose = () => {
|
|
12144
12093
|
setShowPromoDialog(false);
|
|
12145
|
-
|
|
12094
|
+
const promoId = config.promo?.discountCode || "default";
|
|
12095
|
+
localStorage.setItem(`bigz-promo-${promoId}-shown`, "true");
|
|
12146
12096
|
};
|
|
12147
12097
|
const handlePromoCtaClick = () => {
|
|
12148
12098
|
setShowPromoDialog(false);
|
|
12149
|
-
|
|
12099
|
+
const promoId = config.promo?.discountCode || "default";
|
|
12100
|
+
localStorage.setItem(`bigz-promo-${promoId}-shown`, "true");
|
|
12150
12101
|
if (widgetContainerRef) {
|
|
12151
12102
|
widgetContainerRef.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
12152
12103
|
}
|
|
@@ -12765,7 +12716,7 @@ function styleInject(css, ref) {
|
|
|
12765
12716
|
}
|
|
12766
12717
|
}
|
|
12767
12718
|
|
|
12768
|
-
var css_248z = ".booking-widget-container{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;color:var(--bw-text-color,#1e293b);direction:ltr;display:block;font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);isolation:isolate;line-height:1.5;position:relative;text-align:left}.booking-widget-container *,.booking-widget-container :after,.booking-widget-container :before{box-sizing:border-box;margin:0;padding:0}.booking-widget-container input,.booking-widget-container select,.booking-widget-container textarea{font-family:inherit;font-size:inherit;line-height:inherit}.booking-widget-container button{background:none;border:none;cursor:pointer;font-family:inherit;font-size:inherit}.booking-widget-container a{color:inherit;text-decoration:none}.booking-widget-container img{display:block;height:auto;max-width:100%;vertical-align:middle}.booking-widget-container ol,.booking-widget-container ul{list-style:none}.booking-widget-container h1,.booking-widget-container h2,.booking-widget-container h3,.booking-widget-container h4,.booking-widget-container h5,.booking-widget-container h6{font-size:inherit;font-weight:inherit}#booking-widget-portal{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--bw-text-color,#1e293b);direction:ltr;font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);isolation:isolate;line-height:1.5;text-align:left}#booking-widget-portal *,#booking-widget-portal :after,#booking-widget-portal :before{box-sizing:border-box}#booking-widget-portal-root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--bw-text-color,#1e293b);font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);line-height:1.5}:root{--bw-highlight-color:#00b1aa;--bw-highlight-color-rgb:0,177,170;--bw-background-color:#f8fdfe;--bw-surface-color:#fff;--bw-text-color:#0e7490;--bw-text-muted:rgba(14,116,144,.7);--bw-border-color:#bae6fd;--bw-success-color:#38bdf8;--bw-warning-color:#fbbf24;--bw-error-color:#f43f5e;--bw-border-radius:18px;--bw-border-radius-small:calc(var(--bw-border-radius)*0.8);--bw-spacing:16px;--bw-spacing-large:24px;--bw-font-family:\"Inter\",system-ui,sans-serif;--bw-font-size:14px;--bw-font-size-large:18px;--bw-font-size-small:12px;--bw-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--bw-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--bw-highlight-muted:rgba(0,177,170,.1);--bw-highlight-subtle:rgba(0,177,170,.05);--bw-text-subtle:rgba(14,116,144,.4)}.bw-flex{display:flex}.bw-inline-flex{display:inline-flex}.bw-flex-col{flex-direction:column}.bw-flex-row{flex-direction:row}.bw-flex-wrap{flex-wrap:wrap}.bw-flex-1{flex:1 1 0%}.bw-shrink-0{flex-shrink:0}.bw-items-start{align-items:flex-start}.bw-items-center{align-items:center}.bw-items-end{align-items:flex-end}.bw-justify-start{justify-content:flex-start}.bw-justify-center{justify-content:center}.bw-justify-end{justify-content:flex-end}.bw-justify-between{justify-content:space-between}.bw-grid{display:grid}.bw-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.bw-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.bw-auto-rows-fr{grid-auto-rows:minmax(0,1fr)}.bw-gap-0{gap:0}.bw-gap-0\\.5{gap:2px}.bw-gap-1{gap:4px}.bw-gap-1\\.5{gap:6px}.bw-gap-2{gap:8px}.bw-gap-2\\.5{gap:10px}.bw-gap-3{gap:12px}.bw-gap-4{gap:16px}.bw-gap-5{gap:20px}.bw-gap-6{gap:24px}.bw-w-full{width:100%}.bw-w-auto{width:auto}.bw-w-fit{width:-moz-fit-content;width:fit-content}.bw-h-full{height:100%}.bw-h-auto{height:auto}.bw-min-h-0{min-height:0}.bw-p-0{padding:0}.bw-p-1{padding:4px}.bw-p-2{padding:8px}.bw-p-3{padding:12px}.bw-p-4{padding:16px}.bw-p-5{padding:20px}.bw-p-6{padding:24px}.bw-px-1{padding-left:4px;padding-right:4px}.bw-px-2{padding-left:8px;padding-right:8px}.bw-px-2\\.5{padding-left:10px;padding-right:10px}.bw-px-3{padding-left:12px;padding-right:12px}.bw-px-4{padding-left:16px;padding-right:16px}.bw-px-5{padding-left:20px;padding-right:20px}.bw-px-6{padding-left:24px;padding-right:24px}.bw-px-7{padding-left:28px;padding-right:28px}.bw-px-8{padding-left:32px;padding-right:32px}.bw-py-0\\.5{padding-bottom:2px;padding-top:2px}.bw-py-1{padding-bottom:4px;padding-top:4px}.bw-py-1\\.5{padding-bottom:6px;padding-top:6px}.bw-py-2{padding-bottom:8px;padding-top:8px}.bw-py-2\\.5{padding-bottom:10px;padding-top:10px}.bw-py-3{padding-bottom:12px;padding-top:12px}.bw-py-3\\.5{padding-bottom:14px;padding-top:14px}.bw-py-4{padding-bottom:16px;padding-top:16px}.bw-pt-1{padding-top:4px}.bw-pt-3{padding-top:12px}.bw-pb-1{padding-bottom:4px}.bw-pb-4{padding-bottom:16px}.bw-pb-5{padding-bottom:20px}.bw-pb-8{padding-bottom:32px}.bw-m-0{margin:0}.bw-m-auto{margin:auto}.bw-mx-auto{margin-left:auto;margin-right:auto}.bw-my-1{margin-bottom:4px;margin-top:4px}.bw-my-2{margin-bottom:8px;margin-top:8px}.bw-my-2\\.5{margin-bottom:10px;margin-top:10px}.bw-mt-0\\.5{margin-top:2px}.bw-mt-1{margin-top:4px}.bw-mt-2{margin-top:8px}.bw-mt-2\\.5{margin-top:10px}.bw-mt-3{margin-top:12px}.bw-mt-4{margin-top:16px}.bw-mt-6{margin-top:24px}.bw-mt-8{margin-top:32px}.bw-mb-0\\.5{margin-bottom:2px}.bw-mb-1{margin-bottom:4px}.bw-mb-1\\.5{margin-bottom:6px}.bw-mb-2{margin-bottom:8px}.bw-mb-2\\.5{margin-bottom:10px}.bw-mb-3{margin-bottom:12px}.bw-mb-4{margin-bottom:16px}.bw-mb-5{margin-bottom:20px}.bw-mb-6{margin-bottom:24px}.bw-ml-auto{margin-left:auto}.bw-ml-1\\.5{margin-left:6px}.bw-ml-2{margin-left:8px}.bw-ml-4{margin-left:16px}.bw-mr-auto{margin-right:auto}.-bw-mt-5{margin-top:-20px}.-bw-mt-6{margin-top:-24px}.bw-text-xs{font-size:12px}.bw-text-sm{font-size:14px}.bw-text-base{font-size:16px}.bw-text-lg{font-size:18px}.bw-text-xl{font-size:20px}.bw-text-2xl{font-size:24px}.bw-text-3xl{font-size:30px}.bw-font-normal{font-weight:400}.bw-font-medium{font-weight:500}.bw-font-semibold{font-weight:600}.bw-font-bold{font-weight:700}.bw-font-extrabold{font-weight:800}.bw-font-sans{font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif)}.bw-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.bw-text-left{text-align:left}.bw-text-center{text-align:center}.bw-text-right{text-align:right}.bw-leading-none{line-height:1}.bw-leading-tight{line-height:1.25}.bw-leading-snug{line-height:1.375}.bw-leading-normal{line-height:1.5}.bw-leading-relaxed{line-height:1.625}.bw-uppercase{text-transform:uppercase}.bw-lowercase{text-transform:lowercase}.bw-capitalize{text-transform:capitalize}.bw-whitespace-nowrap{white-space:nowrap}.bw-whitespace-pre-wrap{white-space:pre-wrap}.bw-break-words{overflow-wrap:break-word}.bw-truncate{overflow:hidden;white-space:nowrap}.bw-text-ellipsis,.bw-truncate{text-overflow:ellipsis}.bw-overflow-hidden{overflow:hidden}.bw-text-primary{color:var(--bw-text-color)}.bw-text-muted{color:var(--bw-text-muted)}.bw-text-highlight{color:var(--bw-highlight-color)}.bw-text-success{color:var(--bw-success-color)}.bw-text-warning{color:var(--bw-warning-color)}.bw-text-error{color:var(--bw-error-color)}.bw-text-white{color:#fff}.bw-text-surface{color:var(--bw-surface-color)}.bw-bg-transparent{background-color:transparent}.bw-bg-surface{background-color:var(--bw-surface-color)}.bw-bg-background{background-color:var(--bw-background-color)}.bw-bg-highlight{background-color:var(--bw-highlight-color)}.bw-bg-success{background-color:var(--bw-success-color)}.bw-bg-warning{background-color:var(--bw-warning-color)}.bw-bg-error{background-color:var(--bw-error-color)}.bw-bg-white{background-color:#fff}.bw-bg-border{background-color:var(--bw-border-color)}.bw-border{border-style:solid;border-width:1px}.bw-border-0{border-width:0}.bw-border-2{border-style:solid;border-width:2px}.bw-border-t{border-top-style:solid;border-top-width:1px}.bw-border-t-2{border-top-style:solid;border-top-width:2px}.bw-border-t-4{border-top-style:solid;border-top-width:4px}.bw-border-b{border-bottom-style:solid;border-bottom-width:1px}.bw-border-l{border-left-style:solid;border-left-width:1px}.bw-border-solid{border-style:solid}.bw-border-color{border-color:var(--bw-border-color)}.bw-border-highlight{border-color:var(--bw-highlight-color)}.bw-border-error{border-color:var(--bw-error-color)}.bw-border-success{border-color:var(--bw-success-color)}.bw-rounded{border-radius:var(--bw-border-radius)}.bw-rounded-sm{border-radius:var(--bw-border-radius-small)}.bw-rounded-lg{border-radius:calc(var(--bw-border-radius)*1.2)}.bw-rounded-full{border-radius:9999px}.bw-rounded-none{border-radius:0}.bw-shadow-md{box-shadow:var(--bw-shadow-md)}.bw-shadow-lg{box-shadow:var(--bw-shadow-lg)}.bw-shadow-none{box-shadow:none}.bw-relative{position:relative}.bw-absolute{position:absolute}.bw-fixed{position:fixed}.bw-inset-0{bottom:0;left:0;right:0;top:0}.bw-top-0{top:0}.bw-top-4{top:16px}.bw-right-0{right:0}.bw-right-3{right:12px}.bw-right-4{right:16px}.bw-bottom-0{bottom:0}.bw-bottom-3{bottom:12px}.bw-left-0{left:0}.bw-left-3{left:12px}.bw-left-4{left:16px}.bw-z-1{z-index:1}.bw-z-2{z-index:2}.bw-z-10{z-index:10}.bw-z-50{z-index:50}.bw-hidden{display:none}.bw-block{display:block}.bw-inline{display:inline}.bw-invisible{visibility:hidden}.bw-visible{visibility:visible}.bw-opacity-0{opacity:0}.bw-opacity-30{opacity:.3}.bw-opacity-50{opacity:.5}.bw-opacity-60{opacity:.6}.bw-opacity-70{opacity:.7}.bw-opacity-80{opacity:.8}.bw-opacity-100{opacity:1}.bw-cursor-pointer{cursor:pointer}.bw-cursor-not-allowed{cursor:not-allowed}.bw-cursor-default{cursor:default}.bw-translate-x-0{transform:translateX(0)}.bw-translate-y-0{transform:translateY(0)}.-bw-translate-x-1\\/2{transform:translateX(-50%)}.-bw-translate-y-1\\/2{transform:translateY(-50%)}.bw-transition-all{transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.bw-transition-colors{transition-duration:.2s;transition-property:color,background-color,border-color;transition-timing-function:cubic-bezier(.4,0,.2,1)}.bw-transition-opacity{transition-duration:.2s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.bw-transition-transform{transition-duration:.2s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.bw-duration-150{transition-duration:.15s}.bw-duration-200{transition-duration:.2s}.bw-duration-250{transition-duration:.25s}.bw-duration-300{transition-duration:.3s}.bw-duration-400{transition-duration:.4s}.bw-overflow-auto{overflow:auto}.bw-overflow-scroll{overflow:scroll}.bw-overflow-x-auto{overflow-x:auto}.bw-overflow-y-auto{overflow-y:auto}.bw-pointer-events-none{pointer-events:none}.bw-pointer-events-auto{pointer-events:auto}.bw-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.bw-select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.bw-backdrop-blur-sm{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.bw-backdrop-blur{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.bw-object-cover{-o-object-fit:cover;object-fit:cover}.bw-object-contain{-o-object-fit:contain;object-fit:contain}.bw-grayscale{filter:grayscale(100%)}.bw-grayscale-40{filter:grayscale(40%)}.bw-will-change-transform{will-change:transform}.bw-sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.bw-max-w-full{max-width:100%}.bw-max-w-500{max-width:500px}.bw-max-w-600{max-width:600px}.bw-min-h-120{min-height:120px}.bw-min-h-300{min-height:300px}.bw-min-h-400{min-height:400px}.print-only{display:none}.print-hidden{display:block}.print-booking-header{display:none}.print-section-title{display:none}.print-detail-grid{display:grid;gap:16px;grid-template-columns:1fr 1fr}.print-status-badge,.print-status-paid{display:none}.print-payment-summary{display:none}.print-payment-row{display:flex;justify-content:space-between}.print-footer{display:none}@media print{.print-only{display:block}.print-hidden{display:none!important}.print-booking-header{border-bottom:2px solid #000;display:block;margin-bottom:24px;padding-bottom:16px;text-align:center}.print-booking-header h1{font-size:24px;margin:0 0 8px}.print-booking-header .subtitle{color:#666;font-size:14px}.print-booking-card{border:1px solid #ccc;border-radius:8px;margin-bottom:16px;padding:16px;page-break-inside:avoid}.print-section-title{border-bottom:1px solid #ddd;display:block;font-size:16px;font-weight:600;margin-bottom:12px;padding-bottom:8px}.print-detail-grid{display:grid;gap:12px;grid-template-columns:1fr 1fr}.print-detail-item{margin-bottom:8px}.print-detail-label{color:#666;font-size:12px;margin-bottom:4px}.print-detail-value{font-size:14px;font-weight:600}.print-status-badge{border-radius:9999px;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.print-status-paid{background-color:#dcfce7;color:#166534;display:inline-block}.print-participant{align-items:center;background-color:#f9fafb;border-radius:4px;display:flex;justify-content:space-between;margin-bottom:8px;padding:8px}.print-participant-name{font-weight:600}.print-participant-age{color:#666;font-size:12px}.print-payment-summary{display:block}.print-payment-row{border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:4px 0}.print-payment-row:last-child{border-bottom:none;font-weight:600}.print-footer{border-top:1px solid #ddd;color:#666;display:block;font-size:12px;margin-top:24px;padding-top:16px;text-align:center}.print-footer p{margin:4px 0}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes promo-wave{0%,to{transform:translateX(0) translateY(0)}25%{transform:translateX(5px) translateY(-3px)}50%{transform:translateX(0) translateY(-5px)}75%{transform:translateX(-5px) translateY(-3px)}}@keyframes promo-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes promo-shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes promo-sparkle{0%,to{opacity:.3;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}@keyframes promo-snow{0%{opacity:0;transform:translateY(-10px) rotate(0deg)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(350px) rotate(1turn)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@keyframes slide-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-spin{animation:spin 1s linear infinite}.animate-shimmer{animation:shimmer 2s infinite}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-fade-in{animation:fade-in .2s ease-out}.animate-slide-in-up{animation:slide-in-up .3s ease-out}.animate-scale-in{animation:scale-in .2s ease-out}.bw-btn{align-items:center;border:none;border-radius:var(--bw-border-radius);cursor:pointer;display:inline-flex;font-family:var(--bw-font-family);font-weight:600;gap:8px;justify-content:center;transition:all .2s ease;white-space:nowrap}.bw-btn:focus{box-shadow:0 0 0 2px var(--bw-highlight-color),0 0 0 4px rgba(var(--bw-highlight-color-rgb),.2);outline:none}.bw-btn:disabled{cursor:not-allowed;opacity:.5}.bw-btn-primary{background-color:var(--bw-highlight-color);border:none;color:#fff}.bw-btn-primary:hover:not(:disabled){filter:brightness(1.1)}.bw-btn-primary:active:not(:disabled){filter:brightness(.95)}.bw-btn-secondary{background-color:var(--bw-surface-color);border:1px solid var(--bw-border-color);color:var(--bw-text-color)}.bw-btn-secondary:hover:not(:disabled){filter:brightness(.95)}.bw-btn-ghost{background-color:transparent;border:none;color:var(--bw-text-color)}.bw-btn-ghost:hover:not(:disabled){background-color:rgba(var(--bw-highlight-color-rgb),.1)}.bw-btn-outline{background-color:transparent;border:1px solid var(--bw-highlight-color);color:var(--bw-highlight-color)}.bw-btn-outline:hover:not(:disabled){background-color:var(--bw-highlight-color);color:#fff}.bw-btn-sm{font-size:14px;padding:8px 16px}.bw-btn-md{font-size:16px;padding:12px 24px}.bw-btn-lg{font-size:18px;padding:16px 32px}.bw-btn-full{width:100%}.bw-card{background-color:var(--bw-surface-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);overflow:hidden}.bw-card-interactive{cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.bw-card-interactive:hover{box-shadow:var(--bw-shadow-lg);transform:translateY(-2px)}.bw-card-header{background-color:var(--bw-background-color);border-bottom:1px solid var(--bw-border-color);padding:16px}.bw-card-body{padding:16px}.bw-card-footer{border-top:1px solid var(--bw-border-color);padding:16px}.bw-input{background-color:var(--bw-background-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);color:var(--bw-text-color);font-family:var(--bw-font-family);font-size:16px;outline:none;padding:12px;transition:border-color .2s ease,box-shadow .2s ease;width:100%}.bw-input:focus{border-color:var(--bw-highlight-color);box-shadow:0 0 0 2px rgba(var(--bw-highlight-color-rgb),.2)}.bw-input-error{border-color:var(--bw-error-color)}.bw-input-error:focus{box-shadow:0 0 0 2px rgba(var(--bw-error-color),.2)}.bw-label{color:var(--bw-text-muted);display:block;font-family:var(--bw-font-family);font-size:16px;font-weight:500;margin-bottom:8px}.bw-form-group{display:flex;flex-direction:column;gap:4px}.bw-form-error{color:var(--bw-error-color);margin-top:4px}.bw-form-error,.bw-form-helper{font-family:var(--bw-font-family);font-size:14px}.bw-form-helper{color:var(--bw-text-muted)}.bw-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--bw-surface-color);background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath fill='%236b7280' d='m2 4 4 4 4-4'/%3E%3C/svg%3E\");background-position:right 12px center;background-repeat:no-repeat;cursor:pointer}.bw-select,.bw-textarea{border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);color:var(--bw-text-color);font-family:var(--bw-font-family);font-size:16px;padding:12px;width:100%}.bw-textarea{background-color:var(--bw-background-color);min-height:80px;outline:none;resize:vertical;transition:border-color .2s ease}.bw-textarea:focus{border-color:var(--bw-highlight-color)}.bw-checkbox{accent-color:var(--bw-highlight-color);-moz-appearance:checkbox;appearance:checkbox;-webkit-appearance:checkbox;border:1px solid var(--bw-border-color);cursor:pointer;height:20px;width:20px}.bw-badge{align-items:center;border-radius:var(--bw-border-radius-small);display:inline-flex;font-family:var(--bw-font-family);font-size:12px;font-weight:600;padding:2px 8px;white-space:nowrap}.bw-badge-success{background-color:var(--bw-success-color);color:#fff}.bw-badge-error{background-color:var(--bw-error-color);color:#fff}.bw-badge-warning{background-color:var(--bw-warning-color);color:#fff}.bw-badge-highlight{background-color:var(--bw-highlight-color);color:#fff}.bw-badge-muted{background-color:var(--bw-border-color);color:var(--bw-text-muted)}.bw-modal-backdrop{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);background-color:rgba(0,0,0,.5);inset:0;position:fixed}.bw-modal-content{background-color:var(--bw-surface-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);font-family:var(--bw-font-family);max-height:90vh;max-width:100%;overflow:auto;position:relative}.bw-modal-header{align-items:center;border-bottom:1px solid var(--bw-border-color);display:flex;justify-content:space-between;padding:16px}.bw-modal-body{padding:16px}.bw-modal-footer{border-top:1px solid var(--bw-border-color);display:flex;gap:12px;justify-content:flex-end;padding:16px}.bw-modal-close{align-items:center;background-color:var(--bw-surface-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);color:var(--bw-text-muted);cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;transition:background-color .2s ease;width:32px}.bw-modal-close:hover{background-color:var(--bw-border-color)}.bw-sidebar{background-color:var(--bw-surface-color);border-left:1px solid var(--bw-border-color);bottom:0;box-shadow:var(--bw-shadow-lg);display:flex;flex-direction:column;overflow:hidden;position:fixed;right:0;top:0;transition:transform .25s cubic-bezier(.4,0,.2,1);will-change:transform}.bw-sidebar-header{align-items:center;background-color:var(--bw-background-color);border-bottom:1px solid var(--bw-border-color);display:flex;flex-shrink:0;justify-content:space-between;padding:16px}.bw-sidebar-title{color:var(--bw-text-color);font-family:var(--bw-font-family);font-size:18px;font-weight:600;margin:0}.bw-sidebar-content{background-color:var(--bw-background-color);flex:1;overflow:auto}@media (max-width:768px){.sidebar-mobile{border-radius:0!important;max-width:100%!important;width:100%!important}}.bw-accordion{background-color:var(--bw-surface-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);overflow:hidden}.bw-accordion-trigger{align-items:center;background-color:transparent;border:none;cursor:pointer;display:flex;font-family:var(--bw-font-family);justify-content:space-between;padding:16px;text-align:left;transition:background-color .2s ease;width:100%}.bw-accordion-trigger:hover{background-color:rgba(var(--bw-highlight-color-rgb),.1)}.bw-accordion-content{background-color:var(--bw-background-color);border-top:1px solid var(--bw-border-color);padding:0 16px 16px}.bw-accordion-chevron{font-size:16px;margin-left:16px;transition:transform .2s ease}.bw-accordion-trigger[data-state=open] .bw-accordion-chevron{transform:rotate(180deg)}.bw-spinner{align-items:center;display:flex;justify-content:center}.bw-spinner-icon{animation:spin 1s linear infinite;border-radius:50%}.bw-skeleton{background-color:var(--bw-border-color);border-radius:var(--bw-border-radius-small)}.bw-skeleton,.skeleton-shimmer{overflow:hidden;position:relative}.skeleton-shimmer:after{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3),transparent);content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.bw-empty-state{flex-direction:column;min-height:300px;padding:24px;text-align:center}.bw-empty-state,.bw-empty-state-icon{align-items:center;display:flex;justify-content:center}.bw-empty-state-icon{background-color:var(--bw-highlight-color);border-radius:50%;color:#fff;font-size:32px;height:64px;margin-bottom:16px;opacity:.8;width:64px}.bw-empty-state-title{color:var(--bw-text-color);font-family:var(--bw-font-family);font-size:20px;font-weight:600;margin:0 0 8px}.bw-empty-state-message{color:var(--bw-text-muted);font-family:var(--bw-font-family);font-size:16px;line-height:1.6;margin:0 0 24px;max-width:400px}.bw-section-header{border-bottom:2px solid var(--bw-highlight-color);color:var(--bw-highlight-color);font-size:18px;font-weight:600;margin-bottom:12px;padding-bottom:4px}.bw-alert,.bw-section-header{font-family:var(--bw-font-family)}.bw-alert{border-radius:var(--bw-border-radius);padding:16px}.bw-alert-success{background-color:rgba(var(--bw-success-color),.15);border:1px solid rgba(var(--bw-success-color),.4);color:var(--bw-success-color)}.bw-alert-error{background-color:rgba(var(--bw-error-color),.1);border:1px solid var(--bw-error-color);color:var(--bw-error-color)}.bw-alert-warning{background-color:rgba(var(--bw-warning-color),.15);border:1px solid rgba(var(--bw-warning-color),.4);color:var(--bw-warning-color)}.custom-scrollbar::-webkit-scrollbar{height:6px;width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{background:var(--bw-border-color);border-radius:3px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--bw-text-muted)}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:var(--bw-text-color);font-weight:600;margin-bottom:.5em}.markdown-content h1{font-size:1.5em}.markdown-content h2{font-size:1.25em}.markdown-content h3{font-size:1.1em}.markdown-content p{line-height:1.6;margin-bottom:1em}.markdown-content ol,.markdown-content ul{margin-bottom:1em;padding-left:1.5em}.markdown-content ul{list-style-type:disc}.markdown-content ol{list-style-type:decimal}.markdown-content li{margin-bottom:.25em}.markdown-content a{color:var(--bw-highlight-color);text-decoration:underline}.markdown-content a:hover{opacity:.8}.markdown-content strong{font-weight:600}.markdown-content em{font-style:italic}.markdown-content code{background:var(--bw-highlight-subtle);border-radius:4px;font-family:monospace;font-size:.9em;padding:.125em .25em}.markdown-content blockquote{border-left:3px solid var(--bw-highlight-color);color:var(--bw-text-muted);margin:1em 0;padding-left:1em}.next-events-skeleton{overflow:hidden;position:relative}.next-events-skeleton:after{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.4),transparent);content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}.stripe-element{background:var(--bw-surface-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius-small);padding:12px;transition:border-color .2s ease,box-shadow .2s ease}.stripe-element:focus-within{border-color:var(--bw-highlight-color);box-shadow:0 0 0 3px var(--bw-highlight-muted)}.backdrop{backdrop-filter:blur(4px);background-color:rgba(0,0,0,.5);inset:0;position:fixed}.bw-event-card{background-color:var(--bw-surface-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);box-shadow:var(--bw-shadow-md);font-family:var(--bw-font-family);overflow:hidden;position:relative;transition:all .3s ease}.bw-event-card.bw-available{cursor:pointer;opacity:1}.bw-event-card.bw-available:hover{box-shadow:var(--bw-shadow-lg)}.bw-event-card.bw-unavailable{cursor:not-allowed;opacity:.6}.bw-event-card-image{height:300px;position:relative;width:100%}.bw-event-card-content{display:flex;flex-direction:column;height:400px;justify-content:space-between;padding:12px 18px}.bw-instance-card{background-color:var(--bw-surface-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);font-family:var(--bw-font-family);padding:16px 20px;position:relative;transition:all .2s ease}.bw-instance-card.bw-available{cursor:pointer}.bw-instance-card.bw-available:hover{background-color:rgba(var(--bw-highlight-color-rgb),.1);transform:scale(1.02)}.bw-instance-card.bw-unavailable{cursor:not-allowed;filter:grayscale(40%);opacity:.3}.bw-date-box{align-items:center;background-color:var(--bw-background-color);border-top-width:1px;border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius-small);border-top:4px solid var(--bw-border-color);display:flex;font-size:16px;height:40px;justify-content:center;transition:all .2s ease;width:40px}.bw-date-box,.bw-price{color:var(--bw-text-color);font-weight:700}.bw-price{font-family:var(--bw-font-family)}.bw-price-large{font-size:clamp(1.72rem,4vw,32px)}.bw-price-highlight{color:var(--bw-highlight-color)}.bw-loading-overlay{align-items:center;background-color:rgba(15,23,42,.8);border-radius:var(--bw-border-radius);display:flex;inset:0;justify-content:center;position:absolute}.bw-voucher-applied{align-items:center;background-color:var(--bw-surface-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius);display:flex;justify-content:space-between;margin-bottom:8px;padding:10px 12px}.bw-voucher-code{color:var(--bw-text-color);font-family:ui-monospace,monospace;font-weight:600}.bw-voucher-discount{color:var(--bw-success-color);font-size:12px}.bw-promo-backdrop{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);background-color:rgba(0,20,40,.85);inset:0;position:fixed;transition:opacity .3s ease;z-index:60}.bw-promo-dialog{left:50%;max-width:440px;position:fixed;top:50%;transform:translate(-50%,-50%);transition:all .3s cubic-bezier(.34,1.56,.64,1);width:92%;z-index:61}.bw-promo-content{border-radius:28px;box-shadow:0 25px 60px -12px rgba(0,0,0,.5),0 0 0 1px hsla(0,0%,100%,.1),inset 0 1px 0 hsla(0,0%,100%,.2);overflow:hidden;position:relative}.bw-promo-close{align-items:center;backdrop-filter:blur(4px);background-color:rgba(0,0,0,.3);border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-size:22px;height:36px;justify-content:center;line-height:1;position:absolute;right:16px;top:16px;transition:all .15s ease;width:36px;z-index:10}.bw-promo-close:hover{background-color:rgba(0,0,0,.5);transform:scale(1.1)}@media (max-width:600px){.event-type-list{gap:12px!important;padding:8px!important}.event-type-card{flex:1 1 100%!important;max-width:100%!important;padding:0!important}.event-type-img{height:160px!important}.event-type-title{font-size:1.1rem!important}.event-type-desc{font-size:.8rem!important;max-height:100px!important;min-height:100px!important}.event-type-content{padding:16px 24px!important}}.bw-upsells-step{display:flex;flex-direction:column;height:100%;padding:0 16px}.bw-upsells-description{color:var(--bw-text-muted);font-size:14px;margin-bottom:20px;text-align:center}.bw-upsells-loading{align-items:center;display:flex;flex-direction:column;gap:12px;justify-content:center}.bw-upsells-empty,.bw-upsells-loading{color:var(--bw-text-muted);padding:40px 20px}.bw-upsells-empty{text-align:center}.bw-upsells-grid{display:flex;flex:1;flex-direction:column;gap:12px;overflow-y:auto;padding-bottom:16px}.bw-upsells-footer{border-top:1px solid var(--bw-border-color);margin-top:auto;padding-top:16px}.bw-upsells-summary{align-items:center;display:flex;font-size:14px;justify-content:space-between;margin-bottom:12px}.bw-upsells-summary-label{color:var(--bw-text-muted)}.bw-upsells-summary-price{color:var(--bw-highlight-color);font-weight:600}.bw-upsells-actions{margin-bottom:12px}.bw-upsells-skip-btn{background-color:var(--bw-highlight-color);border:none;border-radius:var(--bw-border-radius);color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:14px 24px;transition:all .2s ease;width:100%}.bw-upsells-skip-btn:hover{filter:brightness(1.1)}.bw-upsells-back-btn{background-color:transparent;border:none;color:var(--bw-text-muted);cursor:pointer;font-size:14px;padding:10px 16px;transition:color .2s ease;width:100%}.bw-upsells-back-btn:hover{color:var(--bw-text-color)}.bw-upsell-card{background-color:var(--bw-surface-color);border:2px solid var(--bw-border-color);border-radius:var(--bw-border-radius);cursor:pointer;display:flex;flex-direction:column;padding:16px;position:relative;transition:all .2s ease}.bw-upsell-card:hover:not(.bw-upsell-card--disabled){border-color:var(--bw-highlight-color);box-shadow:0 2px 8px rgba(var(--bw-highlight-color-rgb),.15)}.bw-upsell-card--selected{background-color:rgba(var(--bw-highlight-color-rgb),.08);border-color:var(--bw-highlight-color)}.bw-upsell-card--disabled{cursor:not-allowed;opacity:.6}.bw-upsell-checkbox{position:absolute;right:12px;top:12px}.bw-upsell-checkbox-inner{align-items:center;background-color:var(--bw-surface-color);border:2px solid var(--bw-border-color);border-radius:6px;display:flex;height:24px;justify-content:center;transition:all .2s ease;width:24px}.bw-upsell-checkbox-inner--checked{background-color:var(--bw-highlight-color);border-color:var(--bw-highlight-color);color:#fff}.bw-upsell-checkbox-inner svg{height:14px;width:14px}.bw-upsell-image-container{background-color:var(--bw-background-color);border-radius:calc(var(--bw-border-radius) - 4px);height:120px;margin-bottom:12px;overflow:hidden;width:100%}.bw-upsell-image{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.bw-upsell-image-placeholder{align-items:center;color:var(--bw-text-muted);display:flex;height:100%;justify-content:center;width:100%}.bw-upsell-image-placeholder svg{height:40px;opacity:.4;width:40px}.bw-upsell-content{flex:1}.bw-upsell-name{color:var(--bw-text-color);font-size:16px;font-weight:600;margin:0 0 6px;padding-right:36px}.bw-upsell-description{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--bw-text-muted);display:-webkit-box;font-size:13px;line-height:1.4;margin:0 0 10px;overflow:hidden}.bw-upsell-items{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.bw-upsell-item{align-items:center;background-color:var(--bw-background-color);border-radius:4px;color:var(--bw-text-muted);display:inline-flex;font-size:12px;gap:4px;padding:4px 8px}.bw-upsell-event-info{align-items:center;background-color:rgba(var(--bw-highlight-color-rgb),.1);border-radius:6px;display:flex;font-size:12px;gap:12px;margin-bottom:10px;padding:8px 10px}.bw-upsell-event-date{color:var(--bw-text-color);font-weight:500}.bw-upsell-event-spots{color:var(--bw-text-muted)}.bw-upsell-price-container{align-items:flex-end;border-top:1px solid var(--bw-border-color);display:flex;flex-direction:column;margin-top:8px;padding-top:8px}.bw-upsell-price-per-person{color:var(--bw-highlight-color);font-size:15px;font-weight:600}.bw-upsell-price-total{color:var(--bw-text-muted);font-size:12px}.bw-upsell-unavailable{align-items:center;background-color:rgba(var(--bw-background-color-rgb),.85);border-radius:var(--bw-border-radius);color:var(--bw-text-muted);display:flex;font-size:13px;inset:0;justify-content:center;padding:16px;position:absolute;text-align:center}.bw-sidebar-footer{background-color:var(--bw-surface-color);border-top:1px solid var(--bw-border-color);display:flex;gap:12px;padding:12px 16px}.bw-footer-btn{align-items:center;border:none;border-radius:var(--bw-border-radius);cursor:pointer;display:inline-flex;flex:1;font-family:var(--bw-font-family);font-size:14px;font-weight:600;gap:6px;justify-content:center;padding:12px 16px;transition:all .2s ease;white-space:nowrap}.bw-footer-btn:disabled{cursor:not-allowed;opacity:.5}.bw-footer-btn-primary{background-color:var(--bw-highlight-color);color:#fff}.bw-footer-btn-primary:hover:not(:disabled){filter:brightness(1.1)}.bw-footer-btn-secondary{background-color:transparent;border:1px solid var(--bw-border-color);color:var(--bw-text-muted)}.bw-footer-btn-secondary:hover:not(:disabled){background-color:var(--bw-background-color);color:var(--bw-text-color)}.bw-participant-upsells{border-top:1px dashed var(--bw-border-color);display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;padding-top:10px}.bw-participant-upsell-label{align-items:center;background-color:var(--bw-background-color);border:1px solid var(--bw-border-color);border-radius:var(--bw-border-radius-small);color:var(--bw-text-muted);cursor:pointer;display:inline-flex;font-family:var(--bw-font-family);font-size:13px;gap:6px;padding:6px 10px;transition:all .2s ease}.bw-participant-upsell-label:hover{border-color:var(--bw-highlight-color)}.bw-participant-upsell-label--selected{background-color:rgba(var(--bw-highlight-color-rgb),.1);border-color:var(--bw-highlight-color);color:var(--bw-highlight-color)}.bw-participant-upsell-checkbox{accent-color:var(--bw-highlight-color);cursor:pointer;height:16px;width:16px}.bw-participant-upsell-name{font-weight:500}.bw-participant-upsell-price{font-size:12px;opacity:.8}";
|
|
12719
|
+
var css_248z = ".booking-widget-container{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;color:var(--bw-text-color,#1e293b);direction:ltr;display:block;font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);isolation:isolate;line-height:1.5;position:relative;text-align:left}.booking-widget-container *,.booking-widget-container :after,.booking-widget-container :before{box-sizing:border-box;margin:0;padding:0}.booking-widget-container input,.booking-widget-container select,.booking-widget-container textarea{font-family:inherit;font-size:inherit;line-height:inherit}.booking-widget-container button{background:none;border:none;cursor:pointer;font-family:inherit;font-size:inherit}.booking-widget-container a{color:inherit;text-decoration:none}.booking-widget-container img{display:block;height:auto;max-width:100%;vertical-align:middle}.booking-widget-container ol,.booking-widget-container ul{list-style:none}.booking-widget-container h1,.booking-widget-container h2,.booking-widget-container h3,.booking-widget-container h4,.booking-widget-container h5,.booking-widget-container h6{font-size:inherit;font-weight:inherit}#booking-widget-portal{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--bw-text-color,#1e293b);direction:ltr;font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);isolation:isolate;line-height:1.5;text-align:left}#booking-widget-portal *,#booking-widget-portal :after,#booking-widget-portal :before{box-sizing:border-box}#booking-widget-portal-root{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--bw-text-color,#1e293b);font-family:var(--bw-font-family,system-ui,-apple-system,sans-serif);font-size:var(--bw-font-size,14px);line-height:1.5}:root{--bw-highlight-color:#00b1aa;--bw-highlight-color-rgb:0,177,170;--bw-background-color:#f8fdfe;--bw-surface-color:#fff;--bw-text-color:#0e7490;--bw-text-muted:rgba(14,116,144,.7);--bw-border-color:#bae6fd;--bw-success-color:#38bdf8;--bw-warning-color:#fbbf24;--bw-error-color:#f43f5e;--bw-border-radius:18px;--bw-border-radius-small:calc(var(--bw-border-radius)*0.8);--bw-spacing:16px;--bw-spacing-large:24px;--bw-font-family:\"Inter\",system-ui,sans-serif;--bw-font-size:14px;--bw-font-size-large:18px;--bw-font-size-small:12px;--bw-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);--bw-shadow-lg:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);--bw-highlight-muted:rgba(0,177,170,.1);--bw-highlight-subtle:rgba(0,177,170,.05);--bw-text-subtle:rgba(14,116,144,.4)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes promo-wave{0%,to{transform:translateX(0) translateY(0)}25%{transform:translateX(5px) translateY(-3px)}50%{transform:translateX(0) translateY(-5px)}75%{transform:translateX(-5px) translateY(-3px)}}@keyframes promo-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes promo-shimmer{0%{background-position:-200%}to{background-position:200%}}@keyframes promo-sparkle{0%,to{opacity:.3;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}@keyframes promo-snow{0%{opacity:0;transform:translateY(-10px) rotate(0deg)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(350px) rotate(1turn)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes slide-out-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}@keyframes slide-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-spin{animation:spin 1s linear infinite}.animate-shimmer{animation:shimmer 2s infinite}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-fade-in{animation:fade-in .2s ease-out}.animate-slide-in-up{animation:slide-in-up .3s ease-out}.animate-scale-in{animation:scale-in .2s ease-out}.skeleton-shimmer{overflow:hidden;position:relative}.skeleton-shimmer:after{animation:shimmer 1.5s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3),transparent);content:\"\";height:100%;left:0;position:absolute;top:0;width:100%}@media (max-width:768px){.sidebar-mobile{border-radius:0!important;max-width:100%!important;width:100%!important}}@media (max-width:600px){.event-type-list{gap:12px!important;padding:8px!important}.event-type-card{flex:1 1 100%!important;max-width:100%!important;padding:0!important}.event-type-img{height:160px!important}.event-type-title{font-size:1.1rem!important}.event-type-desc{font-size:.8rem!important;max-height:100px!important;min-height:100px!important}.event-type-content{padding:16px 24px!important}}.event-type-markdown{overflow:visible!important}.event-type-markdown p{color:var(--bw-text-muted);font-family:var(--bw-font-family);line-height:1.6;margin:0 0 8px}.event-type-markdown p:last-child{margin-bottom:0}.event-type-markdown h2{font-size:18px!important;font-weight:700!important;margin:12px 0 6px!important}.event-type-markdown h2,.event-type-markdown h3{color:var(--bw-text-color)!important;line-height:1.3!important}.event-type-markdown h3{font-size:16px!important;font-weight:600!important;margin:10px 0 4px!important}.event-type-markdown strong{color:var(--bw-text-color);font-weight:600}.event-type-markdown em{font-style:italic}.event-type-markdown u{text-decoration:underline}.event-type-markdown ul{list-style:none!important;margin:6px 0!important;padding:0 0 0 24px!important;position:relative!important}.event-type-markdown ul li{color:var(--bw-text-muted)!important;font-family:var(--bw-font-family)!important;margin-bottom:2px!important;padding-left:0!important;position:relative!important}.event-type-markdown ul li:before{color:var(--bw-text-color)!important;content:\"•\"!important;font-weight:700!important;left:-16px!important;position:absolute!important;top:0!important}.event-type-markdown ol{counter-reset:list-counter!important;list-style:none!important;margin:6px 0!important;padding:0 0 0 24px!important;position:relative!important}.event-type-markdown ol li{color:var(--bw-text-muted)!important;counter-increment:list-counter!important;font-family:var(--bw-font-family)!important;margin-bottom:2px!important;padding-left:0!important;position:relative!important}.event-type-markdown ol li:before{color:var(--bw-text-color)!important;content:counter(list-counter) \".\"!important;font-weight:700!important;left:-20px!important;position:absolute!important;top:0!important}.event-type-markdown blockquote{border-left:2px solid var(--bw-border-color);color:var(--bw-text-muted);font-style:italic;margin:4px 0;padding-left:12px}.event-type-markdown a{color:var(--bw-highlight-color);text-decoration:underline}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:var(--bw-text-color);font-weight:600;margin-bottom:.5em}.markdown-content h1{font-size:1.5em}.markdown-content h2{font-size:1.25em}.markdown-content h3{font-size:1.1em}.markdown-content p{line-height:1.6;margin-bottom:1em}.markdown-content ol,.markdown-content ul{margin-bottom:1em;padding-left:1.5em}.markdown-content ul{list-style-type:disc}.markdown-content ol{list-style-type:decimal}.markdown-content li{margin-bottom:.25em}.markdown-content a{color:var(--bw-highlight-color);text-decoration:underline}.markdown-content a:hover{opacity:.8}.markdown-content strong{font-weight:600}.markdown-content em{font-style:italic}.markdown-content code{background:var(--bw-highlight-subtle);border-radius:4px;font-family:monospace;font-size:.9em;padding:.125em .25em}.markdown-content blockquote{border-left:3px solid var(--bw-highlight-color);color:var(--bw-text-muted);margin:1em 0;padding-left:1em}.print-only{display:none}.print-hidden{display:block}@media print{.print-only{display:block}.print-hidden{display:none!important}.print-booking-header{border-bottom:2px solid #000;display:block;margin-bottom:24px;padding-bottom:16px;text-align:center}.print-booking-header h1{font-size:24px;margin:0 0 8px}.print-booking-header .subtitle{color:#666;font-size:14px}.print-booking-card{border:1px solid #ccc;border-radius:8px;margin-bottom:16px;padding:16px;page-break-inside:avoid}.print-section-title{border-bottom:1px solid #ddd;display:block;font-size:16px;font-weight:600;margin-bottom:12px;padding-bottom:8px}.print-detail-grid{display:grid;gap:12px;grid-template-columns:1fr 1fr}.print-detail-item{margin-bottom:8px}.print-detail-label{color:#666;font-size:12px;margin-bottom:4px}.print-detail-value{font-size:14px;font-weight:600}.print-status-badge{border-radius:9999px;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.print-status-paid{background-color:#dcfce7;color:#166534;display:inline-block}.print-participant{align-items:center;background-color:#f9fafb;border-radius:4px;display:flex;justify-content:space-between;margin-bottom:8px;padding:8px}.print-participant-name{font-weight:600}.print-participant-age{color:#666;font-size:12px}.print-payment-summary{display:block}.print-payment-row{border-bottom:1px solid #eee;display:flex;justify-content:space-between;padding:4px 0}.print-payment-row:last-child{border-bottom:none;font-weight:600}.print-footer{border-top:1px solid #ddd;color:#666;display:block;font-size:12px;margin-top:24px;padding-top:16px;text-align:center}.print-footer p{margin:4px 0}}";
|
|
12769
12720
|
styleInject(css_248z);
|
|
12770
12721
|
|
|
12771
12722
|
// Export init function for vanilla JS usage
|