family.hotelalpenhof.it Open in urlscan Pro
142.93.106.92  Public Scan

Submitted URL: https://mail.aa.hotelalpenhof.it/lnk/CAAABXtin3sAAAAAAAAAADXACS8AAAAArmkAAAAAACDBgQBmL9surn5U3nozSg60ouqCeS4WZAAZSds/10/48Ux4-j3X...
Effective URL: https://family.hotelalpenhof.it/it/vacanza-di-famiglia?utm_source=additive-newsletter&utm_medium=email&utm_campaign=o_p_t_n_l_ap...
Submission: On April 30 via manual from IT — Scanned from IT

Form analysis 1 forms found in the DOM

/hotelalpenhof-it/guestenquiries

<form class="p-6 sm:p-12 sm:pt-4" action="/hotelalpenhof-it/guestenquiries" x-data="enquiryForm()" x-init="
                        $watch('formData.person.givenName', value => { validate('givenName', value) });
                        $watch('formData.person.familyName', value => { validate('familyName', value) });
                        $watch('formData.person.email', value => { validate('email', value) });
                        
                        $watch('privacy', value => { validate('privacy', value) });
                        $nextTick(() => {
                            trackStartPurchase = function(type, id) {
                                if (!type || !id) {
                                    return;
                                }

                                const uuid = crypto.randomUUID();
                                const payload = { meta_data: {
                                    'unique_event_id': uuid
                                    }
                                };
                                if (typeof ddtv === 'function') {
                                    ddtv('send', 'action', 'StartPurchase', type, id, payload);
                                }

                                if (typeof fbq === 'function') {
                                    const trackingData = {};
                                    if (type) {
                                        trackingData.content_type = 'Product';
                                        trackingData.content_category = type;

                                        if (id) {
                                            trackingData.content_ids = [id];
                                            trackingData.num_items = 1;
                                        }
                                    }
                                    fbq('track', 'InitiateCheckout', trackingData, {eventID: uuid});
                                }
                                if (typeof ttq === 'object' &amp;&amp; typeof ttq.track === 'function') {
                                    ttq.instance(this.tiktokId).track('InitiateCheckout');
                                }

                                isStartPurchaseTracked = true;
                            }

                            selectLastMinuteOffer = function(id) {
                                if (datePicker &amp;&amp; lastMinuteOffers[id].timespan.startsAt &amp;&amp; lastMinuteOffers[id].timespan.endsAt) {
                                    selectedLastMinuteOffer = lastMinuteOffers[id];
                                    
                                        isBooking = true;
                                    

                                    let startsAt = new Date(lastMinuteOffers[id].timespan.startsAt);
                                    if (new Date() > startsAt) {
                                        startsAt = new Date();
                                    }
                                    datePicker.setEndDate( lastMinuteOffers[id].timespan.endsAt);
                                    datePicker.setStartDate(lastMinuteOffers[id].timespan.startsAt);
                                    datePicker.trigger('select');
                                }

                                if (lastMinuteOffers[id].occupancyMin) {
                                    minAdults = parseInt(lastMinuteOffers[id].occupancyMin);
                                }
                                if (lastMinuteOffers[id].occupancyMax) {
                                    maxAdults = parseInt(lastMinuteOffers[id].occupancyMax);
                                }

                                if (formData.roomStays[0].adults.count < minAdults) {
                                    formData.roomStays[0].adults.count = minAdults;
                                } else if (formData.roomStays[0].adults.count > maxAdults) {
                                    formData.roomStays[0].adults.count = maxAdults;
                                }
                            }
                        });
                    " @submit.prevent="submitData" style="border-radius: 2px;">
  <div class="flex flex-col justify-between lg:flex-row mb-12">
    <div class="lg:w-1/2 lg:pr-20">
      <div class="mb-12" x-data="{
                                    dateOptions: { weekday: 'short', year: 'numeric', month: windowWidth < 1024 ? 'short' : '2-digit', day: windowWidth < 1024 ? 'numeric' : '2-digit' },
                                    startDate: null,
                                    get formattedStartDate() {
                                        return this.startDate?.toLocaleDateString('it', this.dateOptions);
                                    },
                                    endDate: null,
                                    get formattedEndDate() {
                                        return this.endDate?.toLocaleDateString('it', this.dateOptions);
                                    },
                                    get dateDiff() {
                                        if (!this.startDate || !this.endDate) {
                                            return null;
                                        }

                                        const dayDiff = (this.endDate - this.startDate) / 86400000;
                                        return dayDiff === 1 ? dayDiff + ' notte' : dayDiff + ' notti';
                                    },

                                    init() {
                                        const today = new Date();
                                        const nextWeek = new Date();
                                        nextWeek.setDate(nextWeek.getDate() + 7);

                                        let blockedDateRanges = [
                                            
                                        ].sort((a, b) => {
                                            if (a.start < b.start) {
                                                return -1;
                                            }

                                            if (a.start > b.start) {
                                                return 1;
                                            }

                                            return 0;
                                        }).reduce((accumulator, nextRange) => {
                                            const lastRange = accumulator.length &amp;&amp; accumulator[accumulator.length - 1];

                                            let lastRangeEnd = null;
                                            if (lastRange) {
                                                lastRangeEnd = new Date(lastRange.end);
                                                lastRangeEnd.setDate(lastRangeEnd.getDate() + 1);
                                            }

                                            let nextRangeStart = new Date(nextRange.start);
                                            nextRangeStart.setDate(nextRangeStart.getDate() - 1);

                                            if (lastRangeEnd &amp;&amp; nextRangeStart <= lastRangeEnd) {
                                                lastRange.end = lastRange.end > nextRange.end ? lastRange.end : nextRange.end;
                                            } else {
                                                accumulator.push({ ...nextRange });
                                            }

                                            return accumulator;
                                        }, []);

                                        const startDate = new Date(this.formData.roomStays[0].startDate);
                                        this.startDate = new Date(`${startDate.getFullYear()}/${(startDate.getMonth() + 1)}/${startDate.getDate()} 12:00:00 GMT`);
                                        const endDate = new Date(this.formData.roomStays[0].endDate);
                                        this.endDate = new Date(`${endDate.getFullYear()}/${(endDate.getMonth() + 1)}/${endDate.getDate()} 12:00:00 GMT`);

                                        let firstPossibleStartDay = this.startDate;
                                        let firstPossibleEndDay = this.endDate;
                                        blockedDateRanges.forEach((range) => {
                                            let rangeStart = new Date(range.start);
                                            rangeStart.setDate(rangeStart.getDate() - 1);

                                            if (firstPossibleStartDay >= rangeStart &amp;&amp; firstPossibleStartDay <= new Date(range.end)) {
                                                firstPossibleStartDay = new Date(range.end);
                                                firstPossibleStartDay.setDate(firstPossibleStartDay.getDate() + 1);
                                                firstPossibleEndDay = new Date(range.end);
                                                firstPossibleEndDay.setDate(firstPossibleEndDay.getDate() + 8);
                                            }

                                            if (firstPossibleEndDay >= new Date(range.start) &amp;&amp; firstPossibleEndDay <= new Date(range.end) || firstPossibleEndDay >= new Date(range.end) &amp;&amp; firstPossibleStartDay < new Date(range.start)) {
                                                firstPossibleEndDay = new Date(range.start);
                                                firstPossibleEndDay.setDate(firstPossibleEndDay.getDate() - 1);
                                            }
                                        });

                                        if (firstPossibleStartDay != this.startDate) {
                                            this.startDate = new Date(`${firstPossibleStartDay.getFullYear()}/${(firstPossibleStartDay.getMonth() + 1)}/${firstPossibleStartDay.getDate()} 12:00:00 GMT`);
                                            this.formData.roomStays[0].startDate = `${this.startDate.getFullYear()}-${('0'+(this.startDate.getMonth()+1)).slice(-2)}-${('0'+(this.startDate.getDate())).slice(-2)}`;
                                        }

                                        if (firstPossibleEndDay != this.endDate) {
                                            this.endDate = new Date(`${firstPossibleEndDay.getFullYear()}/${(firstPossibleEndDay.getMonth() + 1)}/${firstPossibleEndDay.getDate()} 12:00:00 GMT`);
                                            this.formData.roomStays[0].endDate = `${this.endDate.getFullYear()}-${('0'+(this.endDate.getMonth()+1)).slice(-2)}-${('0'+(this.endDate.getDate())).slice(-2)}`;
                                        }

                                        $nextTick(() => {
                                            datePicker = new easepick.create({
                                                element: '#date-start',
                                                lang: 'it',
                                                zIndex: 1,
                                                css: [
                                                    'https://content.additive-apps.tech/css/landing-page.css'
                                                ],
                                                plugins: ['RangePlugin', 'LockPlugin'],
                                                RangePlugin: {
                                                    elementEnd: '#date-end',
                                                    startDate: today,
                                                    endDate: nextWeek,
                                                    tooltip: false
                                                },
                                                LockPlugin: {
                                                    minDate: new Date(),
                                                    minDays: 2,
                                                    inseparable: true,
                                                    filter(date, picked) {
                                                        return blockedDateRanges.some((range) => {
                                                            if (range.start <= date.format('YYYY-MM-DD') &amp;&amp; range.end >= date.format('YYYY-MM-DD')) {
                                                                return true;
                                                            }
                                                        });
                                                    },
                                                },
                                                setup: (datePicker) => {
                                                    datePicker.on('select', () => {
                                                        const startDate = datePicker.getStartDate();
                                                        this.startDate = startDate
                                                            ? new Date(`${startDate.getFullYear()}/${(startDate.getMonth() + 1)}/${startDate.getDate()} 12:00:00 GMT`)
                                                            : null;
                                                        this.formData.roomStays[0].startDate = startDate
                                                            ? `${this.startDate.getFullYear()}-${('0'+(this.startDate.getMonth()+1)).slice(-2)}-${('0'+(this.startDate.getDate())).slice(-2)}`
                                                            : null;

                                                        const endDate = datePicker.getEndDate();
                                                        this.endDate = endDate
                                                            ? new Date(`${endDate.getFullYear()}/${(endDate.getMonth() + 1)}/${endDate.getDate()} 12:00:00 GMT`)
                                                            : null;
                                                        this.formData.roomStays[0].endDate = this.endDate
                                                            ? `${this.endDate.getFullYear()}-${('0'+(this.endDate.getMonth()+1)).slice(-2)}-${('0'+(this.endDate.getDate())).slice(-2)}`
                                                            : null;

                                                        if (!isStartPurchaseTracked) {
                                                            typeof trackStartPurchase === 'function' &amp;&amp; trackStartPurchase();
                                                        }

                                                        validate('dateRange', this.formData.roomStays[0].startDate, this.formData.roomStays[0].endDate);
                                                    })
                                                }
                                            });

                                            datePicker.setEndDate(this.endDate);
                                            datePicker.setStartDate(this.startDate);
                                            datePicker.trigger('select');
                                        });
                                    }
                                }" @resize.window="
                                    dateOptions = { weekday: 'short', year: 'numeric', month: windowWidth < 1024 ? 'short' : '2-digit', day: windowWidth < 1024 ? 'numeric' : '2-digit' };
                                ">
        <div class="font-semibold mb-6">Selezionare giorno d'arrivo e di partenza</div>
        <div class="sm:flex mb-1">
          <div class="sm:w-1/2 sm:pr-1">
            <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="date-start">Giorno d'arrivo</label>
            <div>
              <template x-if="!selectedLastMinuteOffer">
                <div class="relative h-12 px-4" id="date-wrapper-start">
                  <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
                    <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
                  </div>
                  <div class="flex h-full items-center">
                    <svg class="min-w-3.5" width="14" height="16" viewBox="0 0 14 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                      <path fill-rule="evenodd" clip-rule="evenodd"
                        d="M2 0.5C2 0.223858 2.22386 0 2.5 0H4.5C4.77614 0 5 0.223858 5 0.5V2H9V0.5C9 0.223858 9.22386 0 9.5 0H11.5C11.7761 0 12 0.223858 12 0.5V2H13.5C13.7761 2 14 2.22386 14 2.5V5V6.5V15.5C14 15.7761 13.7761 16 13.5 16H0.5C0.223857 16 0 15.7761 0 15.5V6.5V5V2.5C0 2.22386 0.223858 2 0.5 2H2V0.5ZM12.5 3.5V5H1.5V3.5H12.5ZM1.5 14.5V6.5H12.5V14.5H1.5ZM3.5 8C3.22386 8 3 8.22386 3 8.5V10.5C3 10.7761 3.22386 11 3.5 11H5.5C5.77614 11 6 10.7761 6 10.5V8.5C6 8.22386 5.77614 8 5.5 8H3.5Z">
                      </path>
                    </svg>
                    <div class="ml-3" x-text="formattedStartDate"></div>
                  </div>
                  <input class="absolute top-0 left-0 w-full h-full cursor-pointer opacity-0" name="date[start]" id="date-start" type="text" x-model="formData.roomStays[0].startDate">
                </div>
              </template>
              <div class="relative h-12 px-4" id="date-wrapper-start">
                <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
                  <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
                </div>
                <div class="flex h-full items-center">
                  <svg class="min-w-3.5" width="14" height="16" viewBox="0 0 14 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                    <path fill-rule="evenodd" clip-rule="evenodd"
                      d="M2 0.5C2 0.223858 2.22386 0 2.5 0H4.5C4.77614 0 5 0.223858 5 0.5V2H9V0.5C9 0.223858 9.22386 0 9.5 0H11.5C11.7761 0 12 0.223858 12 0.5V2H13.5C13.7761 2 14 2.22386 14 2.5V5V6.5V15.5C14 15.7761 13.7761 16 13.5 16H0.5C0.223857 16 0 15.7761 0 15.5V6.5V5V2.5C0 2.22386 0.223858 2 0.5 2H2V0.5ZM12.5 3.5V5H1.5V3.5H12.5ZM1.5 14.5V6.5H12.5V14.5H1.5ZM3.5 8C3.22386 8 3 8.22386 3 8.5V10.5C3 10.7761 3.22386 11 3.5 11H5.5C5.77614 11 6 10.7761 6 10.5V8.5C6 8.22386 5.77614 8 5.5 8H3.5Z">
                    </path>
                  </svg>
                  <div class="ml-3" x-text="formattedStartDate">mar 30/04/2024</div>
                </div>
                <input class="absolute top-0 left-0 w-full h-full cursor-pointer opacity-0" name="date[start]" id="date-start" type="text" x-model="formData.roomStays[0].startDate" readonly=""><span class="easepick-wrapper"
                  style="position: absolute; pointer-events: none;"></span>
              </div>
            </div>
            <div>
              <template x-if="selectedLastMinuteOffer">
                <div x-text="formattedStartDate"></div>
              </template>
            </div>
          </div>
          <div class="mt-4 sm:w-1/2 sm:pl-1 sm:mt-0">
            <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="date-end">Giorno di partenza</label>
            <div>
              <template x-if="!selectedLastMinuteOffer">
                <div class="relative h-12 px-4" id="date-wrapper-end">
                  <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
                    <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
                  </div>
                  <div class="flex h-full items-center">
                    <svg class="min-w-3.5" width="14" height="16" viewBox="0 0 14 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                      <path fill-rule="evenodd" clip-rule="evenodd"
                        d="M2 0.5C2 0.223858 2.22386 0 2.5 0H4.5C4.77614 0 5 0.223858 5 0.5V2H9V0.5C9 0.223858 9.22386 0 9.5 0H11.5C11.7761 0 12 0.223858 12 0.5V2H13.5C13.7761 2 14 2.22386 14 2.5V5V6.5V15.5C14 15.7761 13.7761 16 13.5 16H0.5C0.223857 16 0 15.7761 0 15.5V6.5V5V2.5C0 2.22386 0.223858 2 0.5 2H2V0.5ZM12.5 3.5V5H1.5V3.5H12.5ZM1.5 14.5V6.5H12.5V14.5H1.5ZM3.5 8C3.22386 8 3 8.22386 3 8.5V10.5C3 10.7761 3.22386 11 3.5 11H5.5C5.77614 11 6 10.7761 6 10.5V8.5C6 8.22386 5.77614 8 5.5 8H3.5Z">
                      </path>
                    </svg>
                    <div class="ml-3" x-text="formattedEndDate"></div>
                  </div>
                  <input class="absolute top-0 left-0 w-full h-full cursor-pointer opacity-0" name="date[end]" id="date-end" type="text" x-model="formData.roomStays[0].endDate">
                </div>
              </template>
              <div class="relative h-12 px-4" id="date-wrapper-end">
                <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
                  <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
                </div>
                <div class="flex h-full items-center">
                  <svg class="min-w-3.5" width="14" height="16" viewBox="0 0 14 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                    <path fill-rule="evenodd" clip-rule="evenodd"
                      d="M2 0.5C2 0.223858 2.22386 0 2.5 0H4.5C4.77614 0 5 0.223858 5 0.5V2H9V0.5C9 0.223858 9.22386 0 9.5 0H11.5C11.7761 0 12 0.223858 12 0.5V2H13.5C13.7761 2 14 2.22386 14 2.5V5V6.5V15.5C14 15.7761 13.7761 16 13.5 16H0.5C0.223857 16 0 15.7761 0 15.5V6.5V5V2.5C0 2.22386 0.223858 2 0.5 2H2V0.5ZM12.5 3.5V5H1.5V3.5H12.5ZM1.5 14.5V6.5H12.5V14.5H1.5ZM3.5 8C3.22386 8 3 8.22386 3 8.5V10.5C3 10.7761 3.22386 11 3.5 11H5.5C5.77614 11 6 10.7761 6 10.5V8.5C6 8.22386 5.77614 8 5.5 8H3.5Z">
                    </path>
                  </svg>
                  <div class="ml-3" x-text="formattedEndDate">mar 07/05/2024</div>
                </div>
                <input class="absolute top-0 left-0 w-full h-full cursor-pointer opacity-0" name="date[end]" id="date-end" type="text" x-model="formData.roomStays[0].endDate" readonly="">
              </div>
            </div>
            <div>
              <template x-if="selectedLastMinuteOffer">
                <div x-text="formattedEndDate"></div>
              </template>
            </div>
          </div>
        </div>
        <div class="block label-font-style text-red mb-3" :class="{
                                        'h-5 mb-1': validation.dateRange.message,
                                        'mb-3': !validation.dateRange.message
                                    }" x-text="validation.dateRange.message"></div>
        <div class="small-font-style md:small-font-style" x-text="dateDiff">7 notti</div>
      </div>
      <div>
        <div class="font-semibold mb-6">Dati di viaggio</div>
        <div class="mb-8" x-data="{
                                        get countString() { return this.formData.roomStays[0].adults.count === 1 ? this.formData.roomStays[0].adults.count + ' Adulto' : this.formData.roomStays[0].adults.count + ' Adulti' },
                                        get decrementDisabled() { return this.formData.roomStays[0].adults.count === minAdults },
                                        get incrementDisabled() { return this.formData.roomStays[0].adults.count ===  maxAdults },
                                        increment($event) {
                                            if (this.formData.roomStays[0].adults.count <  maxAdults) {
                                                this.formData.roomStays[0].adults.count++;
                                            }
                                        },
                                        decrement() {
                                            if (this.formData.roomStays[0].adults.count > minAdults) {
                                                this.formData.roomStays[0].adults.count--;
                                            }
                                        }
                                    }">
          <label class="block small-font-style mb-3 opacity-40 md:small-font-style">Adulti</label>
          <div class="flex items-center">
            <button type="button" class="flex items-center justify-center w-8 h-8 rounded-sm border bg-transparent transition text-button border-button hover:opacity-60" :class="decrementDisabled ? 'opacity-20' : 'hover:opacity-60'"
              :disabled="decrementDisabled" @click="decrement()">
              <svg width="12" height="2" viewBox="0 0 12 2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                <path
                  d="M11.8334 0.791667V1.20833C11.8334 1.43845 11.6469 1.625 11.4167 1.625H0.583415C0.353296 1.625 0.166748 1.43845 0.166748 1.20833V0.791667C0.166748 0.561548 0.353296 0.375 0.583415 0.375H11.4167C11.6469 0.375 11.8334 0.561548 11.8334 0.791667Z">
                </path>
              </svg>
            </button>
            <button type="button" class="flex items-center justify-center w-8 h-8 ml-2 rounded-sm border bg-transparent transition text-button border-button hover:opacity-60" :class="incrementDisabled ? 'opacity-20' : 'hover:opacity-60'"
              :disabled="incrementDisabled" @click="increment()">
              <svg width="12" height="12" viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                <path
                  d="M6.20842 0.166748C6.43853 0.166748 6.62508 0.353296 6.62508 0.583415V5.37508H11.4167C11.6469 5.37508 11.8334 5.56163 11.8334 5.79175V6.20842C11.8334 6.43853 11.6469 6.62508 11.4167 6.62508H6.62508V11.4167C6.62508 11.6469 6.43853 11.8334 6.20842 11.8334H5.79175C5.56163 11.8334 5.37508 11.6469 5.37508 11.4167V6.62508H0.583415C0.353296 6.62508 0.166748 6.43853 0.166748 6.20842V5.79175C0.166748 5.56163 0.353296 5.37508 0.583415 5.37508H5.37508V0.583415C5.37508 0.353296 5.56163 0.166748 5.79175 0.166748H6.20842Z">
                </path>
              </svg>
            </button>
            <div class="font-semibold ml-4" id="adults-label" x-text="countString">2 Adulti</div>
            <input name="adults" id="adults" type="hidden" x-model="formData.roomStays[0].adults.count" value="2">
          </div>
        </div>
        <template x-if="!isBooking">
          <div class="mb-8" x-data="{
                                            get countString() { return this.formData.roomStays[0].children.count === 1 ? this.formData.roomStays[0].children.count + ' Bambino' : this.formData.roomStays[0].children.count + ' Bambini' },
                                            get decrementDisabled() { return this.formData.roomStays[0].children.count === 0 },
                                            get incrementDisabled() { return this.formData.roomStays[0].children.count === 5 },
                                            increment($event) {
                                                if (this.formData.roomStays[0].children.count < 5) {
                                                    this.formData.roomStays[0].children.count++;
                                                    this.formData.roomStays[0].children.ages.push('');
                                                }
                                            },
                                            decrement() {
                                                if (this.formData.roomStays[0].children.count > 0) {
                                                    this.formData.roomStays[0].children.count--;
                                                    this.formData.roomStays[0].children.ages.splice(-1);
                                                    if (validation.childrenAges.error) {
                                                        validate('childrenAges', formData.roomStays[0].children?.ages);
                                                    }
                                                }
                                            }
                                        }">
            <label class="block small-font-style mb-3 opacity-40 md:small-font-style">Bambini</label>
            <div class="flex items-center">
              <button type="button" class="flex items-center justify-center w-8 h-8 rounded-sm border bg-transparent transition text-button border-button" :class="decrementDisabled ? 'opacity-20' : 'hover:opacity-60'" :disabled="decrementDisabled"
                @click="decrement()">
                <svg width="12" height="2" viewBox="0 0 12 2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                  <path
                    d="M11.8334 0.791667V1.20833C11.8334 1.43845 11.6469 1.625 11.4167 1.625H0.583415C0.353296 1.625 0.166748 1.43845 0.166748 1.20833V0.791667C0.166748 0.561548 0.353296 0.375 0.583415 0.375H11.4167C11.6469 0.375 11.8334 0.561548 11.8334 0.791667Z">
                  </path>
                </svg>
              </button>
              <button type="button" class="flex items-center justify-center w-8 h-8 ml-2 rounded-sm border bg-transparent transition text-button border-button" :class="incrementDisabled ? 'opacity-20' : 'hover:opacity-60'"
                :disabled="incrementDisabled" @click="increment()">
                <svg width="12" height="12" viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                  <path
                    d="M6.20842 0.166748C6.43853 0.166748 6.62508 0.353296 6.62508 0.583415V5.37508H11.4167C11.6469 5.37508 11.8334 5.56163 11.8334 5.79175V6.20842C11.8334 6.43853 11.6469 6.62508 11.4167 6.62508H6.62508V11.4167C6.62508 11.6469 6.43853 11.8334 6.20842 11.8334H5.79175C5.56163 11.8334 5.37508 11.6469 5.37508 11.4167V6.62508H0.583415C0.353296 6.62508 0.166748 6.43853 0.166748 6.20842V5.79175C0.166748 5.56163 0.353296 5.37508 0.583415 5.37508H5.37508V0.583415C5.37508 0.353296 5.56163 0.166748 5.79175 0.166748H6.20842Z">
                  </path>
                </svg>
              </button>
              <div class="font-semibold ml-4" id="adults-label" x-text="countString">0 Bambini</div>
              <input name="adults" id="adults" type="hidden" x-model="formData.roomStays[0].children.count">
            </div>
            <template x-if="formData.roomStays[0].children.count > 0">
              <div class="mt-8">
                <label class="block small-font-style mb-3 opacity-40 md:small-font-style">Età bambini</label>
                <div class="flex flex-wrap -ml-2">
                  <template x-for="i in formData.roomStays[0].children.count">
                    <div class="relative h-12 ml-2 mb-2">
                      <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
                        <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
                      </div>
                      <select class="relative w-full h-full bg-transparent pl-2 pr-4" :name="'minorage[' + i + ']'"
                        @change="formData.roomStays[0].children.ages[i-1] = $event.target.value; validation.childrenAges.error &amp;&amp; validate('childrenAges', formData.roomStays[0].children?.ages);">
                        <option class="dn" disabled="" selected="" value="">Seleziona età</option>
                        <template x-for="j in 19">
                          <option :selected="formData.roomStays[0].children.ages[i-1] === String(-1 + j)" :value="-1 + j" x-text="(-1 + j) === 1 ? `${ -1 + j } Anno` : `${ -1 + j } Anni`"></option>
                        </template>
                      </select>
                    </div>
                  </template>
                </div>
                <div class="block label-font-style h-5 text-red" x-text="validation.childrenAges.message"></div>
              </div>
            </template>
          </div>
        </template>
        <div class="mb-8" x-data="{
                                            get countString() { return this.formData.roomStays[0].children.count === 1 ? this.formData.roomStays[0].children.count + ' Bambino' : this.formData.roomStays[0].children.count + ' Bambini' },
                                            get decrementDisabled() { return this.formData.roomStays[0].children.count === 0 },
                                            get incrementDisabled() { return this.formData.roomStays[0].children.count === 5 },
                                            increment($event) {
                                                if (this.formData.roomStays[0].children.count < 5) {
                                                    this.formData.roomStays[0].children.count++;
                                                    this.formData.roomStays[0].children.ages.push('');
                                                }
                                            },
                                            decrement() {
                                                if (this.formData.roomStays[0].children.count > 0) {
                                                    this.formData.roomStays[0].children.count--;
                                                    this.formData.roomStays[0].children.ages.splice(-1);
                                                    if (validation.childrenAges.error) {
                                                        validate('childrenAges', formData.roomStays[0].children?.ages);
                                                    }
                                                }
                                            }
                                        }">
          <label class="block small-font-style mb-3 opacity-40 md:small-font-style">Bambini</label>
          <div class="flex items-center">
            <button type="button" class="flex items-center justify-center w-8 h-8 rounded-sm border bg-transparent transition text-button border-button opacity-20" :class="decrementDisabled ? 'opacity-20' : 'hover:opacity-60'"
              :disabled="decrementDisabled" @click="decrement()" disabled="disabled">
              <svg width="12" height="2" viewBox="0 0 12 2" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                <path
                  d="M11.8334 0.791667V1.20833C11.8334 1.43845 11.6469 1.625 11.4167 1.625H0.583415C0.353296 1.625 0.166748 1.43845 0.166748 1.20833V0.791667C0.166748 0.561548 0.353296 0.375 0.583415 0.375H11.4167C11.6469 0.375 11.8334 0.561548 11.8334 0.791667Z">
                </path>
              </svg>
            </button>
            <button type="button" class="flex items-center justify-center w-8 h-8 ml-2 rounded-sm border bg-transparent transition text-button border-button hover:opacity-60" :class="incrementDisabled ? 'opacity-20' : 'hover:opacity-60'"
              :disabled="incrementDisabled" @click="increment()">
              <svg width="12" height="12" viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                <path
                  d="M6.20842 0.166748C6.43853 0.166748 6.62508 0.353296 6.62508 0.583415V5.37508H11.4167C11.6469 5.37508 11.8334 5.56163 11.8334 5.79175V6.20842C11.8334 6.43853 11.6469 6.62508 11.4167 6.62508H6.62508V11.4167C6.62508 11.6469 6.43853 11.8334 6.20842 11.8334H5.79175C5.56163 11.8334 5.37508 11.6469 5.37508 11.4167V6.62508H0.583415C0.353296 6.62508 0.166748 6.43853 0.166748 6.20842V5.79175C0.166748 5.56163 0.353296 5.37508 0.583415 5.37508H5.37508V0.583415C5.37508 0.353296 5.56163 0.166748 5.79175 0.166748H6.20842Z">
                </path>
              </svg>
            </button>
            <div class="font-semibold ml-4" id="adults-label" x-text="countString">0 Bambini</div>
            <input name="adults" id="adults" type="hidden" x-model="formData.roomStays[0].children.count" value="0">
          </div>
          <template x-if="formData.roomStays[0].children.count > 0">
            <div class="mt-8">
              <label class="block small-font-style mb-3 opacity-40 md:small-font-style">Età bambini</label>
              <div class="flex flex-wrap -ml-2">
                <template x-for="i in formData.roomStays[0].children.count">
                  <div class="relative h-12 ml-2 mb-2">
                    <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
                      <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
                    </div>
                    <select class="relative w-full h-full bg-transparent pl-2 pr-4" :name="'minorage[' + i + ']'"
                      @change="formData.roomStays[0].children.ages[i-1] = $event.target.value; validation.childrenAges.error &amp;&amp; validate('childrenAges', formData.roomStays[0].children?.ages);">
                      <option class="dn" disabled="" selected="" value="">Seleziona età</option>
                      <template x-for="j in 19">
                        <option :selected="formData.roomStays[0].children.ages[i-1] === String(-1 + j)" :value="-1 + j" x-text="(-1 + j) === 1 ? `${ -1 + j } Anno` : `${ -1 + j } Anni`"></option>
                      </template>
                    </select>
                  </div>
                </template>
              </div>
              <div class="block label-font-style h-5 text-red" x-text="validation.childrenAges.message"></div>
            </div>
          </template>
        </div>
      </div>
      <template x-if="Object.keys(rooms).length">
        <div class="mb-8 dn" x-init="
                                        $nextTick(() => {
                                            selectRoom = function(id, isLastMinute = false, shouldScrollToForm = true) {
                                                $el.classList.remove('dn');
                                                formData.roomStays[0].roomType = rooms[id].code;
                                                formData.roomStays[0].roomTypeDescription = rooms[id].name;

                                                if (!isLastMinute) {
                                                    selectedLastMinuteOffer = null;
                                                    minAdults = configuredMinAdults;
                                                    maxAdults = configuredMaxAdults;

                                                    if (formData.roomStays[0].adults.count < minAdults) {
                                                        formData.roomStays[0].adults.count = minAdults;
                                                    } else if (formData.roomStays[0].adults.count > maxAdults) {
                                                        formData.roomStays[0].adults.count = maxAdults;
                                                    }
                                                }

                                                shouldScrollToForm &amp;&amp; typeof scrollToForm === 'function' &amp;&amp; scrollToForm();
                                            }
                                        })
                                    ">
          <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="roomType">Camera</label>
          <div class="relative h-12">
            <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
              <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
            </div>
            <select class="relative w-full h-full bg-transparent pl-2 pr-4" name="roomType" id="roomType" x-model="formData.roomStays[0].roomType" x-data="{
                                                get sortedRooms() {
                                                    const roomsArray = [];
                                                    for (const [key, value] of Object.entries(rooms)) {
                                                        roomsArray.push({ ...value });
                                                    }

                                                    return roomsArray.sort((a, b) => a.name.localeCompare(b.name));
                                                }
                                            }" @change="
                                                target = $event.target;
                                                roomId = target.options[target.selectedIndex].id
                                                formData.roomStays[0].roomTypeDescription = rooms[roomId]?.name || 'Nessuna preferenza';

                                                
                                            " :disabled="selectedLastMinuteOffer">
              <option value="">Nessuna preferenza</option>
              <template x-for="room in sortedRooms">
                <option :id="room.id" :value="room.code" x-text="room.name"></option>
              </template>
            </select>
          </div>
        </div>
      </template>
      <div class="mb-8 dn" x-init="
                                        $nextTick(() => {
                                            selectRoom = function(id, isLastMinute = false, shouldScrollToForm = true) {
                                                $el.classList.remove('dn');
                                                formData.roomStays[0].roomType = rooms[id].code;
                                                formData.roomStays[0].roomTypeDescription = rooms[id].name;

                                                if (!isLastMinute) {
                                                    selectedLastMinuteOffer = null;
                                                    minAdults = configuredMinAdults;
                                                    maxAdults = configuredMaxAdults;

                                                    if (formData.roomStays[0].adults.count < minAdults) {
                                                        formData.roomStays[0].adults.count = minAdults;
                                                    } else if (formData.roomStays[0].adults.count > maxAdults) {
                                                        formData.roomStays[0].adults.count = maxAdults;
                                                    }
                                                }

                                                shouldScrollToForm &amp;&amp; typeof scrollToForm === 'function' &amp;&amp; scrollToForm();
                                            }
                                        })
                                    ">
        <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="roomType">Camera</label>
        <div class="relative h-12">
          <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
            <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
          </div>
          <select class="relative w-full h-full bg-transparent pl-2 pr-4" name="roomType" id="roomType" x-model="formData.roomStays[0].roomType" x-data="{
                                                get sortedRooms() {
                                                    const roomsArray = [];
                                                    for (const [key, value] of Object.entries(rooms)) {
                                                        roomsArray.push({ ...value });
                                                    }

                                                    return roomsArray.sort((a, b) => a.name.localeCompare(b.name));
                                                }
                                            }" @change="
                                                target = $event.target;
                                                roomId = target.options[target.selectedIndex].id
                                                formData.roomStays[0].roomTypeDescription = rooms[roomId]?.name || 'Nessuna preferenza';

                                                
                                            " :disabled="selectedLastMinuteOffer">
            <option value="">Nessuna preferenza</option>
            <template x-for="room in sortedRooms">
              <option :id="room.id" :value="room.code" x-text="room.name"></option>
            </template>
            <option :id="room.id" :value="room.code" x-text="room.name" id="a94049ab-425c-4208-9e20-9cce2b4ff689" value="KOM">Comfort</option>
            <option :id="room.id" :value="room.code" x-text="room.name" id="969b550c-dd4d-4841-a75c-bbe6390b707b" value="FS">Family Suite</option>
            <option :id="room.id" :value="room.code" x-text="room.name" id="b5172635-dd4b-4d51-a5f1-eb79656fa06b" value="SU">Suite con balcone</option>
            <option :id="room.id" :value="room.code" x-text="room.name" id="c44c7581-24ff-462b-a3c6-449e443e46cc" value="SUOB">Suite senza balcone</option>
            <option :id="room.id" :value="room.code" x-text="room.name" id="984807a4-8965-4ae8-bf18-98d6c29d5849" value="SUP">Superior</option>
          </select>
        </div>
      </div>
      <template x-if="Object.keys(offers).length">
        <div class="mb-8 dn" x-init="
                                        $nextTick(() => {
                                            selectOffer = function(id, shouldScrollToForm = true) {
                                                selectedLastMinuteOffer = null;

                                                $el.classList.remove('dn');
                                                formData.roomStays[0].selectedRatePlan = id;
                                                if (offers[id].code) {
                                                    formData.roomStays[0].ratePlan = offers[id].code;
                                                    formData.roomStays[0].ratePlanDescription = offers[id].name;
                                                } else {
                                                    formData.roomStays[0].ratePlan = offers[id].name;
                                                }

                                                minAdults = configuredMinAdults;
                                                maxAdults = configuredMaxAdults;

                                                if (formData.roomStays[0].adults.count < minAdults) {
                                                    formData.roomStays[0].adults.count = minAdults;
                                                } else if (formData.roomStays[0].adults.count > maxAdults) {
                                                    formData.roomStays[0].adults.count = maxAdults;
                                                }

                                                if (datePicker &amp;&amp; offers[id].timespans) {
                                                    const timespan = offers[id].timespans[0];
                                                    let startsAt = new Date(timespan.startsAt);
                                                    if (new Date() > startsAt) {
                                                        startsAt = new Date();
                                                    }
                                                    datePicker.setEndDate(timespan.endsAt);
                                                    datePicker.setStartDate(startsAt);
                                                    datePicker.trigger('select');
                                                }

                                                shouldScrollToForm &amp;&amp; typeof scrollToForm === 'function' &amp;&amp; scrollToForm();
                                            }
                                        })
                                    ">
          <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="ratePlan">Offerta</label>
          <div class="relative h-12">
            <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
              <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
            </div>
            <select class="relative w-full h-full bg-transparent pl-2 pr-4" name="ratePlan" id="ratePlan" x-model="formData.roomStays[0].selectedRatePlan" x-data="{
                                                get sortedOffers() {
                                                    const offersArray = [];
                                                    for (const [key, value] of Object.entries(offers)) {
                                                        offersArray.push({ ...value });
                                                    }

                                                    return offersArray.sort((a, b) => a.name.localeCompare(b.name));
                                                }
                                            }" @change="
                                                target = $event.target;
                                                offerId = target.options[target.selectedIndex].value;

                                                if (!offerId) {
                                                    formData.roomStays[0].ratePlan = null;
                                                    formData.roomStays[0].ratePlanDescription = null;
                                                } else if (offers[offerId].code) {
                                                    formData.roomStays[0].ratePlan = offers[offerId].code;
                                                    formData.roomStays[0].ratePlanDescription = offers[offerId].name;
                                                } else {
                                                    formData.roomStays[0].ratePlan = offers[offerId].name;
                                                }

                                                
                                            ">
              <option value="">Nessuna offerta</option>
              <template x-for="offer in sortedOffers">
                <option :value="offer.id" x-text="offer.name"></option>
              </template>
            </select>
          </div>
        </div>
      </template>
      <div class="mb-8 dn" x-init="
                                        $nextTick(() => {
                                            selectOffer = function(id, shouldScrollToForm = true) {
                                                selectedLastMinuteOffer = null;

                                                $el.classList.remove('dn');
                                                formData.roomStays[0].selectedRatePlan = id;
                                                if (offers[id].code) {
                                                    formData.roomStays[0].ratePlan = offers[id].code;
                                                    formData.roomStays[0].ratePlanDescription = offers[id].name;
                                                } else {
                                                    formData.roomStays[0].ratePlan = offers[id].name;
                                                }

                                                minAdults = configuredMinAdults;
                                                maxAdults = configuredMaxAdults;

                                                if (formData.roomStays[0].adults.count < minAdults) {
                                                    formData.roomStays[0].adults.count = minAdults;
                                                } else if (formData.roomStays[0].adults.count > maxAdults) {
                                                    formData.roomStays[0].adults.count = maxAdults;
                                                }

                                                if (datePicker &amp;&amp; offers[id].timespans) {
                                                    const timespan = offers[id].timespans[0];
                                                    let startsAt = new Date(timespan.startsAt);
                                                    if (new Date() > startsAt) {
                                                        startsAt = new Date();
                                                    }
                                                    datePicker.setEndDate(timespan.endsAt);
                                                    datePicker.setStartDate(startsAt);
                                                    datePicker.trigger('select');
                                                }

                                                shouldScrollToForm &amp;&amp; typeof scrollToForm === 'function' &amp;&amp; scrollToForm();
                                            }
                                        })
                                    ">
        <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="ratePlan">Offerta</label>
        <div class="relative h-12">
          <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
            <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
          </div>
          <select class="relative w-full h-full bg-transparent pl-2 pr-4" name="ratePlan" id="ratePlan" x-model="formData.roomStays[0].selectedRatePlan" x-data="{
                                                get sortedOffers() {
                                                    const offersArray = [];
                                                    for (const [key, value] of Object.entries(offers)) {
                                                        offersArray.push({ ...value });
                                                    }

                                                    return offersArray.sort((a, b) => a.name.localeCompare(b.name));
                                                }
                                            }" @change="
                                                target = $event.target;
                                                offerId = target.options[target.selectedIndex].value;

                                                if (!offerId) {
                                                    formData.roomStays[0].ratePlan = null;
                                                    formData.roomStays[0].ratePlanDescription = null;
                                                } else if (offers[offerId].code) {
                                                    formData.roomStays[0].ratePlan = offers[offerId].code;
                                                    formData.roomStays[0].ratePlanDescription = offers[offerId].name;
                                                } else {
                                                    formData.roomStays[0].ratePlan = offers[offerId].name;
                                                }

                                                
                                            ">
            <option value="">Nessuna offerta</option>
            <template x-for="offer in sortedOffers">
              <option :value="offer.id" x-text="offer.name"></option>
            </template>
            <option :value="offer.id" x-text="offer.name" value="0868526e-d6fb-4983-b58c-1a6ad1ed483a">Estate &amp; natura</option>
            <option :value="offer.id" x-text="offer.name" value="b5aaa020-6089-4e8a-beae-d40b7432db3b">Famiglia &amp; benessere</option>
            <option :value="offer.id" x-text="offer.name" value="95e7d521-a501-40f6-b7f3-83c8f259924b">Happy Family</option>
            <option :value="offer.id" x-text="offer.name" value="bd9566ca-aba8-48fd-91fc-6411049481b2">Happy Family</option>
            <option :value="offer.id" x-text="offer.name" value="4f49012f-9954-4dc4-a3ba-96405a193848">Partenza vacanze -10%</option>
            <option :value="offer.id" x-text="offer.name" value="c8e04476-c35c-43d8-9e05-cfdcdaa5029e">Tempo libero per la famiglia</option>
          </select>
        </div>
      </div>
    </div>
    <div class="lg:w-1/2 lg:pl-20">
      <div class="font-semibold mb-6">Contatto</div>
      <div class="mb-3">
        <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="title">Titole</label>
        <div class="relative h-12">
          <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
            <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
          </div>
          <select class="relative w-full h-full bg-transparent pl-2 pr-4" name="title" id="title" x-model="formData.person.gender">
            <option value="" selected="selected">Seleziona titolo</option>
            <option value="none">Non specificato</option>
            <option value="f">Gentile Signora</option>
            <option value="m">Gentile Signor</option>
          </select>
        </div>
      </div>
      <div class="h-5"></div>
      <div class="mb-3">
        <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="givenName">Nome *</label>
        <div class="relative h-12">
          <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
            <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
          </div>
          <input class="relative w-full h-full bg-transparent pl-2 pr-4" id="givenName" name="givenName" x-model="formData.person.givenName">
        </div>
        <div class="block label-font-style h-5 text-red" x-text="validation.givenName.message"></div>
      </div>
      <div class="mb-3">
        <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="familyName">Cognome *</label>
        <div class="relative h-12">
          <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
            <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
          </div>
          <input class="relative w-full h-full bg-transparent pl-2 pr-4" id="familyName" name="familyName" x-model="formData.person.familyName">
        </div>
        <div class="block label-font-style h-5 text-red" x-text="validation.familyName.message"></div>
      </div>
      <div class="mb-3">
        <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="email">Indirizzo e-mail *</label>
        <div class="relative h-12">
          <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
            <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
          </div>
          <input class="relative w-full h-full bg-transparent pl-2 pr-4" id="email" type="email" name="email" x-model="formData.person.email">
        </div>
        <div class="block label-font-style h-5 text-red" x-text="validation.email.message"></div>
      </div>
      <div class="mb-12" x-data="{showAnnotation: false}">
        <template x-if="!showAnnotation">
          <button type="button" class="flex items-center justify-center px-4 min-h-8 rounded-sm border bg-transparent transition button-font-style md:button-font-style text-button border-button hover:opacity-60" @click="showAnnotation = true">
            <svg class="min-w-3" width="12" height="12" viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
              <path
                d="M6.20842 0.166748C6.43853 0.166748 6.62508 0.353296 6.62508 0.583415V5.37508H11.4167C11.6469 5.37508 11.8334 5.56163 11.8334 5.79175V6.20842C11.8334 6.43853 11.6469 6.62508 11.4167 6.62508H6.62508V11.4167C6.62508 11.6469 6.43853 11.8334 6.20842 11.8334H5.79175C5.56163 11.8334 5.37508 11.6469 5.37508 11.4167V6.62508H0.583415C0.353296 6.62508 0.166748 6.43853 0.166748 6.20842V5.79175C0.166748 5.56163 0.353296 5.37508 0.583415 5.37508H5.37508V0.583415C5.37508 0.353296 5.56163 0.166748 5.79175 0.166748H6.20842Z">
              </path>
            </svg>
            <span class="ml-2">Aggiungere annotazione</span>
          </button>
        </template><button type="button" class="flex items-center justify-center px-4 min-h-8 rounded-sm border bg-transparent transition button-font-style md:button-font-style text-button border-button hover:opacity-60"
          @click="showAnnotation = true">
          <svg class="min-w-3" width="12" height="12" viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
            <path
              d="M6.20842 0.166748C6.43853 0.166748 6.62508 0.353296 6.62508 0.583415V5.37508H11.4167C11.6469 5.37508 11.8334 5.56163 11.8334 5.79175V6.20842C11.8334 6.43853 11.6469 6.62508 11.4167 6.62508H6.62508V11.4167C6.62508 11.6469 6.43853 11.8334 6.20842 11.8334H5.79175C5.56163 11.8334 5.37508 11.6469 5.37508 11.4167V6.62508H0.583415C0.353296 6.62508 0.166748 6.43853 0.166748 6.20842V5.79175C0.166748 5.56163 0.353296 5.37508 0.583415 5.37508H5.37508V0.583415C5.37508 0.353296 5.56163 0.166748 5.79175 0.166748H6.20842Z">
            </path>
          </svg>
          <span class="ml-2">Aggiungere annotazione</span>
        </button>
        <template x-if="showAnnotation">
          <div>
            <label class="block small-font-style mb-1 opacity-40 md:small-font-style" for="text">Note</label>
            <div class="relative">
              <div class="absolute top-0 left-0 w-full h-full border border-main rounded-sm opacity-10">
                <div class="absolute top-0 left-0 w-full h-full bg-main opacity-50"></div>
              </div>
              <textarea class="relative block w-full h-25 bg-transparent p-2" type="text" id="text" name="text" x-model="formData.text"></textarea>
            </div>
          </div>
        </template>
      </div>
      <div class="inline-flex flex-col">
        <div class="inline-flex items-center cursor-pointer" type="button" @click="formData.person.newsletter = !formData.person.newsletter">
          <div class="flex items-center justify-center w-5 min-w-5 h-5 min-h-5 border border-button rounded-sm transition " :class="{'bg-button' : formData.person.newsletter}">
            <svg class="text-button-contrast opacity-0 transition " :class="{'opacity-100' : formData.person.newsletter}" width="10" height="7" viewBox="0 0 10 7" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
              <path
                d="M8.1161 0.823204C8.31136 0.627942 8.62794 0.627942 8.8232 0.823204L9.17676 1.17676C9.37202 1.37202 9.37202 1.6886 9.17676 1.88386L4.35354 6.70709C4.15827 6.90235 3.84169 6.90235 3.64643 6.70709L0.823204 3.88386C0.627942 3.6886 0.627942 3.37202 0.823204 3.17676L1.17676 2.8232C1.37202 2.62794 1.6886 2.62794 1.88386 2.8232L3.99998 4.93932L8.1161 0.823204Z">
              </path>
            </svg>
          </div>
          <div class="ml-4">Vorrei ricevere la newsletter</div>
          <input type="hidden" name="newsletter" x-model="formData.person.newsletter" value="false">
        </div>
        <div class="inline-flex items-center cursor-pointer mt-2" type="button" @click="privacy = !privacy">
          <div class="flex items-center justify-center w-5 min-w-5 h-5 min-h-5 border border-button rounded-sm transition" :class="{'bg-button' : privacy}">
            <svg class="text-button-contrast opacity-0 transition" :class="{'opacity-100' : privacy}" width="10" height="7" viewBox="0 0 10 7" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
              <path
                d="M8.1161 0.823204C8.31136 0.627942 8.62794 0.627942 8.8232 0.823204L9.17676 1.17676C9.37202 1.37202 9.37202 1.6886 9.17676 1.88386L4.35354 6.70709C4.15827 6.90235 3.84169 6.90235 3.64643 6.70709L0.823204 3.88386C0.627942 3.6886 0.627942 3.37202 0.823204 3.17676L1.17676 2.8232C1.37202 2.62794 1.6886 2.62794 1.88386 2.8232L3.99998 4.93932L8.1161 0.823204Z">
              </path>
            </svg>
          </div>
          <div class="ml-4">Accetto <a class="text-main underline" href="https://www.hotelalpenhof.it/it/privacy/" target="_blank" @click.stop="">l'informativa sulla privacy</a>*</div>
          <input type="hidden" name="privacy" x-model="privacy" value="false">
        </div>
        <label class="label-font-style text-red" x-text="validation.privacy.message"></label>
        <input class="relative h-0" tabindex="-1" id="additiveBt" name="additiveBt" type="text" x-model="formData.additiveBt">
      </div>
    </div>
  </div>
  <div class="flex flex-col justify-between lg:flex-row">
    <div class="lg:w-1/2 lg:pr-20">
      <div class="small-font-style opacity-40 md:small-font-style">I campi segnati con * sono obbligatori</div>
    </div>
    <div class="mt-3 lg:mt-0 lg:w-1/2 lg:pl-20">
      <button class="flex items-center justify-center px-7 h-12 button-font-style md:button-font-style text-white bg-cta rounded-sm transition" :disabled="isLoading" x-data="{
                                        get buttonText() {
                                            return this.isLoading ? '' : (this.isBooking ? 'Prenotare adesso' : (this.hasRequestSent ? 'Nuova richiesta' : 'Inviare richiesta'));
                                        }
                                    }">
        <div :class="{ 'spinner' : isLoading }" x-text="buttonText">Inviare richiesta</div>
      </button>
    </div>
  </div>
  <template x-if="selectedLastMinuteOffer">
    <div class="flex flex-col lg:flex-row">
      <div class="mt-6 order-1 lg:w-1/2 lg:pr-20">
      </div>
      <div class="mt-3 lg:order-2 lg:mt-0 lg:w-1/2 lg:pl-20">
        <div class="flex mt-3" :class="{ 'dn': !isBooking }">
          <div x-data="{
                                            get lastMinuteDiscountedPrice() {
                                                const rateType = selectedLastMinuteOffer.rateType;
                                                const personCount = rateType === 'per_room' ? 1 : formData.roomStays[0].adults.count;
                                                const discountedPrice = new Intl.NumberFormat('it', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(selectedLastMinuteOffer.discountedPrice * personCount);
                                                return discountedPrice + ' €';
                                            }
                                        }" x-text="lastMinuteDiscountedPrice"></div>
          <div class="flex opacity-60 ml-4">
            <span>invece di</span>
            <div class="ml-1" x-data="{
                                                get lastMinutePrice() {
                                                    const rateType = selectedLastMinuteOffer.rateType;
                                                    const personCount = rateType === 'per_room' ? 1 : formData.roomStays[0].adults.count;
                                                    const price = new Intl.NumberFormat('it', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(selectedLastMinuteOffer.price * personCount);
                                                    return price + ' €';
                                                }
                                            }" x-text="lastMinutePrice"></div>
          </div>
        </div>
        <div class="button-font-style md:button-font-style mt-6 lg:text-right underline" role="button" x-data="{
                                            get formSwitchText() {
                                                return isBooking ? 'Alle richieste senza impegno' : 'Prenoti ora per approfittarne subito';
                                            }
                                        }" x-text="formSwitchText" @click="isBooking = !isBooking">
        </div>
      </div>
    </div>
  </template>
  <template x-if="isResendDialog">
    <div class="fixed top-0 left-0 flex items-center justify-center w-full h-full text-main bg-dialog-background z-20" @click="isResendDialog = false; isDialogOpen = false;">
      <div class="absolute top-0 left-0 w-full h-full overflow-auto md:py-20" x-data="{
                                    isCloseButtonFixed: null,
                                }" @scroll="isCloseButtonFixed = $refs.dialogContainer.firstElementChild.getBoundingClientRect().top < 0" x-ref="dialogContainer">
        <div class="relative w-full bg-ambient mx-auto rounded-sm md:mw-180 lg:mw-220" @click.stop="">
          <div class="p-12 sm:p-16 rte">
            <h1>Invio altra richiesta?</h1>
            <div class="mt-4">La Sua richiesta è stata inoltrata. Vorrebbe inviare un'altra richiesta che contiene le stesse informazioni?</div>
            <div class="relative w-full flex mt-8">
              <button class="flex items-center justify-center px-4 h-8 rounded-sm border transition bg-transparent button-font-style md:button-font-style text-button border-button hover:bg-button hover:text-button-contrast" type="button"
                @click="lastRequestSent = null; isResendDialog = false; this.isDialogOpen = false; submitData();"> Invia di nuovo </button>
              <button class="flex items-center justify-center px-4 h-8 ml-2 rounded-sm border transition bg-transparent button-font-style md:button-font-style text-button border-button hover:bg-button hover:text-button-contrast" type="button"
                @click="isResendDialog = false; this.isDialogOpen = false;"> Annulla </button>
            </div>
          </div>
          <div class="absolute flex justify-end w-full top-6 mx-auto px-6 z-10 pointer-events-none md:mw-180 lg:mw-220 lg:top-8 lg:px-8" :class="{
                                            'fixed' : isCloseButtonFixed,
                                            'absolute' : !isCloseButtonFixed
                                        }">
            <button type="button" class="relative flex items-center justify-center w-10 h-10 bg-transparent pointer-events-all text-main transition hover:opacity-40" @click="isResendDialog = false; isDialogOpen = false;">
              <div class="absolute top-0 left-0 w-full h-full rounded-sm transition bg-ambient opacity-60"></div>
              <div class="absolute top-0 left-0 w-full h-full rounded-sm bg-main opacity-05 transition"></div>
              <svg class="relative" width="12" height="12" viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
                <path
                  d="M7.05783 6.0001L11.8308 10.7731C12.0261 10.9683 12.0261 11.2849 11.8308 11.4802L11.4772 11.8337C11.282 12.029 10.9654 12.029 10.7701 11.8337L5.99717 7.06076L1.2242 11.8337C1.02893 12.029 0.712352 12.029 0.51709 11.8337L0.163536 11.4802C-0.0317257 11.2849 -0.0317257 10.9683 0.163536 10.7731L4.93651 6.0001L0.163536 1.22713C-0.0317257 1.03186 -0.0317257 0.715282 0.163536 0.520019L0.51709 0.166466C0.712352 -0.028796 1.02893 -0.028796 1.2242 0.166466L5.99717 4.93944L10.7701 0.166466C10.9654 -0.028796 11.282 -0.028796 11.4772 0.166466L11.8308 0.520019C12.0261 0.715282 12.0261 1.03186 11.8308 1.22713L7.05783 6.0001Z">
                </path>
              </svg>
            </button>
          </div>
        </div>
      </div>
    </div>
  </template>
