@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.cjs
CHANGED
|
@@ -5036,7 +5036,7 @@ function Accordion({ title, priceInfo, children, isOpen, onToggle, }) {
|
|
|
5036
5036
|
transition: "background-color 0.2s ease",
|
|
5037
5037
|
}, children: [jsxRuntime.jsx("span", { style: {
|
|
5038
5038
|
fontWeight: 700,
|
|
5039
|
-
fontSize: "
|
|
5039
|
+
fontSize: "18px",
|
|
5040
5040
|
color: "var(--bw-text-color)",
|
|
5041
5041
|
}, children: title }), priceInfo && (jsxRuntime.jsx("div", { style: {
|
|
5042
5042
|
marginLeft: "auto",
|
|
@@ -9158,11 +9158,11 @@ const sectionStyles = {
|
|
|
9158
9158
|
fontSize: "16px",
|
|
9159
9159
|
fontWeight: 600,
|
|
9160
9160
|
color: "var(--bw-highlight-color)",
|
|
9161
|
+
margin: 0,
|
|
9161
9162
|
marginBottom: "12px",
|
|
9162
9163
|
fontFamily: "var(--bw-font-family)",
|
|
9163
9164
|
borderBottom: "2px solid var(--bw-highlight-color)",
|
|
9164
9165
|
paddingBottom: "4px",
|
|
9165
|
-
margin: 0,
|
|
9166
9166
|
}};
|
|
9167
9167
|
// ============================================
|
|
9168
9168
|
// TEXT
|
|
@@ -9241,6 +9241,8 @@ const errorTextStyles = formStyles.error;
|
|
|
9241
9241
|
function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError, onBackToEventInstances, onBackToEventTypes, selectedEventType, selectedEventInstance, isOpen, onClose, systemConfig, selectedUpsells = [], upsells = [], }) {
|
|
9242
9242
|
const [appliedVouchers, setAppliedVouchers] = React__default.useState([]);
|
|
9243
9243
|
const paymentSectionRef = React__default.useRef(null);
|
|
9244
|
+
// Payment option: "deposit" or "full" - only relevant when deposit is available
|
|
9245
|
+
const [paymentOption, setPaymentOption] = React__default.useState("deposit");
|
|
9244
9246
|
// Per-participant upsell selections: participantIndex -> array of upsell package IDs
|
|
9245
9247
|
const [participantUpsells, setParticipantUpsells] = React__default.useState({});
|
|
9246
9248
|
const form = useForm({
|
|
@@ -9256,11 +9258,11 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9256
9258
|
},
|
|
9257
9259
|
});
|
|
9258
9260
|
const watchedParticipants = form.watch("participants");
|
|
9261
|
+
const watchedCustomerName = form.watch("customerName");
|
|
9259
9262
|
const watchedCustomerEmail = form.watch("customerEmail");
|
|
9260
9263
|
const customerNameError = form.formState.errors.customerName;
|
|
9261
9264
|
const customerEmailError = form.formState.errors.customerEmail;
|
|
9262
9265
|
const watchedAcceptTerms = form.watch("acceptTerms");
|
|
9263
|
-
const { isValid: isFormValid } = form.formState;
|
|
9264
9266
|
// Initialize participant upsells from selectedUpsells when component mounts or participants change
|
|
9265
9267
|
React__default.useEffect(() => {
|
|
9266
9268
|
if (selectedUpsells.length > 0 && upsells.length > 0) {
|
|
@@ -9344,7 +9346,10 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9344
9346
|
const depositAmount = calculateDeposit();
|
|
9345
9347
|
// Deposit stays fixed unless the discounted total is lower than the deposit
|
|
9346
9348
|
// (discount applies to total price, not to the deposit itself)
|
|
9347
|
-
const
|
|
9349
|
+
const hasDepositOption = depositAmount > 0 && depositAmount < totalAmount;
|
|
9350
|
+
const paymentAmount = hasDepositOption && paymentOption === "deposit"
|
|
9351
|
+
? Math.min(depositAmount, totalAmount)
|
|
9352
|
+
: totalAmount;
|
|
9348
9353
|
// Convert per-participant upsells to UpsellSelection[] format for API
|
|
9349
9354
|
// Includes participantIndices to track which participants selected each upsell
|
|
9350
9355
|
const aggregatedUpsellSelections = React__default.useCallback(() => {
|
|
@@ -9377,9 +9382,18 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9377
9382
|
setAppliedVouchers((prev) => prev.filter((v) => v.code !== code));
|
|
9378
9383
|
}, []);
|
|
9379
9384
|
const isReadyForPayment = () => {
|
|
9380
|
-
const
|
|
9381
|
-
const
|
|
9382
|
-
|
|
9385
|
+
const participantsWithNames = watchedParticipants.filter((p) => p.name.trim()).length;
|
|
9386
|
+
const totalParticipantRows = watchedParticipants.length;
|
|
9387
|
+
const allParticipantsHaveNames = participantsWithNames === totalParticipantRows;
|
|
9388
|
+
const participantsWithinLimit = participantsWithNames <= (eventDetails?.availableSpots || 0);
|
|
9389
|
+
const hasValidCustomerName = watchedCustomerName && watchedCustomerName.trim().length >= 2;
|
|
9390
|
+
const hasValidCustomerEmail = watchedCustomerEmail && watchedCustomerEmail.trim().length > 0 && !customerEmailError;
|
|
9391
|
+
return allParticipantsHaveNames &&
|
|
9392
|
+
participantsWithinLimit &&
|
|
9393
|
+
participantsWithNames > 0 &&
|
|
9394
|
+
hasValidCustomerName &&
|
|
9395
|
+
hasValidCustomerEmail &&
|
|
9396
|
+
watchedAcceptTerms;
|
|
9383
9397
|
};
|
|
9384
9398
|
React__default.useEffect(() => {
|
|
9385
9399
|
if (appliedVouchers.length > 0) {
|
|
@@ -9496,7 +9510,7 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9496
9510
|
gridTemplateColumns: "repeat(auto-fit, minmax(200px, 1fr))",
|
|
9497
9511
|
gap: "12px",
|
|
9498
9512
|
fontSize: "14px",
|
|
9499
|
-
}, children: [jsxRuntime.jsxs("div", { style: {
|
|
9513
|
+
}, children: [jsxRuntime.jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [jsxRuntime.jsxs("span", { style: {
|
|
9500
9514
|
color: "var(--bw-text-muted)",
|
|
9501
9515
|
fontFamily: "var(--bw-font-family)",
|
|
9502
9516
|
display: "flex",
|
|
@@ -9542,7 +9556,7 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9542
9556
|
justifyContent: "space-between",
|
|
9543
9557
|
alignItems: "center",
|
|
9544
9558
|
marginBottom: "16px",
|
|
9545
|
-
}, children: jsxRuntime.jsx("h2", { style: { ...sectionHeaderStyles,
|
|
9559
|
+
}, children: jsxRuntime.jsx("h2", { style: { ...sectionHeaderStyles, marginBottom: 0 }, children: "Teilnehmer" }) }), jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: [watchedParticipants.map((_, index) => (jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", gap: "8px" }, children: [jsxRuntime.jsxs("div", { style: { display: "flex", gap: "12px", alignItems: "center" }, children: [jsxRuntime.jsxs("div", { style: { flex: 1 }, children: [jsxRuntime.jsx("label", { htmlFor: `participant-name-${index}`, style: labelStyles, children: "Name *" }), jsxRuntime.jsx("input", { id: `participant-name-${index}`, ...form.register(`participants.${index}.name`), type: "text", style: inputStyles, placeholder: "Teilnehmername" }), form.formState.errors.participants?.[index]?.name && (jsxRuntime.jsx("p", { style: errorTextStyles, children: form.formState.errors.participants[index]?.name?.message }))] }), jsxRuntime.jsxs("div", { style: { width: "80px" }, children: [jsxRuntime.jsx("label", { htmlFor: `participant-age-${index}`, style: labelStyles, children: "Alter" }), jsxRuntime.jsx("input", { id: `participant-age-${index}`, ...form.register(`participants.${index}.age`, {
|
|
9546
9560
|
setValueAs: (value) => {
|
|
9547
9561
|
if (value === "" || value === null || value === undefined) {
|
|
9548
9562
|
return undefined;
|
|
@@ -9621,7 +9635,57 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9621
9635
|
}, children: ["Gutschein (", giftCard.code, "):"] }), jsxRuntime.jsxs("span", { style: { color: "var(--bw-success-color)", fontFamily: "var(--bw-font-family)" }, children: ["-", formatCurrency(giftCard.balanceToUse || giftCard.discountAmount)] })] }, giftCard.code)))] })), jsxRuntime.jsxs("div", { style: {
|
|
9622
9636
|
borderTop: "1px solid var(--bw-border-color)",
|
|
9623
9637
|
paddingTop: "12px",
|
|
9624
|
-
}, children: [
|
|
9638
|
+
}, children: [hasDepositOption && (jsxRuntime.jsxs("div", { style: {
|
|
9639
|
+
display: "flex",
|
|
9640
|
+
gap: "8px",
|
|
9641
|
+
marginBottom: "16px",
|
|
9642
|
+
}, children: [jsxRuntime.jsxs("button", { type: "button", onClick: () => setPaymentOption("deposit"), style: {
|
|
9643
|
+
flex: 1,
|
|
9644
|
+
padding: "12px",
|
|
9645
|
+
borderRadius: "var(--bw-border-radius)",
|
|
9646
|
+
border: paymentOption === "deposit"
|
|
9647
|
+
? "2px solid var(--bw-highlight-color)"
|
|
9648
|
+
: "1px solid var(--bw-border-color)",
|
|
9649
|
+
backgroundColor: paymentOption === "deposit"
|
|
9650
|
+
? "rgba(var(--bw-highlight-color-rgb, 0, 177, 170), 0.1)"
|
|
9651
|
+
: "var(--bw-surface-color)",
|
|
9652
|
+
cursor: "pointer",
|
|
9653
|
+
fontFamily: "var(--bw-font-family)",
|
|
9654
|
+
transition: "all 0.2s ease",
|
|
9655
|
+
}, children: [jsxRuntime.jsx("div", { style: {
|
|
9656
|
+
fontSize: "13px",
|
|
9657
|
+
color: "var(--bw-text-muted)",
|
|
9658
|
+
marginBottom: "4px",
|
|
9659
|
+
}, children: "Anzahlung" }), jsxRuntime.jsx("div", { style: {
|
|
9660
|
+
fontSize: "18px",
|
|
9661
|
+
fontWeight: 700,
|
|
9662
|
+
color: paymentOption === "deposit"
|
|
9663
|
+
? "var(--bw-highlight-color)"
|
|
9664
|
+
: "var(--bw-text-color)",
|
|
9665
|
+
}, children: formatCurrency(depositAmount) })] }), jsxRuntime.jsxs("button", { type: "button", onClick: () => setPaymentOption("full"), style: {
|
|
9666
|
+
flex: 1,
|
|
9667
|
+
padding: "12px",
|
|
9668
|
+
borderRadius: "var(--bw-border-radius)",
|
|
9669
|
+
border: paymentOption === "full"
|
|
9670
|
+
? "2px solid var(--bw-highlight-color)"
|
|
9671
|
+
: "1px solid var(--bw-border-color)",
|
|
9672
|
+
backgroundColor: paymentOption === "full"
|
|
9673
|
+
? "rgba(var(--bw-highlight-color-rgb, 0, 177, 170), 0.1)"
|
|
9674
|
+
: "var(--bw-surface-color)",
|
|
9675
|
+
cursor: "pointer",
|
|
9676
|
+
fontFamily: "var(--bw-font-family)",
|
|
9677
|
+
transition: "all 0.2s ease",
|
|
9678
|
+
}, children: [jsxRuntime.jsx("div", { style: {
|
|
9679
|
+
fontSize: "13px",
|
|
9680
|
+
color: "var(--bw-text-muted)",
|
|
9681
|
+
marginBottom: "4px",
|
|
9682
|
+
}, children: "Vollst\u00E4ndig bezahlen" }), jsxRuntime.jsx("div", { style: {
|
|
9683
|
+
fontSize: "18px",
|
|
9684
|
+
fontWeight: 700,
|
|
9685
|
+
color: paymentOption === "full"
|
|
9686
|
+
? "var(--bw-highlight-color)"
|
|
9687
|
+
: "var(--bw-text-color)",
|
|
9688
|
+
}, children: formatCurrency(totalAmount) })] })] })), hasDepositOption && paymentOption === "deposit" && (jsxRuntime.jsxs("div", { style: {
|
|
9625
9689
|
display: "flex",
|
|
9626
9690
|
justifyContent: "space-between",
|
|
9627
9691
|
alignItems: "center",
|
|
@@ -9637,31 +9701,48 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9637
9701
|
alignItems: "center",
|
|
9638
9702
|
fontSize: "18px",
|
|
9639
9703
|
fontWeight: 600,
|
|
9640
|
-
}, children: [jsxRuntime.jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children:
|
|
9704
|
+
}, children: [jsxRuntime.jsx("span", { style: { color: "var(--bw-text-color)", fontFamily: "var(--bw-font-family)" }, children: hasDepositOption && paymentOption === "deposit"
|
|
9705
|
+
? "Heute zu zahlen (Anzahlung):"
|
|
9706
|
+
: "Gesamtbetrag:" }), jsxRuntime.jsx("span", { style: {
|
|
9641
9707
|
color: "var(--bw-highlight-color)",
|
|
9642
9708
|
fontFamily: "var(--bw-font-family)",
|
|
9643
9709
|
fontWeight: 700,
|
|
9644
|
-
}, children: formatCurrency(paymentAmount) })] })
|
|
9710
|
+
}, children: formatCurrency(paymentAmount) })] }), hasDepositOption && paymentOption === "deposit" && (jsxRuntime.jsxs("div", { style: {
|
|
9711
|
+
fontSize: "12px",
|
|
9712
|
+
color: "var(--bw-text-muted)",
|
|
9713
|
+
fontFamily: "var(--bw-font-family)",
|
|
9714
|
+
marginTop: "8px",
|
|
9715
|
+
textAlign: "right",
|
|
9716
|
+
}, children: ["Restbetrag (", formatCurrency(totalAmount - depositAmount), ") vor Ort f\u00E4llig."] }))] })] })] }), jsxRuntime.jsx("div", { ref: paymentSectionRef, children: stripePromise &&
|
|
9645
9717
|
(() => {
|
|
9646
9718
|
if (!isReadyForPayment()) {
|
|
9647
|
-
const
|
|
9719
|
+
const participantsWithNames = watchedParticipants.filter((p) => p.name.trim()).length;
|
|
9720
|
+
const totalParticipantRows = watchedParticipants.length;
|
|
9721
|
+
const participantsWithoutNames = totalParticipantRows - participantsWithNames;
|
|
9648
9722
|
const missing = [];
|
|
9649
|
-
if (
|
|
9650
|
-
missing.push("einen Teilnehmer");
|
|
9723
|
+
if (participantsWithNames === 0) {
|
|
9724
|
+
missing.push("mindestens einen Teilnehmer mit Namen");
|
|
9651
9725
|
}
|
|
9652
|
-
if (
|
|
9726
|
+
else if (participantsWithoutNames > 0) {
|
|
9727
|
+
missing.push(`Namen für alle ${totalParticipantRows} Teilnehmer`);
|
|
9728
|
+
}
|
|
9729
|
+
if (participantsWithNames > (eventDetails?.availableSpots || 0)) {
|
|
9653
9730
|
missing.push(`die Anzahl der Teilnehmer auf ${eventDetails?.availableSpots || 0} zu reduzieren`);
|
|
9654
9731
|
}
|
|
9655
|
-
|
|
9656
|
-
|
|
9732
|
+
// Check for empty or invalid name (min 2 chars required)
|
|
9733
|
+
if (!watchedCustomerName || watchedCustomerName.trim().length < 2 || customerNameError) {
|
|
9734
|
+
missing.push("einen gültigen Kontaktnamen");
|
|
9657
9735
|
}
|
|
9658
|
-
|
|
9736
|
+
// Check for empty or invalid email
|
|
9737
|
+
if (!watchedCustomerEmail || watchedCustomerEmail.trim().length === 0 || customerEmailError) {
|
|
9659
9738
|
missing.push("eine gültige E-Mail-Adresse");
|
|
9660
9739
|
}
|
|
9661
9740
|
if (!watchedAcceptTerms) {
|
|
9662
|
-
missing.push("die Akzeptanz der
|
|
9741
|
+
missing.push("die Akzeptanz der AGBs");
|
|
9663
9742
|
}
|
|
9664
|
-
const message =
|
|
9743
|
+
const message = missing.length > 0
|
|
9744
|
+
? `Wir benötigen mindestens ${missing.join(", ")} um fortzufahren.`
|
|
9745
|
+
: "Bitte fülle alle Pflichtfelder aus, um fortzufahren.";
|
|
9665
9746
|
return (jsxRuntime.jsx("div", { style: {
|
|
9666
9747
|
...cardStyles,
|
|
9667
9748
|
borderColor: "var(--bw-warning-color)",
|
|
@@ -9670,7 +9751,7 @@ function BookingForm({ config, eventDetails, stripePromise, onSuccess, onError,
|
|
|
9670
9751
|
textAlign: "center",
|
|
9671
9752
|
}, children: message }));
|
|
9672
9753
|
}
|
|
9673
|
-
return (jsxRuntime.jsxs("div", { style: cardStyles, children: [jsxRuntime.jsx("h2", { style: { ...sectionHeaderStyles
|
|
9754
|
+
return (jsxRuntime.jsxs("div", { style: cardStyles, children: [jsxRuntime.jsx("h2", { style: { ...sectionHeaderStyles }, children: "Zahlung" }), jsxRuntime.jsx(PaymentForm, { config: config, eventDetails: eventDetails, formData: form.getValues(), totalAmount: paymentAmount, discountCode: appliedDiscountCode
|
|
9674
9755
|
? {
|
|
9675
9756
|
id: appliedDiscountCode.id,
|
|
9676
9757
|
code: appliedDiscountCode.code,
|
|
@@ -10509,130 +10590,7 @@ function EventTypeSelection({ eventTypes, onEventTypeSelect, isLoading = false,
|
|
|
10509
10590
|
if (isLoading) {
|
|
10510
10591
|
return jsxRuntime.jsx(EventCardSkeleton, { count: skeletonCount });
|
|
10511
10592
|
}
|
|
10512
|
-
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("style", {
|
|
10513
|
-
__html: `
|
|
10514
|
-
@media (max-width: 600px) {
|
|
10515
|
-
.event-type-list {
|
|
10516
|
-
padding: 8px !important;
|
|
10517
|
-
gap: 12px !important;
|
|
10518
|
-
}
|
|
10519
|
-
.event-type-card {
|
|
10520
|
-
max-width: 100% !important;
|
|
10521
|
-
flex: 1 1 100% !important;
|
|
10522
|
-
padding: 0 !important;
|
|
10523
|
-
}
|
|
10524
|
-
.event-type-img {
|
|
10525
|
-
height: 160px !important;
|
|
10526
|
-
}
|
|
10527
|
-
.event-type-title {
|
|
10528
|
-
font-size: 1.1rem !important;
|
|
10529
|
-
}
|
|
10530
|
-
.event-type-desc {
|
|
10531
|
-
font-size: 0.8rem !important;
|
|
10532
|
-
min-height: 100px !important;
|
|
10533
|
-
max-height: 100px !important;
|
|
10534
|
-
}
|
|
10535
|
-
.event-type-content {
|
|
10536
|
-
padding: 16px 24px !important;
|
|
10537
|
-
}
|
|
10538
|
-
}
|
|
10539
|
-
|
|
10540
|
-
/* Markdown content styling for event type cards */
|
|
10541
|
-
.event-type-markdown {
|
|
10542
|
-
overflow: visible !important;
|
|
10543
|
-
}
|
|
10544
|
-
.event-type-markdown p {
|
|
10545
|
-
margin: 0 0 8px 0;
|
|
10546
|
-
color: var(--bw-text-muted);
|
|
10547
|
-
font-family: var(--bw-font-family);
|
|
10548
|
-
line-height: 1.6;
|
|
10549
|
-
}
|
|
10550
|
-
.event-type-markdown p:last-child {
|
|
10551
|
-
margin-bottom: 0;
|
|
10552
|
-
}
|
|
10553
|
-
.event-type-markdown h2 {
|
|
10554
|
-
font-size: 18px !important;
|
|
10555
|
-
font-weight: 700 !important;
|
|
10556
|
-
color: var(--bw-text-color) !important;
|
|
10557
|
-
margin: 12px 0 6px 0 !important;
|
|
10558
|
-
line-height: 1.3 !important;
|
|
10559
|
-
}
|
|
10560
|
-
.event-type-markdown h3 {
|
|
10561
|
-
font-size: 16px !important;
|
|
10562
|
-
font-weight: 600 !important;
|
|
10563
|
-
color: var(--bw-text-color) !important;
|
|
10564
|
-
margin: 10px 0 4px 0 !important;
|
|
10565
|
-
line-height: 1.3 !important;
|
|
10566
|
-
}
|
|
10567
|
-
.event-type-markdown strong {
|
|
10568
|
-
font-weight: 600;
|
|
10569
|
-
color: var(--bw-text-color);
|
|
10570
|
-
}
|
|
10571
|
-
.event-type-markdown em {
|
|
10572
|
-
font-style: italic;
|
|
10573
|
-
}
|
|
10574
|
-
.event-type-markdown u {
|
|
10575
|
-
text-decoration: underline;
|
|
10576
|
-
}
|
|
10577
|
-
.event-type-markdown ul {
|
|
10578
|
-
margin: 6px 0 !important;
|
|
10579
|
-
padding: 0 !important;
|
|
10580
|
-
padding-left: 24px !important;
|
|
10581
|
-
list-style: none !important;
|
|
10582
|
-
position: relative !important;
|
|
10583
|
-
}
|
|
10584
|
-
.event-type-markdown ul li {
|
|
10585
|
-
margin-bottom: 2px !important;
|
|
10586
|
-
padding-left: 0 !important;
|
|
10587
|
-
position: relative !important;
|
|
10588
|
-
color: var(--bw-text-muted) !important;
|
|
10589
|
-
font-family: var(--bw-font-family) !important;
|
|
10590
|
-
}
|
|
10591
|
-
.event-type-markdown ul li::before {
|
|
10592
|
-
content: "•" !important;
|
|
10593
|
-
color: var(--bw-text-color) !important;
|
|
10594
|
-
position: absolute !important;
|
|
10595
|
-
left: -16px !important;
|
|
10596
|
-
top: 0 !important;
|
|
10597
|
-
font-weight: bold !important;
|
|
10598
|
-
}
|
|
10599
|
-
.event-type-markdown ol {
|
|
10600
|
-
margin: 6px 0 !important;
|
|
10601
|
-
padding: 0 !important;
|
|
10602
|
-
padding-left: 24px !important;
|
|
10603
|
-
counter-reset: list-counter !important;
|
|
10604
|
-
list-style: none !important;
|
|
10605
|
-
position: relative !important;
|
|
10606
|
-
}
|
|
10607
|
-
.event-type-markdown ol li {
|
|
10608
|
-
margin-bottom: 2px !important;
|
|
10609
|
-
padding-left: 0 !important;
|
|
10610
|
-
position: relative !important;
|
|
10611
|
-
counter-increment: list-counter !important;
|
|
10612
|
-
color: var(--bw-text-muted) !important;
|
|
10613
|
-
font-family: var(--bw-font-family) !important;
|
|
10614
|
-
}
|
|
10615
|
-
.event-type-markdown ol li::before {
|
|
10616
|
-
content: counter(list-counter) "." !important;
|
|
10617
|
-
color: var(--bw-text-color) !important;
|
|
10618
|
-
position: absolute !important;
|
|
10619
|
-
left: -20px !important;
|
|
10620
|
-
top: 0 !important;
|
|
10621
|
-
font-weight: bold !important;
|
|
10622
|
-
}
|
|
10623
|
-
.event-type-markdown blockquote {
|
|
10624
|
-
margin: 4px 0;
|
|
10625
|
-
padding-left: 12px;
|
|
10626
|
-
border-left: 2px solid var(--bw-border-color);
|
|
10627
|
-
font-style: italic;
|
|
10628
|
-
color: var(--bw-text-muted);
|
|
10629
|
-
}
|
|
10630
|
-
.event-type-markdown a {
|
|
10631
|
-
color: var(--bw-highlight-color);
|
|
10632
|
-
text-decoration: underline;
|
|
10633
|
-
}
|
|
10634
|
-
`,
|
|
10635
|
-
} }), eventTypes.length === 0 ? (jsxRuntime.jsx("div", { style: { maxWidth: "600px", margin: "0 auto", padding: "24px" }, children: jsxRuntime.jsxs("div", { style: {
|
|
10593
|
+
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [eventTypes.length === 0 ? (jsxRuntime.jsx("div", { style: { maxWidth: "600px", margin: "0 auto", padding: "24px" }, children: jsxRuntime.jsxs("div", { style: {
|
|
10636
10594
|
backgroundColor: "var(--bw-surface-color)",
|
|
10637
10595
|
border: "1px solid var(--bw-border-color)",
|
|
10638
10596
|
borderRadius: "var(--bw-border-radius)",
|
|
@@ -10743,45 +10701,45 @@ function EventTypeSelection({ eventTypes, onEventTypeSelect, isLoading = false,
|
|
|
10743
10701
|
handleShowDetails(eventType);
|
|
10744
10702
|
}, children: eventType.highlights && eventType.highlights.length > 0 ? (
|
|
10745
10703
|
// Show highlights as list
|
|
10704
|
+
// Uses em-based sizing so it scales with font size
|
|
10705
|
+
// Fixed 5 rows * 1.5em line-height = 7.5em total
|
|
10746
10706
|
jsxRuntime.jsx("div", { className: "event-type-highlights", style: {
|
|
10747
10707
|
margin: "10px 0",
|
|
10748
|
-
|
|
10749
|
-
fontSize: "clamp(0.
|
|
10708
|
+
height: "7.5em", // Fixed height in em units
|
|
10709
|
+
fontSize: "clamp(0.9rem, 2vw, 15px)",
|
|
10750
10710
|
}, children: jsxRuntime.jsx("ul", { style: {
|
|
10751
10711
|
listStyle: "none",
|
|
10752
10712
|
padding: 0,
|
|
10753
10713
|
margin: 0,
|
|
10754
|
-
display: "
|
|
10755
|
-
|
|
10756
|
-
|
|
10757
|
-
|
|
10758
|
-
maxHeight: "128px",
|
|
10714
|
+
display: "grid",
|
|
10715
|
+
// 5 rows of exactly 1.5em each (lineHeight)
|
|
10716
|
+
gridTemplateRows: "repeat(5, 1.5em)",
|
|
10717
|
+
gap: 0,
|
|
10759
10718
|
overflow: "hidden",
|
|
10760
10719
|
}, children: eventType.highlights
|
|
10761
10720
|
.filter((highlight) => highlight.trim())
|
|
10762
10721
|
.slice(0, 5)
|
|
10763
10722
|
.map((highlight, index) => (jsxRuntime.jsxs("li", { style: {
|
|
10764
10723
|
display: "flex",
|
|
10765
|
-
alignItems: "
|
|
10766
|
-
gap: "
|
|
10724
|
+
alignItems: "center",
|
|
10725
|
+
gap: "0.5em",
|
|
10767
10726
|
fontFamily: "var(--bw-font-family)",
|
|
10768
|
-
lineHeight: 1.
|
|
10727
|
+
lineHeight: 1.5,
|
|
10728
|
+
height: "1.5em",
|
|
10769
10729
|
color: "var(--bw-text-muted)",
|
|
10770
|
-
|
|
10771
|
-
|
|
10772
|
-
}, children: [jsxRuntime.jsx("div", { style: { marginTop: "4px", flexShrink: 0 }, children: jsxRuntime.jsx(IconCheck, { size: 16, color: "var(--bw-success-color)" }) }), jsxRuntime.jsx("span", { style: {
|
|
10773
|
-
textOverflow: "ellipsis",
|
|
10774
|
-
overflow: "hidden",
|
|
10730
|
+
overflow: "hidden",
|
|
10731
|
+
}, children: [jsxRuntime.jsx("div", { style: { flexShrink: 0, display: "flex", alignItems: "center" }, children: jsxRuntime.jsx(IconCheck, { size: 14, color: "var(--bw-success-color)" }) }), jsxRuntime.jsx("span", { style: {
|
|
10775
10732
|
whiteSpace: "nowrap",
|
|
10733
|
+
overflow: "hidden",
|
|
10734
|
+
textOverflow: "ellipsis",
|
|
10776
10735
|
flex: 1,
|
|
10777
10736
|
}, children: highlight.trim() })] }, index))) }) })) : eventType.description ? (jsxRuntime.jsx("div", { className: "event-type-desc", style: {
|
|
10778
10737
|
color: "var(--bw-text-muted)",
|
|
10779
|
-
fontSize: "clamp(0.
|
|
10780
|
-
lineHeight: 1.
|
|
10738
|
+
fontSize: "clamp(0.9rem, 2vw, 15px)",
|
|
10739
|
+
lineHeight: 1.5,
|
|
10781
10740
|
fontFamily: "var(--bw-font-family)",
|
|
10782
10741
|
margin: "10px 0",
|
|
10783
|
-
|
|
10784
|
-
maxHeight: "128px",
|
|
10742
|
+
height: "7.5em", // Same height as highlights
|
|
10785
10743
|
overflow: "hidden",
|
|
10786
10744
|
textAlign: "left",
|
|
10787
10745
|
}, children: jsxRuntime.jsx("div", { className: "event-type-markdown", style: {
|
|
@@ -10792,15 +10750,8 @@ function EventTypeSelection({ eventTypes, onEventTypeSelect, isLoading = false,
|
|
|
10792
10750
|
}, children: Markdown({
|
|
10793
10751
|
children: preprocessMarkdown(eventType.description),
|
|
10794
10752
|
}) }) })) : (jsxRuntime.jsx("div", { className: "event-type-desc", style: {
|
|
10795
|
-
color: "var(--bw-text-muted)",
|
|
10796
|
-
fontSize: "clamp(0.95rem, 2vw, 16px)",
|
|
10797
|
-
lineHeight: 1.625,
|
|
10798
|
-
fontFamily: "var(--bw-font-family)",
|
|
10799
10753
|
margin: "10px 0",
|
|
10800
|
-
|
|
10801
|
-
maxHeight: "128px",
|
|
10802
|
-
overflow: "hidden",
|
|
10803
|
-
textAlign: "left",
|
|
10754
|
+
height: "7.5em", // Same height as highlights
|
|
10804
10755
|
}, children: "\u00A0" })) })] }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx("div", { className: "event-type-price", style: {
|
|
10805
10756
|
fontWeight: 700,
|
|
10806
10757
|
color: "var(--bw-text-color)",
|
|
@@ -11191,7 +11142,7 @@ function EventInstanceSelection({ eventInstances, selectedEventType, onEventInst
|
|
|
11191
11142
|
fontFamily: "var(--bw-font-family)",
|
|
11192
11143
|
}, children: "Keine verf\u00FCgbaren Termine" }), jsxRuntime.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." })] }) }) }));
|
|
11193
11144
|
}
|
|
11194
|
-
return (jsxRuntime.jsx(Sidebar, { isOpen: isOpen, onClose: handleClose, title: `${selectedEventType?.name}`, footer: footerNav, children: jsxRuntime.jsx("div", { style: { padding: "
|
|
11145
|
+
return (jsxRuntime.jsx(Sidebar, { isOpen: isOpen, onClose: handleClose, title: `${selectedEventType?.name}`, footer: footerNav, children: jsxRuntime.jsx("div", { style: { padding: "20px 10px" }, children: jsxRuntime.jsx("div", { style: { display: "flex", flexDirection: "column", gap: "16px" }, children: monthYearGroups.map(({ key, label, events, minPrice, year }, idx) => {
|
|
11195
11146
|
const monthPriceDisplayInfo = getMonthPriceDisplayInfo(minPrice);
|
|
11196
11147
|
return (jsxRuntime.jsxs(React__default.Fragment, { children: [idx > 0 && monthYearGroups[idx - 1].year !== year && (jsxRuntime.jsx("div", { style: { height: "1px", backgroundColor: "var(--bw-border-color)", margin: "4px 0" } })), jsxRuntime.jsx(Accordion, { title: label, priceInfo: jsxRuntime.jsx("div", { style: {
|
|
11197
11148
|
fontSize: "16px",
|
|
@@ -11219,7 +11170,7 @@ function EventInstanceSelection({ eventInstances, selectedEventType, onEventInst
|
|
|
11219
11170
|
border: "1px solid var(--bw-border-color)",
|
|
11220
11171
|
backgroundColor: "var(--bw-surface-color)",
|
|
11221
11172
|
borderRadius: "var(--bw-border-radius)",
|
|
11222
|
-
padding: "16px
|
|
11173
|
+
padding: "16px 10px",
|
|
11223
11174
|
transition: "all 0.2s ease",
|
|
11224
11175
|
fontFamily: "var(--bw-font-family)",
|
|
11225
11176
|
opacity: isDisabled ? 0.3 : 1,
|
|
@@ -11281,6 +11232,8 @@ function EventInstanceSelection({ eventInstances, selectedEventType, onEventInst
|
|
|
11281
11232
|
marginLeft: "6px",
|
|
11282
11233
|
backgroundColor: "rgba(0, 0, 0, 0.05)",
|
|
11283
11234
|
whiteSpace: "nowrap",
|
|
11235
|
+
padding: "2px 6px",
|
|
11236
|
+
borderRadius: "var(--bw-border-radius-small)",
|
|
11284
11237
|
}, children: [event.durationDays, " Tag", event.durationDays > 1 ? "e" : ""] })] }), jsxRuntime.jsx("div", { style: {
|
|
11285
11238
|
textAlign: "right",
|
|
11286
11239
|
display: "flex",
|
|
@@ -11846,6 +11799,7 @@ const checkboxContainerStyles = {
|
|
|
11846
11799
|
position: "absolute",
|
|
11847
11800
|
top: "12px",
|
|
11848
11801
|
right: "12px",
|
|
11802
|
+
zIndex: 1,
|
|
11849
11803
|
};
|
|
11850
11804
|
const checkboxInnerStyles = {
|
|
11851
11805
|
width: "24px",
|
|
@@ -11898,7 +11852,7 @@ const descriptionStyles = {
|
|
|
11898
11852
|
margin: "0 0 10px 0",
|
|
11899
11853
|
lineHeight: 1.4,
|
|
11900
11854
|
display: "-webkit-box",
|
|
11901
|
-
WebkitLineClamp:
|
|
11855
|
+
WebkitLineClamp: 5,
|
|
11902
11856
|
WebkitBoxOrient: "vertical",
|
|
11903
11857
|
overflow: "hidden",
|
|
11904
11858
|
fontFamily: "var(--bw-font-family)",
|
|
@@ -12012,7 +11966,7 @@ function UpsellsStep({ upsells, selectedUpsells, participantCount, isLoading, is
|
|
|
12012
11966
|
const selectedTotal = calculateTotal();
|
|
12013
11967
|
const selectedCount = selectedUpsells.length;
|
|
12014
11968
|
const footerContent = (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("button", { type: "button", onClick: onBack, style: mergeStyles(buttonStyles.secondary, buttonStyles.fullWidth), children: "\u2190 Zur\u00FCck" }), jsxRuntime.jsx("button", { type: "button", onClick: onContinue, style: mergeStyles(buttonStyles.primary, buttonStyles.fullWidth), children: selectedCount === 0 ? "Weiter ohne Extras" : `Weiter` })] }));
|
|
12015
|
-
return (jsxRuntime.jsx(Sidebar, { isOpen: isOpen, onClose: onClose, title: "Extras hinzuf\u00FCgen", footer: footerContent, children: jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", height: "100%", padding: "
|
|
11969
|
+
return (jsxRuntime.jsx(Sidebar, { isOpen: isOpen, onClose: onClose, title: "Extras hinzuf\u00FCgen", footer: footerContent, children: jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", height: "100%", padding: "16px 16px" }, children: [isLoading && (jsxRuntime.jsxs("div", { style: { display: "flex", flexDirection: "column", alignItems: "center", justifyContent: "center", gap: "12px", padding: "40px 20px", ...textStyles.muted }, children: [spinner(), jsxRuntime.jsx("span", { children: "Lade verf\u00FCgbare Extras..." })] })), !isLoading && upsells.length === 0 && (jsxRuntime.jsx("div", { style: { textAlign: "center", padding: "40px 20px", ...textStyles.muted }, children: jsxRuntime.jsx("p", { children: "Keine Extras f\u00FCr diese Buchung verf\u00FCgbar." }) })), !isLoading && upsells.length > 0 && (jsxRuntime.jsx("div", { style: { display: "flex", flexDirection: "column", gap: "12px", flex: 1, overflowY: "auto", paddingBottom: "16px" }, children: upsells.map((upsell) => (jsxRuntime.jsx(UpsellCard, { upsell: upsell, isSelected: isSelected(upsell.id), participantCount: participantCount, onSelect: () => selectUpsell(upsell.id) }, upsell.id))) })), selectedCount > 0 && (jsxRuntime.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: [jsxRuntime.jsxs("span", { style: textStyles.muted, children: [selectedCount, " ", selectedCount === 1 ? "Extra" : "Extras", " ausgew\u00E4hlt"] }), jsxRuntime.jsxs("span", { style: { fontWeight: 600, color: "var(--bw-highlight-color)", fontFamily: "var(--bw-font-family)" }, children: ["+", formatCurrency(selectedTotal)] })] }))] }) }));
|
|
12016
11970
|
}
|
|
12017
11971
|
|
|
12018
11972
|
// Main widget component
|
|
@@ -12136,15 +12090,12 @@ function UniversalBookingWidget({ config: baseConfig }) {
|
|
|
12136
12090
|
setShouldRenderBookingForm(true);
|
|
12137
12091
|
}
|
|
12138
12092
|
}, [currentStep, shouldRenderInstanceSelection, shouldRenderBookingForm]);
|
|
12139
|
-
// Promo dialog: show
|
|
12093
|
+
// Promo dialog: show promo once per session when enabled
|
|
12140
12094
|
React__default.useEffect(() => {
|
|
12141
|
-
|
|
12142
|
-
const month = now.getMonth();
|
|
12143
|
-
const isHolidaySeason = month === 11 || month === 0;
|
|
12144
|
-
if (!isHolidaySeason) {
|
|
12095
|
+
if (!config.promo?.enabled) {
|
|
12145
12096
|
return;
|
|
12146
12097
|
}
|
|
12147
|
-
const promoId = "
|
|
12098
|
+
const promoId = config.promo.discountCode || "default";
|
|
12148
12099
|
const storageKey = `bigz-promo-${promoId}-shown`;
|
|
12149
12100
|
const globalFlagKey = `__bigzPromoShown_${promoId}`;
|
|
12150
12101
|
const alreadyShown = localStorage.getItem(storageKey) === "true";
|
|
@@ -12154,19 +12105,19 @@ function UniversalBookingWidget({ config: baseConfig }) {
|
|
|
12154
12105
|
}
|
|
12155
12106
|
window[globalFlagKey] = true;
|
|
12156
12107
|
const timer = setTimeout(() => {
|
|
12157
|
-
|
|
12158
|
-
setShowPromoDialog(true);
|
|
12159
|
-
}
|
|
12108
|
+
setShowPromoDialog(true);
|
|
12160
12109
|
}, 1000);
|
|
12161
12110
|
return () => clearTimeout(timer);
|
|
12162
|
-
}, []);
|
|
12111
|
+
}, [config.promo?.enabled, config.promo?.discountCode]);
|
|
12163
12112
|
const handlePromoDialogClose = () => {
|
|
12164
12113
|
setShowPromoDialog(false);
|
|
12165
|
-
|
|
12114
|
+
const promoId = config.promo?.discountCode || "default";
|
|
12115
|
+
localStorage.setItem(`bigz-promo-${promoId}-shown`, "true");
|
|
12166
12116
|
};
|
|
12167
12117
|
const handlePromoCtaClick = () => {
|
|
12168
12118
|
setShowPromoDialog(false);
|
|
12169
|
-
|
|
12119
|
+
const promoId = config.promo?.discountCode || "default";
|
|
12120
|
+
localStorage.setItem(`bigz-promo-${promoId}-shown`, "true");
|
|
12170
12121
|
if (widgetContainerRef) {
|
|
12171
12122
|
widgetContainerRef.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
12172
12123
|
}
|
|
@@ -12785,7 +12736,7 @@ function styleInject(css, ref) {
|
|
|
12785
12736
|
}
|
|
12786
12737
|
}
|
|
12787
12738
|
|
|
12788
|
-
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}";
|
|
12739
|
+
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}}";
|
|
12789
12740
|
styleInject(css_248z);
|
|
12790
12741
|
|
|
12791
12742
|
// Export init function for vanilla JS usage
|