Wedding Website HTML Template — Free CSS & JS Snippet

Wedding Website template · 9 website sections · Plain HTML, CSS & JS · Customise it in the Website Builder

What's included

Features

9 ready-made website sections assembled into one finished wedding website page: Floating Pill Navbar, Image Background Hero, Pinned Scroll Story, Scroll Path Timeline, Filterable Image Gallery, Split FAQ With Contact Card, Contact Form With Details, Floating Social Share Bar, 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 Wedding Website Guests Will Actually Use: Story, Timeline, Travel and RSVP

Screenshot of the Wedding Website Template snippet rendered live

A wedding site has one audience, your guests, and four jobs: tell the story, say where and when, answer the practical questions, and collect RSVPs. The floral hero opens with the date and venue so nobody has to hunt for them. The pinned scroll story walks guests through how you met as they scroll, which is the part they will enjoy, and the timeline that draws itself down the page shows the order of the day, from ceremony to the last dance.

A filterable gallery shares your photographs, and the split FAQ answers the questions that otherwise arrive by message (dress code, children, parking, accommodation) beside a contact card. The RSVP form then sends replies straight to your inbox. Share it with a single link.

Replace the names, venue and photos, and keep the order. It is the layout of the Wedding Website template, which also comes as a multi-page site with Our story, Travel & stay and RSVP pages; open it in the Website Builder to edit and export.

Built from website section templates

The 9 Sections Behind This Wedding 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. Floating Pill Navbara floating pill navbar with links to Story, Day, Travel and RSVP
  2. Image Background Heroa floral hero showing both names, the date and the venue first, so nobody hunts for them
  3. Pinned Scroll Storyyour story told step by step as guests scroll, pinned so each moment gets its own screen
  4. Scroll Path Timelinethe order of the day drawn as a path that fills as guests scroll, from ceremony to last dance
  5. Filterable Image Gallerya filterable gallery of engagement and pre-wedding photographs
  6. Split FAQ With Contact Carddress code, children, parking and where to stay, beside a contact card for your own questions
  7. Contact Form With Detailsan RSVP form that asks for names, attendance, meal choice and dietary needs
  8. Floating Social Share Bara floating bar for sharing the link with guests who could not RSVP yet
  9. Minimal Footera minimal footer with your hashtag and a thank-you

Step by step

How to Use

  1. 1
    Open the template in the Website BuilderPress "Start using this template" to open the Wedding Website in the Website Builder. Everything is edited with forms in a side panel; no code is needed.
  2. 2
    Put the essentials firstEdit the hero with your names, date and venue address, and add the RSVP deadline so guests know when to reply.
  3. 3
    Write the schedule for the dayFill the timeline with real times for arrival, ceremony, photographs, dinner and speeches, so guests can plan their day.
  4. 4
    Configure the RSVP formAdjust the fields to what you need (attending, meal choice, allergies, plus-ones) and send submissions to your email via Formspree or your own endpoint.
  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

A wedding website for guests
Share the story, schedule, travel and RSVP form with a single link.
Engagement parties and anniversaries
Reuse the layout for other celebrations by changing the story and timeline.
Learn pinned scroll stories and timelines
See how a pinned scroll story and a self-drawing timeline are built with GSAP ScrollTrigger and SVG paths.

Got questions?

Frequently Asked Questions

The date and venue, your story, the schedule, travel and accommodation advice, a gallery, answers to common questions and an RSVP form.

They fill in the form, which emails each response to you via Formspree or your own endpoint, with no account needed.

Yes. Add a link to your registry in the navbar, FAQ or a text block, and mention it in your invitations.