</form>

Text Content

Questo sito si serve dei cookie per migliorare l’esperienza utente. Inoltre, con
il consenso dell’utente, vengono usati cookie posti da servizi di terzi per
personalizzare gli annunci.
Non acconsentoAcconsento
<img height="1" width="1" style="display:none"
src="https://www.facebook.com/tr?id=1061313900916157&ev=PageView&noscript=1"/>


FAMILY HOTEL ALPENHOF A RASUN-ANTERSELVA

Offriamo la vacanza perfetta per la famiglia in Val Pusteria, Alto Adige. Da noi
ce n'è per tutti i gusti, sia in estate che in inverno. Per i più piccoli, per i
medi e naturalmente per i grandi.




Galleria Apri la galleria
Mostra immagini
1 / 7
TEMPO IN FAMIGLIA
AVVENTURE
RELAX
MOMENTI DI PIACERE

5 / 5
Ambiente molto familiare. Personale molto gentile e disponibile per qualsiasi
richiesta. Ottima cucina con prodotti locali di alta qualità.
— Nicoletta - Marzo 2024 su Tripadvisor
5 / 5
È un hotel bellissimo, ottimo per cucina, pulizia e servizio. La spa è divisa in
due parti: una per le famiglie con 2 piscine e la sauna, l’altra con un
idromassaggio da sogno e sauna solo per adulti.
— Michela - Marzo 2024 su Tripadvisor
5 / 5
Un vero family hotel dotato di tutti i comfort! Personale gentile e
professionale sempre pronto a soddisfare ogni esigenza. Ci piacerebbe ritornare!
— Sami - Febbraio 2024 su Tripadvisor

