webdevpuneet.com

Boutique Hotel Website HTML Template — Free Snippet

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

Copy & paste

Source Code


    <section class="st st-navbar-simple" data-uid="smvw6s7vi6ut7">
      <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="smvw6s7vi29he">
      <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="smvw6s7vi0mh5">
      <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="smvw6s7vijqty">
      <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-smvw6s7vijqty"><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-smvw6s7vijqty)"/><ellipse data-float cx="1100" cy="760" rx="420" ry="300" fill="url(#art-glow-smvw6s7vijqty)"/></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="smvw6s7vi1fo2">
      <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="smvw6s7vinrdl">
      <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="smvw6s7vivi51">
      <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="smvw6s7vi5d3n">
      <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-opening-hours" data-uid="smvw6s7vio6ex">
      <div class="st-wrap">
        <header class="st-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>
        <div class="oh" data-opennow data-tz="Europe/Lisbon" data-open-label="Open now" data-closes-label="closes at" data-shut-label="Closed now" data-opens-label="opens">
          <div class="oh-card oh-hours" data-anim="item">
            <div class="oh-top">
              <h3 class="oh-title">Reception hours</h3>
              <p class="oh-badge" data-open-badge role="status" hidden><span class="oh-dot" aria-hidden="true"></span><span class="oh-badge-text"></span></p>
            </div>
            <ol class="oh-list">
              <li class="oh-row" data-hours-row data-day="Monday" data-open="07:00" data-close="23:00" data-closed="">
                <span class="oh-day">Monday</span>
                <span class="oh-time"><time>07:00</time> <span aria-hidden="true">–</span> <time>23:00</time></span>
              </li>
              <li class="oh-row" data-hours-row data-day="Tuesday" data-open="07:00" data-close="23:00" data-closed="">
                <span class="oh-day">Tuesday</span>
                <span class="oh-time"><time>07:00</time> <span aria-hidden="true">–</span> <time>23:00</time></span>
              </li>
              <li class="oh-row" data-hours-row data-day="Wednesday" data-open="07:00" data-close="23:00" data-closed="">
                <span class="oh-day">Wednesday</span>
                <span class="oh-time"><time>07:00</time> <span aria-hidden="true">–</span> <time>23:00</time></span>
              </li>
              <li class="oh-row" data-hours-row data-day="Thursday" data-open="07:00" data-close="23:00" data-closed="">
                <span class="oh-day">Thursday</span>
                <span class="oh-time"><time>07:00</time> <span aria-hidden="true">–</span> <time>23:00</time></span>
              </li>
              <li class="oh-row" data-hours-row data-day="Friday" data-open="07:00" data-close="23:00" data-closed="">
                <span class="oh-day">Friday</span>
                <span class="oh-time"><time>07:00</time> <span aria-hidden="true">–</span> <time>23:00</time></span>
              </li>
              <li class="oh-row" data-hours-row data-day="Saturday" data-open="07:00" data-close="23:00" data-closed="">
                <span class="oh-day">Saturday</span>
                <span class="oh-time"><time>07:00</time> <span aria-hidden="true">–</span> <time>23:00</time></span>
              </li>
              <li class="oh-row" data-hours-row data-day="Sunday" data-open="07:00" data-close="23:00" data-closed="">
                <span class="oh-day">Sunday</span>
                <span class="oh-time"><time>07:00</time> <span aria-hidden="true">–</span> <time>23:00</time></span>
              </li>
            </ol>
            <p class="oh-special">Check-in from 15:00, check-out until 11:00. Arriving late? Tell us and we will leave your key.</p>
          </div>
          <div class="oh-side">
            <div class="oh-map" data-anim="media">
              <iframe class="oh-frame" loading="lazy" referrerpolicy="no-referrer-when-downgrade" src="https://www.openstreetmap.org/export/embed.html?bbox=-8.738900000000001%2C37.0842%2C-8.7289%2C37.0892&amp;layer=mapnik&amp;marker=37.0867%2C-8.7339" title="Map showing Casa Mar in Luz"></iframe>
            </div>
            <div class="oh-card oh-contact" data-anim="item">
              <ul class="oh-info">
                <li class="oh-item"><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>
                  <address class="oh-addr">
                    <span class="oh-line oh-name">Casa Mar</span>
                    <span class="oh-line">Rua da Praia 12</span>
                    <span class="oh-line"><span>8600-160</span> <span>Luz, Algarve</span></span>
                    <span class="oh-line">Portugal</span>
                  </address>
                </li>
                <li class="oh-item"><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="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z" /></svg></span><a class="oh-link" href="tel:+351282000123">+351 282 000 123</a></li>
                <li class="oh-item"><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"><rect width="20" height="16" x="2" y="4" rx="2" /><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7" /></svg></span><a class="oh-link" href="mailto:[email protected]">[email protected]</a></li>
              </ul>
              <div class="st-btns">
                <a class="st-btn" href="https://www.google.com/maps/search/?api=1&amp;query=Rua%20da%20Praia%2012%2C%208600-160%20Luz%2C%20Portugal"><span>Get directions</span></a>
                <a class="st-btn st-btn--ghost" href="tel:+351282000123"><span>Call reception</span></a>
              </div>
            </div>
          </div>
        </div>
      </div>
    </section>
    <section class="st st-popup-modal" data-uid="smvw6s7vi8k4y">
      <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="smvw6s7vid2he">
      <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>
    <section class="st st-back-to-top" data-uid="smvw6s7vi14g7">
      <div class="btt" data-btt data-enabled="on" data-distance="500" data-pos="right" data-appear="fade" data-speed="0.8" data-mobile="on" data-shadow="on" style="--btt-size:52px;--btt-off:24px;--btt-radius:50%;--btt-speed:0.8s">
        <div class="btt-demo" aria-hidden="true">
          <span class="btt-bar btt-bar--lg"></span><span class="btt-bar"></span><span class="btt-bar btt-bar--md"></span><span class="btt-bar"></span><span class="btt-bar btt-bar--sm"></span>
          <span class="btt-note">The button appears here once the page has scrolled</span>
        </div><!--/btt-demo-->
        <button type="button" class="btt-btn" aria-label="Back to top" title="Back to top"><svg class="btt-svg" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2.400" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M12 19V5M5 12l7-7 7 7"/></svg></button>
      </div>
    </section>
    <section class="st st-accessibility-toolbar" data-uid="smvw6s7vi3ncf">
      <div class="a11y" data-a11y data-pos="left" data-remember="on">
        <button type="button" class="a11y-fab" aria-expanded="false" data-a11y-open aria-label="Open accessibility tools">
          <svg viewBox="0 0 24 24" width="30" height="30" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="10"/><circle cx="12" cy="7.500" r="1.200" fill="currentColor"/><path d="M7 10.500l5 1 5-1M12 11.500v3.500M9.500 19l2.500-4 2.500 4"/></svg>
        </button>
        <div class="a11y-panel" role="dialog" tabindex="-1" hidden aria-label="Accessibility">
          <div class="a11y-head">
            <h2 class="a11y-title">Accessibility</h2>
            <button type="button" class="a11y-icon" data-a11y-reset aria-label="Reset all settings" title="Reset all settings"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 12a9 9 0 1 0 3-6.700L3 8"/><path d="M3 3v5h5"/></svg></button>
            <button type="button" class="a11y-icon" data-a11y-close aria-label="Close accessibility tools" title="Close accessibility tools"><svg viewBox="0 0 24 24" width="18" height="18" fill="none" stroke="currentColor" stroke-width="2.400" stroke-linecap="round" aria-hidden="true"><path d="M6 6l12 12M18 6 6 18"/></svg></button>
          </div>
          <div class="a11y-body">
            <div class="a11y-sec">
              <h3 class="a11y-h">Text</h3>
              <div class="a11y-grid">
                <button type="button" class="a11y-tile" data-feature="text" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M4 7V5h10v2M9 5v12M6 17h6"/><path d="M15 12h6M18 12v6"/></svg><span class="a11y-lab">Bigger text</span><span class="a11y-pips" aria-hidden="true"></span></button>
                <button type="button" class="a11y-tile" data-feature="lineheight" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M8 6h13M8 12h13M8 18h13"/><path d="M3 8l2-2 2 2M3 16l2 2 2-2"/></svg><span class="a11y-lab">Line height</span><span class="a11y-pips" aria-hidden="true"></span></button>
                <button type="button" class="a11y-tile" data-feature="align" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M4 6h16M4 12h10M4 18h14"/></svg><span class="a11y-lab">Text align</span><span class="a11y-pips" aria-hidden="true"></span></button>
                <button type="button" class="a11y-tile" data-feature="font" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M4 19 10 5l6 14M6.5 14h7"/><path d="M17 11h4M19 11v8"/></svg><span class="a11y-lab">Readable font</span><span class="a11y-pips" aria-hidden="true"></span></button>
              </div>
            </div>
            <div class="a11y-sec">
              <h3 class="a11y-h">Visual</h3>
              <div class="a11y-grid">
                <button type="button" class="a11y-tile" data-feature="contrast" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="9"/><path d="M12 3v18" /><path d="M12 3a9 9 0 0 1 0 18z" fill="currentColor"/></svg><span class="a11y-lab">Contrast</span><span class="a11y-pips" aria-hidden="true"></span></button>
                <button type="button" class="a11y-tile" data-feature="gray" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M12 3s6 6.2 6 10.5A6 6 0 0 1 6 13.500C6 9.200 12 3 12 3z"/><path d="M12 3v16.500" /></svg><span class="a11y-lab">Grayscale</span><span class="a11y-pips" aria-hidden="true"></span></button>
                <button type="button" class="a11y-tile" data-feature="images" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="3" y="5" width="18" height="14" rx="2"/><circle cx="9" cy="10" r="1.500"/><path d="m21 16-5-5-9 8M3 3l18 18"/></svg><span class="a11y-lab">Hide images</span><span class="a11y-pips" aria-hidden="true"></span></button>
                <button type="button" class="a11y-tile" data-feature="motion" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="12" cy="12" r="9"/><path d="M10 9v6M14 9v6"/></svg><span class="a11y-lab">Pause animations</span><span class="a11y-pips" aria-hidden="true"></span></button>
              </div>
            </div>
            <div class="a11y-sec">
              <h3 class="a11y-h">Orientation</h3>
              <div class="a11y-grid">
                <button type="button" class="a11y-tile" data-feature="links" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M10 14a4.500 4.500 0 0 0 6.400 0l3-3a4.500 4.500 0 0 0-6.400-6.400l-1 1"/><path d="M14 10a4.500 4.500 0 0 0-6.400 0l-3 3a4.500 4.500 0 0 0 6.400 6.400l1-1"/></svg><span class="a11y-lab">Highlight links</span><span class="a11y-pips" aria-hidden="true"></span></button>
                <button type="button" class="a11y-tile" data-feature="mask" aria-pressed="false"><svg class="a11y-ic" viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M3 9h18M3 15h18"/></svg><span class="a11y-lab">Reading mask</span><span class="a11y-pips" aria-hidden="true"></span></button>
              </div>
            </div>
            <p class="a11y-note">Your choices are saved on this device only.</p>
          </div>
        </div>
      </div>
    </section>

