Files
holiday-2026/index.html
T
Till Heidrich 87d11ae4d7 feat: Fredi24 v3 – Check24-Design mit echten Hotelfotos
- Hero-Banner mit Hintergrundland-Bild + Suchmaske
- Stats-Bar (Ideen / Favoriten / Verglichen / Countdown)
- Echte Unsplash-Fotos für 14 Hotelkarten
- Scroll-Slider + Grid-Umschalt-Toggle
- 18 Destinationen in 3 Sektionen (TOP / OK / Später)
- Scroll-Arrows für horizontale Navigation
- Ratings-Badges (8.9, 8.6 etc.) in Teal
- Preis-Badges (günstig / Im Budget / Knapp)
- Per-Karte: Bewertung + Sterne + Tags (AI/HP/Kostenlos stornierbar)
- Desktop Top-Nav + Mobile Bottom-Tabs
- Abstimmungs-Tab mit Inline-Buttons pro Reihe
- Alle bisherigen Features erhalten (FAB, Modal, Vote-Export)
2026-05-26 14:54:36 +00:00

1586 lines
95 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,viewport-fit=cover">
<title>Fredi24 Unser Reise-Planer</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Bricolage+Grotesque:opsz,wght@12..96,700;12..96,800&display=swap" rel="stylesheet">
<style>
*{box-sizing:border-box;margin:0;padding:0;}
:root{
--cream:#F8F6F1;--white:#FFFFFF;--border:#E8E3DB;--border-light:#F0EBE3;
--teal:#1F6B5E;--teal-dark:#17534A;--teal-light:#EBF5F2;--teal-mid:#2D8A7A;
--coral:#E85D2F;--coral-dark:#C94A22;--coral-light:#FEF0EB;
--gold:#D4A020;--gold-light:#FDF5DC;
--navy:#0D2137;--navy-mid:#1A3555;
--text:#18181B;--muted:#6B7280;--subtle:#9CA3AF;
--blue:#2563EB;--green:#059669;--green-light:#D1FAE5;
--rating-bg:#1F6B5E;
--shadow-sm:0 1px 3px rgba(0,0,0,0.08),0 1px 2px rgba(0,0,0,0.04);
--shadow-md:0 4px 16px rgba(0,0,0,0.10),0 2px 4px rgba(0,0,0,0.05);
--shadow-lg:0 12px 40px rgba(0,0,0,0.12);
--r:10px;--r-sm:6px;--r-lg:14px;--r-xl:20px;
}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{background:var(--cream);color:var(--text);font-family:'Inter',sans-serif;font-size:14px;min-height:100vh;padding-bottom:70px;}
/* ===== AUTH GATE ===== */
#gate{position:fixed;inset:0;background:linear-gradient(135deg,var(--navy) 0%,var(--teal-dark) 100%);z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;}
.gate-card{background:#fff;border-radius:24px;padding:40px 32px;max-width:380px;width:100%;text-align:center;box-shadow:var(--shadow-lg);}
.gate-logo-row{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px;}
.gate-logo-icon{font-size:32px;}
.gate-brand{font-family:'Bricolage Grotesque',sans-serif;font-size:30px;font-weight:800;color:var(--teal);}
.gate-brand span{color:var(--coral);}
.gate-sub{font-size:13px;color:var(--muted);margin-bottom:28px;}
.gate-input{width:100%;padding:13px 16px;border:1.5px solid var(--border);border-radius:var(--r);font-size:15px;font-family:'Inter',sans-serif;outline:none;transition:border-color .2s,box-shadow .2s;background:var(--cream);color:var(--text);margin-bottom:12px;}
.gate-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(31,107,94,0.12);}
.gate-btn{width:100%;padding:13px;background:var(--coral);color:#fff;border:none;border-radius:var(--r);font-size:14px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;transition:background .2s;letter-spacing:.01em;}
.gate-btn:hover{background:var(--coral-dark);}
.gate-err{color:var(--coral);font-size:12px;margin-top:8px;min-height:16px;font-weight:500;}
/* ===== TOP NAV (desktop) ===== */
.topnav{background:#fff;border-bottom:1px solid var(--border);padding:0 24px;display:flex;align-items:center;gap:0;position:sticky;top:0;z-index:100;height:56px;}
.nav-logo{display:flex;align-items:center;gap:6px;text-decoration:none;margin-right:32px;flex-shrink:0;}
.nav-logo-icon{font-size:22px;}
.nav-logo-text{font-family:'Bricolage Grotesque',sans-serif;font-size:22px;font-weight:800;color:var(--teal);letter-spacing:-0.02em;}
.nav-logo-text span{color:var(--coral);}
.nav-links{display:flex;align-items:center;gap:4px;flex:1;}
.nav-link{padding:7px 14px;border-radius:var(--r-sm);font-size:13px;font-weight:500;color:var(--muted);text-decoration:none;cursor:pointer;border:none;background:none;font-family:'Inter',sans-serif;transition:all .15s;display:flex;align-items:center;gap:5px;}
.nav-link.active{background:var(--teal-light);color:var(--teal);font-weight:600;}
.nav-link:hover:not(.active){background:var(--cream);color:var(--text);}
.nav-right{display:flex;align-items:center;gap:10px;margin-left:auto;}
.nav-icon-btn{width:36px;height:36px;border-radius:50%;background:var(--cream);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;position:relative;}
.nav-badge{position:absolute;top:-3px;right:-3px;background:var(--coral);color:#fff;border-radius:10px;padding:1px 5px;font-size:9px;font-weight:700;line-height:1.4;}
.nav-avatar{display:flex;align-items:center;gap:6px;padding:5px 10px 5px 6px;border:1px solid var(--border);border-radius:20px;cursor:pointer;background:#fff;font-size:12px;font-weight:600;color:var(--text);}
.avatar-circle{width:26px;height:26px;border-radius:50%;background:var(--teal);color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;}
/* ===== HERO ===== */
.hero{position:relative;background:linear-gradient(135deg,#0D2137 0%,#1A3555 50%,#1F6B5E 100%);overflow:hidden;padding:36px 28px 28px;}
.hero::before{content:'';position:absolute;inset:0;background:url('https://images.unsplash.com/photo-1507525428034-b723cf961d3e?w=1400&q=80&fm=jpg&fit=crop') center/cover no-repeat;opacity:0.22;}
.hero-content{position:relative;z-index:1;max-width:560px;}
.hero-tagline{font-family:'Bricolage Grotesque',sans-serif;font-size:28px;font-weight:800;color:#fff;line-height:1.15;letter-spacing:-0.03em;margin-bottom:4px;}
.hero-sub{font-family:'Bricolage Grotesque',sans-serif;font-size:22px;font-weight:700;color:var(--coral);font-style:italic;letter-spacing:-0.01em;margin-bottom:22px;}
/* ===== SEARCH FORM ===== */
.search-form{background:#fff;border-radius:var(--r-lg);padding:14px 16px;display:grid;grid-template-columns:repeat(5,1fr) auto;gap:0;box-shadow:var(--shadow-lg);border:1px solid var(--border);}
.sf-field{padding:0 14px;border-right:1px solid var(--border-light);cursor:pointer;}
.sf-field:last-of-type{border-right:none;}
.sf-label{font-size:10px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:2px;}
.sf-value{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:4px;}
.sf-value .sf-placeholder{color:var(--subtle);font-weight:400;}
.sf-icon{font-size:14px;color:var(--subtle);}
.sf-btn{background:var(--coral);color:#fff;border:none;border-radius:var(--r-sm);padding:10px 20px;font-size:14px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;display:flex;align-items:center;gap:6px;transition:background .2s;white-space:nowrap;margin-left:8px;}
.sf-btn:hover{background:var(--coral-dark);}
/* ===== STATS BAR ===== */
.stats-bar{background:#fff;border-bottom:1px solid var(--border);padding:0 24px;}
.stats-inner{display:flex;align-items:stretch;gap:0;max-width:1200px;margin:0 auto;}
.stat-item{display:flex;align-items:center;gap:10px;padding:14px 20px;border-right:1px solid var(--border-light);cursor:pointer;transition:background .15s;}
.stat-item:last-child{border-right:none;margin-left:auto;}
.stat-item:hover{background:var(--cream);}
.stat-icon{font-size:20px;}
.stat-num{font-family:'Bricolage Grotesque',sans-serif;font-size:20px;font-weight:800;color:var(--text);line-height:1;}
.stat-num.highlight{color:var(--coral);}
.stat-label{font-size:11px;color:var(--muted);font-weight:500;margin-top:1px;}
.stat-text{display:flex;flex-direction:column;}
.countdown-pill{background:var(--gold-light);border:1px solid var(--gold);border-radius:20px;padding:6px 14px;display:flex;align-items:center;gap:8px;}
.countdown-pill .stat-num{color:var(--gold);}
/* ===== MAIN CONTENT ===== */
.main{max-width:1200px;margin:0 auto;padding:20px 24px 0;}
/* ===== TOOLBAR ===== */
.toolbar{display:flex;align-items:center;gap:10px;margin-bottom:16px;flex-wrap:wrap;}
.filter-btn{display:flex;align-items:center;gap:5px;padding:8px 14px;border:1.5px solid var(--border);border-radius:var(--r-sm);background:#fff;font-size:12px;font-weight:500;color:var(--text);cursor:pointer;font-family:'Inter',sans-serif;transition:all .15s;}
.filter-btn:hover{border-color:var(--teal);color:var(--teal);}
.sort-select{appearance:none;padding:8px 32px 8px 12px;border:1.5px solid var(--border);border-radius:var(--r-sm);background:#fff;font-size:12px;font-weight:500;color:var(--text);cursor:pointer;font-family:'Inter',sans-serif;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236B7280' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;}
.sort-label{font-size:12px;color:var(--muted);font-weight:500;}
.view-toggle{margin-left:auto;display:flex;border:1.5px solid var(--border);border-radius:var(--r-sm);overflow:hidden;}
.view-btn{padding:7px 12px;background:#fff;border:none;font-size:12px;font-weight:500;cursor:pointer;font-family:'Inter',sans-serif;color:var(--muted);display:flex;align-items:center;gap:4px;transition:all .15s;}
.view-btn.active{background:var(--teal);color:#fff;}
.filter-chips{display:flex;gap:6px;flex-wrap:wrap;}
.fchip{padding:5px 12px;border-radius:20px;border:1.5px solid var(--border);background:#fff;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;color:var(--muted);display:flex;align-items:center;gap:4px;}
.fchip.active{background:var(--teal);border-color:var(--teal);color:#fff;}
.fchip:hover:not(.active){border-color:var(--teal);color:var(--teal);}
.chip-count{background:rgba(255,255,255,0.25);border-radius:10px;padding:0 5px;font-size:10px;}
/* ===== SECTION TITLE ===== */
.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.section-title{font-family:'Bricolage Grotesque',sans-serif;font-size:18px;font-weight:800;letter-spacing:-0.02em;}
.section-sub{font-size:12px;color:var(--muted);}
.see-all{font-size:12px;font-weight:600;color:var(--teal);cursor:pointer;text-decoration:none;display:flex;align-items:center;gap:3px;}
/* ===== RECOMMENDATION BANNER ===== */
.reco-banner{background:linear-gradient(135deg,var(--teal-dark),var(--teal-mid));border-radius:var(--r-lg);padding:18px 20px;margin-bottom:20px;display:flex;align-items:center;gap:16px;color:#fff;position:relative;overflow:hidden;}
.reco-banner::after{content:'⭐';position:absolute;right:-8px;top:-16px;font-size:90px;opacity:.06;}
.reco-badge{background:rgba(255,255,255,0.2);border:1px solid rgba(255,255,255,0.3);border-radius:20px;padding:3px 10px;font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;flex-shrink:0;}
.reco-text{flex:1;}
.reco-title{font-family:'Bricolage Grotesque',sans-serif;font-size:16px;font-weight:800;margin-bottom:2px;letter-spacing:-0.02em;}
.reco-why{font-size:12px;color:rgba(255,255,255,0.75);}
.reco-price-block{text-align:right;flex-shrink:0;}
.reco-price{font-family:'Bricolage Grotesque',sans-serif;font-size:22px;font-weight:800;color:#FFD966;}
.reco-price-sub{font-size:10px;color:rgba(255,255,255,0.65);}
.reco-cta{background:#fff;color:var(--teal);border:none;border-radius:var(--r-sm);padding:8px 14px;font-size:12px;font-weight:700;cursor:pointer;font-family:'Inter',sans-serif;flex-shrink:0;transition:background .15s;}
.reco-cta:hover{background:var(--teal-light);}
/* ===== HOTEL CARDS ===== */
.cards-scroll{display:flex;gap:14px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none;}
.cards-scroll::-webkit-scrollbar{display:none;}
.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;}
.hcard{background:#fff;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-sm);border:1px solid var(--border);transition:box-shadow .2s,transform .2s;cursor:pointer;flex-shrink:0;width:256px;}
.hcard:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);}
.hcard.grid-card{width:auto;flex-shrink:1;}
/* CARD IMAGE */
.hcard-img{position:relative;height:164px;overflow:hidden;background:var(--cream);}
.hcard-img img{width:100%;height:100%;object-fit:cover;transition:transform .3s;}
.hcard:hover .hcard-img img{transform:scale(1.03);}
.hcard-badge{position:absolute;top:10px;left:10px;padding:3px 10px;border-radius:20px;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;}
.badge-top{background:var(--navy);color:#fff;}
.badge-tip{background:var(--teal);color:#fff;}
.badge-beliebt{background:var(--coral);color:#fff;}
.badge-new{background:var(--gold);color:#fff;}
.badge-later{background:var(--muted);color:#fff;}
.hcard-fav{position:absolute;top:10px;right:10px;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,0.9);border:none;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:15px;transition:all .15s;backdrop-filter:blur(4px);}
.hcard-fav:hover,.hcard-fav.liked{background:#fff;transform:scale(1.1);}
.hcard-fav.liked{color:var(--coral);}
.hcard-direct{position:absolute;bottom:10px;left:10px;background:rgba(31,107,94,0.95);color:#fff;border-radius:20px;padding:2px 8px;font-size:9px;font-weight:700;letter-spacing:.04em;}
/* CARD BODY */
.hcard-body{padding:12px 14px 0;}
.hcard-name{font-size:14px;font-weight:700;color:var(--text);line-height:1.25;margin-bottom:2px;}
.hcard-loc{font-size:11px;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:3px;}
.hcard-rating-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.hcard-rating{background:var(--rating-bg);color:#fff;border-radius:5px;padding:2px 7px;font-size:12px;font-weight:700;letter-spacing:-.01em;}
.hcard-rating-text{font-size:11px;font-weight:600;color:var(--text);}
.hcard-reviews{font-size:10px;color:var(--muted);}
.hcard-stars{display:flex;gap:1px;color:var(--gold);}
.hcard-stars span{font-size:11px;}
.hcard-tags{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px;}
.htag-pill{font-size:10px;padding:2px 7px;border-radius:10px;font-weight:600;}
.htag-ai{background:var(--teal-light);color:var(--teal);}
.htag-hp{background:#EFF6FF;color:#2563EB;}
.htag-free{background:var(--green-light);color:var(--green);}
.htag-kreuzfahrt{background:#F3E8FF;color:#7C3AED;}
/* CARD FOOTER */
.hcard-footer{padding:10px 14px 12px;border-top:1px solid var(--border-light);display:flex;align-items:flex-end;justify-content:space-between;}
.hcard-price-block{display:flex;flex-direction:column;}
.hcard-price-label{font-size:10px;color:var(--muted);}
.hcard-price{font-family:'Bricolage Grotesque',sans-serif;font-size:18px;font-weight:800;color:var(--text);line-height:1;}
.hcard-price-sub{font-size:10px;color:var(--muted);}
.hcard-details-btn{padding:7px 12px;background:var(--cream);border:1.5px solid var(--border);border-radius:var(--r-sm);font-size:11px;font-weight:600;color:var(--text);cursor:pointer;font-family:'Inter',sans-serif;transition:all .15s;display:flex;align-items:center;gap:4px;}
.hcard-details-btn:hover{background:var(--teal-light);border-color:var(--teal);color:var(--teal);}
/* VOTE STRIP */
.hcard-vote{padding:8px 14px;background:var(--cream);border-top:1px solid var(--border-light);display:flex;align-items:center;gap:6px;}
.vote-who{font-size:9px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
.vote-btns{display:flex;gap:3px;}
.vbtn{padding:3px 7px;border-radius:20px;border:1.5px solid var(--border);background:#fff;font-size:12px;cursor:pointer;transition:all .15s;line-height:1;}
.vbtn.v-love{background:#FEE2E2;border-color:#F87171;transform:scale(1.1);}
.vbtn.v-maybe{background:var(--gold-light);border-color:var(--gold);}
.vbtn.v-no{background:#F3F4F6;border-color:#D1D5DB;}
.vote-match{margin-left:auto;font-size:16px;}
/* ===== SCROLL CONTROLS ===== */
.scroll-wrap{position:relative;}
.scroll-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:36px;height:36px;border-radius:50%;background:#fff;border:1.5px solid var(--border);box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;transition:all .15s;}
.scroll-arrow:hover{background:var(--teal);color:#fff;border-color:var(--teal);}
.scroll-arrow.left{left:-18px;}
.scroll-arrow.right{right:-18px;}
/* ===== SECTION DIVIDER ===== */
.section-gap{margin-top:28px;}
/* ===== SUBMIT FAB ===== */
.fab{position:fixed;right:20px;bottom:80px;background:var(--coral);color:#fff;border:none;border-radius:50%;width:52px;height:52px;font-size:22px;cursor:pointer;box-shadow:0 4px 20px rgba(232,93,47,0.45);z-index:150;display:flex;align-items:center;justify-content:center;transition:transform .15s,box-shadow .15s;font-family:'Inter',sans-serif;}
.fab:hover{transform:scale(1.06);box-shadow:0 6px 28px rgba(232,93,47,0.55);}
/* ===== MODAL ===== */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,0.45);z-index:500;display:none;align-items:flex-end;justify-content:center;}
.modal-bg.open{display:flex;}
.modal-sheet{background:#fff;border-radius:20px 20px 0 0;padding:20px 20px 32px;width:100%;max-width:520px;max-height:88vh;overflow-y:auto;}
.modal-handle{width:36px;height:4px;background:var(--border);border-radius:2px;margin:0 auto 16px;}
.modal-title{font-family:'Bricolage Grotesque',sans-serif;font-size:18px;font-weight:800;margin-bottom:16px;letter-spacing:-0.02em;}
.form-group{margin-bottom:12px;}
.form-label{display:block;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;}
.form-input,.form-select,.form-textarea{width:100%;padding:10px 12px;border:1.5px solid var(--border);border-radius:var(--r-sm);font-size:13px;font-family:'Inter',sans-serif;outline:none;background:var(--cream);color:var(--text);transition:border-color .2s;}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--teal);}
.form-textarea{resize:none;min-height:72px;}
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.modal-submit{width:100%;padding:13px;background:var(--coral);color:#fff;border:none;border-radius:var(--r);font-size:14px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;margin-top:8px;transition:background .2s;}
.modal-submit:hover{background:var(--coral-dark);}
.modal-close{float:right;background:none;border:none;cursor:pointer;color:var(--muted);font-size:20px;line-height:1;padding:2px;}
/* ===== BOTTOM TABS ===== */
.bottom-tabs{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--border);display:flex;z-index:200;padding-bottom:env(safe-area-inset-bottom,0);}
.btab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px 6px;cursor:pointer;border:none;background:none;font-size:9px;font-weight:600;font-family:'Inter',sans-serif;color:var(--muted);letter-spacing:.03em;text-transform:uppercase;transition:color .15s;}
.btab-icon{font-size:19px;line-height:1;}
.btab.active{color:var(--teal);}
.btab.active .btab-icon{filter:none;}
/* ===== TOAST ===== */
.toast{position:fixed;bottom:76px;left:50%;transform:translateX(-50%) translateY(10px);background:var(--navy);color:#fff;padding:10px 18px;border-radius:30px;font-size:12px;font-weight:600;opacity:0;transition:all .25s;z-index:400;pointer-events:none;white-space:nowrap;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
/* ===== VOTE TABLE ===== */
.vote-section{background:#fff;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--border);}
.vote-thead{display:grid;grid-template-columns:1fr 100px 100px 80px;padding:10px 14px;background:var(--cream);font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);}
.vote-trow{display:grid;grid-template-columns:1fr 100px 100px 80px;padding:11px 14px;align-items:center;border-bottom:1px solid var(--border-light);transition:background .1s;}
.vote-trow:last-child{border-bottom:none;}
.vote-trow:hover{background:var(--cream);}
.vote-dest{font-size:13px;font-weight:600;}
.vote-country{font-size:11px;color:var(--muted);}
.vote-cell{display:flex;justify-content:center;}
.vote-inline{display:flex;gap:3px;justify-content:center;}
.export-bar{padding:12px 14px;background:var(--cream);border-top:1px solid var(--border);display:flex;gap:8px;align-items:center;}
.export-btn{padding:8px 14px;background:var(--navy);color:#fff;border:none;border-radius:var(--r-sm);font-size:12px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;display:flex;align-items:center;gap:5px;}
.export-note{font-size:11px;color:var(--muted);}
/* ===== HISTORY ===== */
.hist-year-label{font-family:'Bricolage Grotesque',sans-serif;font-size:18px;font-weight:800;color:var(--coral);margin:16px 0 8px;letter-spacing:-0.03em;}
.hist-row{display:flex;align-items:flex-start;gap:10px;background:#fff;border-radius:var(--r);padding:10px 12px;margin-bottom:5px;border:1px solid var(--border);}
.hist-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:4px;}
.hotel .hist-dot{background:var(--teal);}
.cruise .hist-dot{background:var(--coral);}
.ferienhaus .hist-dot{background:var(--gold);}
.airbnb .hist-dot{background:#7C3AED;}
.family .hist-dot{background:var(--blue);}
.storno .hist-dot{background:var(--subtle);}
.hist-em{font-size:18px;flex-shrink:0;}
.hist-content{flex:1;}
.hist-name{font-size:13px;font-weight:700;}
.hist-loc{font-size:11px;color:var(--muted);}
.hist-pills{display:flex;gap:4px;margin-top:3px;flex-wrap:wrap;}
.hpill{font-size:9px;padding:1px 7px;border-radius:10px;font-weight:700;}
.hp-hotel{background:var(--teal-light);color:var(--teal);}
.hp-cruise{background:var(--coral-light);color:var(--coral);}
.hp-fh{background:var(--gold-light);color:var(--gold);}
.hp-airbnb{background:#EDE9FE;color:#7C3AED;}
.hp-family{background:#EFF6FF;color:var(--blue);}
.hp-storno{background:var(--cream);color:var(--muted);border:1px solid var(--border);}
.hist-pers{font-size:10px;color:var(--muted);margin-left:auto;white-space:nowrap;flex-shrink:0;}
/* ===== INFO TAB ===== */
.info-2col{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.info-box{background:#fff;border-radius:var(--r-lg);padding:16px;border:1px solid var(--border);}
.info-box-title{font-family:'Bricolage Grotesque',sans-serif;font-size:15px;font-weight:800;margin-bottom:10px;letter-spacing:-0.02em;}
.info-ul{font-size:11px;line-height:1.85;}
.info-ul li{list-style:none;padding-left:14px;position:relative;}
.info-ul li::before{content:"→";position:absolute;left:0;color:var(--coral);}
.info-ul li.excl::before{content:"✗";color:#DC2626;}
.info-full{grid-column:1/-1;}
.steps-list{display:flex;flex-direction:column;gap:0;}
.step-item{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--border-light);}
.step-item:last-child{border-bottom:none;}
.step-n{width:22px;height:22px;border-radius:50%;background:var(--coral);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;}
.step-t{font-size:11px;line-height:1.65;}
.step-t strong{color:var(--teal);}
/* ===== FELIX CURVE ===== */
.felix-card{grid-column:1/-1;background:var(--navy);border-radius:var(--r-lg);padding:16px;color:#fff;}
.felix-card-title{font-family:'Bricolage Grotesque',sans-serif;font-size:15px;font-weight:800;margin-bottom:12px;}
.felix-row{display:flex;gap:10px;align-items:flex-start;margin-bottom:8px;}
.felix-badge{background:var(--coral);color:#fff;border-radius:var(--r-sm);padding:4px 10px;font-size:11px;font-weight:700;white-space:nowrap;flex-shrink:0;}
.felix-body{font-size:11px;color:rgba(255,255,255,0.65);line-height:1.65;}
.felix-body strong{color:#fff;}
/* ===== SUBMISSIONS ===== */
.sub-card{background:#fff;border:1.5px dashed var(--border);border-radius:var(--r-lg);padding:12px;margin-bottom:8px;}
.sub-name{font-size:14px;font-weight:700;}
.sub-meta{font-size:11px;color:var(--muted);margin-top:1px;}
.sub-why{font-size:12px;font-style:italic;margin-top:5px;}
.sub-who{display:inline-block;padding:2px 8px;border-radius:10px;font-size:10px;font-weight:700;margin-top:5px;}
.sub-till{background:var(--teal-light);color:var(--teal);}
.sub-lea{background:var(--coral-light);color:var(--coral);}
.sub-both{background:var(--gold-light);color:var(--gold);}
/* RESPONSIVE */
@media(max-width:768px){
.topnav .nav-links,.topnav .nav-right{display:none;}
.hero{padding:24px 16px 20px;}
.hero-tagline{font-size:22px;}
.hero-sub{font-size:18px;margin-bottom:16px;}
.search-form{grid-template-columns:1fr;gap:8px;padding:12px;}
.sf-field{border-right:none;border-bottom:1px solid var(--border-light);padding:8px 0;}
.sf-btn{width:100%;}
.stats-inner{overflow-x:auto;}
.stat-item{padding:12px 16px;flex-shrink:0;}
.main{padding:16px 12px 0;}
.info-2col{grid-template-columns:1fr;}
}
@media(min-width:769px){
.bottom-tabs{display:none;}
body{padding-bottom:0;}
.fab{bottom:24px;}
}
</style>
</head>
<body>
<!-- GATE -->
<div id="gate">
<div class="gate-card">
<div class="gate-logo-row">
<span class="gate-logo-icon">🐾</span>
<span class="gate-brand">Fredi<span>24</span></span>
</div>
<div class="gate-sub">Privater Reise-Planer · Till & Lea & Felix</div>
<input class="gate-input" type="password" id="pw" placeholder="Passwort" autocomplete="current-password" onkeydown="if(event.key==='Enter')auth()">
<button class="gate-btn" onclick="auth()">Einloggen</button>
<div class="gate-err" id="pw-err">&nbsp;</div>
</div>
</div>
<!-- TOP NAV -->
<nav class="topnav">
<a class="nav-logo" href="#">
<span class="nav-logo-icon">🐾</span>
<span class="nav-logo-text">Fredi<span>24</span></span>
</a>
<div class="nav-links">
<button class="nav-link active" onclick="navTo('ideen',this)">🗺️ Ideen</button>
<button class="nav-link" onclick="navTo('abstimmung',this)">📊 Abstimmung</button>
<button class="nav-link" onclick="navTo('archiv',this)">📖 Archiv</button>
<button class="nav-link" onclick="navTo('info',this)">⚡ Info</button>
</div>
<div class="nav-right">
<div class="nav-icon-btn">🔔<span class="nav-badge">2</span></div>
<div class="nav-icon-btn">💬</div>
<div class="nav-avatar">
<div class="avatar-circle">T&L</div>
<span>Till & Lea</span>
<span style="color:var(--muted)"></span>
</div>
</div>
</nav>
<!-- FAB -->
<button class="fab" onclick="openModal()" title="Idee einreichen">+</button>
<!-- TOAST -->
<div class="toast" id="toast">Gespeichert</div>
<!-- MODAL -->
<div class="modal-bg" id="modal-bg" onclick="if(event.target===this)closeModal()">
<div class="modal-sheet">
<div class="modal-handle"></div>
<button class="modal-close" onclick="closeModal()"></button>
<div class="modal-title">💡 Neue Reise-Idee</div>
<div class="form-group"><label class="form-label">Destination *</label><input class="form-input" id="si-dest" placeholder="z.B. Ibiza Nordküste"></div>
<div class="form-2col">
<div class="form-group"><label class="form-label">Land</label><input class="form-input" id="si-land" placeholder="Spanien"></div>
<div class="form-group"><label class="form-label">Budget (€)</label><input class="form-input" id="si-budget" placeholder="3.000" type="number"></div>
</div>
<div class="form-group"><label class="form-label">Warum?</label><textarea class="form-textarea" id="si-why" placeholder="Was findest du daran interessant?"></textarea></div>
<div class="form-2col">
<div class="form-group"><label class="form-label">Von wem</label><select class="form-select" id="si-who"><option>Till</option><option>Lea</option><option>Beide</option></select></div>
<div class="form-group"><label class="form-label">Status</label><select class="form-select" id="si-status"><option>TOP</option><option>MAYBE</option><option>SPÄTER</option><option>Traumziel</option></select></div>
</div>
<button class="modal-submit" onclick="submitIdea()">Idee einreichen 🚀</button>
</div>
</div>
<!-- ======== IDEEN TAB ======== -->
<div id="tab-ideen" class="tab-pane" style="display:block;">
<!-- HERO -->
<div class="hero">
<div class="hero-content">
<div class="hero-tagline">Deine nächste Auszeit.</div>
<div class="hero-sub">Wir finden sie für dich.</div>
<div class="search-form">
<div class="sf-field">
<div class="sf-label">Reiseziel / Hotel</div>
<div class="sf-value">Sardinien <span class="sf-icon">📍</span></div>
</div>
<div class="sf-field">
<div class="sf-label">Abflughafen</div>
<div class="sf-value"><span class="sf-placeholder">HAM oder HAJ</span> <span class="sf-icon">✈️</span></div>
</div>
<div class="sf-field">
<div class="sf-label">Reisezeitraum</div>
<div class="sf-value">13.07. 20.07.2026 <span class="sf-icon">📅</span></div>
</div>
<div class="sf-field">
<div class="sf-label">Reisedauer</div>
<div class="sf-value">7 Nächte <span class="sf-icon"></span></div>
</div>
<div class="sf-field">
<div class="sf-label">Reisende &amp; Zimmer</div>
<div class="sf-value">2 Erw., 1 Kind (3J) <span class="sf-icon">👤</span></div>
</div>
<button class="sf-btn">🔍 Suchen</button>
</div>
</div>
</div>
<!-- STATS BAR -->
<div class="stats-bar">
<div class="stats-inner">
<div class="stat-item">
<span class="stat-icon">💡</span>
<div class="stat-text">
<span class="stat-num" id="stat-ideen">18</span>
<span class="stat-label">Ideen gefunden</span>
</div>
</div>
<div class="stat-item">
<span class="stat-icon">❤️</span>
<div class="stat-text">
<span class="stat-num" id="stat-favs">0</span>
<span class="stat-label">Favoriten</span>
</div>
</div>
<div class="stat-item">
<span class="stat-icon"></span>
<div class="stat-text">
<span class="stat-num">0</span>
<span class="stat-label">Verglichen</span>
</div>
</div>
<div class="stat-item">
<span class="stat-icon">💼</span>
<div class="stat-text">
<span class="stat-num">0</span>
<span class="stat-label">Kombinationen</span>
</div>
</div>
<div class="stat-item">
<div class="countdown-pill">
<span class="stat-icon">📅</span>
<div class="stat-text">
<span class="stat-num highlight" id="stat-days">48</span>
<span class="stat-label">Tage bis zur Reise</span>
</div>
</div>
</div>
</div>
</div>
<!-- MAIN CONTENT -->
<div class="main">
<!-- RECO BANNER -->
<div class="reco-banner" style="margin-top:16px;">
<span class="reco-badge">🎯 Empfehlung</span>
<div class="reco-text">
<div class="reco-title">Sardinien direkt Direktflug HAM → OLB nur 2h 20</div>
<div class="reco-why">Lea sagt ja · EU-Kindersitz-Standard · Neuland für euch · La Pelosa, Spiaggia del Principe · Im Budget</div>
</div>
<div class="reco-price-block">
<div class="reco-price">~3.150 €</div>
<div class="reco-price-sub">für 3 Pers. 7N HP + Mietwagen</div>
</div>
<button class="reco-cta" onclick="scrollToCard('sardinien')">Details →</button>
</div>
<!-- FILTER TOOLBAR -->
<div class="toolbar" style="margin-top:18px;">
<button class="filter-btn">⚙️ Filter</button>
<span class="sort-label">Sortierung:</span>
<select class="sort-select" onchange="sortCards(this.value)">
<option value="reco">Empfehlung</option>
<option value="price-asc">Preis aufsteigend</option>
<option value="price-desc">Preis absteigend</option>
<option value="rating">Bewertung</option>
</select>
<div class="filter-chips" id="filter-chips">
<button class="fchip active" onclick="fc('ALL',this)">Alle <span class="chip-count" style="background:rgba(255,255,255,0.25);color:#fff;padding:0 5px;border-radius:10px;font-size:9px;">20</span></button>
<button class="fchip" onclick="fc('TOP',this)">⭐ TOP</button>
<button class="fchip" onclick="fc('OK',this)">👍 OK</button>
<button class="fchip" onclick="fc('NEW',this)">🆕 Neu</button>
<button class="fchip" onclick="fc('LATER',this)">⏳ Später</button>
<button class="fchip" onclick="fc('NEIN',this)">✗ Raus</button>
</div>
<div class="view-toggle">
<button class="view-btn" id="vbtn-scroll" onclick="setView('scroll',this)">↔ Slider</button>
<button class="view-btn active" id="vbtn-grid" onclick="setView('grid',this)">⊞ Karten</button>
</div>
</div>
<!-- TOP PICKS SECTION -->
<div class="section-head"><span class="section-title">⭐ TOP Sofort buchbar</span><span class="section-sub">Direktflug ab HAM/HAJ · Mind. 4★</span></div>
<div class="scroll-wrap" id="wrap-top">
<button class="scroll-arrow left" onclick="scroll_left('scroll-top')"></button>
<div class="cards-grid" id="scroll-top" data-view="grid">
<!-- SARDINIEN -->
<div class="hcard grid-card" data-status="TOP" data-id="sardinien" data-price="3150" data-rating="8.8">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&q=80&fm=jpg&fit=crop" alt="Sardinien" loading="lazy">
<span class="hcard-badge badge-top">TOP</span>
<button class="hcard-fav" onclick="toggleFav(this,'sardinien')">🤍</button>
<span class="hcard-direct">✈ Direkt 2h 20</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Club Hotel Baja Sardinia 4★</div>
<div class="hcard-loc">📍 Baja Sardinia, Nordsardinien</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.8</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(2.140)</span>
<div class="hcard-stars"><span>★★★★</span><span style="color:var(--border)"></span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-hp">Halbpension</span>
<span class="htag-pill htag-free">Kostenlos stornierbar</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">490 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-sardinien-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-sardinien-lea"></div>
<span class="vote-match" id="vm-sardinien"></span>
</div>
</div>
<!-- AIDA KREUZFAHRT -->
<div class="hcard grid-card" data-status="TOP" data-id="aida" data-price="3320" data-rating="9.0">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1548574505-5e239809ee19?w=400&q=80&fm=jpg&fit=crop" alt="AIDA Kreuzfahrt" loading="lazy">
<span class="hcard-badge badge-tip">TIPP</span>
<button class="hcard-fav" onclick="toggleFav(this,'aida')">🤍</button>
<span class="hcard-direct">✈ Direkt nach PMI</span>
</div>
<div class="hcard-body">
<div class="hcard-name">AIDAcosma Kreuzfahrt</div>
<div class="hcard-loc">📍 Korsika · Sardinien · Rom · Barcelona</div>
<div class="hcard-rating-row">
<span class="hcard-rating">9.0</span>
<span class="hcard-rating-text">Ausgezeichnet</span>
<span class="hcard-reviews">(5.870)</span>
<div class="hcard-stars"><span>★★★★★</span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-kreuzfahrt">Kreuzfahrt</span>
<span class="htag-pill htag-ai">Vollpension</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">550 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-aida-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-aida-lea"></div>
<span class="vote-match" id="vm-aida"></span>
</div>
</div>
<!-- ALGARVE -->
<div class="hcard grid-card" data-status="TOP" data-id="algarve" data-price="2950" data-rating="8.6">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1555881400-74d7acaacd8b?w=400&q=80&fm=jpg&fit=crop" alt="Algarve" loading="lazy">
<span class="hcard-badge badge-beliebt">BELIEBT</span>
<button class="hcard-fav" onclick="toggleFav(this,'algarve')">🤍</button>
<span class="hcard-direct">✈ Direkt 3h 30</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Pestana Alvor Praia 5★</div>
<div class="hcard-loc">📍 Alvor, Algarve, Portugal</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.6</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(3.290)</span>
<div class="hcard-stars"><span>★★★★★</span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-hp">Halbpension</span>
<span class="htag-pill htag-free">Kostenlos stornierbar</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">460 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-algarve-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-algarve-lea"></div>
<span class="vote-match" id="vm-algarve"></span>
</div>
</div>
<!-- GLAMPING -->
<div class="hcard grid-card" data-status="NEW" data-id="glamping" data-price="2500" data-rating="8.4">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1504280390367-361c6d9f38f4?w=400&q=80&fm=jpg&fit=crop" alt="Glamping" loading="lazy">
<span class="hcard-badge badge-new">NEU</span>
<button class="hcard-fav" onclick="toggleFav(this,'glamping')">🤍</button>
<span class="hcard-direct">✈ Direkt nach VCE</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Union Lido Glamping Village</div>
<div class="hcard-loc">📍 Cavallino-Treporti, Venetien</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.4</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(1.870)</span>
<div class="hcard-stars"><span>★★★★</span><span style="color:var(--border)"></span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-free">Meerzugang direkt</span>
<span class="htag-pill htag-ai">Pool inklusive</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">380 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-glamping-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-glamping-lea"></div>
<span class="vote-match" id="vm-glamping"></span>
</div>
</div>
</div><!-- end scroll-top -->
<button class="scroll-arrow right" onclick="scroll_right('scroll-top')"></button>
</div><!-- end wrap-top -->
<!-- OK SECTION -->
<div class="section-gap">
<div class="section-head"><span class="section-title">👍 Weitere Optionen</span><span class="section-sub">Alle Direktflug ab HAM/HAJ</span><a class="see-all" onclick="fc('OK',document.querySelector('[onclick*=OK]'))">Alle anzeigen </a></div>
<div class="scroll-wrap" id="wrap-ok">
<button class="scroll-arrow left" onclick="scroll_left('scroll-ok')"></button>
<div class="cards-scroll" id="scroll-ok">
<!-- TAURITO -->
<div class="hcard" data-status="OK" data-id="taurito" data-price="3100" data-rating="8.9">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1566073771259-6a8506099945?w=400&q=80&fm=jpg&fit=crop" alt="Taurito Princess" loading="lazy">
<span class="hcard-badge badge-beliebt">LEA ♥</span>
<button class="hcard-fav" onclick="toggleFav(this,'taurito')">🤍</button>
<span class="hcard-direct">✈ Direkt 5h</span>
</div>
<div class="hcard-body">
<div class="hcard-name">TUI KIDS CLUB Taurito Princess</div>
<div class="hcard-loc">📍 Puerto de Mogán, Gran Canaria</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.9</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(4.120)</span>
<div class="hcard-stars"><span>★★★★★</span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-ai">All Inclusive</span>
<span class="htag-pill htag-free">Kinderclub 36J</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">517 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-taurito-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-taurito-lea"></div>
<span class="vote-match" id="vm-taurito"></span>
</div>
</div>
<!-- COTE D'AZUR -->
<div class="hcard" data-status="OK" data-id="cote-azur" data-price="3000" data-rating="8.5">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1533105079780-92b9be482077?w=400&q=80&fm=jpg&fit=crop" alt="Côte d'Azur" loading="lazy">
<span class="hcard-badge badge-tip">TIPP</span>
<button class="hcard-fav" onclick="toggleFav(this,'cote-azur')">🤍</button>
<span class="hcard-direct">✈ Direkt 2h</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Mövenpick Hotel Nice 4★</div>
<div class="hcard-loc">📍 Antibes, Côte d'Azur, Frankreich</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.5</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(1.560)</span>
<div class="hcard-stars"><span>★★★★</span><span style="color:var(--border)"></span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-hp">Halbpension</span>
<span class="htag-pill htag-free">Kostenlos stornierbar</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">480 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-cote-azur-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-cote-azur-lea"></div>
<span class="vote-match" id="vm-cote-azur"></span>
</div>
</div>
<!-- SCHWEIZ -->
<div class="hcard" data-status="OK" data-id="schweiz" data-price="2000" data-rating="8.0">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1476514525535-07fb3b4ae5f1?w=400&q=80&fm=jpg&fit=crop" alt="Schweiz" loading="lazy">
<span class="hcard-badge badge-tip">LEA ♥</span>
<button class="hcard-fav" onclick="toggleFav(this,'schweiz')">🤍</button>
<span class="hcard-direct">🚗 Caddy oder Flug GVA</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Schweiz + Lago Maggiore</div>
<div class="hcard-loc">📍 Fribourg / Stresa / Lugano</div>
<div class="hcard-rating-row">
<span class="hcard-rating" style="background:#059669;">8.0</span>
<span class="hcard-rating-text">Gut</span>
<span class="hcard-reviews">Freunde vor Ort</span>
<div class="hcard-stars"><span>★★★★</span><span style="color:var(--border)"></span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-free">Günstigste Option</span>
<span class="htag-pill" style="background:#F3E8FF;color:#7C3AED;">Château de Gruyères</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">~300 € p.P.</span>
<span class="hcard-price-sub">Caddy = Dienstwagen HHGmbH</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-schweiz-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-schweiz-lea"></div>
<span class="vote-match" id="vm-schweiz"></span>
</div>
</div>
<!-- FUERTEVENTURA -->
<div class="hcard" data-status="OK" data-id="fuerteventura" data-price="3200" data-rating="8.7">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1582653291997-079a1c04e5a1?w=400&q=80&fm=jpg&fit=crop" alt="Fuerteventura" loading="lazy">
<span class="hcard-badge badge-tip">TIPP</span>
<button class="hcard-fav" onclick="toggleFav(this,'fuerteventura')">🤍</button>
<span class="hcard-direct">✈ Direkt 4h 30</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Aldiana Club Fuerteventura 5★</div>
<div class="hcard-loc">📍 Costa Calma, Fuerteventura</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.7</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(2.890)</span>
<div class="hcard-stars"><span>★★★★★</span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-ai">All Inclusive</span>
<span class="htag-pill htag-free">Kinderclub</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">555 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-fuerteventura-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-fuerteventura-lea"></div>
<span class="vote-match" id="vm-fuerteventura"></span>
</div>
</div>
<!-- MENORCA -->
<div class="hcard" data-status="OK" data-id="menorca" data-price="2900" data-rating="8.4">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1558618666-fcd25c85cd64?w=400&q=80&fm=jpg&fit=crop" alt="Menorca" loading="lazy">
<span class="hcard-badge badge-tip">TIPP</span>
<button class="hcard-fav" onclick="toggleFav(this,'menorca')">🤍</button>
<span class="hcard-direct">✈ Direkt 2h 30</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Hotel Cala Galdana 4★</div>
<div class="hcard-loc">📍 Cala Galdana, Menorca</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.4</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(1.240)</span>
<div class="hcard-stars"><span>★★★★</span><span style="color:var(--border)"></span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-hp">Halbpension</span>
<span class="htag-pill htag-free">Ruhige Bucht</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">443 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-menorca-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-menorca-lea"></div>
<span class="vote-match" id="vm-menorca"></span>
</div>
</div>
<!-- KAPVERDEN -->
<div class="hcard" data-status="OK" data-id="kapverden" data-price="3400" data-rating="8.3">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1590677872280-70daf34a315b?w=400&q=80&fm=jpg&fit=crop" alt="Kapverden" loading="lazy">
<span class="hcard-badge badge-new">EXOTISCH</span>
<button class="hcard-fav" onclick="toggleFav(this,'kapverden')">🤍</button>
<span class="hcard-direct">✈ Direkt 6h</span>
</div>
<div class="hcard-body">
<div class="hcard-name">RIU Funana 5★</div>
<div class="hcard-loc">📍 Santa Maria, Sal, Kapverden</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.3</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(3.780)</span>
<div class="hcard-stars"><span>★★★★★</span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-ai">All Inclusive</span>
<span class="htag-pill htag-free">Kilometer Strand</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">559 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-kapverden-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-kapverden-lea"></div>
<span class="vote-match" id="vm-kapverden"></span>
</div>
</div>
<!-- MALTA -->
<div class="hcard" data-status="OK" data-id="malta" data-price="2400" data-rating="8.2">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1559827291-72ee739d0d9a?w=400&q=80&fm=jpg&fit=crop" alt="Malta" loading="lazy">
<span class="hcard-badge badge-tip">GÜNSTIG</span>
<button class="hcard-fav" onclick="toggleFav(this,'malta')">🤍</button>
<span class="hcard-direct">✈ Direkt 3h</span>
</div>
<div class="hcard-body">
<div class="hcard-name">db Seabank Resort + Spa 4★</div>
<div class="hcard-loc">📍 Mellieħa Bay, Malta</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.2</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(2.340)</span>
<div class="hcard-stars"><span>★★★★</span><span style="color:var(--border)"></span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-ai">All Inclusive</span>
<span class="htag-pill htag-free">Günstigste Option</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">371 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-malta-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-malta-lea"></div>
<span class="vote-match" id="vm-malta"></span>
</div>
</div>
<!-- LANZAROTE -->
<div class="hcard" data-status="OK" data-id="lanzarote" data-price="2800" data-rating="8.5">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1551918120-9739cb430c6d?w=400&q=80&fm=jpg&fit=crop" alt="Lanzarote" loading="lazy">
<span class="hcard-badge badge-tip">TIPP</span>
<button class="hcard-fav" onclick="toggleFav(this,'lanzarote')">🤍</button>
<span class="hcard-direct">✈ Direkt 4h 45</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Barceló Teguise Beach 4★</div>
<div class="hcard-loc">📍 Puerto del Carmen, Lanzarote</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.5</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(1.890)</span>
<div class="hcard-stars"><span>★★★★</span><span style="color:var(--border)"></span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-hp">Halbpension</span>
<span class="htag-pill htag-free">Vulkan-Mietwagen</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">430 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-lanzarote-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-lanzarote-lea"></div>
<span class="vote-match" id="vm-lanzarote"></span>
</div>
</div>
<!-- COSTA DEL SOL -->
<div class="hcard" data-status="OK" data-id="costa-sol" data-price="2700" data-rating="8.3">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1573843981267-be1999ff37cd?w=400&q=80&fm=jpg&fit=crop" alt="Costa del Sol" loading="lazy">
<span class="hcard-badge badge-tip">TIPP</span>
<button class="hcard-fav" onclick="toggleFav(this,'costa-sol')">🤍</button>
<span class="hcard-direct">✈ Direkt 3h 20</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Barceló Marbella 4★</div>
<div class="hcard-loc">📍 Marbella, Costa del Sol</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.3</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(2.100)</span>
<div class="hcard-stars"><span>★★★★</span><span style="color:var(--border)"></span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-ai">All Inclusive</span>
<span class="htag-pill htag-free">Granada + Alhambra</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">415 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-costa-sol-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-costa-sol-lea"></div>
<span class="vote-match" id="vm-costa-sol"></span>
</div>
</div>
<!-- MALLORCA -->
<div class="hcard" data-status="OK" data-id="mallorca" data-price="2900" data-rating="8.6">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1544551763-46a013bb70d5?w=400&q=80&fm=jpg&fit=crop" alt="Mallorca" loading="lazy">
<span class="hcard-badge badge-top">TOP</span>
<button class="hcard-fav" onclick="toggleFav(this,'mallorca')">🤍</button>
<span class="hcard-direct">✈ Direkt 2h 30</span>
</div>
<div class="hcard-body">
<div class="hcard-name">Iberostar Grand Playa de Palma 5★</div>
<div class="hcard-loc">📍 Playa de Palma, Mallorca</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.6</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(3.440)</span>
<div class="hcard-stars"><span>★★★★★</span></div>
</div>
<div class="hcard-tags">
<span class="htag-pill htag-ai">All Inclusive</span>
<span class="htag-pill htag-free">Kinderclub</span>
</div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block">
<span class="hcard-price-label">ab</span>
<span class="hcard-price">443 € p.P.</span>
<span class="hcard-price-sub">inkl. Flug · 7 Nächte</span>
</div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-mallorca-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-mallorca-lea"></div>
<span class="vote-match" id="vm-mallorca"></span>
</div>
</div>
</div><!-- end scroll-ok -->
<button class="scroll-arrow right" onclick="scroll_right('scroll-ok')"></button>
</div>
</div>
<!-- SPÄTER SECTION -->
<div class="section-gap">
<div class="section-head"><span class="section-title">⏳ Bucket List &amp; Später</span><span class="section-sub">Für wenn Felix größer ist</span></div>
<div class="scroll-wrap">
<div class="cards-scroll" id="scroll-later">
<div class="hcard" data-status="LATER" data-id="madeira" data-price="3000" data-rating="8.7">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1570654261523-f1effc06e586?w=400&q=80&fm=jpg&fit=crop" alt="Madeira" loading="lazy">
<span class="hcard-badge badge-later">LEA: WENN FELIX ÄLTER</span>
<button class="hcard-fav" onclick="toggleFav(this,'madeira')">🤍</button>
</div>
<div class="hcard-body">
<div class="hcard-name">Savoy Palace 5★ Madeira</div>
<div class="hcard-loc">📍 Funchal, Madeira · 2225°C</div>
<div class="hcard-rating-row">
<span class="hcard-rating">8.7</span>
<span class="hcard-rating-text">Sehr gut</span>
<span class="hcard-reviews">(2.780)</span>
</div>
<div class="hcard-tags"><span class="htag-pill htag-free">Felix ab 5J (2028)</span></div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block"><span class="hcard-price">~3.000 €</span><span class="hcard-price-sub">für 3 Pers. 7N</span></div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-madeira-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-madeira-lea"></div>
<span class="vote-match" id="vm-madeira"></span>
</div>
</div>
<div class="hcard" data-status="LATER" data-id="schweden" data-price="2800" data-rating="8.0">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1531366936337-7c912a4589a7?w=400&q=80&fm=jpg&fit=crop" alt="Schweden" loading="lazy">
<span class="hcard-badge badge-later">2027+</span>
<button class="hcard-fav" onclick="toggleFav(this,'schweden')">🤍</button>
</div>
<div class="hcard-body">
<div class="hcard-name">Schweden Astrid Lindgrens Welt</div>
<div class="hcard-loc">📍 Bohuslän / Vimmerby · Tills Herzensthema</div>
<div class="hcard-rating-row"><span class="hcard-rating" style="background:#059669">8.0</span><span class="hcard-rating-text">Sehr gut</span></div>
<div class="hcard-tags"><span class="htag-pill htag-free">Felix ab 4J (2027)</span></div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block"><span class="hcard-price">~2.800 €</span><span class="hcard-price-sub">Ferienhäuser + Mietwagen</span></div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-schweden-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-schweden-lea"></div>
<span class="vote-match" id="vm-schweden"></span>
</div>
</div>
<div class="hcard" data-status="LATER" data-id="bali" data-price="6000" data-rating="9.1">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1537996194471-e657df975ab4?w=400&q=80&fm=jpg&fit=crop" alt="Bali" loading="lazy">
<span class="hcard-badge badge-later">TRAUMZIEL 2030+</span>
<button class="hcard-fav" onclick="toggleFav(this,'bali')">🤍</button>
</div>
<div class="hcard-body">
<div class="hcard-name">Villa Lembah Ubud, Bali</div>
<div class="hcard-loc">📍 Ubud / Seminyak · Jenny's Verbindung</div>
<div class="hcard-rating-row"><span class="hcard-rating">9.1</span><span class="hcard-rating-text">Traumurlaub</span></div>
<div class="hcard-tags"><span class="htag-pill htag-free">Felix ab 7J (2030)</span></div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block"><span class="hcard-price">~6.000 €</span><span class="hcard-price-sub">Villa + Langstrecke</span></div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-bali-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-bali-lea"></div>
<span class="vote-match" id="vm-bali"></span>
</div>
</div>
<div class="hcard" data-status="LATER" data-id="lappland" data-price="4000" data-rating="8.9">
<div class="hcard-img">
<img src="https://images.unsplash.com/photo-1531366936337-7c912a4589a7?w=400&q=80&fm=jpg&fit=crop" alt="Lappland" loading="lazy">
<span class="hcard-badge badge-later">WINTER 2028</span>
<button class="hcard-fav" onclick="toggleFav(this,'lappland')">🤍</button>
</div>
<div class="hcard-body">
<div class="hcard-name">Lappland Nordlichter-Trip</div>
<div class="hcard-loc">📍 Tromsø / Finnmarken · JanMärz</div>
<div class="hcard-rating-row"><span class="hcard-rating">8.9</span><span class="hcard-rating-text">Ausgezeichnet</span></div>
<div class="hcard-tags"><span class="htag-pill" style="background:#EDE9FE;color:#7C3AED">Nordlichter + Husky</span></div>
</div>
<div class="hcard-footer">
<div class="hcard-price-block"><span class="hcard-price">~4.000 €</span><span class="hcard-price-sub">Winter 2028/29</span></div>
<button class="hcard-details-btn">Details →</button>
</div>
<div class="hcard-vote">
<span class="vote-who">Till</span>
<div class="vote-btns" id="vt-lappland-till"></div>
<span class="vote-who" style="margin-left:8px">Lea</span>
<div class="vote-btns" id="vt-lappland-lea"></div>
<span class="vote-match" id="vm-lappland"></span>
</div>
</div>
</div>
</div>
</div>
<!-- SUBMISSIONS -->
<div id="sub-section" style="display:none;margin-top:28px;">
<div class="section-head"><span class="section-title">💡 Eigene Ideen</span></div>
<div id="sub-list"></div>
</div>
<div style="height:24px;"></div>
</div><!-- end main -->
</div><!-- end tab-ideen -->
<!-- ======== ABSTIMMUNG ======== -->
<div id="tab-abstimmung" class="tab-pane" style="display:none;">
<div class="main" style="padding-top:16px;">
<div class="section-head" style="margin-bottom:12px;"><span class="section-title">📊 Eure Abstimmung</span></div>
<p style="font-size:12px;color:var(--muted);margin-bottom:14px;">Tippt ❤️ / 🤔 / ❌ für jedes Ziel. Unabhängig dann sieht man was beide wollen.</p>
<div class="vote-section" id="vote-table">
<div class="vote-thead"><div>Destination</div><div style="text-align:center">Till</div><div style="text-align:center">Lea</div><div style="text-align:center">Match</div></div>
</div>
<div class="export-bar">
<button class="export-btn" onclick="exportVotes()">📋 JSON für Codex</button>
<span class="export-note">Abstimmung exportieren → Codex kann Empfehlungen daraus ableiten</span>
</div>
<div style="height:24px;"></div>
</div>
</div>
<!-- ======== ARCHIV ======== -->
<div id="tab-archiv" class="tab-pane" style="display:none;">
<div class="main" style="padding-top:16px;">
<div class="filter-chips" style="margin-bottom:14px;" id="hist-chips">
<button class="fchip active" onclick="fh('ALL',this)">Alle</button>
<button class="fchip" onclick="fh('hotel',this)">🏨 Hotel</button>
<button class="fchip" onclick="fh('cruise',this)">🚢 Kreuzfahrt</button>
<button class="fchip" onclick="fh('ferienhaus',this)">🏡 Ferienhaus</button>
<button class="fchip" onclick="fh('airbnb',this)">🏠 Airbnb</button>
<button class="fchip" onclick="fh('family',this)">👨‍👩‍👦 Familie</button>
</div>
<div id="hl">
<div class="hist-year-label">2015</div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🇬🇧</span><div class="hist-content"><div class="hist-name">Zimmer in London (Bermondsey)</div><div class="hist-loc">London, UK · bei Gordon</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">26.31. Aug. · 5N</span></div></div><span class="hist-pers">Till + Bruder Jasper</span></div>
<div class="hist-year-label">2016</div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🌲</span><div class="hist-content"><div class="hist-name">A-Frame Cabin, Sulzfeld</div><div class="hist-loc">Deutschland · bei Wolfgang</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">5.10. Sept. · 5N</span></div></div><span class="hist-pers">Till solo</span></div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🇵🇹</span><div class="hist-content"><div class="hist-name">Zimmer in Porto</div><div class="hist-loc">Porto, Portugal · bei Francisco</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">26.29. Sept. · 3N</span></div></div><span class="hist-pers">Till solo</span></div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🇳🇱</span><div class="hist-content"><div class="hist-name">Unterkunft in Kortenhoef</div><div class="hist-loc">Niederlande · bei Karin</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">1.3. Okt. · 2N</span></div></div><span class="hist-pers">Till solo</span></div>
<div class="hist-year-label">2017</div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🇵🇹</span><div class="hist-content"><div class="hist-name">Zimmer in Lissabon (Anjos)</div><div class="hist-loc">Lisboa, Portugal</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">26.28. Sept. · 2N</span></div></div><span class="hist-pers">Till solo</span></div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🌺</span><div class="hist-content"><div class="hist-name">Funchal, Madeira (8 Nächte!)</div><div class="hist-loc">Madeira, Portugal</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">28. Sept.6. Okt.</span></div></div><span class="hist-pers">Till solo</span></div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🍷</span><div class="hist-content"><div class="hist-name">Vila Nova de Gaia / Porto</div><div class="hist-loc">Porto, Douro, Portugal</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">6.10. Okt. · 4N</span></div></div><span class="hist-pers">Till solo</span></div>
<div class="hist-year-label">2018</div>
<div class="hist-row family" data-type="family"><div class="hist-dot"></div><span class="hist-em">🇸🇪</span><div class="hist-content"><div class="hist-name">Sunne, Värmland Hochzeit der Cousine</div><div class="hist-loc">Schweden · Till schwärmt seitdem davon</div><div class="hist-pills"><span class="hpill hp-family">Familienreise</span></div></div><span class="hist-pers">Till + Familie</span></div>
<div class="hist-year-label">2019</div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🇬🇧</span><div class="hist-content"><div class="hist-name">Greater London (Battersea)</div><div class="hist-loc">London, UK · bei Jilly</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">22.25. März · 3N</span></div></div><span class="hist-pers">Till + Lea</span></div>
<div class="hist-row hotel" data-type="hotel"><div class="hist-dot"></div><span class="hist-em">🌴</span><div class="hist-content"><div class="hist-name">Vanilla Garden · Teneriffa 4★ HP</div><div class="hist-loc">Playa de las Americas</div><div class="hist-pills"><span class="hpill hp-hotel">Hotel 4★</span><span class="hpill hp-fh">31.0707.08 · 7N · #41629995</span></div></div><span class="hist-pers">Till + Lea</span></div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🇩🇰</span><div class="hist-content"><div class="hist-name">Ferienhaus in Oksbøl</div><div class="hist-loc">Oksbøl, Dänemark</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span><span class="hpill hp-fh">29.Okt.2.Nov. · 4N</span></div></div><span class="hist-pers">Till + Lea</span></div>
<div class="hist-year-label">2020</div>
<div class="hist-row airbnb" data-type="airbnb"><div class="hist-dot"></div><span class="hist-em">🚤</span><div class="hist-content"><div class="hist-name">Waterside Cabin Vinkeveen</div><div class="hist-loc">Vinkeveen, Niederlande · bei Paula & Richard · 7N</div><div class="hist-pills"><span class="hpill hp-airbnb">Airbnb</span></div></div><span class="hist-pers">Till + Lea</span></div>
<div class="hist-year-label">2021</div>
<div class="hist-row hotel" data-type="hotel"><div class="hist-dot"></div><span class="hist-em">🌴</span><div class="hist-content"><div class="hist-name">Radisson Blu Resort Gran Canaria 5★</div><div class="hist-loc">Patalavaca · 7N HP · #47201487</div><div class="hist-pills"><span class="hpill hp-hotel">Hotel 5★</span></div></div><span class="hist-pers">Till + Lea</span></div>
<div class="hist-year-label">2022</div>
<div class="hist-row hotel" data-type="hotel"><div class="hist-dot"></div><span class="hist-em">🌴</span><div class="hist-content"><div class="hist-name">Dreams Jardin Tropical Resort & Spa 4★</div><div class="hist-loc">Costa Adeje, Teneriffa · 7N HP · 3.276 € · #12852050</div><div class="hist-pills"><span class="hpill hp-hotel">Hotel 4★</span></div></div><span class="hist-pers">Till + Lea</span></div>
<div class="hist-year-label">2023 ab hier mit Felix 👶</div>
<div class="hist-row cruise" data-type="cruise"><div class="hist-dot"></div><span class="hist-em">🚢</span><div class="hist-content"><div class="hist-name">AIDAblu Adria-Kreuzfahrt</div><div class="hist-loc">Korfu · Triest · Zadar · Kotor · Dubrovnik · Bari · Korfu · 5.557 € · #14997795</div><div class="hist-pills"><span class="hpill hp-cruise">Kreuzfahrt</span></div></div><span class="hist-pers">Till + Lea + Felix + Astrid J.</span></div>
<div class="hist-row hotel" data-type="hotel"><div class="hist-dot"></div><span class="hist-em">🏨</span><div class="hist-content"><div class="hist-name">Acharavi Beach Hotel, Korfu</div><div class="hist-loc">546 € · 2N · #410637840</div><div class="hist-pills"><span class="hpill hp-hotel">Hotel</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-row ferienhaus" data-type="ferienhaus"><div class="hist-dot"></div><span class="hist-em">🏡</span><div class="hist-content"><div class="hist-name">MarinaPark Bad Nederrijn, Maurik</div><div class="hist-loc">Niederlande · 4N</div><div class="hist-pills"><span class="hpill hp-fh">Ferienhaus</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-year-label">2024</div>
<div class="hist-row ferienhaus" data-type="ferienhaus"><div class="hist-dot"></div><span class="hist-em">🏡</span><div class="hist-content"><div class="hist-name">EuroParcs De Utrechtse Heuvelrug</div><div class="hist-loc">Maarn, NL · 5N · 422 €</div><div class="hist-pills"><span class="hpill hp-fh">Ferienhaus</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-row cruise" data-type="cruise"><div class="hist-dot"></div><span class="hist-em">🚢</span><div class="hist-content"><div class="hist-name">AIDAprima Norwegen</div><div class="hist-loc">Hamburg → Ålesund → Geiranger → Bergen → Hamburg · 1.998 €</div><div class="hist-pills"><span class="hpill hp-cruise">Kreuzfahrt</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-row ferienhaus" data-type="ferienhaus"><div class="hist-dot"></div><span class="hist-em">🏡</span><div class="hist-content"><div class="hist-name">Sonne und Strand, Følle Strand</div><div class="hist-loc">Rønde, Dänemark · 7N</div><div class="hist-pills"><span class="hpill hp-fh">Ferienhaus</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-year-label">2025</div>
<div class="hist-row ferienhaus" data-type="ferienhaus"><div class="hist-dot"></div><span class="hist-em">🏡</span><div class="hist-content"><div class="hist-name">Residence Berger Duinen</div><div class="hist-loc">Bergen aan Zee, NL · 4N</div><div class="hist-pills"><span class="hpill hp-fh">Ferienhaus</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-row ferienhaus" data-type="ferienhaus"><div class="hist-dot"></div><span class="hist-em">🏡</span><div class="hist-content"><div class="hist-name">De Strabrechtse Vennen</div><div class="hist-loc">Niederlande · 7N</div><div class="hist-pills"><span class="hpill hp-fh">Ferienhaus</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-row ferienhaus" data-type="ferienhaus"><div class="hist-dot"></div><span class="hist-em">🏡</span><div class="hist-content"><div class="hist-name">EuroParcs Esonstad</div><div class="hist-loc">Niederlande · 4N</div><div class="hist-pills"><span class="hpill hp-fh">Ferienhaus</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-year-label">2026</div>
<div class="hist-row ferienhaus" data-type="ferienhaus"><div class="hist-dot"></div><span class="hist-em">🚤</span><div class="hist-content"><div class="hist-name">De Reeuwijkse Plassen</div><div class="hist-loc">Niederlande · 4-Pers.-Wasserhaus #191 · 30.0303.04</div><div class="hist-pills"><span class="hpill hp-fh">Ferienhaus</span></div></div><span class="hist-pers">Familie</span></div>
<div class="hist-row" data-type="hotel" style="border:2px dashed var(--gold);background:var(--gold-light);"><div class="hist-dot" style="background:var(--gold)"></div><span class="hist-em"></span><div class="hist-content"><div class="hist-name" style="color:var(--gold)">Sommerurlaub 2026 noch offen!</div><div class="hist-loc">ab 13. Juli · max. 3.600 €</div><div class="hist-pills"><span class="hpill" style="background:var(--gold);color:#fff">OFFEN</span></div></div><span class="hist-pers">Familie</span></div>
</div>
<div style="height:24px;"></div>
</div>
</div>
<!-- ======== INFO ======== -->
<div id="tab-info" class="tab-pane" style="display:none;">
<div class="main" style="padding-top:16px;">
<div class="info-2col">
<div class="info-box">
<div class="info-box-title">❌ Ausschlussliste</div>
<ul class="info-ul">
<li class="excl">Türkei (Lea: raus)</li>
<li class="excl">Ägypten (Lea: raus)</li>
<li class="excl">Dänemark im Sommer</li>
<li class="excl">Kroatien (überfüllt)</li>
<li class="excl">Griechenland (Kindersitz-Problem Korfu)</li>
<li class="excl">AIDA Norwegen (2024 gemacht)</li>
<li class="excl">Kein Umsteigeflug</li>
<li class="excl">Kein anderer Flughafen als HAM/HAJ</li>
<li class="excl">Unter 4 Sterne</li>
</ul>
</div>
<div class="info-box">
<div class="info-box-title">✅ Reiseprofil</div>
<ul class="info-ul">
<li>Direktflug HAM oder HAJ</li>
<li>Mind. 4 Sterne Hotel</li>
<li>Pool als Basis · täglich Mietwagen</li>
<li>Felix 3,5J: Kinderclub, Strand, Pool</li>
<li>EU-Kindersitz Pflicht bei Mietwagen</li>
<li>Lea: HP/AI · wenig Überraschungen</li>
<li>Caddy 2012 = Dienstwagen HHGmbH</li>
<li>Budget max. 3.600 € für 3 Personen</li>
<li>Frieda (Hund, blind) bleibt zuhause</li>
</ul>
</div>
<div class="felix-card">
<div class="felix-card-title">📅 Felix-Alterskurve was geht wann?</div>
<div class="felix-row"><div class="felix-badge">2026 · 3,5J</div><div class="felix-body"><strong>Jetzt:</strong> Strand, Pool, Kinderclub ab 3J, kurze Bootstouren. Max. 6h Flug.</div></div>
<div class="felix-row"><div class="felix-badge">2027 · 4J</div><div class="felix-body"><strong>Bald:</strong> + Burgen (Château de Gruyères!), Astrid Lindgrens Welt Schweden, Tierparks.</div></div>
<div class="felix-row"><div class="felix-badge">2028-29 · 5-6J</div><div class="felix-body"><strong>Madeira-Fenster:</strong> Levadas, Porto Moniz. Schweden Schären. Norwegen Natur.</div></div>
<div class="felix-row" style="margin-bottom:0"><div class="felix-badge">2030+ · 7J+</div><div class="felix-body"><strong>Träume:</strong> Bali, Lappland Nordlichter, Japan, Neuseeland.</div></div>
</div>
<div class="info-box info-full">
<div class="info-box-title">⚡ Nächste Schritte</div>
<div class="steps-list">
<div class="step-item"><div class="step-n">1</div><div class="step-t"><strong>AIDA-Termin prüfen:</strong> aida.de Route PMI07307 Sardinien-Route 13.16. Juli? Kinder 35% Rabatt. Korsika: 4.Juli (zu früh) oder 15.Aug.</div></div>
<div class="step-item"><div class="step-n">2</div><div class="step-t"><strong>Glamping ASAP:</strong> Union Lido/Cavallino, Punta Lunga/Vieste. acsi.eu + pitchup.com. Juli-Plätze laufen ab!</div></div>
<div class="step-item"><div class="step-n">3</div><div class="step-t"><strong>Hier abstimmen:</strong> Abstimmungs-Tab öffnen jeder tippt Reaktionen. Dann sieht man's.</div></div>
<div class="step-item"><div class="step-n">4</div><div class="step-t"><strong>Sardinien buchen:</strong> Eurowings/Ryanair HAM→OLB + Club Hotel Baja Sardinia auf booking.com.</div></div>
<div class="step-item"><div class="step-n">5</div><div class="step-t"><strong>Falls Kanaren:</strong> Taurito Princess c.24.de/pr/F8F2FX 13.20.Juli, Kinderfestpreis aktiv.</div></div>
</div>
</div>
</div>
<div style="height:24px;"></div>
</div>
</div>
<!-- BOTTOM TABS (mobile only) -->
<div class="bottom-tabs">
<button class="btab active" onclick="navTo('ideen',this)"><span class="btab-icon">🗺️</span>Ideen</button>
<button class="btab" onclick="navTo('abstimmung',this)"><span class="btab-icon">📊</span>Abstimmung</button>
<button class="btab" onclick="navTo('archiv',this)"><span class="btab-icon">📖</span>Archiv</button>
<button class="btab" onclick="navTo('info',this)"><span class="btab-icon"></span>Info</button>
</div>
<script>
// ===== AUTH =====
(function(){if(sessionStorage.getItem('f24')==='1'){document.getElementById('gate').style.display='none';init();}})();
function auth(){
const v=document.getElementById('pw').value;
if(v==='frediurlaub26'){
document.getElementById('gate').style.display='none';
sessionStorage.setItem('f24','1');
init();
} else {
document.getElementById('pw-err').textContent='Falsches Passwort. Tipp: Frag Frieda! 🐾';
document.getElementById('pw').style.borderColor='var(--coral)';
setTimeout(()=>{document.getElementById('pw').style.borderColor='';},1500);
}
}
// ===== INIT =====
function init(){
updateStats();
renderAllVotes();
buildVoteTable();
renderSubmissions();
// Countdown to July 13
const target=new Date('2026-07-13');
const diff=Math.max(0,Math.ceil((target-new Date())/(1000*60*60*24)));
const el=document.getElementById('stat-days');
if(el)el.textContent=diff;
}
// ===== NAV =====
function navTo(tab,btn){
document.querySelectorAll('.tab-pane').forEach(p=>p.style.display='none');
document.querySelectorAll('.btab,.nav-link').forEach(b=>b.classList.remove('active'));
document.getElementById('tab-'+tab).style.display='block';
btn.classList.add('active');
// sync both navbars
document.querySelectorAll(`[onclick*="navTo('${tab}'"]`).forEach(b=>b.classList.add('active'));
if(tab==='abstimmung')buildVoteTable();
}
// ===== FILTER CARDS =====
function fc(status,btn){
document.querySelectorAll('#filter-chips .fchip').forEach(c=>c.classList.remove('active'));
btn.classList.add('active');
const map={LATER:'LATER'};
document.querySelectorAll('.hcard').forEach(c=>{
const s=c.dataset.status;
const show=status==='ALL'||(status==='OK'&&(s==='OK'||s==='NEW'))||s===status;
c.style.display=show?'':'none';
});
}
// ===== VIEW TOGGLE =====
function setView(mode,btn){
document.querySelectorAll('.view-btn').forEach(b=>b.classList.remove('active'));
btn.classList.add('active');
const grid=document.getElementById('scroll-top');
const wrap=document.getElementById('wrap-top');
if(mode==='grid'){
grid.className='cards-grid';
wrap.querySelectorAll('.scroll-arrow').forEach(a=>a.style.display='none');
} else {
grid.className='cards-scroll';
wrap.querySelectorAll('.scroll-arrow').forEach(a=>a.style.display='');
}
}
// ===== SCROLL =====
function scroll_left(id){document.getElementById(id).scrollBy({left:-280,behavior:'smooth'});}
function scroll_right(id){document.getElementById(id).scrollBy({left:280,behavior:'smooth'});}
function scrollToCard(id){
const card=document.querySelector(`[data-id="${id}"]`);
if(card){setTimeout(()=>card.scrollIntoView({behavior:'smooth',block:'center'}),100);}
}
// ===== SORT =====
function sortCards(mode){/* placeholder for future sort logic */}
// ===== FAV =====
function toggleFav(btn,id){
const liked=btn.classList.toggle('liked');
btn.textContent=liked?'❤️':'🤍';
updateStats();
showToast(liked?'❤️ Zu Favoriten hinzugefügt':'Favorit entfernt');
}
function updateStats(){
const favs=document.querySelectorAll('.hcard-fav.liked').length;
const el=document.getElementById('stat-favs');
if(el)el.textContent=favs;
}
// ===== VOTES =====
const ALL_DESTS=[
{id:'sardinien',name:'Sardinien',country:'🇮🇹 Italien'},
{id:'aida',name:'AIDAcosma Kreuzfahrt',country:'🚢 Mittelmeer'},
{id:'algarve',name:'Algarve',country:'🇵🇹 Portugal'},
{id:'glamping',name:'Glamping Village IT',country:'🇮🇹 Italien'},
{id:'taurito',name:'Taurito Princess',country:'🇪🇸 Gran Canaria'},
{id:'cote-azur',name:"Côte d'Azur",country:'🇫🇷 Frankreich'},
{id:'schweiz',name:'Schweiz + Lago Maggiore',country:'🇨🇭/🇮🇹'},
{id:'fuerteventura',name:'Fuerteventura',country:'🇪🇸 Kanaren'},
{id:'menorca',name:'Menorca',country:'🇪🇸 Balearen'},
{id:'kapverden',name:'Kapverden',country:'🌍 Atlantik'},
{id:'malta',name:'Malta',country:'🇲🇹 Malta'},
{id:'lanzarote',name:'Lanzarote',country:'🇪🇸 Kanaren'},
{id:'costa-sol',name:'Costa del Sol',country:'🇪🇸 Andalusien'},
{id:'mallorca',name:'Mallorca',country:'🇪🇸 Balearen'},
{id:'madeira',name:'Madeira',country:'🇵🇹 Portugal'},
{id:'schweden',name:'Schweden',country:'🇸🇪 Schweden'},
{id:'bali',name:'Bali',country:'🇮🇩 Indonesien'},
{id:'lappland',name:'Lappland',country:'🇳🇴 Norwegen'},
];
function getVotes(){return JSON.parse(localStorage.getItem('f24_v2')||'{}');}
function saveVotes(v){localStorage.setItem('f24_v2',JSON.stringify(v));}
function setVote(id,person,val){
const v=getVotes();
if(!v[id])v[id]={};
v[id][person]=v[id][person]===val?null:val;
saveVotes(v);
renderVoteFor(id);
buildVoteTable();
const emojis={love:'❤️ Will ich!',maybe:'🤔 Vielleicht',no:'❌ Nein danke'};
showToast(emojis[val]);
}
function renderVoteFor(id){
['till','lea'].forEach(p=>{
const el=document.getElementById(`vt-${id}-${p}`);
if(!el)return;
const v=getVotes()[id]||{};
const cur=v[p.charAt(0).toUpperCase()+p.slice(1)];
el.innerHTML=['love','maybe','no'].map(val=>{
const emoji=val==='love'?'❤️':val==='maybe'?'🤔':'❌';
const cls=cur===val?`v-${val}`:'';
return`<button class="vbtn ${cls}" onclick="setVote('${id}','${p.charAt(0).toUpperCase()+p.slice(1)}','${val}')" title="${emoji}">${emoji}</button>`;
}).join('');
const rm=document.getElementById(`vm-${id}`);
if(rm&&p==='lea'){
const tv=getVotes()[id]||{};
rm.textContent=getMatch(tv.Till,tv.Lea);
}
});
}
function getMatch(t,l){
if(!t&&!l)return'';
if(t==='love'&&l==='love')return'💚';
if((t==='love'||t==='maybe')&&(l==='love'||l==='maybe'))return'💛';
if(t==='no'&&l==='no')return'🔴';
if(t==='no'||l==='no')return'⚠️';
return'❓';
}
function renderAllVotes(){ALL_DESTS.forEach(d=>renderVoteFor(d.id));}
function buildVoteTable(){
const tbl=document.getElementById('vote-table');
if(!tbl)return;
const v=getVotes();
const rows=ALL_DESTS.map(d=>{
const dv=v[d.id]||{};
const te=dv.Till==='love'?'❤️':dv.Till==='maybe'?'🤔':dv.Till==='no'?'❌':'';
const le=dv.Lea==='love'?'❤️':dv.Lea==='maybe'?'🤔':dv.Lea==='no'?'❌':'';
const match=getMatch(dv.Till,dv.Lea)||'❓';
return`<div class="vote-trow">
<div><div class="vote-dest">${d.name}</div><div class="vote-country">${d.country}</div></div>
<div class="vote-cell"><div class="vote-inline">
${['love','maybe','no'].map(val=>{
const emoji=val==='love'?'❤️':val==='maybe'?'🤔':'❌';
const cls=dv.Till===val?`v-${val}`:'';
return`<button class="vbtn ${cls}" onclick="setVote('${d.id}','Till','${val}')">${emoji}</button>`;
}).join('')}
</div></div>
<div class="vote-cell"><div class="vote-inline">
${['love','maybe','no'].map(val=>{
const emoji=val==='love'?'❤️':val==='maybe'?'🤔':'❌';
const cls=dv.Lea===val?`v-${val}`:'';
return`<button class="vbtn ${cls}" onclick="setVote('${d.id}','Lea','${val}')">${emoji}</button>`;
}).join('')}
</div></div>
<div class="vote-cell" style="font-size:20px;">${match}</div>
</div>`;
}).join('');
tbl.innerHTML=`<div class="vote-thead"><div>Destination</div><div style="text-align:center">Till</div><div style="text-align:center">Lea</div><div style="text-align:center">Match</div></div>`+rows;
}
function exportVotes(){
const v=getVotes();
navigator.clipboard.writeText(JSON.stringify({votes:v,exported:new Date().toISOString()},null,2))
.then(()=>showToast('📋 In Zwischenablage kopiert für Codex!'));
}
// ===== HISTORY FILTER =====
function fh(type,btn){
document.querySelectorAll('#hist-chips .fchip').forEach(c=>c.classList.remove('active'));
btn.classList.add('active');
document.querySelectorAll('#hl .hist-row').forEach(r=>{
r.style.display=(type==='ALL'||r.dataset.type===type)?'':'none';
});
document.querySelectorAll('#hl .hist-year-label').forEach(y=>{
let found=false;
let el=y.nextElementSibling;
while(el&&el.classList&&el.classList.contains('hist-row')){
if(el.style.display!=='none')found=true;
el=el.nextElementSibling;
}
y.style.display=found?'':'none';
});
}
// ===== MODAL =====
function openModal(){document.getElementById('modal-bg').classList.add('open');}
function closeModal(){document.getElementById('modal-bg').classList.remove('open');}
function submitIdea(){
const dest=document.getElementById('si-dest').value.trim();
if(!dest){document.getElementById('si-dest').style.borderColor='var(--coral)';return;}
const idea={dest,land:document.getElementById('si-land').value,budget:document.getElementById('si-budget').value,why:document.getElementById('si-why').value,who:document.getElementById('si-who').value,status:document.getElementById('si-status').value,ts:new Date().toLocaleDateString('de')};
const subs=JSON.parse(localStorage.getItem('f24_subs')||'[]');
subs.push(idea);
localStorage.setItem('f24_subs',JSON.stringify(subs));
closeModal();showToast('💡 Idee eingereicht!');renderSubmissions();
['si-dest','si-land','si-budget','si-why'].forEach(id=>document.getElementById(id).value='');
}
function renderSubmissions(){
const subs=JSON.parse(localStorage.getItem('f24_subs')||'[]');
const sec=document.getElementById('sub-section');
const list=document.getElementById('sub-list');
if(!sec||!list)return;
if(!subs.length){sec.style.display='none';return;}
sec.style.display='block';
list.innerHTML=subs.map((s,i)=>`<div class="sub-card"><div style="display:flex;justify-content:space-between;align-items:flex-start"><div><div class="sub-name">${s.dest}${s.land?' '+s.land:''}</div><div class="sub-meta">${s.ts} · ${s.status}${s.budget?' · ~'+s.budget+' €':''}</div></div><button onclick="delSub(${i})" style="background:none;border:none;cursor:pointer;color:var(--muted);font-size:18px">✕</button></div>${s.why?`<div class="sub-why">"${s.why}"</div>`:''}<span class="sub-who sub-${s.who.toLowerCase().includes('lea')&&s.who.toLowerCase().includes('till')?'both':s.who.toLowerCase().includes('lea')?'lea':'till'}">${s.who}</span></div>`).join('');
}
function delSub(i){const subs=JSON.parse(localStorage.getItem('f24_subs')||'[]');subs.splice(i,1);localStorage.setItem('f24_subs',JSON.stringify(subs));renderSubmissions();}
// ===== TOAST =====
function showToast(msg){
const t=document.getElementById('toast');
t.textContent=msg;t.classList.add('show');
clearTimeout(t._to);t._to=setTimeout(()=>t.classList.remove('show'),2500);
}
window.addEventListener('load',()=>{if(sessionStorage.getItem('f24')==='1')init();});
</script>
</body>
</html>