1 / 3
9.1
/
10
Aggiornato il 15.04.2024
4.8
/
5
Aggiornato il 15.04.2024
6
/
6
Aggiornato il 15.04.2024


IL PARADISO DELLE VACANZE IN FAMIGLIA



Vivere la splendida natura altoatesina, sperimentare tante emozionanti avventure
e trascorrere del tempo con la famiglia. È possibile superare una vacanza
all'Alpenhof?



Vacanza per grandi e piccini
Vacanza per grandi e piccini
Relax
Principesse e cavalieri
Avventure estive
Esperienze invernali

Vacanza per grandi e piccini

Relax

Principesse e cavalieri

Avventure estive

Esperienze invernali


Hotel per famiglie

Perfetto per tutta la famiglia: i bambini si godono il tempo libero nel centro
di cura per bambini, mentre i genitori si rilassano nella spa.

A tavola

Il viaggio culinario inizia con la colazione a buffet, si ferma allo spuntino
del pranzo e a quello del pomeriggio e si conclude con una cena di 5 portate.

Programma settimanale

Nel nostro programma settimanale troverete escursioni varie e attività
emozionanti.

Piscina indoor e outdoor

Vi aspettano ben 60 m² di divertimento balneare, di cui 20 m² all'aperto, con
getti, lettini e pavimento massaggianti.