Extend with AI

Take This Template Further With AI

Give this prompt to an AI assistant to generate your own version of the Boutique Hotel Website template: swap in your business name, services and tone, add or remove sections, translate it, or turn the page into a Next.js project or a WordPress theme. Use the template above as the visual reference, so you and the AI start from a design that already works.

Prompt to recreate it

Copy this into your AI assistant of choice to build the effect from scratch, or as a jumping-off point for your own variant:

text
Build a complete boutique hotel website for “Casa Mar” as clean HTML, CSS and a little JavaScript.

Page structure, top to bottom:
1. Simple Sticky Navbar
2. Image Background Hero: “Slow mornings, salt-water days”
3. Horizontal Scroll Gallery: “Find your room”
4. Stacking Cards: “Everything for a slow stay”
5. Filterable Image Gallery: “A look around Casa Mar”
6. Testimonial Carousel: “Guests come back”
7. FAQ Accordion: “Before you arrive”
8. Booking Request Form: “Request your stay”
9. Opening Hours & Location: “Two minutes from the sea”
10. Popup & Promo Modal
11. Minimal Footer
12. Back to Top Button
13. Accessibility Toolbar Widget

Look and feel:
- Colours as CSS custom properties: brand #0f766e, page background #fbf8f3, cards #f1ebe1, text #1f2a24, muted text #5c665f. Corner radius 14px, content width 1200px.
- Headings in Playfair Display, body text in DM Sans (load both from Google Fonts with display=swap).
- Mobile first. Sections use CSS grid or flexbox and stack cleanly below 700px.

