{"id":12,"date":"2026-03-05T16:13:41","date_gmt":"2026-03-05T16:13:41","guid":{"rendered":"https:\/\/aniekentimgaantrouwen.nl\/?page_id=12"},"modified":"2026-06-20T13:05:05","modified_gmt":"2026-06-20T13:05:05","slug":"wij-gaan-trouwen","status":"publish","type":"page","link":"https:\/\/aniekentimgaantrouwen.nl\/","title":{"rendered":"ANIEK &#038; TIM GAAN TROUWEN"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12\" class=\"elementor elementor-12\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-00fc628 e-con-full e-flex e-con e-parent\" data-id=\"00fc628\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0ee5140 elementor-widget elementor-widget-html\" data-id=\"0ee5140\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"nl\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Aniek & Tim \u00b7 18 september 2026<\/title>\n<link rel=\"icon\" type=\"image\/svg+xml\" href=\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 32 32'%3E%3Ccircle cx='16' cy='16' r='16' fill='%23F2ECE3'\/%3E%3Ctext x='7' y='21' font-family='serif' font-size='13' fill='%232d2d2d'%3EA%3C\/text%3E%3Ctext x='15' y='19' font-family='serif' font-size='8' fill='%23949E88'%3E%26%3C\/text%3E%3Ctext x='20' y='21' font-family='serif' font-size='13' fill='%232d2d2d'%3ET%3C\/text%3E%3C\/svg%3E\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cinzel+Decorative:wght@400;700&family=Poppins:wght@300;400;500&family=Tangerine:wght@400;700&display=swap\" rel=\"stylesheet\">\n<style>\n  :root {\n    --sage: #949E88;\n    --sage-light: #c5cabb;\n    --sage-dark: #7a8570;\n    --cream: #F2ECE3;\n    --peach: #E8C4B8;\n    --grey: #6B6B6B;\n    --taupe: #AE9981;\n    --oat: #DBD1C2;\n    --dark: #2d2d2d;\n    --mid: #5a5a5a;\n    --light: #8a8a8a;\n    --bg: #FAF8F4;\n    --white: #ffffff;\n  }\n\n  * { margin: 0; padding: 0; box-sizing: border-box; }\n  html { scroll-behavior: smooth; }\n\n  body {\n    font-family: 'Poppins', sans-serif;\n    font-weight: 300;\n    color: var(--dark);\n    background: var(--bg);\n    overflow-x: hidden;\n    -webkit-font-smoothing: antialiased;\n  }\n\n  \/* ===== GLOBAL ===== *\/\n  .section-label {\n    font-weight: 300;\n    font-size: 1.06rem;\n    letter-spacing: 0.35em;\n    text-transform: uppercase;\n    color: var(--taupe);\n    text-align: center;\n    margin-bottom: 0.6rem;\n  }\n  .section-title {\n    font-family: 'Tangerine', cursive;\n    font-size: clamp(3.9rem, 8vw, 6.1rem);\n    color: var(--dark);\n    text-align: center;\n    line-height: 1;\n    margin-bottom: 2rem;\n  }\n  .divider {\n    display: flex; align-items: center; justify-content: center;\n    gap: 1rem; margin: 0 auto 2.5rem; max-width: 220px;\n  }\n  .divider::before, .divider::after { content: ''; flex: 1; height: 1px; background: var(--sage-light); }\n  .divider-leaf { width: 20px; height: 20px; fill: var(--sage-light); }\n  .leaf-svg { display: inline-block; }\n\n  \/* ===== HERO (PARALLAX) ===== *\/\n  .hero {\n    position: relative;\n    min-height: 100vh;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n  }\n  .hero-bg {\n    position: absolute;\n    inset: 0;\n    \/* Vervang dit pad met je eigen WordPress media URL *\/\n    background: url('https:\/\/aniekentimgaantrouwen.nl\/wp-content\/uploads\/2026\/06\/CoronaStyledShoot-357.webp') center center \/ cover no-repeat fixed;\n    transform: scale(1.05);\n    will-change: transform;\n  }\n  .hero-overlay {\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(\n      180deg,\n      rgba(242,236,227,0.92) 0%,\n      rgba(250,248,244,0.90) 30%,\n      rgba(250,248,244,0.88) 60%,\n      rgba(242,236,227,0.93) 100%\n    );\n  }\n  .hero-top-bar {\n    position: absolute;\n    top: 0; left: 0; right: 0; height: 4px;\n    background: var(--sage);\n    z-index: 2;\n  }\n\n  .floating-leaves { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 1; }\n  .leaf { position: absolute; opacity: 0; animation: leafFall linear forwards; }\n  @keyframes leafFall {\n    0% { opacity: 0; transform: translateY(-60px) rotate(0deg) scale(0.8); }\n    8% { opacity: 0.85; } 40% { opacity: 0.7; } 80% { opacity: 0.4; }\n    100% { opacity: 0; transform: translateY(calc(100vh + 60px)) rotate(var(--leaf-rotate, 360deg)) scale(0.6); }\n  }\n  .leaf svg { width: var(--leaf-size, 32px); height: var(--leaf-size, 32px); }\n\n  .botanical { position: absolute; opacity: 0; pointer-events: none; z-index: 1; }\n  body.unlocked .botanical { animation: botanicalFade 1.8s ease forwards; }\n  .botanical-tl { top: 30px; left: 20px; transform: rotate(-15deg); animation-delay: 3s; }\n  .botanical-tr { top: 30px; right: 20px; transform: rotate(15deg) scaleX(-1); animation-delay: 3.2s; }\n  @keyframes botanicalFade {\n    from { opacity: 0; transform: translateY(-10px) rotate(-15deg); }\n    to { opacity: 0.22; transform: translateY(0) rotate(-15deg); }\n  }\n  .botanical-tr { animation-name: botanicalFadeR; }\n  @keyframes botanicalFadeR {\n    from { opacity: 0; transform: translateY(-10px) rotate(15deg) scaleX(-1); }\n    to { opacity: 0.22; transform: translateY(0) rotate(15deg) scaleX(-1); }\n  }\n\n  .hero-content {\n    position: relative; z-index: 2;\n    text-align: center;\n    padding: 2rem;\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    gap: 0;\n  }\n\n  \/* ===== MONOGRAM ANIMATION ===== *\/\n  .monogram-svg {\n    display: block; margin: 0 auto 0.3rem;\n    width: clamp(260px, 55vw, 440px); height: auto; overflow: visible;\n  }\n  .monogram-stroke { display: none; }\n  .monogram-fill { opacity: 1; clip-path: inset(0 100% 0 0); }\n\n  \/* Animations only start after unlock *\/\n  body.unlocked .fill-a   { fill: var(--dark); animation: wipeReveal 1.2s cubic-bezier(0.25,0.46,0.45,0.94) 0.4s forwards; }\n  body.unlocked .fill-amp { fill: var(--sage); animation: wipeReveal 0.9s cubic-bezier(0.25,0.46,0.45,0.94) 1.3s forwards; }\n  body.unlocked .fill-t   { fill: var(--dark); animation: wipeReveal 1.2s cubic-bezier(0.25,0.46,0.45,0.94) 1.9s forwards; }\n  @keyframes wipeReveal { to { clip-path: inset(0 0% 0 0); } }\n\n  \/* Monogram shimmer sweep *\/\n  .monogram-wrap { position: relative; display: block; overflow: hidden; }\n  .monogram-shimmer {\n    position: absolute; top: 0; left: -100%; width: 60%; height: 100%;\n    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);\n    pointer-events: none;\n  }\n  body.unlocked .monogram-shimmer { animation: shimmerSweep 2s ease 3.2s forwards; }\n  @keyframes shimmerSweep { 0% { left: -60%; } 100% { left: 160%; } }\n\n  \/* Gold sparkle particles *\/\n  .sparkles { position: absolute; inset: 0; pointer-events: none; z-index: 1; overflow: hidden; }\n  .sparkle {\n    position: absolute; width: 4px; height: 4px; border-radius: 50%;\n    background: radial-gradient(circle, rgba(219,209,194,0.9), rgba(174,153,129,0.3));\n    opacity: 0;\n    animation: sparkleFloat var(--dur, 4s) ease-in-out var(--delay, 0s) infinite;\n  }\n  @keyframes sparkleFloat {\n    0% { opacity: 0; transform: translateY(0) scale(0); }\n    20% { opacity: 1; transform: translateY(-25px) scale(1); }\n    80% { opacity: 0.5; transform: translateY(-70px) scale(0.6); }\n    100% { opacity: 0; transform: translateY(-90px) scale(0); }\n  }\n\n  \/* Quiz confetti *\/\n  .confetti-container { position: fixed; inset: 0; pointer-events: none; z-index: 9999; overflow: hidden; }\n  .confetti-piece {\n    position: absolute; top: -12px; width: 8px; height: 12px; border-radius: 2px; opacity: 0.9;\n    animation: confettiFall var(--fall-dur, 3s) ease-in forwards;\n  }\n  @keyframes confettiFall {\n    0% { transform: translateY(0) rotateZ(0deg) rotateX(0deg); opacity: 1; }\n    100% { transform: translateY(100vh) rotateZ(var(--spin, 720deg)) rotateX(var(--spin2, 360deg)); opacity: 0; }\n  }\n\n  .hero-content > .hero-text-item {\n    opacity: 0; transform: translateY(25px);\n  }\n  body.unlocked .hero-content > .hero-text-item {\n    animation: heroReveal 0.9s cubic-bezier(0.23,1,0.32,1) forwards;\n  }\n  body.unlocked .hero-names    { animation-delay: 3s !important; }\n  body.unlocked .hero-subtitle { animation-delay: 3.3s !important; }\n  body.unlocked .hero-date     { animation-delay: 3.5s !important; }\n  body.unlocked .hero-line     { animation-delay: 3.8s !important; }\n  body.unlocked .hero-tagline  { animation-delay: 4s !important; }\n  body.unlocked .hero-warmth   { animation-delay: 4.3s !important; }\n  @keyframes heroReveal { to { opacity: 1; transform: translateY(0); } }\n\n  .hero-names { font-family: 'Tangerine', cursive; font-size: clamp(3rem,7vw,4.5rem); color: var(--dark); margin-bottom: 1rem; line-height: 1.1; }\n  .hero-subtitle { font-weight: 400; font-size: 1.12rem; letter-spacing: 0.35em; text-transform: uppercase; color: var(--dark); margin-bottom: 0.4rem; }\n  .hero-date { font-weight: 300; font-size: 1.23rem; color: var(--dark); margin-bottom: 1.2rem; line-height: 1.6; }\n  .hero-date .mobile-break { display: none; }\n  .hero-date .hero-date-sep { }\n  @media (max-width: 500px) {\n    .hero-date .mobile-break { display: block; }\n    .hero-date .hero-date-sep { display: none; }\n  }\n  .hero-line { width: 50px; height: 1px; background: var(--sage-light); margin: 0 auto 1rem; }\n  .hero-tagline {\n    font-family: 'Tangerine', cursive;\n    font-size: clamp(1.9rem, 4vw, 2.5rem);\n    color: var(--dark);\n    margin-bottom: 1rem;\n    text-align: center;\n    line-height: 1.5;\n    max-width: 440px;\n    margin-left: auto;\n    margin-right: auto;\n  }\n  .hero-warmth { font-size: 1.18rem; color: var(--mid); font-weight: 300; max-width: 440px; margin: 0 auto; line-height: 1.7; font-style: italic; }\n\n  \/* Persoonlijke begroeting per gasttype *\/\n  .greet-ceremonie, .greet-avond { display: none; }\n  body.ceremoniegast .greet-dag { display: none; }\n  body.ceremoniegast .greet-ceremonie { display: inline; }\n  body.avondgast .greet-dag { display: none; }\n  body.avondgast .greet-avond { display: inline; }\n\n  .scroll-hint {\n    position: fixed; bottom: 1.5rem; left: 0; right: 0;\n    display: flex; flex-direction: column; align-items: center; gap: 0.4rem;\n    color: var(--sage); font-size: 0.9rem; letter-spacing: 0.2em; text-transform: uppercase;\n    opacity: 0; z-index: 100;\n    transition: opacity 0.6s ease;\n    pointer-events: none;\n  }\n  .scroll-hint.show { opacity: 1; }\n  .scroll-hint svg {\n    width: 26px; height: 26px; stroke: var(--sage); stroke-width: 2.5;\n    animation: arrowPulse 1.8s ease-in-out infinite;\n  }\n  @keyframes arrowPulse {\n    0%, 100% { transform: translateY(0); opacity: 0.4; }\n    50% { transform: translateY(10px); opacity: 1; }\n  }\n\n  \/* ===== GUEST TYPE ===== *\/\n  \/* Ceremonie-only items: standaard verborgen *\/\n  .timeline-item.guest-ceremonie:not(.guest-dag):not(.guest-avond) { display: none; }\n  h3.guest-ceremonie { display: none; }\n\n  \/* Ceremoniegasten *\/\n  body.ceremoniegast .timeline-item.guest-ceremonie:not(.guest-dag):not(.guest-avond) { display: flex; }\n  body.ceremoniegast .timeline-item.guest-ceremonie { display: flex; }\n  body.ceremoniegast .timeline-item.guest-dag:not(.guest-ceremonie) { display: none; }\n  body.ceremoniegast .timeline-item.guest-avond { display: none; }\n  body.ceremoniegast h3.guest-ceremonie { display: block; }\n  body.ceremoniegast h3.guest-dag { display: none; }\n  body.ceremoniegast p.guest-dag { display: none; }\n\n  \/* Avondgasten *\/\n  body.avondgast .timeline-item.guest-dag:not(.guest-avond) { display: none; }\n  body.avondgast .timeline-item.guest-ceremonie { display: none; }\n  body.avondgast p.guest-dag { display: none; }\n  body.avondgast p.guest-avond { display: block; }\n\n  \/* Daggasten (default) *\/\n  body.daggast p.guest-avond { display: none; }\n\n  \/* ===== COUNTDOWN ===== *\/\n  .countdown {\n    background: var(--cream);\n    padding: 3.5rem 1.5rem;\n    text-align: center;\n  }\n  .countdown-text {\n    font-family: 'Tangerine', cursive;\n    font-size: clamp(2.6rem, 6vw, 4.0rem);\n    color: var(--dark);\n    line-height: 1.3;\n  }\n  .countdown-number {\n    display: inline-block;\n    color: var(--sage-dark);\n    font-size: 1.15em;\n    min-width: 1.5ch;\n  }\n  .countdown-sub {\n    display: block;\n    margin-top: 0.6rem;\n    font-family: 'Poppins', sans-serif;\n    font-weight: 300;\n    font-size: 1.06rem;\n    letter-spacing: 0.15em;\n    color: var(--light);\n  }\n  .countdown-cal {\n    display: inline-flex;\n    align-items: center;\n    gap: 0.5rem;\n    margin-top: 1.5rem;\n    padding: 0.7rem 1.6rem;\n    background: transparent;\n    border: 1px solid var(--sage);\n    color: var(--sage-dark);\n    font-family: 'Poppins', sans-serif;\n    font-weight: 400;\n    font-size: 0.99rem;\n    letter-spacing: 0.08em;\n    border-radius: 50px;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    text-decoration: none;\n  }\n  .countdown-cal:hover {\n    background: var(--sage);\n    color: var(--white);\n    transform: translateY(-1px);\n    box-shadow: 0 4px 12px rgba(148,158,136,0.25);\n  }\n  .countdown-cal:hover svg { stroke: var(--white); }\n  .countdown-cal svg {\n    width: 16px; height: 16px;\n    stroke: var(--sage-dark);\n    fill: none;\n    transition: stroke 0.3s ease;\n    flex-shrink: 0;\n  }\n  .cal-dropdown {\n    position: relative;\n    display: inline-block;\n    margin-top: 1.5rem;\n  }\n  .cal-options {\n    display: none;\n    position: absolute;\n    bottom: calc(100% + 0.5rem);\n    left: 50%;\n    transform: translateX(-50%);\n    background: var(--bg);\n    border: 1px solid var(--oat);\n    border-radius: 12px;\n    padding: 0.5rem;\n    box-shadow: 0 4px 20px rgba(0,0,0,0.08);\n    white-space: nowrap;\n    z-index: 10;\n  }\n  .cal-options.show { display: block; }\n  .cal-option {\n    display: flex;\n    align-items: center;\n    gap: 0.5rem;\n    padding: 0.6rem 1rem;\n    color: var(--mid);\n    font-size: 0.99rem;\n    text-decoration: none;\n    border-radius: 8px;\n    transition: background 0.2s ease;\n    cursor: pointer;\n  }\n  .cal-option:hover { background: var(--cream); color: var(--dark); }\n  \/* When it's the day itself *\/\n  .countdown-today {\n    font-family: 'Tangerine', cursive;\n    font-size: clamp(2.4rem, 5vw, 3.9rem);\n    color: var(--sage-dark);\n  }\n\n  \/* ===== PROGRAM ===== *\/\n  .program { padding: 5rem 1.5rem; max-width: 640px; margin: 0 auto; }\n  .timeline { position: relative; padding: 1rem 0; }\n  .timeline::before {\n    content: ''; position: absolute; left: 32px; top: 0; bottom: 0; width: 1px;\n    background: linear-gradient(to bottom, transparent, var(--sage-light) 5%, var(--sage-light) 95%, transparent);\n  }\n  .timeline-item {\n    position: relative; display: flex; gap: 2rem; padding-bottom: 2.8rem;\n  }\n  .timeline-item:last-child { padding-bottom: 0; }\n  .timeline-dot {\n    position: relative; flex-shrink: 0; width: 64px;\n    display: flex; align-items: flex-start; justify-content: center; padding-top: 3px;\n  }\n  .timeline-dot::after {\n    content: ''; width: 10px; height: 10px; border-radius: 50%;\n    background: var(--bg); border: 2px solid var(--sage);\n    transition: all 0.6s cubic-bezier(0.34,1.56,0.64,1);\n  }\n  .timeline-item.in-view .timeline-dot::after {\n    background: var(--sage); transform: scale(1.4);\n    box-shadow: 0 0 14px rgba(148,158,136,0.45);\n  }\n  .timeline-item:hover .timeline-dot::after {\n    transform: scale(1.6);\n    box-shadow: 0 0 20px rgba(148,158,136,0.5);\n  }\n  .timeline-time { position: absolute; left: 0; top: 0; width: 64px; text-align: center; font-size: 1.01rem; font-weight: 500; color: var(--sage-dark); transform: translateY(-1.4rem); }\n  .timeline-content { flex: 1; }\n  .timeline-content h3 { font-weight: 500; font-size: 1.34rem; color: var(--dark); margin-bottom: 0.35rem; }\n  .timeline-content p { font-size: 1.18rem; color: var(--light); line-height: 1.6; }\n\n  \/* ===== DRESSCODE ===== *\/\n  .dresscode {\n    max-width: 520px;\n    margin: 0 auto 0 auto;\n    padding: 1.8rem 2rem;\n    background: rgba(148,158,136,0.06);\n    border: 1px solid rgba(148,158,136,0.15);\n    border-radius: 14px;\n    text-align: center;\n    margin-top: 2rem;\n  }\n  .dresscode-label {\n    font-size: 0.95rem;\n    font-weight: 500;\n    letter-spacing: 0.25em;\n    text-transform: uppercase;\n    color: var(--sage);\n    margin-bottom: 0.6rem;\n  }\n  .dresscode-text {\n    font-size: 1.18rem;\n    color: var(--mid);\n    line-height: 1.7;\n  }\n\n  \/* ===== LOCATIE ===== *\/\n  .locatie { background: var(--cream); padding: 5rem 1.5rem; text-align: center; }\n  .locatie-card {\n    max-width: 520px; margin: 0 auto;\n    background: var(--bg); border-radius: 16px; padding: 3rem 2.5rem;\n    box-shadow: 0 2px 24px rgba(0,0,0,0.04);\n  }\n  .locatie-name { font-family: 'Tangerine', cursive; font-size: 3.92rem; color: var(--dark); margin-bottom: 1rem; }\n  .locatie-address { font-size: 1.23rem; color: var(--light); line-height: 1.9; margin-bottom: 1rem; }\n  .locatie-parking {\n    display: inline-flex; align-items: center; gap: 0.5rem;\n    font-size: 1.06rem; color: var(--sage-dark); margin-bottom: 1.8rem;\n    padding: 0.5rem 1rem; background: rgba(148,158,136,0.08); border-radius: 50px;\n  }\n  .locatie-parking svg { width: 16px; height: 16px; stroke: var(--sage); fill: none; flex-shrink: 0; }\n  .locatie-btn {\n    display: inline-block; padding: 0.85rem 2.4rem;\n    background: var(--sage); color: var(--white); text-decoration: none;\n    font-size: 1.03rem; font-weight: 400; letter-spacing: 0.15em; text-transform: uppercase;\n    border-radius: 50px; transition: all 0.3s ease; margin-top: 0.5rem;\n  }\n  .locatie-btn:hover { background: var(--sage-dark); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(148,158,136,0.3); }\n\n  \/* ===== WEATHER ===== *\/\n  .weather {\n    max-width: 100%;\n    margin: 1.5rem 0 0.5rem;\n    padding: 1.3rem 1.5rem;\n    background: rgba(148,158,136,0.06);\n    border: 1px solid rgba(148,158,136,0.12);\n    border-radius: 12px;\n    text-align: center;\n    display: none;\n  }\n  .weather.visible { display: block; }\n  .weather-label {\n    font-size: 0.81rem; font-weight: 500; letter-spacing: 0.2em;\n    text-transform: uppercase; color: var(--sage); margin-bottom: 0.8rem;\n  }\n  .weather-main {\n    display: flex; align-items: center; justify-content: center; gap: 1rem;\n    margin-bottom: 0.5rem;\n  }\n  .weather-icon { font-size: 2.24rem; line-height: 1; }\n  .weather-temp { font-family: 'Tangerine', cursive; font-size: 3.14rem; color: var(--dark); line-height: 1; }\n  .weather-desc { font-size: 0.99rem; color: var(--light); }\n  .weather-tip {\n    margin-top: 0.8rem; font-size: 1.01rem; color: var(--taupe); font-style: italic;\n  }\n  .weather-joke {\n    margin-top: 0.5rem; font-size: 0.92rem; color: var(--sage-dark); font-weight: 300;\n  }\n\n  \/* ===== QUIZ ===== *\/\n  .quiz-wrapper { }\n  .dieetwensen-wrapper { }\n  .quiz {\n    padding: 5rem 1.5rem;\n    max-width: 640px;\n    margin: 0 auto;\n  }\n  .quiz-question {\n    background: var(--cream);\n    border-radius: 16px;\n    padding: 2rem 2rem 1.8rem;\n    margin-bottom: 1.5rem;\n    transition: all 0.3s ease;\n  }\n  .quiz-question h3 {\n    font-family: 'Tangerine', cursive;\n    font-size: 2.46rem;\n    color: var(--dark);\n    margin-bottom: 1rem;\n    text-align: center;\n  }\n  .quiz-options {\n    display: flex;\n    flex-direction: column;\n    gap: 0.6rem;\n  }\n  .quiz-option {\n    padding: 0.8rem 1.2rem;\n    background: var(--white);\n    border: 1px solid var(--oat);\n    border-radius: 10px;\n    font-family: 'Poppins', sans-serif;\n    font-weight: 300;\n    font-size: 1.18rem;\n    color: var(--mid);\n    cursor: pointer;\n    transition: all 0.25s ease;\n    text-align: center;\n    user-select: none;\n    width: 100%;\n  }\n  .quiz-option:hover {\n    border-color: var(--sage-light);\n    background: var(--white);\n  }\n  .quiz-option.correct {\n    background: var(--sage);\n    border-color: var(--sage);\n    color: var(--white);\n    pointer-events: none;\n  }\n  .quiz-option.wrong {\n    background: var(--peach);\n    border-color: var(--peach);\n    color: var(--white);\n    pointer-events: none;\n  }\n  .quiz-option.disabled {\n    pointer-events: none;\n    opacity: 0.5;\n  }\n  .quiz-feedback {\n    text-align: center;\n    margin-top: 0.8rem;\n    font-size: 1.06rem;\n    color: var(--sage-dark);\n    font-style: italic;\n    display: none;\n  }\n  .quiz-feedback.visible { display: block; }\n  .quiz-score {\n    text-align: center;\n    padding: 2rem;\n    background: var(--cream);\n    border-radius: 16px;\n    display: none;\n  }\n  .quiz-score.visible { display: block; }\n  .quiz-score-number {\n    font-family: 'Tangerine', cursive;\n    font-size: 3.92rem;\n    color: var(--sage-dark);\n    line-height: 1;\n  }\n  .quiz-score-text {\n    font-size: 1.18rem;\n    color: var(--light);\n    margin-top: 0.5rem;\n  }\n\n  \/* ===== VERZOEKNUMMERS ===== *\/\n  .verzoeknummers-wrapper {\n    background: var(--cream);\n  }\n  .verzoeknummers {\n    padding: 5rem 1.5rem;\n    max-width: 640px;\n    margin: 0 auto;\n    text-align: center;\n  }\n  .verzoeknummers-intro {\n    text-align: center;\n    font-size: 1.18rem;\n    color: var(--mid);\n    line-height: 1.7;\n    margin-bottom: 2rem;\n    max-width: 440px;\n    margin-left: auto;\n    margin-right: auto;\n  }\n  .verzoeknummers-icon {\n    display: block;\n    margin: 0 auto 1.5rem;\n    width: 48px;\n    height: 48px;\n    color: var(--sage);\n    opacity: 0.6;\n  }\n  .verzoeknummers-list {\n    max-width: 500px;\n    margin: 0 auto 2.5rem;\n    max-height: 360px;\n    overflow-y: auto;\n    padding: 0.3rem;\n  }\n  .verzoeknummers-list::-webkit-scrollbar { width: 4px; }\n  .verzoeknummers-list::-webkit-scrollbar-thumb { background: var(--oat); border-radius: 4px; }\n  .verzoek-item {\n    display: flex;\n    align-items: center;\n    gap: 1rem;\n    padding: 0.9rem 1.2rem;\n    border-radius: 12px;\n    text-align: left;\n    margin-bottom: 0.6rem;\n    animation: fadeSlideIn 0.4s ease forwards;\n    opacity: 0;\n  }\n  @keyframes fadeSlideIn {\n    to { opacity: 1; transform: translateY(0); }\n    from { opacity: 0; transform: translateY(8px); }\n  }\n  .verzoek-note {\n    flex-shrink: 0;\n    font-size: 1.3rem;\n    opacity: 0.5;\n  }\n  .verzoek-info {\n    flex: 1;\n    min-width: 0;\n  }\n  .verzoek-song {\n    font-family: 'Poppins', sans-serif;\n    font-weight: 400;\n    font-size: 0.95rem;\n    color: var(--dark);\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n  .verzoek-meta {\n    font-size: 0.78rem;\n    color: var(--sage-dark);\n    margin-top: 0.15rem;\n    white-space: nowrap;\n    overflow: hidden;\n    text-overflow: ellipsis;\n  }\n  .verzoek-empty {\n    font-size: 1.06rem;\n    color: var(--sage-light);\n    font-style: italic;\n    margin: 1rem 0 2rem;\n  }\n  .verzoek-form {\n    max-width: 400px;\n    margin: 0 auto;\n    display: flex;\n    flex-direction: column;\n    gap: 0.8rem;\n  }\n  .verzoek-row {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 0.8rem;\n  }\n  @media (max-width: 400px) { .verzoek-row { grid-template-columns: 1fr; } }\n  .verzoek-input {\n    width: 100%;\n    padding: 0.8rem 1rem;\n    font-family: 'Poppins', sans-serif;\n    font-weight: 300;\n    font-size: 1.06rem;\n    color: var(--dark);\n    background: var(--white);\n    border: 1px solid var(--oat);\n    border-radius: 10px;\n    outline: none;\n    transition: all 0.3s ease;\n  }\n  .verzoek-input:focus { border-color: var(--sage); box-shadow: 0 0 0 3px rgba(148,158,136,0.12); }\n  .verzoek-input::placeholder { color: var(--sage-light); }\n  .verzoek-btn {\n    padding: 0.85rem 2rem;\n    font-family: 'Poppins', sans-serif;\n    font-weight: 400;\n    font-size: 1.03rem;\n    letter-spacing: 0.15em;\n    text-transform: uppercase;\n    color: var(--white);\n    background: var(--sage);\n    border: none;\n    border-radius: 50px;\n    cursor: pointer;\n    transition: all 0.3s ease;\n    align-self: center;\n  }\n  .verzoek-btn:hover { background: var(--sage-dark); transform: translateY(-1px); }\n  .verzoek-btn:disabled { opacity: 0.6; cursor: wait; transform: none; }\n\n  .verzoek-feedback {\n    min-height: 1.4em;\n    font-size: 0.95rem;\n    color: var(--sage-dark);\n    opacity: 0;\n    transform: translateY(4px);\n    transition: opacity 0.3s ease, transform 0.3s ease;\n    margin: 0;\n  }\n  .verzoek-feedback.show { opacity: 1; transform: translateY(0); }\n  .verzoek-feedback.error { color: #a05c4a; }\n\n  \/* Luca easter egg overlay *\/\n  .luca-overlay {\n    position: fixed;\n    inset: 0;\n    background: rgba(26,26,26,0.55);\n    backdrop-filter: blur(3px);\n    -webkit-backdrop-filter: blur(3px);\n    z-index: 9999;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    padding: 1.5rem;\n    opacity: 0;\n    pointer-events: none;\n    transition: opacity 0.4s ease;\n  }\n  .luca-overlay.show { opacity: 1; pointer-events: auto; }\n  .luca-card {\n    background: var(--cream);\n    border-radius: 20px;\n    padding: 2.5rem 2rem;\n    max-width: 420px;\n    width: 100%;\n    text-align: center;\n    box-shadow: 0 20px 60px rgba(0,0,0,0.3);\n    transform: scale(0.85) translateY(20px);\n    transition: transform 0.4s cubic-bezier(0.34,1.56,0.64,1);\n  }\n  .luca-overlay.show .luca-card { transform: scale(1) translateY(0); }\n  .luca-card .luca-titel {\n    font-family: 'Tangerine', cursive;\n    font-size: 3rem;\n    color: var(--sage-dark);\n    line-height: 1.1;\n    margin-bottom: 1rem;\n  }\n  .luca-card .luca-tekst {\n    font-size: 1.06rem;\n    color: var(--mid);\n    line-height: 1.7;\n    margin-bottom: 1.8rem;\n  }\n  .luca-card .verzoek-btn { width: auto; }\n  .verzoek-badge {\n    display: inline-block;\n    font-size: 0.68rem;\n    font-weight: 500;\n    letter-spacing: 0.05em;\n    color: var(--sage-dark);\n    background: rgba(148,158,136,0.18);\n    border-radius: 20px;\n    padding: 0.15rem 0.55rem;\n    margin-left: 0.5rem;\n    vertical-align: middle;\n    white-space: nowrap;\n  }\n  .verzoek-stem {\n    flex-shrink: 0;\n    display: flex;\n    align-items: center;\n    gap: 0.3rem;\n    background: none;\n    border: none;\n    cursor: pointer;\n    padding: 0.4rem;\n    font-family: 'Poppins', sans-serif;\n    font-size: 0.85rem;\n    color: var(--taupe);\n    transition: transform 0.2s ease, color 0.2s ease;\n  }\n  .verzoek-stem:hover { transform: scale(1.15); }\n  .verzoek-stem svg { width: 18px; height: 18px; }\n  .verzoek-stem .stem-hart { fill: none; stroke: var(--taupe); stroke-width: 1.8; transition: all 0.2s ease; }\n  .verzoek-stem.gestemd { color: var(--peach); cursor: default; }\n  .verzoek-stem.gestemd:hover { transform: none; }\n  .verzoek-stem.gestemd .stem-hart { fill: var(--peach); stroke: var(--peach); }\n\n  \/* ===== DIEETWENSEN ===== *\/\n  .dieetwensen { padding: 5rem 1.5rem; max-width: 640px; margin: 0 auto; }\n  .form-intro { text-align: center; font-size: 1.23rem; color: var(--light); line-height: 1.7; margin-bottom: 1rem; }\n  .form-deadline {\n    text-align: center;\n    font-size: 1.06rem;\n    font-weight: 500;\n    color: var(--sage-dark);\n    margin: 0 auto 2.5rem;\n    padding: 0.7rem 1.6rem;\n    background: rgba(148,158,136,0.08);\n    border: 1px solid rgba(148,158,136,0.15);\n    border-radius: 50px;\n    width: fit-content;\n  }\n  .form-group { margin-bottom: 1.6rem; }\n  .form-group label { display: block; font-size: 1.06rem; font-weight: 500; letter-spacing: 0.05em; color: var(--grey); margin-bottom: 0.55rem; }\n  .form-input, .form-textarea {\n    width: 100%; padding: 0.95rem 1.1rem;\n    font-family: 'Poppins', sans-serif; font-weight: 300; font-size: 1.18rem;\n    color: var(--dark); background: var(--white);\n    border: 1px solid var(--oat); border-radius: 10px;\n    outline: none; transition: all 0.3s ease; -webkit-appearance: none;\n  }\n  .form-input:focus, .form-textarea:focus { border-color: var(--sage); box-shadow: 0 0 0 3px rgba(148,158,136,0.12); }\n  .form-input::placeholder, .form-textarea::placeholder { color: var(--sage-light); }\n  .form-textarea { min-height: 110px; resize: vertical; }\n  .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }\n  @media (max-width: 500px) { .form-row { grid-template-columns: 1fr; } }\n\n  .checkbox-group { display: flex; flex-wrap: wrap; gap: 0.7rem; margin-top: 0.3rem; }\n  .checkbox-pill { position: relative; }\n  .checkbox-pill input { position: absolute; opacity: 0; width: 0; height: 0; }\n  .checkbox-pill span {\n    display: inline-block; padding: 0.6rem 1.3rem;\n    font-size: 1.12rem; font-weight: 300; color: var(--grey);\n    background: var(--white); border: 1px solid var(--oat);\n    border-radius: 50px; cursor: pointer; transition: all 0.25s ease; user-select: none;\n  }\n  .checkbox-pill input:checked + span { background: var(--sage); border-color: var(--sage); color: var(--white); }\n  .checkbox-pill span:hover { border-color: var(--sage-light); }\n\n  .submit-btn {\n    display: block; width: 100%; padding: 1.1rem; margin-top: 2rem;\n    font-family: 'Poppins', sans-serif; font-weight: 400; font-size: 1.12rem;\n    letter-spacing: 0.18em; text-transform: uppercase;\n    color: var(--white); background: var(--sage);\n    border: none; border-radius: 50px; cursor: pointer; transition: all 0.3s ease;\n  }\n  .submit-btn:hover { background: var(--sage-dark); transform: translateY(-2px); box-shadow: 0 6px 24px rgba(148,158,136,0.3); }\n  .form-note { text-align: center; font-size: 1.01rem; color: var(--sage-light); margin-top: 1.2rem; }\n\n  \/* ===== SUCCESS ===== *\/\n  .form-success { display: none; text-align: center; padding: 3rem 1rem; }\n  .form-success.visible { display: block; animation: heroReveal 0.6s ease forwards; }\n  .form-success-icon { width: 68px; height: 68px; border-radius: 50%; background: var(--sage); display: flex; align-items: center; justify-content: center; margin: 0 auto 1.5rem; }\n  .form-success-icon svg { width: 30px; height: 30px; stroke: white; }\n  .form-success h3 { font-family: 'Tangerine', cursive; font-size: 3.14rem; color: var(--dark); margin-bottom: 0.6rem; }\n  .form-success p { font-size: 1.12rem; color: var(--light); }\n\n  \/* ===== FOOTER ===== *\/\n  .footer { background: var(--cream); padding: 3.5rem 1.5rem 2.5rem; text-align: center; border-top: 1px solid var(--oat); }\n  .footer-monogram { font-family: 'Cinzel Decorative', serif; font-size: 2.46rem; color: var(--sage-light); margin-bottom: 0.8rem; }\n  .footer-monogram .amp { font-size: 0.5em; color: var(--oat); vertical-align: 0.12em; margin: 0 0.05em; }\n  .footer-text { font-size: 1.03rem; color: var(--light); letter-spacing: 0.08em; }\n  .footer-contact { margin-top: 1.5rem; font-size: 0.95rem; color: var(--taupe); line-height: 1.8; }\n  .footer-contact a { color: var(--sage); text-decoration: none; }\n  .footer-contact a:hover { text-decoration: underline; }\n\n  \/* ===== SCROLL REVEAL ===== *\/\n  .reveal { opacity: 0; transform: translateY(40px); transition: opacity 0.9s cubic-bezier(0.23,1,0.32,1), transform 0.9s cubic-bezier(0.23,1,0.32,1); }\n  .reveal.visible { opacity: 1; transform: translateY(0); }\n\n  @media (max-width: 600px) {\n    .program { padding: 3.5rem 1.2rem; }\n    .dieetwensen { padding: 3.5rem 1.2rem; }\n    .quiz { padding: 3.5rem 1.2rem; }\n    .countdown { padding: 2.5rem 1.2rem; }\n    .locatie { padding: 3.5rem 1.2rem; }\n    .timeline::before { left: 26px; }\n    .timeline-dot { width: 52px; }\n    .timeline-time { width: 52px; font-size: 0.92rem; }\n    .timeline-item { gap: 1.4rem; padding-bottom: 2.2rem; }\n    .timeline-content h3 { font-size: 1.23rem; }\n    .timeline-content p { font-size: 1.06rem; }\n    .locatie-card { padding: 2rem 1.5rem; }\n    .locatie-parking { font-size: 0.9rem; padding: 0.45rem 0.8rem; }\n    .dresscode { padding: 1.3rem 1.2rem; }\n    .dresscode-text { font-size: 0.99rem; }\n    .quiz-question { padding: 1.5rem 1.2rem; }\n    .quiz-question h3 { font-size: 1.79rem; }\n    .quiz-option { padding: 0.9rem 1rem; font-size: 0.99rem; }\n    .hero-content { padding: 1rem 1.2rem; }\n    .monogram-svg { width: clamp(200px, 55vw, 280px); }\n    .hero-names { margin-bottom: 0.6rem; }\n    .hero-subtitle { margin-bottom: 0.3rem; }\n    .hero-date { margin-bottom: 0.8rem; }\n    .hero-line { margin-bottom: 0.8rem; }\n    .hero-tagline { font-size: 1.5rem; margin-bottom: 0.8rem; }\n    .hero-warmth { font-size: 1.06rem; max-width: 340px; }\n    .checkbox-pill span { padding: 0.65rem 1.1rem; }\n    .footer { padding: 3rem 1.2rem 2rem; }\n    .weather { padding: 1.2rem 1rem; }\n    .section-title { margin-bottom: 1.5rem; }\n    .divider { margin-bottom: 2rem; }\n  }\n\n  \/* Small phones *\/\n  @media (max-width: 380px) {\n    .hero-names { font-size: 2.46rem; }\n    .hero-subtitle { font-size: 0.95rem; letter-spacing: 0.25em; }\n    .hero-date { font-size: 0.99rem; }\n    .section-label { font-size: 0.92rem; }\n    .section-title { font-size: 2.91rem; }\n    .form-row { grid-template-columns: 1fr; }\n    .checkbox-pill span { padding: 0.6rem 0.9rem; font-size: 1.01rem; }\n    .quiz-option { font-size: 1.01rem; }\n    .timeline-time { font-size: 0.78rem; }\n  }\n\n  \/* iOS parallax fix *\/\n  @supports (-webkit-touch-callout: none) {\n    .hero-bg { background-attachment: scroll !important; }\n  }\n  @media (hover: none) and (pointer: coarse) {\n    .hero-bg { background-attachment: scroll !important; }\n  }\n\n  \/* ===== LOCK SCREEN ===== *\/\n  .lockscreen {\n    position: fixed; inset: 0; z-index: 99999;\n    background: var(--cream);\n    display: flex; align-items: center; justify-content: center;\n    overflow: hidden;\n  }\n  .lockscreen-bg {\n    position: absolute; inset: 0;\n    background:\n      radial-gradient(ellipse at 30% 70%, rgba(148,158,136,0.06) 0%, transparent 50%),\n      radial-gradient(ellipse at 70% 30%, rgba(232,196,184,0.08) 0%, transparent 50%);\n  }\n\n  \/* Chic unlock: monogram lifts, golden glow, elegant fade *\/\n  .lockscreen.unlocking .lockscreen-content {\n    animation: lockLift 1s cubic-bezier(0.23,1,0.32,1) forwards;\n  }\n  @keyframes lockLift {\n    0% { opacity: 1; transform: scale(1) translateY(0); }\n    60% { opacity: 0.8; transform: scale(1.05) translateY(-8px); }\n    100% { opacity: 0; transform: scale(1.08) translateY(-15px); filter: blur(4px); }\n  }\n\n  .lock-glow {\n    position: absolute; top: 50%; left: 50%;\n    width: 0; height: 0;\n    border-radius: 50%;\n    background: radial-gradient(circle, rgba(219,209,194,0.25), rgba(148,158,136,0.08), transparent 70%);\n    transform: translate(-50%, -50%);\n    z-index: 1;\n    pointer-events: none;\n  }\n  .lockscreen.unlocking .lock-glow {\n    animation: glowExpand 1.5s cubic-bezier(0.23,1,0.32,1) forwards;\n  }\n  @keyframes glowExpand {\n    0% { width: 0; height: 0; opacity: 0; }\n    30% { opacity: 1; }\n    100% { width: 200vmax; height: 200vmax; opacity: 0; }\n  }\n\n  .lockscreen.unlocking {\n    animation: lockFadeOut 0.6s ease 1s forwards;\n    pointer-events: none;\n  }\n  @keyframes lockFadeOut {\n    0% { opacity: 1; }\n    100% { opacity: 0; visibility: hidden; }\n  }\n\n  .lockscreen-content {\n    position: relative; text-align: center; padding: 2rem;\n    max-width: 400px; width: 100%;\n    z-index: 3;\n  }\n  .lock-monogram {\n    font-family: 'Cinzel Decorative', serif;\n    font-size: clamp(3.9rem, 10vw, 6.1rem);\n    color: var(--dark); line-height: 1; margin-bottom: 0.3em;\n  }\n  .lock-monogram .amp { font-size: 0.45em; color: var(--sage); vertical-align: 0.15em; margin: 0 0.05em; }\n  .lock-date {\n    font-family: 'Poppins', sans-serif; font-weight: 300;\n    font-size: 0.95rem; color: var(--light); letter-spacing: 0.1em;\n    margin-bottom: 2.5rem;\n  }\n  .lock-label {\n    font-size: 0.9rem; font-weight: 300; color: var(--taupe);\n    margin-bottom: 0.8rem; letter-spacing: 0.05em;\n  }\n  .lock-input-wrap {\n    position: relative; margin-bottom: 1rem;\n  }\n  .lock-input {\n    width: 100%; padding: 0.95rem 3rem 0.95rem 1.1rem;\n    font-family: 'Poppins', sans-serif; font-weight: 300; font-size: 1.12rem;\n    color: var(--dark); background: var(--bg);\n    border: 1px solid var(--oat); border-radius: 50px;\n    outline: none; text-align: center; letter-spacing: 0.15em;\n    transition: all 0.3s ease;\n  }\n  .lock-input:focus { border-color: var(--sage); box-shadow: 0 0 0 3px rgba(148,158,136,0.12); }\n  .lock-input::placeholder { color: var(--sage-light); letter-spacing: 0.1em; font-size: 0.99rem; }\n  .lock-icon {\n    position: absolute; right: 1.2rem; top: 50%; transform: translateY(-50%);\n    width: 18px; height: 18px; stroke: var(--sage-light); fill: none;\n  }\n  .lock-btn {\n    display: block; width: 100%; padding: 0.95rem;\n    font-family: 'Poppins', sans-serif; font-weight: 400; font-size: 0.95rem;\n    letter-spacing: 0.18em; text-transform: uppercase;\n    color: var(--white); background: var(--sage);\n    border: none; border-radius: 50px; cursor: pointer;\n    transition: all 0.3s ease;\n  }\n  .lock-btn:hover { background: var(--sage-dark); transform: translateY(-1px); box-shadow: 0 4px 16px rgba(148,158,136,0.3); }\n  .lock-error {\n    font-size: 0.92rem; color: var(--peach); margin-top: 0.8rem;\n    opacity: 0; transition: opacity 0.3s ease;\n  }\n  .lock-error.visible { opacity: 1; }\n  .lock-hint {\n    margin-top: 2rem; font-size: 0.87rem; color: var(--sage-light);\n    font-style: italic;\n  }\n  .lock-shake {\n    animation: shake 0.5s ease;\n  }\n  @keyframes shake {\n    0%, 100% { transform: translateX(0); }\n    20% { transform: translateX(-8px); }\n    40% { transform: translateX(8px); }\n    60% { transform: translateX(-5px); }\n    80% { transform: translateX(5px); }\n  }\n\n  \/* ===== EXTRAS (cadeau + verhinderd) ===== *\/\n  .extras {\n    padding: 4rem 1.5rem;\n    background: var(--cream);\n  }\n  .extras-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 1.5rem;\n    max-width: 640px;\n    margin: 0 auto;\n  }\n  @media (max-width: 550px) {\n    .extras-grid { grid-template-columns: 1fr; max-width: 400px; }\n  }\n  .extras-card {\n    background: var(--bg);\n    border-radius: 16px;\n    padding: 2.2rem 1.8rem;\n    text-align: center;\n    box-shadow: 0 2px 16px rgba(0,0,0,0.03);\n  }\n  .extras-card .cadeau-envelope {\n    width: 56px; height: 56px;\n    margin: 0 auto 1rem;\n  }\n  .extras-card .cadeau-envelope svg { width: 100%; height: 100%; }\n  .extras-icon {\n    margin: 0 auto 1rem;\n    width: 56px; height: 56px;\n    display: flex; align-items: center; justify-content: center;\n  }\n  .extras-title {\n    font-family: 'Tangerine', cursive;\n    font-size: 2.46rem;\n    color: var(--dark);\n    margin-bottom: 0.6rem;\n    line-height: 1;\n  }\n  .extras-text {\n    font-size: 1.06rem;\n    color: var(--mid);\n    line-height: 1.7;\n  }\n  .extras-text strong {\n    font-weight: 500;\n    color: var(--dark);\n  }\n\n  \/* Safe area for notch phones *\/\n  @supports (padding: env(safe-area-inset-top)) {\n    .hero-top-bar { padding-top: env(safe-area-inset-top); }\n    .footer { padding-bottom: calc(2.5rem + env(safe-area-inset-bottom)); }\n  }\n<\/style>\n<\/head>\n<body>\n\n<!-- ==================== LOCK SCREEN ==================== -->\n<div class=\"lockscreen\" id=\"lockscreen\">\n  <div class=\"lockscreen-bg\"><\/div>\n  <div class=\"lockscreen-content\">\n    <div class=\"lock-monogram\">A<span class=\"amp\">&<\/span>T<\/div>\n    <div class=\"lock-date\">18 september 2026<\/div>\n    <p class=\"lock-label\">Voer het wachtwoord van de uitnodiging in<\/p>\n    <div class=\"lock-input-wrap\">\n      <input type=\"text\" class=\"lock-input\" id=\"lockInput\" placeholder=\"Geheim wachtwoord\" autocomplete=\"off\" autofocus\n        onkeydown=\"if(event.key==='Enter')document.getElementById('lockBtn').click()\">\n      <svg class=\"lock-icon\" viewBox=\"0 0 24 24\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n        <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\"\/>\n        <path d=\"M7 11V7a5 5 0 0 1 10 0v4\"\/>\n      <\/svg>\n    <\/div>\n    <button class=\"lock-btn\" id=\"lockBtn\" onclick=\"handleUnlock()\">Ontgrendel<\/button>\n    <div class=\"lock-error\" id=\"lockError\">Dat is niet het juiste wachtwoord<\/div>\n    <p class=\"lock-hint\">Psst... het wachtwoord staat op jullie uitnodiging<\/p>\n  <\/div>\n<\/div>\n<script>\nfunction handleUnlock() {\n  var pw = document.getElementById('lockInput').value.trim().toLowerCase();\n\n  \/\/ ============================================\n  \/\/ PAS DEZE WACHTWOORDEN AAN\n  \/\/ ============================================\n  var guestType = null;\n  if (pw === 'samenvieren1809') guestType = 'daggast';\n  if (pw === 'samenfeesten1809') guestType = 'ceremoniegast';\n  if (pw === 'samendeavondin1809') guestType = 'avondgast';\n\n  if (guestType) {\n    var ls = document.getElementById('lockscreen');\n    try {\n      sessionStorage.setItem('bruiloft_unlocked', 'true');\n      sessionStorage.setItem('bruiloft_guesttype', guestType);\n    } catch(e) {}\n\n    \/\/ Glow element\n    var glow = document.createElement('div');\n    glow.className = 'lock-glow';\n    ls.appendChild(glow);\n\n    ls.classList.add('unlocking');\n    document.body.style.overflow = '';\n\n    setTimeout(function() {\n      ls.style.display = 'none';\n      document.body.classList.add('unlocked');\n      document.body.classList.add(guestType);\n\n      document.querySelectorAll('.reveal').forEach(function(el) {\n        el.classList.add('visible');\n      });\n      window.dispatchEvent(new Event('scroll'));\n      setTimeout(function() { showScrollHint(); }, 500);\n    }, 1700);\n\n  } else {\n    var err = document.getElementById('lockError');\n    err.classList.add('visible');\n    document.getElementById('lockInput').parentElement.classList.add('lock-shake');\n    setTimeout(function(){ document.getElementById('lockInput').parentElement.classList.remove('lock-shake'); }, 500);\n    setTimeout(function(){ err.classList.remove('visible'); }, 3000);\n    document.getElementById('lockInput').value = '';\n    document.getElementById('lockInput').focus();\n  }\n}\n<\/script>\n\n<!-- ==================== HERO (PARALLAX) ==================== -->\n<section class=\"hero\">\n  <div class=\"hero-bg\"><\/div>\n  <div class=\"hero-overlay\"><\/div>\n  <div class=\"hero-top-bar\"><\/div>\n  <div class=\"floating-leaves\" id=\"floatingLeaves\"><\/div>\n\n  <svg class=\"botanical botanical-tl\" width=\"80\" height=\"160\" viewBox=\"0 0 80 160\">\n    <path d=\"M40 160 Q42 120 44 80 Q46 40 50 10\" stroke=\"#949E88\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\"\/>\n    <ellipse cx=\"32\" cy=\"30\" rx=\"12\" ry=\"8\" fill=\"#949E88\" opacity=\"0.6\" transform=\"rotate(-30 32 30)\"\/>\n    <ellipse cx=\"52\" cy=\"50\" rx=\"11\" ry=\"7\" fill=\"#949E88\" opacity=\"0.5\" transform=\"rotate(20 52 50)\"\/>\n    <ellipse cx=\"35\" cy=\"70\" rx=\"13\" ry=\"8\" fill=\"#949E88\" opacity=\"0.55\" transform=\"rotate(-25 35 70)\"\/>\n    <ellipse cx=\"50\" cy=\"95\" rx=\"10\" ry=\"7\" fill=\"#949E88\" opacity=\"0.45\" transform=\"rotate(15 50 95)\"\/>\n  <\/svg>\n  <svg class=\"botanical botanical-tr\" width=\"80\" height=\"160\" viewBox=\"0 0 80 160\">\n    <path d=\"M40 160 Q42 120 44 80 Q46 40 50 10\" stroke=\"#949E88\" stroke-width=\"1.5\" fill=\"none\" stroke-linecap=\"round\"\/>\n    <ellipse cx=\"32\" cy=\"30\" rx=\"12\" ry=\"8\" fill=\"#949E88\" opacity=\"0.6\" transform=\"rotate(-30 32 30)\"\/>\n    <ellipse cx=\"52\" cy=\"50\" rx=\"11\" ry=\"7\" fill=\"#949E88\" opacity=\"0.5\" transform=\"rotate(20 52 50)\"\/>\n    <ellipse cx=\"35\" cy=\"70\" rx=\"13\" ry=\"8\" fill=\"#949E88\" opacity=\"0.55\" transform=\"rotate(-25 35 70)\"\/>\n    <ellipse cx=\"50\" cy=\"95\" rx=\"10\" ry=\"7\" fill=\"#949E88\" opacity=\"0.45\" transform=\"rotate(15 50 95)\"\/>\n  <\/svg>\n\n  <div class=\"hero-content\">\n    <div class=\"monogram-wrap\">\n      <svg class=\"monogram-svg\" viewBox=\"0 0 440 140\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n        <text class=\"monogram-fill fill-a\" x=\"95\" y=\"118\" font-family=\"'Cinzel Decorative', serif\" font-size=\"120\" text-anchor=\"middle\">A<\/text>\n        <text class=\"monogram-fill fill-amp\" x=\"220\" y=\"98\" font-family=\"'Cinzel Decorative', serif\" font-size=\"72\" text-anchor=\"middle\">&amp;<\/text>\n        <text class=\"monogram-fill fill-t\" x=\"340\" y=\"118\" font-family=\"'Cinzel Decorative', serif\" font-size=\"120\" text-anchor=\"middle\">T<\/text>\n      <\/svg>\n      <div class=\"monogram-shimmer\"><\/div>\n    <\/div>\n    <div class=\"sparkles\" id=\"sparkles\"><\/div>\n    <div class=\"hero-text-item hero-names\">Aniek &amp; Tim<\/div>\n    <div class=\"hero-text-item hero-subtitle\">Wij gaan trouwen<\/div>\n    <div class=\"hero-text-item hero-date\">Vrijdag 18 september 2026<span class=\"hero-date-sep\"> &nbsp;\u00b7&nbsp; <\/span><br class=\"mobile-break\">De Hazelhof, Rijsbergen<\/div>\n    <div class=\"hero-text-item hero-line\"><\/div>\n    <div class=\"hero-text-item hero-tagline\">Trouwen in de tuin,<br>dineren onder de bomen,<br>vieren tussen het groen<\/div>\n    <div class=\"hero-text-item hero-warmth\"><span class=\"greet-dag\">Wat fijn dat jij er de hele dag bij bent. We kijken er ontzettend naar uit om deze bijzondere dag samen met jou te vieren.<\/span><span class=\"greet-ceremonie\">Wat fijn dat jij bij ons jawoord bent. We kijken er ontzettend naar uit om dit bijzondere moment samen met jou te beleven.<\/span><span class=\"greet-avond\">Wat fijn dat jij erbij bent. We kijken er ontzettend naar uit om er samen met jou een onvergetelijk feest van te maken.<\/span><\/div>\n  <\/div>\n<\/section>\n\n<!-- Scroll hint (fixed, outside hero to avoid overflow:hidden clipping) -->\n<div class=\"scroll-hint\" id=\"scrollHint\">\n  <span>Ontdek meer<\/span>\n  <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M12 5v14M5 12l7 7 7-7\"\/><\/svg>\n<\/div>\n\n<!-- ==================== COUNTDOWN ==================== -->\n<section class=\"countdown\" id=\"countdown\">\n  <div id=\"countdownContent\"><\/div>\n  <div class=\"cal-dropdown\">\n    <button class=\"countdown-cal\" id=\"calBtn\" onclick=\"document.getElementById('calOptions').classList.toggle('show')\">\n      <svg viewBox=\"0 0 24 24\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n        <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\"\/>\n        <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\"\/>\n        <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\"\/>\n        <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\"\/>\n      <\/svg>\n      Zet in je agenda\n    <\/button>\n    <div class=\"cal-options\" id=\"calOptions\">\n      <a class=\"cal-option\" href=\"https:\/\/calendar.google.com\/calendar\/render?action=TEMPLATE&text=Bruiloft+Aniek+%26+Tim&dates=20260918T113000Z\/20260918T220000Z&location=De+Hazelhof%2C+Hazeldonksestraat+14%2C+4891+PT+Rijsbergen&details=Het+jawoord+van+Aniek+en+Tim!+Ontvangst+vanaf+13%3A30.\" target=\"_blank\" onclick=\"document.getElementById('calOptions').classList.remove('show')\">\n        Google Calendar\n      <\/a>\n      <a class=\"cal-option\" id=\"icsDownload\" href=\"#\" onclick=\"downloadICS(); document.getElementById('calOptions').classList.remove('show'); return false;\">\n        Apple \/ Outlook\n      <\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ==================== PROGRAMMA ==================== -->\n<section class=\"program reveal\" id=\"programma\">\n  <p class=\"section-label\">Ons dagprogramma<\/p>\n  <h2 class=\"section-title\">Programma<\/h2>\n  <div class=\"divider\"><svg class=\"divider-leaf\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"12\" rx=\"8\" ry=\"5\" fill=\"#c5cabb\" transform=\"rotate(-30 12 12)\"\/><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"22\" stroke=\"#c5cabb\" stroke-width=\"1.2\"\/><\/svg><\/div>\n\n  <div class=\"timeline\">\n    <div class=\"timeline-item guest-dag guest-ceremonie\">\n      <div class=\"timeline-dot\"><span class=\"timeline-time\">13:30<\/span><\/div>\n      <div class=\"timeline-content\">\n        <h3 class=\"guest-dag\">Welkom<\/h3>\n        <h3 class=\"guest-ceremonie\">Aankomst<\/h3>\n        <p>Ontvangst met een welkomstdrankje in de tuin<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"timeline-item guest-dag guest-ceremonie\">\n      <div class=\"timeline-dot\"><span class=\"timeline-time\">14:00<\/span><\/div>\n      <div class=\"timeline-content\">\n        <h3 class=\"guest-dag\">Het jawoord<\/h3>\n        <h3 class=\"guest-ceremonie\">Ceremonie<\/h3>\n        <p>De trouwceremonie<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"timeline-item guest-dag\">\n      <div class=\"timeline-dot\"><span class=\"timeline-time\">15:00<\/span><\/div>\n      <div class=\"timeline-content\"><h3>Klinken &amp; genieten<\/h3><p>Toost op de liefde, bruidstaart en gezellig borrelen<\/p><\/div>\n    <\/div>\n    <div class=\"timeline-item guest-ceremonie\">\n      <div class=\"timeline-dot\"><span class=\"timeline-time\">17:00<\/span><\/div>\n      <div class=\"timeline-content\"><h3>Einde<\/h3><p>Een warme afsluiting van een bijzondere middag<\/p><\/div>\n    <\/div>\n    <div class=\"timeline-item guest-dag\">\n      <div class=\"timeline-dot\"><span class=\"timeline-time\">17:30<\/span><\/div>\n      <div class=\"timeline-content\"><h3>Aan tafel<\/h3><p>Schuif aan en laat je verrassen...<\/p><\/div>\n    <\/div>\n    <div class=\"timeline-item guest-dag guest-avond\">\n      <div class=\"timeline-dot\"><span class=\"timeline-time\">20:30<\/span><\/div>\n      <div class=\"timeline-content\">\n        <h3>De avond begint<\/h3>\n        <p class=\"guest-dag\">Welkom avondgasten met borrel, muziek en samenzijn<\/p>\n        <p class=\"guest-avond\">Welkom! Sluit aan met een borrel, muziek en samenzijn<\/p>\n      <\/div>\n    <\/div>\n    <div class=\"timeline-item guest-dag guest-avond\">\n      <div class=\"timeline-dot\"><span class=\"timeline-time\">00:00<\/span><\/div>\n      <div class=\"timeline-content\"><h3>Tot de lichten uitgaan<\/h3><p>Een warme afsluiting van een onvergetelijke dag<\/p><\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"dresscode\">\n    <div class=\"dresscode-label\">Dresscode<\/div>\n    <p class=\"dresscode-text\">Feestelijk chique met neutrale kleuren.<br>PS: wel met schoenen die tegen gras kunnen<\/p>\n  <\/div>\n<\/section>\n\n<!-- ==================== LOCATIE ==================== -->\n<section class=\"locatie reveal\">\n  <p class=\"section-label\">De locatie<\/p>\n  <h2 class=\"section-title\">De Hazelhof<\/h2>\n  <div class=\"divider\"><svg class=\"divider-leaf\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"12\" rx=\"8\" ry=\"5\" fill=\"#c5cabb\" transform=\"rotate(-30 12 12)\"\/><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"22\" stroke=\"#c5cabb\" stroke-width=\"1.2\"\/><\/svg><\/div>\n  <div class=\"locatie-card\">\n    <div class=\"locatie-address\">Hazeldonksestraat 14<br>4891 PT Rijsbergen<\/div>\n    <div class=\"locatie-parking\">\n      <svg viewBox=\"0 0 24 24\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"1\" y=\"3\" width=\"15\" height=\"13\" rx=\"2\"\/><polygon points=\"16 8 20 8 23 11 23 16 16 16 16 8\"\/><circle cx=\"5.5\" cy=\"18.5\" r=\"2.5\"\/><circle cx=\"18.5\" cy=\"18.5\" r=\"2.5\"\/><\/svg>\n      Parkeren kan eenvoudig op het grasveld naast de locatie\n    <\/div>\n    <div class=\"weather\" id=\"weatherWidget\">\n      <div class=\"weather-label\">Weer op 18 september<\/div>\n      <div class=\"weather-main\">\n        <span class=\"weather-icon\" id=\"weatherIcon\"><\/span>\n        <span class=\"weather-temp\" id=\"weatherTemp\"><\/span>\n      <\/div>\n      <div class=\"weather-desc\" id=\"weatherDesc\"><\/div>\n      <div class=\"weather-tip\" id=\"weatherTip\"><\/div>\n      <div class=\"weather-joke\">Bij regen dansen we gewoon binnen. Bij zon ook trouwens.<\/div>\n    <\/div>\n    <a href=\"https:\/\/maps.google.com\/?q=De+Hazelhof+Hazeldonksestraat+14+Rijsbergen\" target=\"_blank\" class=\"locatie-btn\">Bekijk route<\/a>\n  <\/div>\n<\/section>\n\n<!-- ==================== QUIZ ==================== -->\n<div class=\"quiz-wrapper\">\n<section class=\"quiz reveal\" id=\"quiz\">\n  <p class=\"section-label\">Even testen<\/p>\n  <h2 class=\"section-title\">Ken je het bruidspaar?<\/h2>\n  <div class=\"divider\"><svg class=\"divider-leaf\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"12\" rx=\"8\" ry=\"5\" fill=\"#c5cabb\" transform=\"rotate(-30 12 12)\"\/><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"22\" stroke=\"#c5cabb\" stroke-width=\"1.2\"\/><\/svg><\/div>\n\n  <div class=\"quiz-question\" data-correct=\"2\">\n    <h3>Hoe hebben Aniek en Tim elkaar leren kennen?<\/h3>\n    <div class=\"quiz-options\">\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"0\">Via vrienden op een feestje<\/button>\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"1\">Op school<\/button>\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"2\">Bij de Dirk van den Broek<\/button>\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"3\">Via een dating app<\/button>\n    <\/div>\n    <div class=\"quiz-feedback\">Bij de Dirk van den Broek! Wie had gedacht dat boodschappen doen zo romantisch kon zijn? \ud83d\uded2<\/div>\n  <\/div>\n\n  <div class=\"quiz-question\" data-correct=\"1\">\n    <h3>Hoelang zijn Tim en Aniek al samen?<\/h3>\n    <div class=\"quiz-options\">\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"0\">10 jaar<\/button>\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"1\">14 jaar<\/button>\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"2\">8 jaar<\/button>\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"3\">12 jaar<\/button>\n    <\/div>\n    <div class=\"quiz-feedback\">14 jaar al! En het avontuur gaat nu pas echt beginnen. \ud83d\udc8d<\/div>\n  <\/div>\n\n  <div class=\"quiz-question\" data-correct=\"0\">\n    <h3>Wie is het meest eigenwijs van de twee?<\/h3>\n    <div class=\"quiz-options\">\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"0\">Aniek<\/button>\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"1\">Tim<\/button>\n      <button type=\"button\" class=\"quiz-option\" data-idx=\"2\">Allebei even erg<\/button>\n    <\/div>\n    <div class=\"quiz-feedback\">Aniek, en ze is er trots op! \ud83d\ude04<\/div>\n  <\/div>\n\n  <div class=\"quiz-score\" id=\"quizScore\">\n    <div class=\"quiz-score-number\" id=\"quizScoreNum\"><\/div>\n    <div class=\"quiz-score-text\" id=\"quizScoreText\"><\/div>\n  <\/div>\n<\/section>\n<\/div>\n\n<!-- ==================== VERZOEKNUMMERS ==================== -->\n<div class=\"verzoeknummers-wrapper\">\n<section class=\"verzoeknummers reveal\" id=\"verzoeknummers\">\n  <p class=\"section-label\">De band speelt op verzoek<\/p>\n  <h2 class=\"section-title\">Verzoeknummers<\/h2>\n  <div class=\"divider\"><svg class=\"divider-leaf\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"12\" rx=\"8\" ry=\"5\" fill=\"#c5cabb\" transform=\"rotate(-30 12 12)\"\/><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"22\" stroke=\"#c5cabb\" stroke-width=\"1.2\"\/><\/svg><\/div>\n  <svg class=\"verzoeknummers-icon\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M9 18V5l12-2v13\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><circle cx=\"6\" cy=\"18\" r=\"3\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><circle cx=\"18\" cy=\"16\" r=\"3\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg>\n  <p class=\"verzoeknummers-intro\">Welk nummer moet de band zeker spelen? Laat je verzoeknummer achter en wie weet klinkt jouw favoriete nummer op de dansvloer!<\/p>\n\n  <div class=\"verzoeknummers-list\" id=\"verzoekList\">\n    <p class=\"verzoek-empty\" id=\"verzoekEmpty\">Nog geen verzoeknummers. Wees de eerste!<\/p>\n  <\/div>\n\n  <div class=\"verzoek-form\" id=\"verzoekForm\">\n    <div class=\"verzoek-row\">\n      <input type=\"text\" class=\"verzoek-input\" id=\"verzoekNaam\" placeholder=\"Je naam\" aria-label=\"Je naam\" maxlength=\"30\">\n      <input type=\"text\" class=\"verzoek-input\" id=\"verzoekSong\" placeholder=\"Nummer\" aria-label=\"Nummer\" maxlength=\"60\">\n    <\/div>\n    <input type=\"text\" class=\"verzoek-input\" id=\"verzoekArtist\" placeholder=\"Artiest (optioneel)\" aria-label=\"Artiest (optioneel)\" maxlength=\"40\">\n    <button type=\"button\" class=\"verzoek-btn\" onclick=\"submitVerzoek()\">Nummer aanvragen<\/button>\n    <p class=\"verzoek-feedback\" id=\"verzoekFeedback\" role=\"status\" aria-live=\"polite\"><\/p>\n  <\/div>\n\n  <div class=\"luca-overlay\" id=\"lucaOverlay\" role=\"dialog\" aria-modal=\"true\" aria-label=\"Bericht voor Luca\">\n    <div class=\"luca-card\">\n      <p class=\"luca-titel\">Meen je dit nou echt, Luca?<\/p>\n      <p class=\"luca-tekst\">We hadden kunnen weten dat jij hiermee zou komen. Vooruit dan, hij staat erbij. De band is gewaarschuwd.<\/p>\n      <button type=\"button\" class=\"verzoek-btn\" onclick=\"document.getElementById('lucaOverlay').classList.remove('show')\">Geen spijt<\/button>\n    <\/div>\n  <\/div>\n<\/section>\n<\/div>\n\n<!-- ==================== DIEETWENSEN ==================== -->\n<div class=\"dieetwensen-wrapper\">\n<section class=\"dieetwensen reveal\" id=\"dieetwensen\">\n  <p class=\"section-label\">Laat het ons weten<\/p>\n  <h2 class=\"section-title\">Dieetwensen<\/h2>\n  <div class=\"divider\"><svg class=\"divider-leaf\" viewBox=\"0 0 24 24\"><ellipse cx=\"12\" cy=\"12\" rx=\"8\" ry=\"5\" fill=\"#c5cabb\" transform=\"rotate(-30 12 12)\"\/><line x1=\"12\" y1=\"12\" x2=\"12\" y2=\"22\" stroke=\"#c5cabb\" stroke-width=\"1.2\"\/><\/svg><\/div>\n  <p class=\"form-intro\">Heb je allergie\u00ebn of dieetwensen? Laat het ons weten zodat we ervoor kunnen zorgen dat jij ook volop kunt genieten van het diner.<\/p>\n  <p class=\"form-deadline\">Graag doorgeven voor 18 augustus 2026<\/p>\n\n  <form id=\"dietForm\">\n    <input type=\"text\" name=\"_honeypot\" style=\"display:none\" tabindex=\"-1\" autocomplete=\"off\">\n    <div class=\"form-row\">\n      <div class=\"form-group\"><label>Voornaam<\/label><input type=\"text\" class=\"form-input\" name=\"voornaam\" placeholder=\"Je voornaam\" required><\/div>\n      <div class=\"form-group\"><label>Achternaam<\/label><input type=\"text\" class=\"form-input\" name=\"achternaam\" placeholder=\"Je achternaam\" required><\/div>\n    <\/div>\n    <div class=\"form-group\"><label>E-mailadres<\/label><input type=\"email\" class=\"form-input\" name=\"email\" placeholder=\"je@email.nl\"><\/div>\n    <div class=\"form-group\">\n      <label>Dieetwensen<\/label>\n      <div class=\"checkbox-group\">\n        <label class=\"checkbox-pill\"><input type=\"checkbox\" name=\"dieet\" value=\"vegetarisch\"><span>Vegetarisch<\/span><\/label>\n        <label class=\"checkbox-pill\"><input type=\"checkbox\" name=\"dieet\" value=\"veganistisch\"><span>Veganistisch<\/span><\/label>\n        <label class=\"checkbox-pill\"><input type=\"checkbox\" name=\"dieet\" value=\"glutenvrij\"><span>Glutenvrij<\/span><\/label>\n        <label class=\"checkbox-pill\"><input type=\"checkbox\" name=\"dieet\" value=\"lactosevrij\"><span>Lactosevrij<\/span><\/label>\n        <label class=\"checkbox-pill\"><input type=\"checkbox\" name=\"dieet\" value=\"notenallergie\"><span>Notenallergie<\/span><\/label>\n        <label class=\"checkbox-pill\"><input type=\"checkbox\" name=\"dieet\" value=\"zwangerschap\"><span>Zwangerschap<\/span><\/label>\n        <label class=\"checkbox-pill\"><input type=\"checkbox\" name=\"dieet\" value=\"anders\"><span>Anders<\/span><\/label>\n      <\/div>\n    <\/div>\n    <div class=\"form-group\"><label>Toelichting of opmerkingen<\/label><textarea class=\"form-textarea\" name=\"opmerkingen\" placeholder=\"Vertel ons meer over je wensen of allergie\u00ebn...\"><\/textarea><\/div>\n    <button type=\"submit\" class=\"submit-btn\">Versturen<\/button>\n    <p class=\"form-note\">Wij behandelen je gegevens met zorg en gebruiken ze alleen voor de bruiloft.<\/p>\n  <\/form>\n\n  <div class=\"form-success\" id=\"formSuccess\">\n    <div class=\"form-success-icon\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 6 9 17 4 12\"\/><\/svg><\/div>\n    <h3>Dankjewel!<\/h3>\n    <p>We hebben je wensen ontvangen. Tot 18 september!<\/p>\n  <\/div>\n<\/section>\n<\/div>\n\n<!-- ==================== GOED OM TE WETEN ==================== -->\n<section class=\"extras reveal\">\n  <div class=\"extras-grid\">\n    <div class=\"extras-card\">\n      <div class=\"cadeau-envelope\">\n        <svg viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n          <rect x=\"8\" y=\"22\" width=\"64\" height=\"44\" rx=\"4\" fill=\"#F2ECE3\" stroke=\"#AE9981\" stroke-width=\"1.5\"\/>\n          <path d=\"M8 26 L40 48 L72 26\" stroke=\"#AE9981\" stroke-width=\"1.5\" fill=\"none\" stroke-linejoin=\"round\"\/>\n          <path d=\"M40 38 C40 35 36 32 34 35 C32 38 40 44 40 44 C40 44 48 38 46 35 C44 32 40 35 40 38Z\" fill=\"#E8C4B8\" opacity=\"0.8\"\/>\n        <\/svg>\n      <\/div>\n      <div class=\"extras-title\">Cadeautip<\/div>\n    <\/div>\n    <div class=\"extras-card\">\n      <div class=\"extras-icon\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#AE9981\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"44\" height=\"44\">\n          <path d=\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\"\/>\n          <polyline points=\"22,6 12,13 2,6\"\/>\n        <\/svg>\n      <\/div>\n      <div class=\"extras-title\">Verhinderd?<\/div>\n      <p class=\"extras-text\">Wat jammer! Stuur dan een berichtje naar <strong>Aniek<\/strong> of <strong>Tim<\/strong>, we horen graag van je.<\/p>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ==================== FOOTER ==================== -->\n<footer class=\"footer\">\n  <div class=\"footer-monogram\">A<span class=\"amp\">&<\/span>T<\/div>\n  <div class=\"footer-text\">18 september 2026 &nbsp;\u00b7&nbsp; De Hazelhof, Rijsbergen<\/div>\n  <div class=\"footer-contact\">\n    Vragen of wil je iets organiseren op de dag zelf? Neem contact op met onze ceremoniemeester Amanda via<br>\n    <a href=\"mailto:klantenservice@aniekentimgaantrouwen.nl\">klantenservice@aniekentimgaantrouwen.nl<\/a>\n  <\/div>\n<\/footer>\n\n<script>\n  \/\/ ===== LOCK SCREEN (session check) =====\n  try {\n    if (sessionStorage.getItem('bruiloft_unlocked') === 'true') {\n      document.getElementById('lockscreen').style.display = 'none';\n      document.body.classList.add('unlocked');\n      var gt = sessionStorage.getItem('bruiloft_guesttype');\n      if (gt) document.body.classList.add(gt);\n    } else {\n      document.body.style.overflow = 'hidden';\n    }\n  } catch(e) {\n    document.body.style.overflow = 'hidden';\n  }\n\n  \/\/ Force-reveal sections that are already in view after a short delay\n  setTimeout(function() {\n    if (document.body.classList.contains('unlocked')) {\n      document.querySelectorAll('.reveal').forEach(function(el) {\n        var rect = el.getBoundingClientRect();\n        if (rect.top < window.innerHeight) el.classList.add('visible');\n      });\n      if (typeof showScrollHint === 'function') showScrollHint();\n    }\n  }, 300);\n\n  \/\/ ===== SCROLL HINT (always visible when not scrolling, hidden at bottom) =====\n  var scrollTimer = null;\n  function showScrollHint() {\n    var hint = document.getElementById('scrollHint');\n    if (hint) hint.classList.add('show');\n  }\n  window.addEventListener('scroll', function() {\n    var hint = document.getElementById('scrollHint');\n    if (!hint || !document.body.classList.contains('unlocked')) return;\n\n    \/\/ Verberg tijdens scrollen\n    hint.classList.remove('show');\n\n    clearTimeout(scrollTimer);\n    scrollTimer = setTimeout(function() {\n      \/\/ Check of we onderaan de pagina zijn\n      var atBottom = (window.innerHeight + window.scrollY) >= (document.body.scrollHeight - 100);\n      if (!atBottom) {\n        hint.classList.add('show');\n      }\n    }, 500);\n  }, { passive: true });\n\n  \/\/ ===== VERZOEKNUMMERS =====\n  var itemColors = [\n    {bg: 'rgba(148,158,136,0.12)', border: 'rgba(148,158,136,0.25)'},\n    {bg: 'rgba(232,196,184,0.15)', border: 'rgba(232,196,184,0.3)'},\n    {bg: 'rgba(219,209,194,0.18)', border: 'rgba(219,209,194,0.3)'},\n    {bg: 'rgba(197,202,187,0.14)', border: 'rgba(197,202,187,0.28)'},\n    {bg: 'rgba(242,236,227,0.4)', border: 'rgba(219,209,194,0.25)'},\n  ];\n  var allRequests = [];\n\n  function getVotedIds() {\n    try { return JSON.parse(localStorage.getItem('bruiloft_gestemd') || '[]'); } catch(e) { return []; }\n  }\n  function markVoted(id) {\n    try {\n      var ids = getVotedIds();\n      ids.push(id);\n      localStorage.setItem('bruiloft_gestemd', JSON.stringify(ids));\n    } catch(e) {}\n  }\n\n  function normalizeSong(r) {\n    return (r.nummer + '|' + (r.artiest || '')).toLowerCase().trim();\n  }\n\n  function renderRequests() {\n    var list = document.getElementById('verzoekList');\n    var empty = document.getElementById('verzoekEmpty');\n    if (!list) return;\n\n    if (allRequests.length === 0) {\n      empty.style.display = '';\n      return;\n    }\n    empty.style.display = 'none';\n\n    var items = list.querySelectorAll('.verzoek-item');\n    items.forEach(function(el) { el.remove(); });\n\n    \/\/ Tel duplicaten voor \"x keer aangevraagd\" badge\n    var counts = {};\n    allRequests.forEach(function(r) {\n      var key = normalizeSong(r);\n      counts[key] = (counts[key] || 0) + 1;\n    });\n\n    \/\/ Sorteer: meeste stemmen eerst, daarna nieuwste eerst\n    var sorted = allRequests.slice().sort(function(a, b) {\n      var sa = parseInt(a.stemmen || 0, 10);\n      var sb = parseInt(b.stemmen || 0, 10);\n      if (sb !== sa) return sb - sa;\n      return (parseInt(b.id || 0, 10)) - (parseInt(a.id || 0, 10));\n    });\n\n    var votedIds = getVotedIds();\n\n    sorted.forEach(function(r, idx) {\n      var color = itemColors[idx % itemColors.length];\n\n      var el = document.createElement('div');\n      el.className = 'verzoek-item';\n      el.style.background = color.bg;\n      el.style.border = '1px solid ' + color.border;\n      el.style.animationDelay = (idx * 0.05) + 's';\n\n      var note = document.createElement('span');\n      note.className = 'verzoek-note';\n      note.textContent = '\\u266B';\n\n      var info = document.createElement('div');\n      info.className = 'verzoek-info';\n\n      var song = document.createElement('div');\n      song.className = 'verzoek-song';\n      song.textContent = r.nummer + (r.artiest ? ' \\u2014 ' + r.artiest : '');\n\n      var dupCount = counts[normalizeSong(r)];\n      if (dupCount > 1) {\n        var badge = document.createElement('span');\n        badge.className = 'verzoek-badge';\n        badge.textContent = dupCount + 'x aangevraagd';\n        song.appendChild(badge);\n      }\n\n      var meta = document.createElement('div');\n      meta.className = 'verzoek-meta';\n      meta.textContent = 'Aangevraagd door ' + r.naam;\n\n      info.appendChild(song);\n      info.appendChild(meta);\n      el.appendChild(note);\n      el.appendChild(info);\n\n      \/\/ Stem-hartje (alleen voor verzoeken met server-id)\n      if (r.id) {\n        var stemmen = parseInt(r.stemmen || 0, 10);\n        var hasVoted = votedIds.indexOf(parseInt(r.id, 10)) !== -1;\n\n        var btn = document.createElement('button');\n        btn.type = 'button';\n        btn.className = 'verzoek-stem' + (hasVoted ? ' gestemd' : '');\n        btn.setAttribute('aria-label', 'Stem op dit nummer');\n        btn.innerHTML = '<svg viewBox=\"0 0 24 24\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path class=\"stem-hart\" d=\"M12 21C12 21 4 14.5 4 8.8 4 5.6 6.4 3.5 9 3.5c1.6 0 2.6 0.9 3 1.5 0.4-0.6 1.4-1.5 3-1.5 2.6 0 5 2.1 5 5.3C20 14.5 12 21 12 21z\"\/><\/svg>';\n\n        var countSpan = document.createElement('span');\n        countSpan.textContent = stemmen > 0 ? stemmen : '';\n        btn.appendChild(countSpan);\n\n        btn.addEventListener('click', (function(req, button, span) {\n          return function() {\n            if (getVotedIds().indexOf(parseInt(req.id, 10)) !== -1) return;\n\n            \/\/ Optimistisch bijwerken\n            req.stemmen = parseInt(req.stemmen || 0, 10) + 1;\n            markVoted(parseInt(req.id, 10));\n            button.classList.add('gestemd');\n            span.textContent = req.stemmen;\n\n            var fd = new FormData();\n            fd.append('action', 'bruiloft_stem_verzoek');\n            fd.append('id', req.id);\n            fetch(window.location.origin + '\/wp-admin\/admin-ajax.php', { method: 'POST', body: fd })\n              .then(function(resp) { return resp.json(); })\n              .then(function(result) {\n                if (result.success) {\n                  \/\/ Server geeft het actuele aantal terug; herrender voor juiste volgorde\n                  if (result.data && result.data.stemmen) req.stemmen = result.data.stemmen;\n                  renderRequests();\n                }\n              })\n              .catch(function() {});\n          };\n        })(r, btn, countSpan));\n\n        el.appendChild(btn);\n      }\n\n      list.appendChild(el);\n    });\n  }\n\n  function getGuestType() {\n    try { return sessionStorage.getItem('bruiloft_guesttype') || 'daggast'; } catch(e) { return 'daggast'; }\n  }\n\n  function showVerzoekFeedback(tekst, isError) {\n    var box = document.getElementById('verzoekFeedback');\n    if (!box) return;\n    box.textContent = tekst;\n    box.className = 'verzoek-feedback show' + (isError ? ' error' : '');\n    clearTimeout(box._timer);\n    box._timer = setTimeout(function() {\n      box.className = 'verzoek-feedback';\n    }, 5000);\n  }\n\n  function loadRequests() {\n    var ajaxUrl = window.location.origin + '\/wp-admin\/admin-ajax.php';\n    var fd = new FormData();\n    fd.append('action', 'bruiloft_load_verzoek');\n\n    fetch(ajaxUrl, { method: 'POST', body: fd })\n      .then(function(r) { return r.json(); })\n      .then(function(result) {\n        if (result.success && result.data && result.data.length > 0) {\n          allRequests = result.data;\n          renderRequests();\n        }\n      })\n      .catch(function() {});\n  }\n\n  \/\/ Easter egg: Luca + Backstreet Boys of ABBA\n  function checkLucaEgg(naam, nummer, artiest) {\n    var isLuca = naam.toLowerCase().indexOf('luca') !== -1;\n    var combined = (nummer + ' ' + artiest).toLowerCase();\n    var isGuilty = combined.indexOf('backstreet') !== -1 || combined.indexOf('abba') !== -1;\n    return isLuca && isGuilty;\n  }\n\n  function submitVerzoek() {\n    var naam = document.getElementById('verzoekNaam').value.trim();\n    var nummer = document.getElementById('verzoekSong').value.trim();\n    var artiest = document.getElementById('verzoekArtist').value.trim();\n    if (!naam || !nummer) {\n      showVerzoekFeedback('Vul minimaal je naam en een nummer in.', true);\n      return;\n    }\n\n    var btn = document.querySelector('.verzoek-btn');\n    btn.disabled = true;\n    btn.textContent = 'Versturen...';\n\n    var req = { naam: naam, nummer: nummer, artiest: artiest };\n    var ajaxUrl = window.location.origin + '\/wp-admin\/admin-ajax.php';\n    var fd = new FormData();\n    fd.append('action', 'bruiloft_save_verzoek');\n    fd.append('naam', naam);\n    fd.append('nummer', nummer);\n    fd.append('artiest', artiest);\n\n    fetch(ajaxUrl, { method: 'POST', body: fd })\n      .then(function(r) { return r.json(); })\n      .then(function(result) {\n        btn.disabled = false;\n        btn.textContent = 'Nummer aanvragen';\n        if (result.success) {\n          if (result.data && result.data.id) {\n            req.id = result.data.id;\n            req.stemmen = 0;\n          }\n          allRequests.push(req);\n          renderRequests();\n          if (checkLucaEgg(naam, nummer, artiest)) {\n            document.getElementById('lucaOverlay').classList.add('show');\n          } else {\n            showVerzoekFeedback('Aangevraagd! De band gaat ermee aan de slag.', false);\n          }\n          document.getElementById('verzoekNaam').value = '';\n          document.getElementById('verzoekSong').value = '';\n          document.getElementById('verzoekArtist').value = '';\n        } else {\n          showVerzoekFeedback(result.data || 'Er ging iets mis. Probeer het nog eens.', true);\n        }\n      })\n      .catch(function() {\n        btn.disabled = false;\n        btn.textContent = 'Nummer aanvragen';\n        showVerzoekFeedback('Verzenden mislukt. Controleer je verbinding en probeer het nog eens.', true);\n      });\n  }\n\n  loadRequests();\n\n\n  \/\/ ===== CALENDAR ICS DOWNLOAD =====\n  function downloadICS() {\n    var ics = [\n      'BEGIN:VCALENDAR',\n      'VERSION:2.0',\n      'PRODID:-\/\/Bruiloft Aniek & Tim\/\/NL',\n      'BEGIN:VEVENT',\n      'DTSTART:20260918T113000Z',\n      'DTEND:20260918T220000Z',\n      'SUMMARY:Bruiloft Aniek & Tim',\n      'LOCATION:De Hazelhof\\\\, Hazeldonksestraat 14\\\\, 4891 PT Rijsbergen',\n      'DESCRIPTION:Het jawoord van Aniek en Tim! Ontvangst vanaf 13:30.',\n      'END:VEVENT',\n      'END:VCALENDAR'\n    ].join('\\r\\n');\n    var blob = new Blob([ics], { type: 'text\/calendar;charset=utf-8' });\n    var link = document.createElement('a');\n    link.href = URL.createObjectURL(blob);\n    link.download = 'bruiloft-aniek-tim.ics';\n    link.click();\n    URL.revokeObjectURL(link.href);\n  }\n\n  \/\/ Sluit calendar dropdown bij klik buiten\n  document.addEventListener('click', function(e) {\n    var dropdown = document.getElementById('calOptions');\n    var btn = document.getElementById('calBtn');\n    if (dropdown && btn && !btn.contains(e.target) && !dropdown.contains(e.target)) {\n      dropdown.classList.remove('show');\n    }\n  });\n\n  \/\/ ===== COUNTDOWN =====\n  function updateCountdown() {\n    var el = document.getElementById('countdownContent');\n    if (!el) return;\n\n    \/\/ Vergelijk alleen datums, niet tijden\n    var today = new Date();\n    today = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n    var wedding = new Date(2026, 8, 18); \/\/ 8 = september (0-indexed)\n    var diff = wedding.getTime() - today.getTime();\n\n    if (diff <= 0) {\n      el.innerHTML = '<div class=\"countdown-today\">Vandaag is de grote dag!<\/div>';\n      return;\n    }\n\n    var days = Math.round(diff \/ (1000*60*60*24));\n    var weeks = Math.floor(days \/ 7);\n    var remainDays = days % 7;\n\n    var text;\n    if (days === 1) {\n      text = 'Nog <span class=\"countdown-number\">1<\/span> nachtje slapen';\n    } else if (days <= 14) {\n      text = 'Nog <span class=\"countdown-number\">' + days + '<\/span> nachtjes slapen';\n    } else if (remainDays === 0) {\n      text = 'Nog <span class=\"countdown-number\">' + weeks + '<\/span> weken';\n    } else {\n      text = 'Nog <span class=\"countdown-number\">' + weeks + '<\/span> weken en <span class=\"countdown-number\">' + remainDays + '<\/span> ' + (remainDays === 1 ? 'dag' : 'dagen');\n    }\n\n    el.innerHTML = '<div class=\"countdown-text\">' + text + '<\/div><span class=\"countdown-sub\">tot wij ja zeggen<\/span>';\n  }\n  updateCountdown();\n  setInterval(updateCountdown, 60000);\n\n  \/\/ ===== PARALLAX =====\n  let ticking = false;\n  window.addEventListener('scroll', () => {\n    if (!ticking) {\n      requestAnimationFrame(() => {\n        const bg = document.querySelector('.hero-bg');\n        if (bg) bg.style.transform = `scale(1.05) translateY(${window.scrollY * 0.3}px)`;\n        ticking = false;\n      });\n      ticking = true;\n    }\n  }, { passive: true });\n\n  \/\/ ===== FLOATING EUCALYPTUS LEAVES =====\n  const isMobile = window.innerWidth < 768;\n  function createLeaf() {\n    const c = document.getElementById('floatingLeaves');\n    if (!c) return;\n    const l = document.createElement('div');\n    l.classList.add('leaf');\n    const sz = isMobile ? 26 + Math.random()*18 : 20 + Math.random()*22;\n    const dur = isMobile ? 6 + Math.random()*8 : 8 + Math.random()*12;\n    const del = Math.random() * 1.5;\n    const rot = (Math.random()>0.5?'':'-') + (180+Math.random()*360) + 'deg';\n    l.style.cssText = `left:${Math.random()*100}%;--leaf-size:${sz}px;--leaf-rotate:${rot};animation-duration:${dur}s;animation-delay:${del}s;`;\n    const h=80+Math.random()*30, s=20+Math.random()*15, li=42+Math.random()*18;\n    l.innerHTML = `<svg viewBox=\"0 0 24 36\" fill=\"hsl(${h},${s}%,${li}%)\"><ellipse cx=\"12\" cy=\"14\" rx=\"7\" ry=\"12\" transform=\"rotate(${Math.random()*40-20} 12 14)\"\/><\/svg>`;\n    c.appendChild(l);\n    setTimeout(() => l.remove(), (dur+del)*1000);\n  }\n  for (let i = 0; i < (isMobile ? 8 : 5); i++) setTimeout(createLeaf, i * 350);\n  setInterval(createLeaf, isMobile ? 1800 : 3000);\n\n  \/\/ ===== SPARKLE PARTICLES =====\n  (function createSparkles() {\n    const container = document.getElementById('sparkles');\n    if (!container) return;\n    for (let i = 0; i < 18; i++) {\n      const s = document.createElement('div');\n      s.classList.add('sparkle');\n      s.style.cssText = `left:${10+Math.random()*80}%;top:${15+Math.random()*65}%;width:${2+Math.random()*4}px;height:${2+Math.random()*4}px;--dur:${3+Math.random()*4}s;--delay:${Math.random()*6}s;`;\n      container.appendChild(s);\n    }\n  })();\n\n  \/\/ ===== SCROLL REVEAL =====\n  const obs = new IntersectionObserver(entries => {\n    entries.forEach(e => { if (e.isIntersecting) e.target.classList.add('visible'); });\n  }, { threshold: 0.12 });\n  document.querySelectorAll('.reveal').forEach(el => obs.observe(el));\n\n  \/\/ ===== TIMELINE SCROLL ANIMATION (bolletjes lichten op bij scrollen) =====\n  var timelineScrollObs = new IntersectionObserver(function(entries) {\n    entries.forEach(function(e) {\n      if (e.isIntersecting) {\n        e.target.classList.add('in-view');\n      }\n    });\n  }, { threshold: 0.5 });\n\n  document.querySelectorAll('.timeline-item').forEach(function(item) {\n    timelineScrollObs.observe(item);\n  });\n\n  \/\/ ===== CONFETTI LAUNCHER =====\n  function launchConfetti() {\n    const container = document.createElement('div');\n    container.classList.add('confetti-container');\n    document.body.appendChild(container);\n    const colors = ['#949E88','#E8C4B8','#DBD1C2','#AE9981','#c5cabb','#F2ECE3'];\n    for (let i = 0; i < 60; i++) {\n      const p = document.createElement('div');\n      p.classList.add('confetti-piece');\n      p.style.cssText = `left:${Math.random()*100}%;background:${colors[Math.floor(Math.random()*colors.length)]};--fall-dur:${2+Math.random()*2}s;--spin:${360+Math.random()*720}deg;--spin2:${Math.random()*360}deg;animation-delay:${Math.random()*0.5}s;width:${5+Math.random()*6}px;height:${8+Math.random()*8}px;border-radius:${Math.random()>0.5?'50%':'2px'};`;\n      container.appendChild(p);\n    }\n    setTimeout(() => container.remove(), 4500);\n  }\n\n\n  \/\/ ===== WEATHER (Open-Meteo, free, no API key) =====\n  async function loadWeather() {\n    const wedding = new Date('2026-09-18');\n    const now = new Date();\n    const daysUntil = Math.ceil((wedding - now) \/ (1000*60*60*24));\n    const widget = document.getElementById('weatherWidget');\n\n    try {\n      const lat = 51.527, lon = 4.748; \/\/ Rijsbergen\n      const dateStr = '2026-09-18';\n      const res = await fetch(`https:\/\/api.open-meteo.com\/v1\/forecast?latitude=${lat}&longitude=${lon}&daily=temperature_2m_max,temperature_2m_min,precipitation_probability_max,weathercode&timezone=Europe\/Amsterdam&start_date=${dateStr}&end_date=${dateStr}`);\n      const data = await res.json();\n\n      if (data.daily && data.daily.temperature_2m_max && data.daily.temperature_2m_max[0] != null) {\n        const maxTemp = Math.round(data.daily.temperature_2m_max[0]);\n        const minTemp = Math.round(data.daily.temperature_2m_min[0]);\n        const rainChance = data.daily.precipitation_probability_max[0];\n        const code = data.daily.weathercode[0];\n\n        const weatherMap = {\n          0:['\u2600\ufe0f','Zonnig'],1:['\ud83c\udf24\ufe0f','Overwegend zonnig'],2:['\u26c5','Deels bewolkt'],3:['\u2601\ufe0f','Bewolkt'],\n          45:['\ud83c\udf2b\ufe0f','Mistig'],48:['\ud83c\udf2b\ufe0f','Mistig'],51:['\ud83c\udf26\ufe0f','Lichte motregen'],53:['\ud83c\udf27\ufe0f','Motregen'],\n          55:['\ud83c\udf27\ufe0f','Regen'],61:['\ud83c\udf27\ufe0f','Lichte regen'],63:['\ud83c\udf27\ufe0f','Regen'],65:['\ud83c\udf27\ufe0f','Zware regen'],\n          80:['\ud83c\udf26\ufe0f','Buien'],81:['\ud83c\udf27\ufe0f','Regenbuien'],95:['\u26c8\ufe0f','Onweer']\n        };\n        const [icon, desc] = weatherMap[code] || ['\ud83c\udf24\ufe0f','Wisselend'];\n\n        document.getElementById('weatherIcon').textContent = icon;\n        document.getElementById('weatherTemp').textContent = `${maxTemp}\u00b0`;\n        document.getElementById('weatherDesc').textContent = `${desc} \u00b7 ${minTemp}\u00b0 \/ ${maxTemp}\u00b0`;\n\n        let tip = '';\n        if (rainChance > 50) tip = 'Neem voor de zekerheid een paraplu mee!';\n        else if (maxTemp < 15) tip = 'Een sjaal of jasje is geen overbodige luxe.';\n        else if (maxTemp > 25) tip = 'Zonnebrand niet vergeten!';\n        else tip = 'Heerlijk weer om buiten te vieren.';\n        document.getElementById('weatherTip').textContent = tip;\n\n        widget.classList.add('visible');\n        return;\n      }\n    } catch(e) { \/* fallback below *\/ }\n\n    \/\/ Fallback: forecast not yet available (too far out)\n    if (daysUntil > 7) {\n      document.getElementById('weatherIcon').textContent = '\ud83c\udf24\ufe0f';\n      document.getElementById('weatherTemp').textContent = '19\u00b0';\n      document.getElementById('weatherDesc').textContent = 'Voorspelling volgt dichter bij de datum';\n      document.getElementById('weatherTip').textContent = 'Gemiddeld is het rond 19\u00b0 in september in Rijsbergen.';\n      widget.querySelector('.weather-label').textContent = 'Weer op 18 september';\n      widget.classList.add('visible');\n    }\n  }\n  loadWeather();\n\n  \/\/ ===== QUIZ =====\n  let quizAnswered = 0;\n  let quizCorrect = 0;\n  const totalQuestions = document.querySelectorAll('.quiz-question').length;\n\n  document.querySelectorAll('.quiz-question').forEach(q => {\n    const correctIdx = q.dataset.correct;\n    const options = q.querySelectorAll('.quiz-option');\n    const feedback = q.querySelector('.quiz-feedback');\n\n    options.forEach(opt => {\n      opt.addEventListener('click', () => {\n        if (q.classList.contains('answered')) return;\n        q.classList.add('answered');\n        quizAnswered++;\n\n        const isCorrect = opt.dataset.idx === correctIdx;\n        if (isCorrect) {\n          opt.classList.add('correct');\n          quizCorrect++;\n        } else {\n          opt.classList.add('wrong');\n          \/\/ Highlight correct answer\n          options.forEach(o => {\n            if (o.dataset.idx === correctIdx) o.classList.add('correct');\n          });\n        }\n\n        \/\/ Disable all other options\n        options.forEach(o => {\n          if (!o.classList.contains('correct') && !o.classList.contains('wrong')) {\n            o.classList.add('disabled');\n          }\n        });\n\n        feedback.classList.add('visible');\n\n        \/\/ Check if all answered\n        if (quizAnswered === totalQuestions) {\n          setTimeout(() => {\n            const scoreEl = document.getElementById('quizScore');\n            document.getElementById('quizScoreNum').textContent = `${quizCorrect} \/ ${totalQuestions}`;\n\n            const messages = [\n              'Hmm, misschien leer je ze vanavond nog beter kennen! \ud83e\udd42',\n              'Niet slecht, je kent ze al een beetje!',\n              'Knap! Je kent het bruidspaar goed!',\n              'Perfect! Je bent een echte insider! \ud83c\udf89'\n            ];\n            document.getElementById('quizScoreText').textContent = messages[quizCorrect] || messages[0];\n            scoreEl.classList.add('visible');\n            launchConfetti();\n          }, 800);\n        }\n      });\n    });\n  });\n\n  \/\/ ===== FORM (via WordPress wp_mail) =====\n  document.getElementById('dietForm').addEventListener('submit', async function(e) {\n    e.preventDefault();\n    const btn = this.querySelector('.submit-btn');\n    btn.textContent = 'Verzenden...';\n    btn.disabled = true;\n\n    \/\/ Honeypot check (spam bots vullen dit in, echte gebruikers niet)\n    if (this.querySelector('[name=\"_honeypot\"]').value) {\n      this.style.display = 'none';\n      document.getElementById('formSuccess').classList.add('visible');\n      return;\n    }\n\n    try {\n      const formData = new FormData(this);\n      const dieet = formData.getAll('dieet');\n      formData.delete('dieet');\n      formData.delete('_honeypot');\n      formData.append('dieetwensen', dieet.length > 0 ? dieet.join(', ') : 'Geen');\n      formData.append('action', 'bruiloft_dieetwensen');\n\n      \/\/ Admin-ajax URL van je WordPress site\n      const ajaxUrl = window.location.origin + '\/wp-admin\/admin-ajax.php';\n\n      const response = await fetch(ajaxUrl, {\n        method: 'POST',\n        body: formData,\n      });\n\n      const result = await response.json();\n\n      if (result.success) {\n        this.style.display = 'none';\n        document.querySelector('.form-intro').style.display = 'none';\n        var dl = document.querySelector('.form-deadline');\n        if (dl) dl.style.display = 'none';\n        document.getElementById('formSuccess').classList.add('visible');\n      } else {\n        btn.textContent = 'Versturen';\n        btn.disabled = false;\n        alert('Er ging iets mis: ' + (result.data || 'Onbekende fout'));\n      }\n    } catch (err) {\n      btn.textContent = 'Versturen';\n      btn.disabled = false;\n      alert('Er ging iets mis bij het verzenden. Probeer het nog eens.');\n    }\n  });\n<\/script>\n\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Aniek &#038; Tim \u00b7 18 september 2026 A&#038;T 18 september 2026 Voer het wachtwoord van de uitnodiging in Ontgrendel Dat is niet het juiste wachtwoord Psst&#8230; het wachtwoord staat op jullie uitnodiging A &amp; T Aniek &amp; Tim Wij gaan trouwen Vrijdag 18 september 2026 &nbsp;\u00b7&nbsp; De Hazelhof, Rijsbergen Trouwen in de tuin,dineren onder de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-12","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/aniekentimgaantrouwen.nl\/index.php?rest_route=\/wp\/v2\/pages\/12","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aniekentimgaantrouwen.nl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aniekentimgaantrouwen.nl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aniekentimgaantrouwen.nl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aniekentimgaantrouwen.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12"}],"version-history":[{"count":185,"href":"https:\/\/aniekentimgaantrouwen.nl\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions"}],"predecessor-version":[{"id":219,"href":"https:\/\/aniekentimgaantrouwen.nl\/index.php?rest_route=\/wp\/v2\/pages\/12\/revisions\/219"}],"wp:attachment":[{"href":"https:\/\/aniekentimgaantrouwen.nl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}