Già sudato oggi?

La sauna rende felici. Che sia nella sauna finlandese, nella Kids e Family Sauna
o nella sauna di fieno e pietre.

Per mamma e papà

Con i nostri trattamenti e massaggi potete dimenticare per un attimo la vita
quotidiana e rilassarvi.

Vasca per bambini

Lo scivolo nella piscina per bambini offre ai più piccoli un puro divertimento
balneare.

Tempo libero dai genitori!

Da noi i bambini si sentono particolarmente a casa: in gruppi adatti alla loro
età e ben seguiti, l'avventura in vacanza può iniziare.

Mini Club

Ai vostri posti, preparatevi, giocate: i nostri piccoli ospiti (dai 3-5 anni)
sono in buone mani nel Mini Club.

Maxi Club

Nel Maxi Club gli adolescenti non solo possono restare indisturbati ma possono
anche praticare sport e rilassarsi.

Investigatori della natura

Numerose ed emozionanti avventure attendono i nostri detectives della natura:
arrampicata, pesca, lettura di tracce e molto altro.

Baby Club

Bla-blare e gattonare: Nel nostro Baby Club i bambini vengono accuditi con molta
pazienza e attenzione.

Esperienze di trekking

Nei dintorni dell'Hotel Alpenhof ci sono sentieri escursionistici per famiglie
di ogni tipo. Un tour alla scoperta di foreste naturali e mondi animali.

