Boutique Hotel Website HTML Template — Free Snippet

Boutique Hotel Website template · 11 website sections · Plain HTML, CSS & JS · Customise it in the Website Builder

What's included

Features

11 ready-made website sections assembled into one finished boutique hotel website page: Simple Sticky Navbar, Image Background Hero, Horizontal Scroll Gallery, Stacking Cards, Filterable Image Gallery, Testimonial Carousel, FAQ Accordion, Booking Request Form, Contact With Map, Popup & Promo Modal, Minimal Footer
Every section links to its own page in the Website Section Templates library, where you can edit it on its own
One theme drives the whole page (colours, fonts, corner radius, width), so changing the brand takes a minute
Container-query responsive: each section adapts to the width it is placed in, from phone to desktop
GSAP entrance animations and scroll effects load from a CDN, and switch off for visitors who prefer reduced motion
Also available as a 6-page website in the builder, sharing one navbar, footer and theme
Plain HTML, CSS and JavaScript: copy the code here or export it to React, Vue, Angular or Tailwind

About this UI Snippet

A Boutique Hotel Website That Sells the Stay: Rooms, Experience and Direct Booking

Screenshot of the Boutique Hotel Website Template snippet rendered live

Small hotels and B&Bs compete with booking platforms that take a commission, so the site's job is to make a direct booking feel better. The dusk hero sets the mood and states the essentials (location, price from, availability), and the rooms scroll sideways as the guest scrolls down, a horizontal gallery that gives each room space to be looked at, which a grid of thumbnails cannot.

The experience is told in stacking cards, one idea at a time (breakfast, the garden, the walks nearby), so guests picture the stay rather than comparing room specifications. Reviews from past guests, a FAQ on check-in, parking and pets, and a booking request form with a map complete the page, with a popup available for a seasonal offer such as "stay three nights, pay for two".

Use your own photography, because in hospitality the images are the product. It is the layout of the Boutique Hotel Website template, which also comes as a multi-page site with Rooms, Experience and Book pages; open it in the Website Builder to edit and export.

Built from website section templates

The 11 Sections Behind This Boutique Hotel Website Page

This page is not one big block of code: it is stacked from ready-made sections in the free Website Section Templates library, in this order. Open any of them to edit it on its own, or start with the whole page.

  1. Simple Sticky Navbara sticky bar with a Book direct button, the action that saves you the platform commission
  2. Image Background Heroa dusk photograph with the location, a "from" price and a booking button
  3. Horizontal Scroll Galleryrooms that scroll sideways as the guest scrolls down, giving each one room to be looked at
  4. Stacking Cardsthe experience told in stacking cards: breakfast, the garden, the walks nearby
  5. Filterable Image Gallerya filterable gallery by room, dining and surroundings
  6. Testimonial Carouselreviews from past guests, which a booking platform would normally keep for itself
  7. FAQ Accordioncheck-in times, parking, pets and cancellation, answered before the enquiry
  8. Booking Request Forma booking request form with dates, guests and room preference
  9. Contact With Mapa map with directions, nearest station and parking
  10. Popup & Promo Modala popup for a seasonal offer such as three nights for the price of two
  11. Minimal Footera minimal footer with contact details, registration and legal links

Step by step

How to Use

  1. 1
    Open the template in the Website BuilderPress "Start using this template" to open the Boutique Hotel Website in the Website Builder. Everything is edited with forms in a side panel; no code is needed.
  2. 2
    Describe each room honestly with real photosAdd one slide per room with its name, size, bed type and a "from" price, using your own photography taken in good light.
  3. 3
    Write the experience cards about the stay, not the buildingUse the stacking cards for moments a guest will remember (the breakfast, the view, the evening drink) rather than a list of facilities.
  4. 4
    Offer a reason to book directUse the popup and booking form to offer something a platform does not, such as a welcome drink, free late checkout or a best-rate guarantee.
  5. 5
    Export and publishDownload one HTML file or a ZIP (or one HTML file per page for the multi-page version) and upload it to Netlify, Vercel, Cloudflare Pages, GitHub Pages or your own host. Or copy the code from this page and export it to React, Vue, Angular or Tailwind with the buttons above the editor.