It is assembled from 9 templates in the free Website Section Templates library: Floating Pill Navbar, Image Background Hero, Pinned Scroll Story, Scroll Path Timeline, Filterable Image Gallery, Split FAQ With Contact Card, Contact Form With Details, Floating Social Share Bar, 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-floating" data-uid="smvnkxdcezcru">
      <div class="st-wrap">
        <header class="nf">
          <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="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" /></svg></span><span>Maya &amp; Daniel</span></span>
          </a>
          <nav class="nf-nav" data-menu aria-label="Main">
            <ul class="nf-links">
              <li data-menu-item><a class="nf-link" href="#story"><span>Our story</span></a></li>
              <li data-menu-item><a class="nf-link" href="#journey"><span>The day</span></a></li>
              <li data-menu-item><a class="nf-link" href="#faq"><span>Travel</span></a></li>
              <li data-menu-item><a class="nf-link" href="#contact"><span>RSVP</span></a></li>
            </ul>
            <a class="st-btn nf-cta" data-menu-item href="#contact"><span>RSVP</span></a>
          </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>
      </div>
      <i hidden data-sticky-flag></i>
    </section>
    <section class="st st-image-background-hero" data-uid="smvnkxdcevc3n">
      <div class="ib-bg" role="img" aria-label="Background photo" style="background-image:url('https://webdevpuneet.com/images/section-templates/tpl-wedding.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">14 June 2027 · Sintra, Portugal</span>
          <h1 class="ib-title" data-anim="item" data-anim-text>Maya &amp; Daniel are <span class="hl">getting married</span></h1>
          <p class="st-lead ib-lead" data-anim="item">We would love you to celebrate with us in the hills above Lisbon, with good food, long speeches and dancing until late.</p>
          <div class="st-btns" data-anim="item">
            <a class="st-btn" href="#contact"><span>RSVP</span></a>
            <a class="st-btn st-btn--ghost ib-ghost" href="#story"><span>Our story</span></a>
          </div>
        </div>
        <div class="ib-stats" data-anim="media">
          <div><strong>14.06.27</strong><span>save the date</span></div>
          <div><strong>Sintra</strong><span>Quinta da Serra</span></div>
          <div><strong>3 pm</strong><span>ceremony</span></div>
        </div>
      </div>
    </section>
    <section id="story" class="st st-scroll-story" data-uid="smvnkxdcedet9">
      <div class="st-wrap">
        <header class="st-head st-head--left">
          <p class="st-eyebrow" data-anim="item">Our story</p>
          <h2 class="st-h2" data-anim="item" data-anim-text>How we <span class="hl">found each other</span></h2>
          <p class="st-lead" data-anim="item">Eight years, two cities and one very nervous question.</p>
        </header>
        <div class="ps" data-story>
          <ol class="ps-steps">
            <li class="ps-step" data-story-step>
              <img class="ps-img" data-story-img width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/wed-dinner.jpg" alt="A long dinner table with candles">
              <span class="ps-label">2019 · London</span>
              <h3 class="ps-title">A seat at the same table</h3>
              <p class="ps-text">A friend’s birthday dinner, two empty chairs side by side, and a conversation that lasted until the restaurant closed.</p>
            </li>
            <li class="ps-step" data-story-step>
              <img class="ps-img" data-story-img width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-nature.jpg" alt="Mountains at sunrise">
              <span class="ps-label">2021 · The Alps</span>
              <h3 class="ps-title">Our first big adventure</h3>
              <p class="ps-text">A week of hiking, one wrong turn and a sunrise we still talk about. We knew we made a good team.</p>
            </li>
            <li class="ps-step" data-story-step>
              <img class="ps-img" data-story-img width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-wedding.jpg" alt="A floral arch on a hill at sunset">
              <span class="ps-label">2025 · Sintra</span>
              <h3 class="ps-title">The question</h3>
              <p class="ps-text">Daniel planned a picnic on the hill where we will get married. Maya said yes before he finished asking.</p>
            </li>
            <li class="ps-step" data-story-step>
              <img class="ps-img" data-story-img width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/wed-party.jpg" alt="String lights over a dance floor">
              <span class="ps-label">2027 · With you</span>
              <h3 class="ps-title">Now, the party</h3>
              <p class="ps-text">All that is missing is the people we love. We cannot wait to celebrate with you.</p>
            </li>
          </ol>
        </div>
      </div>
    </section>
    <section id="journey" class="st st-scroll-path" data-uid="smvnkxdcee0c7">
      <div class="st-art" aria-hidden="true" style="color:var(--st-brand);opacity:0.3" data-art-anim="float"><svg viewBox="0 0 1200 800" preserveAspectRatio="xMidYMid slice"><g fill="currentColor"><path data-float data-spin d="M120 118 C123.3 136.7 123.3 136.7 142 140 C123.3 143.3 123.3 143.3 120 162 C116.7 143.3 116.7 143.3 98 140 C116.7 136.7 116.7 136.7 120 118Z"/><path data-float data-spin d="M340 606 C342.1 617.9 342.1 617.9 354 620 C342.1 622.1 342.1 622.1 340 634 C337.9 622.1 337.9 622.1 326 620 C337.9 617.9 337.9 617.9 340 606Z"/><path data-float data-spin d="M560 78 C561.8 88.2 561.8 88.2 572 90 C561.8 91.8 561.8 91.8 560 102 C558.2 91.8 558.2 91.8 548 90 C558.2 88.2 558.2 88.2 560 78Z"/><path data-float data-spin d="M820 660 C823 677 823 677 840 680 C823 683 823 683 820 700 C817 683 817 683 800 680 C817 677 817 677 820 660Z"/><path data-float data-spin d="M1020 154 C1023.9 176.1 1023.9 176.1 1046 180 C1023.9 183.9 1023.9 183.9 1020 206 C1016.1 183.9 1016.1 183.9 994 180 C1016.1 176.1 1016.1 176.1 1020 154Z"/><path data-float data-spin d="M1120 508 C1121.8 518.2 1121.8 518.2 1132 520 C1121.8 521.8 1121.8 521.8 1120 532 C1118.2 521.8 1118.2 521.8 1108 520 C1118.2 518.2 1118.2 518.2 1120 508Z"/><path data-float data-spin d="M240 370 C241.5 378.5 241.5 378.5 250 380 C241.5 381.5 241.5 381.5 240 390 C238.5 381.5 238.5 381.5 230 380 C238.5 378.5 238.5 378.5 240 370Z"/><path data-float data-spin d="M700 371 C701.35 378.65 701.35 378.65 709 380 C701.35 381.35 701.35 381.35 700 389 C698.65 381.35 698.65 381.35 691 380 C698.65 378.65 698.65 378.65 700 371Z"/><path data-float data-spin d="M920 406 C922.1 417.9 922.1 417.9 934 420 C922.1 422.1 922.1 422.1 920 434 C917.9 422.1 917.9 422.1 906 420 C917.9 417.9 917.9 417.9 920 406Z"/><path data-float data-spin d="M460 292 C461.2 298.8 461.2 298.8 468 300 C461.2 301.2 461.2 301.2 460 308 C458.8 301.2 458.8 301.2 452 300 C458.8 298.8 458.8 298.8 460 292Z"/></g></svg></div>
      <div class="st-wrap">
        <header class="st-head">
          <p class="st-eyebrow" data-anim="item">The day</p>
          <h2 class="st-h2" data-anim="item" data-anim-text>Wedding day <span class="hl">schedule</span></h2>
          <p class="st-lead" data-anim="item">Saturday 14 June 2027 at Quinta da Serra. Comfortable shoes recommended.</p>
        </header>
        <div class="sp" data-drawpath>
          <svg class="sp-line" viewBox="0 0 40 1000" preserveAspectRatio="none" aria-hidden="true" focusable="false">
            <path class="sp-track" d="M20 0 C34 125 6 250 20 375 S34 625 20 750 S6 875 20 1000"/>
            <path class="sp-draw" data-draw d="M20 0 C34 125 6 250 20 375 S34 625 20 750 S6 875 20 1000"/>
          </svg>
          <ol class="sp-list">
            <li class="sp-item" data-draw-step>
              <span class="sp-dot"><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="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" /></svg></span>
              <div class="sp-card">
                <span class="sp-date">3:00 pm</span>
                <h3 class="sp-title">Ceremony</h3>
                <p class="sp-text">Under the flower arch in the garden. Please arrive by 2:30 pm.</p>
              </div>
            </li>
            <li class="sp-item" data-draw-step>
              <span class="sp-dot"><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>
              <div class="sp-card">
                <span class="sp-date">4:00 pm</span>
                <h3 class="sp-title">Drinks in the garden</h3>
                <p class="sp-text">Port tonic, local wines and snacks on the terrace while we take photos.</p>
              </div>
            </li>
            <li class="sp-item" data-draw-step>
              <span class="sp-dot"><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>
              <div class="sp-card">
                <span class="sp-date">6:30 pm</span>
                <h3 class="sp-title">Dinner</h3>
                <p class="sp-text">A long-table dinner in the courtyard, followed by speeches (we promise they will be short).</p>
              </div>
            </li>
            <li class="sp-item" data-draw-step>
              <span class="sp-dot"><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>
              <div class="sp-card">
                <span class="sp-date">9:30 pm</span>
                <h3 class="sp-title">Dancing</h3>
                <p class="sp-text">The band plays until midnight, then the DJ takes over until 2 am.</p>
              </div>
            </li>
          </ol>
        </div>
      </div>
    </section>
    <section id="gallery" class="st st-gallery-grid" data-uid="smvnkxdcetuto">
      <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 few <span class="hl">places and moments</span></h2>
          <p class="st-lead" data-anim="item">The venue, the dinner and the party, so you know what to expect. Tap a 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="Ceremony">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-wedding.jpg" alt="The ceremony space in soft purple light">
            <p class="gg-cap"><strong class="gg-title">The ceremony</strong><span class="gg-text">Under the old cork oaks</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Ceremony">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-church.jpg" alt="The chapel at the edge of the garden">
            <p class="gg-cap"><strong class="gg-title">The chapel</strong><span class="gg-text">Where we say our vows</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Dinner">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/wed-dinner.jpg" alt="A long dinner table set with candles">
            <p class="gg-cap"><strong class="gg-title">Dinner for sixty</strong><span class="gg-text">One long table, lots of candles</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Dinner">
            <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">The menu</strong><span class="gg-text">Local fish, vegetables and wine</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Party">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/wed-party.jpg" alt="String lights over a dance floor">
            <p class="gg-cap"><strong class="gg-title">The dance floor</strong><span class="gg-text">Lights, music and good shoes</span></p>
          </li>
          <li class="gg-item" data-anim="item" data-tag="Party">
            <img class="gg-img" width="1200" height="900" loading="lazy" src="https://webdevpuneet.com/images/section-templates/tpl-event.jpg" alt="A stage with spotlights">
            <p class="gg-cap"><strong class="gg-title">The band</strong><span class="gg-text">Live music until midnight</span></p>
          </li>
        </ul>
      </div>
    </section>
    <section id="faq" class="st st-faq-split" data-uid="smvnkxdcer7sk">
      <div class="st-wrap fs2">
        <div class="fs2-side">
          <header class="st-head st-head--left fs2-head">
            <p class="st-eyebrow" data-anim="item">Travel &amp; stay</p>
            <h2 class="st-h2" data-anim="item" data-anim-text>Good to <span class="hl">know</span></h2>
            <p class="st-lead" data-anim="item">Quick answers to the questions we hear most. Can’t find yours? We reply within a few hours.</p>
          </header>
          <div class="fs2-card" data-anim="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="M7.9 20A9 9 0 1 0 4 16.1L2 22Z" /></svg></span>
            <h3 class="fs2-card-title">Still have a question?</h3>
            <p class="fs2-card-text">Write to us any time; we reply within a day.</p>
            <a class="st-btn" href="mailto:hello@webdevpuneet.com"><span>Email us</span></a>
          </div>
        </div>
        <div class="fs2-list" data-accordion>
          <details class="st-acc" data-anim="item">
            <summary class="st-acc-q"><span>How do I get to the venue?</span><span class="st-acc-icon" aria-hidden="true"></span></summary>
            <div class="st-acc-a"><p>Quinta da Serra is 30 minutes from Lisbon. A shuttle leaves the Sintra train station at 2:00 pm and returns at midnight and 2 am.</p></div>
          </details>
          <details class="st-acc" data-anim="item">
            <summary class="st-acc-q"><span>Where should I stay?</span><span class="st-acc-icon" aria-hidden="true"></span></summary>
            <div class="st-acc-a"><p>We have partner rates at three hotels in Sintra. Mention our names when you book to get the discount.</p></div>
          </details>
          <details class="st-acc" data-anim="item">
            <summary class="st-acc-q"><span>What should I wear?</span><span class="st-acc-icon" aria-hidden="true"></span></summary>
            <div class="st-acc-a"><p>Summer formal. The ceremony is on grass, so block heels or flats are a good idea.</p></div>
          </details>
          <details class="st-acc" data-anim="item">
            <summary class="st-acc-q"><span>Can I bring a plus one?</span><span class="st-acc-icon" aria-hidden="true"></span></summary>
            <div class="st-acc-a"><p>If your invitation includes a guest, their name is on it. Please list everyone attending in your RSVP.</p></div>
          </details>
        </div>
      </div>
    </section>
    <section id="contact" class="st st-contact-split-form" data-uid="smvnkxdceg6x9">
      <div class="st-wrap cs2">
        <div class="cs2-info">
          <header class="st-head st-head--left cs2-head">
            <p class="st-eyebrow" data-anim="item">RSVP</p>
            <h2 class="st-h2" data-anim="item" data-anim-text>Will you <span class="hl">join us?</span></h2>
            <p class="st-lead" data-anim="item">Please reply by 1 May 2027 so we can plan the dinner and the dancing.</p>
          </header>
          <ul class="cs2-methods">
            <li class="cs2-method" data-anim="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>
              <div><p class="cs2-label">Email</p><a class="cs2-value" href="mailto:hello@webdevpuneet.com"><span>hello@webdevpuneet.com</span></a></div>
            </li>
            <li class="cs2-method" data-anim="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>
              <div><p class="cs2-label">Venue</p><a class="cs2-value" href="https://www.openstreetmap.org/"><span>Quinta da Serra, Sintra</span></a></div>
            </li>
          </ul>
        </div>
        <div class="cs2-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 names</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>Who is coming, dietary needs and a song request</span><textarea name="message" rows="5" required></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>Send RSVP</span></button>
              <p class="st-form-note">We reply within one business day.</p>
              <p class="st-form-error" data-form-error hidden role="alert">Sorry, something went wrong. Please try again or email 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>Thank you!</h3>
              <p>Your RSVP is on its way to us. We can’t wait to see you.</p>
            </div>
          </form>
        </div>
      </div>
    </section>
    <section class="st st-floating-social-share" data-uid="smvnkxdcfj5av">
      <div class="ss" data-ss data-side="left" data-align="center" style="--ss-top:50%" data-mobile="bar" data-look="network" data-shape="attached" data-size="default" data-tips="on" data-start="open" data-copied="Link copied">
        <div class="ss-panel" role="group" aria-label="Share this page">
          <ul class="ss-list"><li class="ss-item"><a class="ss-btn" data-net="whatsapp" data-share="https://wa.me/?text={text}" href="https://wa.me/" target="_blank" rel="noopener noreferrer" style="--c:#128C7E" aria-label="Share on WhatsApp (opens in a new tab)"><svg class="ss-ic" viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 21l1.7-5.1A9 9 0 1 1 8.1 19.3z"/><path d="M9 8.5c0 3.300 2.700 6 6 6l1.300-1.500-2.200-1.100-.9.900c-.9-.4-1.700-1.200-2.100-2.100l.9-.9-1.100-2.200z"/></svg><span class="ss-tip" aria-hidden="true">WhatsApp</span></a></li><li class="ss-item"><a class="ss-btn" data-net="facebook" data-share="https://www.facebook.com/sharer/sharer.php?u={url}" href="https://www.facebook.com/sharer/sharer.php" target="_blank" rel="noopener noreferrer" style="--c:#1877F2" aria-label="Share on Facebook (opens in a new tab)"><svg class="ss-ic" viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="currentColor"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"/></svg><span class="ss-tip" aria-hidden="true">Facebook</span></a></li><li class="ss-item"><a class="ss-btn" data-net="email" data-share="mailto:?subject={title}&amp;body={text}" href="mailto:" style="--c:#6B7280" aria-label="Share on Email"><svg class="ss-ic" viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.970 5.700a1.940 1.940 0 0 1-2.060 0L2 7"/></svg><span class="ss-tip" aria-hidden="true">Email</span></a></li><li class="ss-item"><button type="button" class="ss-btn" data-net="copy" style="--c:#0F7B3F" aria-label="Copy link"><svg class="ss-ic" viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect width="13" height="13" x="8" y="8" rx="2.500"/><path d="M16 8V6.500A2.500 2.500 0 0 0 13.500 4h-7A2.500 2.500 0 0 0 4 6.500v7A2.500 2.500 0 0 0 6.500 16H8"/></svg><svg class="ss-ic ss-ic--done" viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg><span class="ss-tip" aria-hidden="true">Copy link</span></button></li><li class="ss-item ss-item--hide"><button type="button" class="ss-hide" data-ss-hide aria-expanded="true" aria-label="Hide share buttons"><svg class="ss-ic ss-ic--hide" viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="m11 17-5-5 5-5"/><path d="m18 17-5-5 5-5"/></svg></button></li></ul>
        </div>
        <button type="button" class="ss-tab" data-ss-show aria-expanded="true" aria-label="Show share buttons"><svg class="ss-ic" viewBox="0 0 24 24" width="22" height="22" aria-hidden="true" focusable="false" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><path d="m8.600 13.500 6.800 4M15.400 6.500l-6.800 4"/></svg><span class="ss-tab-text" aria-hidden="true">Share</span></button>
        <span class="ss-live" role="status" aria-live="polite"></span>
      </div>
    </section>
    <section class="st st-footer-minimal" data-uid="smvnkxdcf5r4a">
      <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="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" /></svg></span><span>Maya &amp; Daniel</span></span>
          </a>
          <nav aria-label="Footer"><ul class="fm-links"><li><a href="#story">Our story</a></li><li><a href="#journey">The day</a></li><li><a href="#faq">Travel</a></li><li><a href="#contact">RSVP</a></li></ul></nav>
        </div>
        <p class="fm-copy">14 June 2027 · Sintra, Portugal</p>
      </footer>
    </section>
Design your website