Mountainbike & Bici

Un casco, due ruote e molte piste ciclabili di tutti i livelli vi attendono
nella natura della valle. Quando si parte?

Attivo all'aperto

Dal tiro con l'arco al golf: nella nostra zona si trova tutto ciò che serve per
una perfetta vacanza attiva con il bambino.

Sci e Snowboard

A Plan de Corones tutti troveranno la pista giusta: che si tratti di coniglietti
da sci più esperti che di principianti sulla neve.

Sci di fondo

Quasi 60 chilometri di piste da sci di fondo per scivolare sulla neve
scintillante, fino a far bruciare le cosce.

Divertimento sulla slitta

Fate un'escursione invernale in montagna e godetevi una pausa al sole prima di
scendere con lo slittino.

Hotel per famiglie

Perfetto per tutta la famiglia: i bambini si godono il tempo libero nel centro
di cura per bambini, mentre i genitori si rilassano nella spa.

A tavola

Il viaggio culinario inizia con la colazione a buffet, si ferma allo spuntino
del pranzo e a quello del pomeriggio e si conclude con una cena di 5 portate.

Programma settimanale

Nel nostro programma settimanale troverete escursioni varie e attività
emozionanti.

Piscina indoor e outdoor

Vi aspettano ben 60 m² di divertimento balneare, di cui 20 m² all'aperto, con
getti, lettini e pavimento massaggianti.

