Add wetter.html + packliste.html, extend index.html with new tool cards

This commit is contained in:
Hermes AI Bot
2026-06-26 21:41:03 +00:00
parent 53b90bc46c
commit fd61931e76
3 changed files with 525 additions and 1 deletions
+265
View File
@@ -0,0 +1,265 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JGA Prag Packliste</title>
<style>
* { box-sizing: border-box; }
html, body {
margin: 0; padding: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
color: #eee;
min-height: 100vh;
}
.container { max-width: 900px; margin: 0 auto; padding: 40px 24px; }
h1 {
font-size: 38px;
margin: 0 0 8px 0;
background: linear-gradient(135deg, #f72585 0%, #b5179e 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
.subtitle { color: #aaa; margin-bottom: 32px; font-size: 16px; }
.back-link {
display: inline-block;
margin-bottom: 24px;
color: #f72585;
text-decoration: none;
font-size: 14px;
}
.back-link:hover { text-decoration: underline; }
.category {
background: rgba(255, 255, 255, 0.05);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 12px;
padding: 20px 24px;
margin-bottom: 16px;
backdrop-filter: blur(10px);
}
.category h2 {
margin: 0 0 16px 0;
font-size: 20px;
color: #fff;
display: flex;
align-items: center;
gap: 8px;
}
.category h2 .icon { font-size: 28px; }
.checklist { list-style: none; padding: 0; margin: 0; }
.checklist li {
padding: 8px 0;
border-bottom: 1px solid rgba(255, 255, 255, 0.05);
display: flex;
align-items: flex-start;
gap: 10px;
font-size: 15px;
}
.checklist li:last-child { border-bottom: none; }
.checklist input[type="checkbox"] {
appearance: none;
width: 18px;
height: 18px;
border: 2px solid #f72585;
border-radius: 4px;
flex-shrink: 0;
margin-top: 2px;
cursor: pointer;
position: relative;
}
.checklist input[type="checkbox"]:checked {
background: #f72585;
border-color: #f72585;
}
.checklist input[type="checkbox"]:checked::after {
content: "✓";
color: white;
position: absolute;
left: 2px;
top: -3px;
font-size: 14px;
font-weight: bold;
}
.checklist li.checked span {
text-decoration: line-through;
color: #666;
}
.checklist li small {
display: block;
color: #888;
font-size: 12px;
margin-top: 2px;
}
.progress-bar {
background: rgba(255, 255, 255, 0.1);
height: 8px;
border-radius: 4px;
overflow: hidden;
margin: 24px 0;
}
.progress-bar .fill {
height: 100%;
background: linear-gradient(90deg, #f72585, #b5179e);
width: 0%;
transition: width 0.3s ease;
}
.progress-text {
text-align: center;
color: #aaa;
font-size: 13px;
margin-bottom: 24px;
}
@media print {
body { background: white; color: black; }
.category { background: white; border: 1px solid #ccc; }
.checklist input[type="checkbox"] {
border-color: #333;
}
}
</style>
</head>
<body>
<div class="container">
<a href="index.html" class="back-link">← Zurück zur Übersicht</a>
<h1>🎒 JGA Prag Packliste</h1>
<p class="subtitle">Für 8 Personen · 25.26. Juli 2026 · Wochenende</p>
<div class="progress-text" id="progress-text">0 von 0 erledigt</div>
<div class="progress-bar"><div class="fill" id="progress-fill"></div></div>
<div class="category">
<h2><span class="icon">📄</span>Dokumente & Geld</h2>
<ul class="checklist">
<li><input type="checkbox"><span>Personalausweis oder Reisepass<small>(Personalausweis reicht innerhalb EU)</small></span></li>
<li><input type="checkbox"><span>Krankenversicherungskarte</span></li>
<li><input type="checkbox"><span>Bargeld in CZK (~2.000 CZK pro Person für Trinkgeld & kleine Ausgaben)</span></li>
<li><input type="checkbox"><span>EC-Karte / Kreditkarte<small>(Visa/Mastercard fast überall akzeptiert)</small></span></li>
<li><input type="checkbox"><span>Hotel-Buchungsbestätigung (auf dem Handy)</span></li>
<li><input type="checkbox"><span>Bordkarte / Zugticket Hinfahrt + Rückfahrt</span></li>
</ul>
</div>
<div class="category">
<h2><span class="icon">👕</span>Kleidung</h2>
<ul class="checklist">
<li><input type="checkbox"><span>T-Shirts / Hemden (23 Stück)</span></li>
<li><input type="checkbox"><span>Hose / Shorts</span></li>
<li><input type="checkbox"><span>JGA-Shirt / Outfit<small>(falls ihr eines habt)</small></span></li>
<li><input type="checkbox"><span>Leichte Jacke / Hoodie<small>(Abende, Geister-Tour)</small></span></li>
<li><input type="checkbox"><span>Unterwäsche + Socken (2 Tage)</span></li>
<li><input type="checkbox"><span>Bequeme Schuhe fürs Laufen</span></li>
<li><input type="checkbox"><span>Schickere Schuhe für Clubs/Restaurants</span></li>
<li><input type="checkbox"><span>Schwimmzeug (falls Beer Spa)</span></li>
</ul>
</div>
<div class="category">
<h2><span class="icon">🧴</span>Pflege & Hygiene</h2>
<ul class="checklist">
<li><input type="checkbox"><span>Zahnbürste + Zahnpasta</span></li>
<li><input type="checkbox"><span>Duschgel / Shampoo</span></li>
<li><input type="checkbox"><span>Deo</span></li>
<li><input type="checkbox"><span>Sonnencreme</span></li>
<li><input type="checkbox"><span>Handtuch (klein, für unterwegs)</span></li>
<li><input type="checkbox"><span>Kopfschmerztabletten</span></li>
</ul>
</div>
<div class="category">
<h2><span class="icon">📱</span>Technik</h2>
<ul class="checklist">
<li><input type="checkbox"><span>Handy + Ladekabel</span></li>
<li><input type="checkbox"><span>Powerbank<small>(Tag wird lang!)</small></span></li>
<li><input type="checkbox"><span>Kopfhörer</span></li>
<li><input type="checkbox"><span>EU-Ladeadapter<small>(Prag nutzt Typ E, wie in DE/AT)</small></span></li>
<li><input type="checkbox"><span>Kamera (optional)</span></li>
</ul>
</div>
<div class="category">
<h2><span class="icon">🚇</span>Prag-spezifisch</h2>
<ul class="checklist">
<li><input type="checkbox"><span>Google Translate (Offline-Pack Tschechisch installieren!)</span></li>
<li><input type="checkbox"><span>Bolt-App installieren<small>(Uber gibt's nicht mehr in Prag!)</small></span></li>
<li><input type="checkbox"><span>Google Maps Offline-Karte Prag laden</span></li>
<li><input type="checkbox"><span>PID Lítačka App (für Tram-Tickets)<small>(oder Bargeld im Tram)</small></span></li>
<li><input type="checkbox"><span>Notfall-Nummer: 112 (EU-Notruf)</span></li>
<li><input type="checkbox"><span>Kleiner tschechischer Sprachführer (Pivo, Děkuji, Účet prosím)</span></li>
</ul>
</div>
<div class="category">
<h2><span class="icon">🎯</span>JGA-Spezial (nach Aktivität)</h2>
<ul class="checklist">
<li><input type="checkbox"><span>🎯 Für Schießstand: gültiger Ausweis (wird kontrolliert)</span></li>
<li><input type="checkbox"><span>⛳ Für Minigolf: nichts spezielles</span></li>
<li><input type="checkbox"><span>🔫 Für Lasertag: nichts spezielles</span></li>
<li><input type="checkbox"><span>🎨 Für Paintball: alte Klamotten (es wird schmutzig!)</span></li>
<li><input type="checkbox"><span>🏎️ Für Kart: lange Hose + feste Schuhe</span></li>
<li><input type="checkbox"><span>🔐 Für Escape Room: pünktlich da sein (verlässt eure Startzeit)</span></li>
<li><input type="checkbox"><span>👻 Für Geister-Tour: bequeme Schuhe, 1,75 h zu Fuß</span></li>
<li><input type="checkbox"><span>⛵ Für Beer Boat: nichts spezielles (Bier ist dabei 🍺)</span></li>
<li><input type="checkbox"><span>🔍 Für Enigma: Smartphone voll geladen</span></li>
</ul>
</div>
<div class="category">
<h2><span class="icon">🍺</span>Verpflegung</h2>
<ul class="checklist">
<li><input type="checkbox"><span>Wasserflasche (für unterwegs)</span></li>
<li><input type="checkbox"><span>Knabberzeug für den Zug</span></li>
<li><input type="checkbox"><span>Kaugummis / Pfefferminz<small>(für zwischendurch)</small></span></li>
</ul>
</div>
</div>
<script>
// Checkbox-Persistenz via localStorage
const STORAGE_KEY = 'jga-packliste-checked';
let checked = JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]');
const checkboxes = document.querySelectorAll('.checklist input[type="checkbox"]');
const progressText = document.getElementById('progress-text');
const progressFill = document.getElementById('progress-fill');
// Initial state
checkboxes.forEach((cb, i) => {
if (checked[i]) {
cb.checked = true;
cb.parentElement.classList.add('checked');
}
cb.dataset.index = i;
});
function updateProgress() {
const total = checkboxes.length;
const done = Array.from(checkboxes).filter(cb => cb.checked).length;
const pct = (done / total * 100).toFixed(0);
progressFill.style.width = pct + '%';
progressText.textContent = `${done} von ${total} erledigt (${pct}%)`;
checked = Array.from(checkboxes).map(cb => cb.checked);
localStorage.setItem(STORAGE_KEY, JSON.stringify(checked));
}
checkboxes.forEach(cb => {
cb.addEventListener('change', () => {
cb.parentElement.classList.toggle('checked', cb.checked);
updateProgress();
});
});
updateProgress();
</script>
</body>
</html>