Real-world uses

Common Use Cases

Boutique hotels, B&Bs and guest houses
Win direct bookings and reduce commission to booking platforms.
Holiday lets and glamping sites
Swap rooms for cabins or pitches and keep the same story-and-booking structure.
Learn horizontal scroll and stacking cards
See how GSAP ScrollTrigger drives a sideways gallery and a stack of cards that pin and layer.

Got questions?

Frequently Asked Questions

Rooms with photos and prices, what makes the stay special, reviews, practical answers, a way to book direct and a map.

The form sends booking requests to your email. For live availability, link the booking button to your property management or booking engine.

A horizontal gallery gives each room the full width of the screen, so photographs read bigger and guests look at each room properly.

It is assembled from 11 templates in the free Website Section Templates library: Simple Sticky Navbar, Image Background Hero, Horizontal Scroll Gallery, Stacking Cards, Filterable Image Gallery, Testimonial Carousel, FAQ Accordion, Booking Request Form, Contact With Map, Popup & Promo Modal, Minimal Footer. Each one has its own page where you can edit it separately.

It is the same page. Here you read and edit the HTML, CSS and JavaScript directly with a live preview; in the Website Builder you edit it with forms, change the theme once for the whole page, add pages and export a finished site.

Source Code


    <section class="st st-navbar-simple" data-uid="smvnkxdctoexb">
      <header class="st-wrap nb">
        <a class="st-brand" href="#">
          <span class="st-brand-mark"><span class="st-brand-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" /><path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" /></svg></span><span>Casa Mar</span></span>
        </a>
        <nav class="nb-nav" data-menu aria-label="Main">
          <ul class="nb-links">
            <li data-menu-item><a class="nb-link" href="#work"><span>Rooms</span></a></li>
            <li data-menu-item><a class="nb-link" href="#highlights"><span>Experience</span></a></li>
            <li data-menu-item><a class="nb-link" href="#customers"><span>Reviews</span></a></li>
            <li data-menu-item><a class="nb-link" href="#contact"><span>Location</span></a></li>
          </ul>
          <div class="nb-actions" data-menu-item>
            <a class="st-btn nb-cta" href="#contact"><span>Book a stay</span></a>
          </div>
        </nav>
        <button type="button" class="st-burger" data-menu-toggle aria-expanded="false" aria-label="Open menu"><span></span><span></span><span></span></button>
      </header>
      <i hidden data-sticky-flag></i>
    </section>
    <section class="st st-image-background-hero" data-uid="smvnkxdct8swn">
      <div class="ib-bg" role="img" aria-label="Background photo" style="background-image:url('https://webdevpuneet.com/images/section-templates/tpl-hotel.jpg')"></div>
      <div class="ib-shade" aria-hidden="true"></div>
      <div class="ib st-wrap">
        <div class="ib-copy">
          <span class="st-eyebrow ib-eyebrow" data-anim="item">Boutique hotel · Algarve coast</span>
          <h1 class="ib-title" data-anim="item" data-anim-text>Slow mornings, <span class="hl">salt-water days</span></h1>
          <p class="st-lead ib-lead" data-anim="item">Twenty-four rooms, a pool among the palms and the beach two minutes away. Breakfast is served until noon.</p>
          <div class="st-btns" data-anim="item">
            <a class="st-btn" href="#contact"><span>Book a stay</span></a>
            <a class="st-btn st-btn--ghost ib-ghost" href="#work"><span>See the rooms</span></a>
          </div>
        </div>
        <div class="ib-stats" data-anim="media">
          <div><strong>24</strong><span>rooms and suites</span></div>
          <div><strong>2 min</strong><span>to the beach</span></div>
          <div><strong>9.4</strong><span>guest rating</span></div>
        </div>
      </div>
    </section>
    <section id="work" class="st st-scroll-gallery" data-uid="smvnkxdct01u7">
      <div class="st-wrap hs-head">
        <div class="hs-titles">
          <p class="st-eyebrow" data-anim="item">Rooms &amp; suites</p>
          <h2 class="st-h2" data-anim="item" data-anim-text>Find <span class="hl">your room</span></h2>
        </div>
        <p class="st-lead hs-lead" data-anim="item">Every room has linen sheets, a rain shower and a balcony or garden terrace. Keep scrolling to see them all.</p>
      </div>
      <div class="hs-row" data-hscroll>
        <a class="hs-card" href="#contact">
          <img class="hs-img" width="900" height="1100" loading="lazy" src="https://webdevpuneet.com/images/section-templates/room-1.jpg" alt="Garden room with a double bed">
          <span class="hs-tag">From €160 / night</span>
          <span class="hs-title">Garden Room</span>
          <span class="hs-text">A quiet double opening onto the orange grove.</span>
        </a>
        <a class="hs-card" href="#contact">
          <img class="hs-img" width="900" height="1100" loading="lazy" src="https://webdevpuneet.com/images/section-templates/room-2.jpg" alt="Green-toned room with a large window">
          <span class="hs-tag">From €190 / night</span>
          <span class="hs-title">Palm Room</span>
          <span class="hs-text">Big windows over the palms and the pool.</span>
        </a>
        <a class="hs-card" href="#contact">
          <img class="hs-img" width="900" height="1100" loading="lazy" src="https://webdevpuneet.com/images/section-templates/room-3.jpg" alt="Dark suite with a sunset window">
          <span class="hs-tag">From €260 / night</span>
          <span class="hs-title">Sea View Suite</span>
          <span class="hs-text">Sunsets over the bay from a private balcony.</span>
        </a>
        <a class="hs-card" href="#contact">
          <img class="hs-img" width="900" height="1100" loading="lazy" src="https://webdevpuneet.com/images/section-templates/room-4.jpg" alt="Pink-toned loft room">
          <span class="hs-tag">From €240 / night</span>
          <span class="hs-title">Rose Loft</span>
          <span class="hs-text">A split-level loft with a reading nook.</span>
        </a>
      </div>
    </section>
    <section id="highlights" class="st st-scroll-stack" data-uid="smvnkxdct4jgl">
      <div class="st-art" aria-hidden="true" style="color:var(--st-brand);opacity:0.15" data-art-anim="float"><svg viewBox="0 0 1200 800" preserveAspectRatio="xMidYMid slice"><defs><radialGradient id="art-glow-smvnkxdct4jgl"><stop offset="0" stop-color="currentColor"/><stop offset="1" stop-color="currentColor" stop-opacity="0"/></radialGradient></defs><ellipse data-float cx="600" cy="80" rx="620" ry="380" fill="url(#art-glow-smvnkxdct4jgl)"/><ellipse data-float cx="1100" cy="760" rx="420" ry="300" fill="url(#art-glow-smvnkxdct4jgl)"/></svg></div>
      <div class="st-wrap">
        <header class="st-head">
          <p class="st-eyebrow" data-anim="item">The experience</p>
          <h2 class="st-h2" data-anim="item" data-anim-text>Everything for <span class="hl">a slow stay</span></h2>
          <p class="st-lead" data-anim="item">Scroll on for the little things guests remember.</p>
        </header>
        <div class="sk-list" data-stack>
          <article class="sk-card">
            <div class="sk-inner">
              <div class="sk-copy">
                <span class="st-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M10 2v2" /><path d="M14 2v2" /><path d="M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1" /><path d="M6 2v2" /></svg></span>
                <span class="sk-label">Mornings</span>
                <h3 class="sk-title">Breakfast until noon</h3>
                <p class="sk-text">Fresh bread, fruit from the garden and eggs any way you like, served on the terrace.</p>
              </div>
            </div>
          </article>
          <article class="sk-card">
            <div class="sk-inner">
              <div class="sk-copy">
                <span class="st-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z" /><path d="M20 3v4" /><path d="M22 5h-4" /><path d="M4 17v2" /><path d="M5 18H3" /></svg></span>
                <span class="sk-label">Afternoons</span>
                <h3 class="sk-title">Pool, spa and shade</h3>
                <p class="sk-text">A heated salt-water pool among the palms, a small spa and plenty of loungers.</p>
              </div>
            </div>
          </article>
          <article class="sk-card">
            <div class="sk-inner">
              <div class="sk-copy">
                <span class="st-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0" /><circle cx="12" cy="10" r="3" /></svg></span>
                <span class="sk-label">Days out</span>
                <h3 class="sk-title">Coves, vineyards and boats</h3>
                <p class="sk-text">We book boat trips, wine tastings and the best hidden beaches for you.</p>
              </div>
            </div>
          </article>
          <article class="sk-card">
            <div class="sk-inner">
              <div class="sk-copy">
                <span class="st-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z" /></svg></span>
                <span class="sk-label">Evenings</span>
                <h3 class="sk-title">Dinner under the stars</h3>
                <p class="sk-text">Grilled fish and local wine in the courtyard, three nights a week.</p>
              </div>
            </div>
          </article>
        </div>
      </div>
    </section>
    <section id="gallery" class="st st-gallery-grid" data-uid="smvnkxdctgv3a">
      <div class="st-wrap">
        <header class="st-head">
          <p class="st-eyebrow" data-anim="item">Gallery</p>
          <h2 class="st-h2" data-anim="item" data-anim-text>A look around <span class="hl">Casa Mar</span></h2>
          <p class="st-lead" data-anim="item">Rooms, the pool and the evenings on the terrace. Tap any photo to see it larger.</p>
        </header>
        <div class="gg-filters" data-gallery-filters role="group" aria-label="Filter photos" hidden data-all="All"></div>
        <ul class="gg-grid" data-gallery>
          <li class="gg-item" data-anim="item" data-tag="Rooms">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/room-1.jpg" alt="A bright double room with tall windows">
            <p class="gg-cap"><strong class="gg-title">Garden room</strong><span class="gg-text">Morning light and a quiet view</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Outdoors">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-hotel.jpg" alt="The hotel at dusk beside the pool">
            <p class="gg-cap"><strong class="gg-title">The pool at dusk</strong><span class="gg-text">Open until ten every evening</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Dining">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-restaurant.jpg" alt="Plates of food on a wooden table">
            <p class="gg-cap"><strong class="gg-title">Breakfast on the terrace</strong><span class="gg-text">Served from 8 until 11</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Rooms">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/room-3.jpg" alt="A dark suite with gold details">
            <p class="gg-cap"><strong class="gg-title">Night suite</strong><span class="gg-text">Our largest room, with a terrace</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Outdoors">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-nature.jpg" alt="Green hills at sunrise">
            <p class="gg-cap"><strong class="gg-title">The coast path</strong><span class="gg-text">Two minutes from the door</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Dining">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/wed-dinner.jpg" alt="A long table set with candles">
            <p class="gg-cap"><strong class="gg-title">Dinner by candlelight</strong><span class="gg-text">Long tables on summer evenings</span></p>
          </li>
        </ul>
      </div>
    </section>
    <section id="customers" class="st st-testimonials-carousel" data-uid="smvnkxdctg5nb">
      <div class="st-wrap">
        <div class="tc-top">
          <header class="st-head st-head--left tc-head">
            <p class="st-eyebrow" data-anim="item">Guest reviews</p>
            <h2 class="st-h2" data-anim="item" data-anim-text>Guests <span class="hl">come back</span></h2>
            <p class="st-lead" data-anim="item">9.4 from 820 verified reviews</p>
          </header>
          <div class="tc-arrows" data-anim="item">
            <button type="button" class="tc-arrow" data-carousel-prev><span class="tc-sr">Previous testimonials</span><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m15 18-6-6 6-6"/></svg></button>
            <button type="button" class="tc-arrow" data-carousel-next><span class="tc-sr">Next testimonials</span><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m9 18 6-6-6-6"/></svg></button>
          </div>
        </div>
        <div class="tc-track" data-carousel tabindex="0" role="region" aria-label="Testimonials">
          <figure class="tc-card" data-anim="item">
            <p class="st-stars" role="img" aria-label="Rated 5 out of 5"><span aria-hidden="true">★★★★★</span></p>
            <blockquote class="tc-quote"><p>The calmest week we have had in years. Breakfast on the terrace was the highlight of every day.</p></blockquote>
            <figcaption><div class="st-person">
                <img class="st-avatar" width="96" height="96" loading="lazy" src="https://webdevpuneet.com/images/section-templates/avatar-3.jpg" alt="">
                <div><p class="st-person-name">Hannah &amp; Tom</p><p class="st-person-role">Stayed in the Garden Room</p></div>
              </div></figcaption>
          </figure>
          <figure class="tc-card" data-anim="item">
            <p class="st-stars" role="img" aria-label="Rated 5 out of 5"><span aria-hidden="true">★★★★★</span></p>
            <blockquote class="tc-quote"><p>Thoughtful, warm staff who booked us the perfect boat trip. The Sea View Suite is worth every euro.</p></blockquote>
            <figcaption><div class="st-person">
                <img class="st-avatar" width="96" height="96" loading="lazy" src="https://webdevpuneet.com/images/section-templates/avatar-4.jpg" alt="">
                <div><p class="st-person-name">Rafael M.</p><p class="st-person-role">Stayed in the Sea View Suite</p></div>
              </div></figcaption>
          </figure>
          <figure class="tc-card" data-anim="item">
            <p class="st-stars" role="img" aria-label="Rated 5 out of 5"><span aria-hidden="true">★★★★★</span></p>
            <blockquote class="tc-quote"><p>Small enough to feel personal, beautiful enough to never want to leave. Already planning our return.</p></blockquote>
            <figcaption><div class="st-person">
                <img class="st-avatar" width="96" height="96" loading="lazy" src="https://webdevpuneet.com/images/section-templates/avatar-2.jpg" alt="">
                <div><p class="st-person-name">Elena K.</p><p class="st-person-role">Stayed in the Rose Loft</p></div>
              </div></figcaption>
          </figure>
        </div>
      </div>
    </section>
    <section id="faq" class="st st-faq-accordion" data-uid="smvnkxdct45su">
      <div class="st-wrap">
        <header class="st-head">
          <p class="st-eyebrow" data-anim="item">FAQ</p>
          <h2 class="st-h2" data-anim="item" data-anim-text>Before you <span class="hl">arrive</span></h2>
          <p class="st-lead" data-anim="item">Check-in, breakfast, children and getting here from the airport.</p>
        </header>
        <div class="fq-list" data-accordion="single first">
          <details class="st-acc" data-anim="item">
            <summary class="st-acc-q"><span>What time is check-in?</span><span class="st-acc-icon" aria-hidden="true"></span></summary>
            <div class="st-acc-a"><p>From 3 pm, and check-out is until 11 am. We store luggage before and after your stay.</p></div>
          </details>
          <details class="st-acc" data-anim="item">
            <summary class="st-acc-q"><span>Is breakfast included?</span><span class="st-acc-icon" aria-hidden="true"></span></summary>
            <div class="st-acc-a"><p>Yes, breakfast is included in every rate and served until noon.</p></div>
          </details>
          <details class="st-acc" data-anim="item">
            <summary class="st-acc-q"><span>Do you allow children?</span><span class="st-acc-icon" aria-hidden="true"></span></summary>
            <div class="st-acc-a"><p>Children over 12 are welcome; the hotel is designed as a quiet retreat.</p></div>
          </details>
          <details class="st-acc" data-anim="item">
            <summary class="st-acc-q"><span>Can you arrange airport transfers?</span><span class="st-acc-icon" aria-hidden="true"></span></summary>
            <div class="st-acc-a"><p>Yes. Faro airport is 45 minutes away and we can book a private transfer for you.</p></div>
          </details>
        </div>
      </div>
    </section>
    <section id="contact" class="st st-booking-form" data-uid="smvnkxdct0dme">
      <div class="st-wrap bk">
        <div class="bk-info">
          <header class="st-head st-head--left bk-head">
            <p class="st-eyebrow" data-anim="item">Book a stay</p>
            <h2 class="st-h2" data-anim="item" data-anim-text>Request <span class="hl">your stay</span></h2>
            <p class="st-lead" data-anim="item">Tell us the room, the day you arrive and roughly when. We reply within a few hours with availability and the best rate.</p>
          </header>
          <div class="bk-block" data-anim="item">
            <h3 class="bk-sub">Reception</h3>
            <dl class="bk-hours">
              <div class="bk-row"><dt>Reception</dt><dd>7:00 am – 11:00 pm</dd></div>
              <div class="bk-row"><dt>Check-in</dt><dd>from 3:00 pm</dd></div>
              <div class="bk-row"><dt>Check-out</dt><dd>until 11:00 am</dd></div>
            </dl>
          </div>
          <div class="bk-block" data-anim="item">
            <h3 class="bk-sub">Good to know</h3>
            <ul class="st-checks"><li>Check-in from 3 pm, check-out until 11 am</li><li>Breakfast included in every rate</li><li>Free cancellation up to 7 days before arrival</li></ul>
          </div>
        </div>
        <div class="bk-card" data-anim="media">
          <form class="st-form" method="post" data-form action="https://formspree.io/f/your-form-id">
            <div class="st-form-fields" data-form-fields>
              <div class="st-form-row">
                <label class="st-field"><span>Your name</span><input name="name" type="text" required autocomplete="name"></label>
                <label class="st-field"><span>Email</span><input name="email" type="email" required autocomplete="email"></label>
              </div>
              <label class="st-field"><span>Phone</span><input name="phone" type="tel" autocomplete="tel"></label>
              <label class="st-field"><span>Room</span><select name="service" required>
                  <option value="Garden room">Garden room</option>
                  <option value="Sea room">Sea room</option>
                  <option value="Night suite">Night suite</option>
                  <option value="Family suite">Family suite</option>
                </select></label>
              <div class="st-form-row">
                <label class="st-field"><span>Arrival date</span><input name="date" type="date" required data-booking-date></label>
                <label class="st-field"><span>Expected arrival</span><select name="time" required>
                    <option value="Before 2 pm">Before 2 pm</option>
                    <option value="Afternoon (2 pm – 6 pm)">Afternoon (2 pm – 6 pm)</option>
                    <option value="Evening (6 pm – 9 pm)">Evening (6 pm – 9 pm)</option>
                    <option value="Late (after 9 pm)">Late (after 9 pm)</option>
                  </select></label>
              </div>
              <label class="st-field"><span>Anything we should know?</span><textarea name="notes" rows="3"></textarea></label>
              <input class="st-hp" type="text" name="_gotcha" tabindex="-1" autocomplete="off" aria-hidden="true">
              <button class="st-btn st-form-btn" type="submit"><span>Request this stay</span></button>
              <p class="st-form-note">This is a request, not a confirmed booking. We reply with availability.</p>
              <p class="st-form-error" data-form-error hidden role="alert">Sorry, something went wrong. Please try again or call us directly.</p>
            </div>
            <div class="st-form-success" data-form-success hidden tabindex="-1" role="status">
              <span class="st-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg></span>
              <h3>Request received</h3>
              <p>Thank you. We will email you availability and the rate shortly.</p>
            </div>
          </form>
        </div>
      </div>
    </section>
    <section id="contact-2" class="st st-contact-map" data-uid="smvnkxdcuz7vp">
      <div class="st-wrap cm">
        <div class="cm-info">
          <header class="st-head st-head--left cm-head">
            <p class="st-eyebrow" data-anim="item">Find us</p>
            <h2 class="st-h2" data-anim="item" data-anim-text>Two minutes <span class="hl">from the sea</span></h2>
            <p class="st-lead" data-anim="item">On a quiet lane above Praia da Luz, 45 minutes from Faro airport.</p>
          </header>
          <ul class="cm-offices">
            <li class="cm-office" data-anim="item">
              <h3 class="cm-city">Casa Mar</h3>
              <address class="cm-address">Rua da Praia 12<br>8600-160 Luz, Algarve</address>
              <p class="cm-hours">Reception 8am – 10pm</p>
              <p class="cm-contact">
                <a href="tel:+351282000123"><span>+351 282 000 123</span></a>
                <a href="mailto:hello@webdevpuneet.com"><span>hello@webdevpuneet.com</span></a>
              </p>
            </li>
          </ul>
        </div>
        <div class="cm-map" data-anim="media">
          <iframe class="cm-frame" loading="lazy" referrerpolicy="no-referrer-when-downgrade" src="https://www.openstreetmap.org/export/embed.html?bbox=-0.1135%2C51.5185%2C-0.0955%2C51.5265&amp;layer=mapnik&amp;marker=51.5225%2C-0.1045" title="Map showing Casa Mar"></iframe>
        </div>
      </div>
    </section>
    <section class="st st-popup-modal" data-uid="smvnkxdcunsrb">
      <div class="pu" data-pu data-trigger="delay" data-delay="15" data-scroll="50" data-days="7" data-pos="bottom-center" data-layout="left" data-autoplay="0" data-pu-id="ncmalq">
        <div class="pu-backdrop" data-pu-close hidden></div>
        <div class="pu-dialog" role="dialog" aria-modal="true" aria-labelledby="pu-heading" tabindex="-1" hidden>
          <button type="button" class="pu-x" data-pu-close aria-label="Close popup"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button>
          <div class="pu-media">
            <img class="pu-img" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-hotel.jpg" alt="The terrace at Casa Mar">
          </div>
          <div class="pu-body">
            <p class="st-eyebrow">Book direct</p>
            <h2 class="pu-h" id="pu-heading">Save <span class="hl">10%</span> when you book direct</h2>
            <p class="pu-lead">Best price guaranteed, free breakfast and a late checkout on stays of two nights or more.</p>
            <div class="pu-ctas">
              <a class="st-btn pu-cta" href="#contact"><span>Check dates</span></a>
            </div>
            <button type="button" class="pu-no" data-pu-close><span>No thanks</span></button>
          </div>
        </div>
      </div>
    </section>
    <section class="st st-footer-minimal" data-uid="smvnkxdcuvwn7">
      <footer class="st-wrap fm">
        <div class="fm-row" data-anim="item">
          <a class="st-brand" href="#">
            <span class="st-brand-mark"><span class="st-brand-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8" /><path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z" /></svg></span><span>Casa Mar</span></span>
          </a>
          <nav aria-label="Footer"><ul class="fm-links"><li><a href="#work">Rooms</a></li><li><a href="#highlights">Experience</a></li><li><a href="#customers">Reviews</a></li><li><a href="#contact">Location</a></li></ul></nav>
          <div><ul class="st-socials">
              <li><a class="st-social" href="https://x.com/" aria-label="X (Twitter)"><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z" /></svg></span></a></li>
              <li><a class="st-social" href="https://www.linkedin.com/" aria-label="LinkedIn"><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z" /><rect width="4" height="12" x="2" y="9" /><circle cx="4" cy="4" r="2" /></svg></span></a></li>
              <li><a class="st-social" href="https://github.com/" aria-label="GitHub"><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4" /><path d="M9 18c-4.51 2-5-2-7-2" /></svg></span></a></li>
            </ul></div>
        </div>
        <p class="fm-copy">© 2026 Casa Mar Boutique Hotel</p>
      </footer>
    </section>
Design your website