Già sudato oggi?

La sauna rende felici. Che sia nella sauna finlandese, nella Kids e Family Sauna
o nella sauna di fieno e pietre.

Per mamma e papà

Con i nostri trattamenti e massaggi potete dimenticare per un attimo la vita
quotidiana e rilassarvi.

Vasca per bambini

Lo scivolo nella piscina per bambini offre ai più piccoli un puro divertimento
balneare.

Tempo libero dai genitori!

Da noi i bambini si sentono particolarmente a casa: in gruppi adatti alla loro
età e ben seguiti, l'avventura in vacanza può iniziare.

Mini Club

Ai vostri posti, preparatevi, giocate: i nostri piccoli ospiti (dai 3-5 anni)
sono in buone mani nel Mini Club.

Maxi Club

Nel Maxi Club gli adolescenti non solo possono restare indisturbati ma possono
anche praticare sport e rilassarsi.

Investigatori della natura

Numerose ed emozionanti avventure attendono i nostri detectives della natura:
arrampicata, pesca, lettura di tracce e molto altro.

Baby Club

Bla-blare e gattonare: Nel nostro Baby Club i bambini vengono accuditi con molta
pazienza e attenzione.

Esperienze di trekking

Nei dintorni dell'Hotel Alpenhof ci sono sentieri escursionistici per famiglie
di ogni tipo. Un tour alla scoperta di foreste naturali e mondi animali.