Content:
- Write real, believable travel & hospitality copy for every section instead of lorem ipsum: specific offers, numbers, names and calls to action.
- One clear primary action in the hero and again near the end.

Quality:
- Semantic HTML (header, main, section, footer) with exactly one h1, the hero headline, and one h2 per section.
- Accessible: alt text on every image, visible focus states, labelled form fields, buttons and links with clear text, and prefers-reduced-motion respected.
- SEO: title “Casa Mar: Boutique Hotel Two Minutes From the Algarve Sea”, a meta description of 150 to 160 characters, Open Graph tags and JSON-LD that suits a travel & hospitality business.
- Optional: a subtle GSAP ScrollTrigger fade-up on section headings, with content visible without JavaScript.

Also create these pages with the same navbar, footer and theme, and link them from the menu:
- Rooms (rooms.html)
- Experience (experience.html)
- Book (book.html)
- Privacy (privacy.html)

Want to tighten it up first? Run this prompt through the AI Prompt Studio to score it across 8 quality dimensions, catch anti-patterns, and tune the wording for Claude, ChatGPT, or Gemini before you paste it in.

What's included

Features

13 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, Opening Hours & Location, Popup & Promo Modal, Minimal Footer, Back to Top Button, Accessibility Toolbar Widget
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
Opening hours with a live Open now badge in the business time zone, the address, a map and call buttons, plus LocalBusiness data for search engines
A floating back to top button that appears as visitors scroll, on every page of the multi-page version
A floating accessibility toolbar with bigger text, contrast, grayscale, hide images and pause animations
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.

Interactive extras built in

Beyond the core sections, this template adds reception hours with a live Open now badge, the address, a map and a call button; a floating back to top button that appears after the visitor scrolls, so a long page is easy to leave and return; and a floating accessibility toolbar where visitors can enlarge text, raise contrast, hide images and pause animations. Each one has its own page in the Website Section Templates library (Opening Hours & Location, Back to Top Button, Accessibility Toolbar Widget), where you can try its settings on their own, and you can edit, move or remove any of them in the Website Builder.

Built from website section templates

The 13 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. Opening Hours & Locationreception hours with a live Open now badge, the address, a map and a call button
  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
  12. Back to Top Buttona floating back to top button that appears after the visitor scrolls, so a long page is easy to leave and return
  13. Accessibility Toolbar Widgeta floating accessibility toolbar where visitors can enlarge text, raise contrast, hide images and pause animations

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 adds an opening hours section with a live Open now badge, a floating back to top button and an accessibility toolbar. Each is a section you can edit, move or remove in the Website Builder, and each has its own page in the Website Section Templates library.

It is assembled from 13 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, Opening Hours & Location, Popup & Promo Modal, Minimal Footer, Back to Top Button, Accessibility Toolbar Widget. 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.