Mountainbike & Bici

Un casco, due ruote e molte piste ciclabili di tutti i livelli vi attendono
nella natura della valle. Quando si parte?

Attivo all'aperto

Dal tiro con l'arco al golf: nella nostra zona si trova tutto ciò che serve per
una perfetta vacanza attiva con il bambino.

Sci e Snowboard

A Plan de Corones tutti troveranno la pista giusta: che si tratti di coniglietti
da sci più esperti che di principianti sulla neve.

Sci di fondo

Quasi 60 chilometri di piste da sci di fondo per scivolare sulla neve
scintillante, fino a far bruciare le cosce.

Divertimento sulla slitta

Fate un'escursione invernale in montagna e godetevi una pausa al sole prima di
scendere con lo slittino.


RICHIEDETE ORA LA VOSTRA VACANZA 

Richiesta non impegnativa
Il miglior prezzo garantito



DORMIRE & SOGNARE



Sentirsi riposati la mattina e quasi riuscire a toccare le montagne con un
dito. È così che vi svegliate ogni giorno all'Alpenhof. Rilassati e in forma.



da 165,00 €
Family Suite
55 m² per 4 - 6 persone
Dettagli Richiesta

da 150,00 €
Suite con balcone
40-50 m² per 2 - 4 persone
Dettagli Richiesta

da 140,00 €
Suite senza balcone
40-50 m² per 2 - 5 persone
Dettagli Richiesta

da 130,00 €
Superior
35-40 m² per 2 - 4 persone
Dettagli Richiesta

da 120,00 €
Comfort
28 m² per 2 - 3 persone
Dettagli Richiesta



+-1
mostra più camere
Dimensione

Numero di persone




ARREDAMENTO






RICHIESTA NON IMPEGNATIVA

Richiedete la camera
Il miglior prezzo garantito



TIFOSI DEL RISPARMIO: ATTENZIONE!



Vi proponiamo le giuste offerte per tutta la famiglia con risparmi incredibili.
Date uno sguardo alle nostre offerte e trovate la vacanza perfetta per la vostra
famiglia!



da 822,00 €
Happy Family
7 notti
30 apr 2024 - 17 mag 2024
vari periodi disponibili
Dettagli Richiesta

da 399,00 €
Tempo libero per la famiglia
3 notti
30 apr 2024 - 29 giu 2024
vari periodi disponibili
Dettagli Richiesta

da 959,00 €
Famiglia & benessere
7 notti
30 apr 2024 - 29 giu 2024
vari periodi disponibili
Dettagli Richiesta

da 572,00 €
Happy Family
5 notti
30 apr 2024 - 17 mag 2024
vari periodi disponibili
Dettagli Richiesta

da 739,00 €
Partenza vacanze -10%
5 notti
18 mag 2024 - 01 giu 2024
 
Dettagli Richiesta

da 1.211,00 €
Estate & natura
7 notti
29 giu 2024 - 08 sep 2024
 
Dettagli Richiesta


+0
mostra più offerte


OFFERTA








Disponibile nei seguenti periodi

-

Numero di pernottamenti




SERVIZI INCLUSI




RICHIESTA NON IMPEGNATIVA

Richiedete l'offerta
Il miglior prezzo garantito



OFFERTA


PARTENZA VACANZE -10%





DA 739,00 € A PERSONA


1 / 1
Disponibile nei seguenti periodi

-
-
18 mag 2024 - 01 giu 2024
Mostra panoramica mensile
Numero di pernottamenti

Numero di pernottamenti
5 notti

Risparmiate il 10% per l'inizio delle vacanze!



SERVIZI INCLUSI

 * Trattamento all inclusive (escluso bevande alcoliche e caffè)
 * Accesso gratuito a centro benessere e piscina
 * Tutti i giorni animazione per bambini e ragazzi da 3 a 16 anni
 * Su richiesta assistenza bebeé (da 6 mesi)
 * Un regalo per i bambini
 * Utilizzo gratuito di tutti i mezzi pubblici dell'Alto Adige
 * Noleggio gratuito di zaini, bastoncini per il nordic walking, cartine
   escursionistiche, bici, …




RICHIESTA NON IMPEGNATIVA

Richiedete l'offerta
Il miglior prezzo garantito



BUONO A SAPERSI

ALL INCLUSIVE

CULINARIA

 * Prima colazione a buffet ricca e genuina con prodotti locali di stagione e di
   alta qualità 
 * Piatti caldi a mezzogiorno per i bambini 
 * Ricco buffet di spuntini a pranzo per gli adulti
 * Buffet pomeridiano di torte squisite fatte in casa
 * Tutti i giorni menu gourmet di 4 o 5 portate con prodotti del nostro maso
   accompagnati da un buffet di insalate e di formaggi
 * Cucina per allergici e prodotti senza glutine di Dr. Schär
 * Ricco menu per bambini
 * Preparazione al momento di pappe per i neonati
 * Bevande analcoliche alla fontana di Pino
 * Cena di gala con musica live una volta alla settimana
 * Pasto dei bambini sotto la sorveglianza di un assistente




FAMIGLIA

 * Pacchetto baby composto da un lettino da campeggio, grata di protezione,
   scaldabiberon, bollitore, bagnetto per bambini, secchio mangiapannolini,
   fasciatoio, vasino, riduttore per WC, sgabello da bagno, zaino portabimbo,
   seggiolone, passeggino, baby phone
 * Noleggio bici con seggiolino per bambino (vi preghiamo di portare i caschetti
   da casa)
 * Programma di animazione per i bambini con bricolage, disegno, truccabimbi,
   varie giornate a tema, per andare alla scoperta della flora e fauna
   altoatesina, escursione notturna, tiro con l’arco e molto altro ancora…
 * Fattoria di nostra proprietà con coniglietti, capre nane, maiali e pony
 * Palestra con attrezzi moderni Technogym e vista panoramica sul paesaggio
   alpino
 * Accappatoi per tutta la famiglia, asciugamani, ciabatte da bagno in tutte le
   misure
 * Holiday Pass – utilizzo gratuito di treni e autobus in tutto l’Alto Adige


ALTRO



 * Servizio navetta dall'aeroporto di Bolzano







CHECK-IN E CHECK-OUT

 * Le camere sono disponibili dalle ore 13:00 in poi.
 * Il giorno di partenza siete pregati di liberare la vostra camera entro le ore
   10:00.





POLITICA DI CANCELLAZIONE

Costi di cancellazioni se non è stata stipulata la polizza annullamento viaggio
dell`Alpenhof Dolomit Family:

 * fino a 30 giorni prima dell’arrivo: la caparra viene trattenuta a titolo di
   penale
 * da 29 a 3 giorni prima dell’arrivo: 70% dell’importo totale
 * fino a 2 giorni prima dell’arrivo: 100% dell’importo totale

In caso di arrivo ritardato e/o partenza anticipata, mettiamo in conto il 100%
di tutte le notti prenotate. Tutti i servizi non usufruiti, specialmente i
pasti, non verranno rimborsati.



ANIMALI BENVENUTI

 * Il vostro amico a quattro zampe deve assolutamente partecipare alla vacanza
   in famiglia!
 * Il prezzo giornaliero per il vostro animale domestico è di 15,00 €. 
 * Confidiamo nella vostra comprensione che gli animali non sono ammessi nelle
   sale ristorante, sale giochi e centri benessere.





PREZZI

I nostri prezzi sono calcolati per persona e giorno di permanenza - esclusa
imposta di soggiorno. Il prezzo comprende un ricco pacchetto vacanze all
inclusive:

 * I prezzi per i bambini sono validi a partire da 2 ospiti paganti il prezzo
   pieno
 * Camera doppia uso singola: supplemento 70%
 * Animali domestici: 15,00 € a notte (senza cibo)
 * Late check out: prezzo giornaliero MENO 50%
 * Imposta di soggiorno: 2,50 € a persona/notte, a partire da 14 anni

Altre domande?
Basta inviarci una richiesta senza impegno, risponderemo volentieri a qualsiasi
domanda.

Richiesta preventivo


PRENOTARE DIRETTAMENTE ONLINE

 * Veloce e comodo
 * Il miglior prezzo garantito

Prenotare ora


RICHIESTA PREVENTIVO


PRENOTARE ONLINE

 * Vacanza in famiglia All inclusive
 * Programma di animazione per bambini
 * Mondo balneare per grandi e piccini




Cari ospiti! Desideriamo informarvi che ci prendiamo una pausa dal 07/04/2024 al
30/04/2024 e di conseguenza la nostra azienda alberghiera rimane chiusa. Non
vediamo l'ora di rivedervi dopo il suddetto periodo.

Compila tutti i campi obbligatori per effettuare la prenotazione.
Selezionare giorno d'arrivo e di partenza
Giorno d'arrivo
mar 30/04/2024

Giorno di partenza
mar 07/05/2024


7 notti
Dati di viaggio
Adulti
2 Adulti
Bambini
0 Bambini
Età bambini

Seleziona età

Bambini
0 Bambini
Età bambini

Seleziona età

Camera

Nessuna preferenza
Camera

Nessuna preferenza ComfortFamily SuiteSuite con balconeSuite senza
balconeSuperior
Offerta

Nessuna offerta
Offerta

Nessuna offerta Estate & naturaFamiglia & benessereHappy FamilyHappy
FamilyPartenza vacanze -10%Tempo libero per la famiglia
Contatto
Titole

Seleziona titolo Non specificato Gentile Signora Gentile Signor

Nome *


Cognome *


Indirizzo e-mail *


Aggiungere annotazione Aggiungere annotazione
Note

Vorrei ricevere la newsletter
Accetto l'informativa sulla privacy*
I campi segnati con * sono obbligatori
Inviare richiesta
invece di




INVIO ALTRA RICHIESTA?

La Sua richiesta è stata inoltrata. Vorrebbe inviare un'altra richiesta che
contiene le stesse informazioni?
Invia di nuovo Annulla

Il miglior prezzo garantito!
“100 % perfetto!” — Nicoletta - Marzo 2024 su Tripadvisor
Richiesta non impegnativa
da € 120,- a persona - All inclusive
Il miglior prezzo garantito!

Siamo lieti del vostro interesse e vi invieremo al più presto la nostra migliore
offerta per la vostra vacanza presso l’hotel Alpenhof.

Naturalmente siamo a vostra disposizione per qualsiasi ulteriore informazione,
al numero +39 0474 496 451 o all'indirizzo e-mail info@hotelalpenhof.it.

Nella speranza di potervi dare presto il benvenuto,

Cordiali saluti,

il team dell’hotel Alpenhof.




ERRORE!

Durante l'invio dei dati è apparso un errore. Si prega di riprovare.

it
de it en
Cookie
Privacy Editoriale



INFORMAZIONI SULL’USO DEI COOKIE

Informazioni dettagliate sull’elaborazione di dati personali e sulla protezione
dei dati sono reperibili nella nostra informativa sulla privacy.


COSA SONO I COOKIE?

I cookie sono righe di testo inviati dal sito web visitato al proprio browser.
Consentono al sito di memorizzare informazioni sull’ultima visita sul sito come
ad esempio la lingua preferita o altre impostazioni. 
I cookie possono essere suddivisi prevalentemente in due gruppi:

Cookie tecnici:
Questi cookie servono a memorizzare dati necessari per agevolare la navigazione
o per fornire i servizi richiesti dall'utente come ad esempio la navigazione o
il login. Senza questi cookie una parte del sito potrebbe non funzionare
correttamente.

Cookie di profilazione:
Questi cookie vengono usati per tracciare la navigazione dell'utente su internet
e creare profili su interessi, abitudini, scelte, ecc. Con questi cookie è
possibile mostrare messaggi pubblicitari o prodotti in linea con i dati
raccolti.


COME UTILIZZIAMO I COOKIE?

Noi utilizziamo cookie per migliorare l'esperienza utente. Inoltre utilizziamo
servizi di terzi per tracciare la navigazione dell'utente sul nostro sito web e
per registrare i contenuti per i quali si sta interessando. Anche questi servizi
memorizzano cookie sul dispositivo dell'utente.
Inoltre utilizziamo cookie per il remarketing. In questo caso Facebook e Google
vengono notificati sul fatto che un utente abbia visitato il nostro sito. Ciò
serve a fornire agli utenti del nostro sito e delle nostre landingpage dei
messaggi pubblicitari adatti ai loro interessi sulla piattaforma pubblicitaria
di Google e nei Social Network Facebook e Instagram.


COME SI POSSONO DISABILITARE I COOKIE?

I cookie per il remarketing possono essere disabilitati in ogni momento
visitando questa pagina e rifiutando l’utilizzo dei cookie tramite il link nel
banner.

Inoltre è possibile cambiare le impostazioni del browser per far si che i cookie
non vengano più salvati o per ricevere una notifica e poter decidere se
abilitare i cookie nei singoli casi.

In più la European Interactive Digital Advertising Alliance offre la possibilità
di disattivare cookie non tecnici posti da servizi di terzi sul seguente sito:
www.youronlinechoices.eu

La disattivazione dei cookie può compromettere la funzionalità del nostro sito.