/** * Wal Task-Overlay — Mission-System fuer Wal-Sim. */ (function(){ 'use strict'; var BASE = (window.WAL_BASE || '/geograsim/App/sims/wal/'); var TASKS = null; var currentIdx = 0; var css = ` #wal-overlay { position: fixed; inset: 0; background: rgba(26, 38, 32, 0.88); backdrop-filter: blur(8px); z-index: 9000; display: none; align-items: center; justify-content: center; padding: 20px; font-family: 'Hanken Grotesk', system-ui, sans-serif; } #wal-overlay.show { display: flex; } #wal-modal { background: linear-gradient(145deg, #e8ddc5, #f4ede0); color: #1a2620; border-radius: 16px; padding: 28px 32px; max-width: 580px; width: 100%; max-height: 86vh; overflow-y: auto; border: 2px solid #2d4a3e; box-shadow: 0 16px 48px rgba(0,0,0,0.4); } #wal-modal h2 { font-family: 'Bricolage Grotesque', system-ui, sans-serif; color: #2d4a3e; font-size: 22px; margin-bottom: 14px; font-weight: 800; } #wal-modal h3 { color: #4a6f5e; font-size: 16px; margin: 14px 0 8px; } #wal-modal p, #wal-modal li { font-size: 14px; line-height: 1.6; margin-bottom: 6px; } #wal-modal ul { padding-left: 22px; margin-bottom: 10px; } #wal-modal .expect { background: rgba(74, 124, 74, 0.15); padding: 10px 14px; border-left: 3px solid #4a7c4a; border-radius: 4px; margin: 10px 0; font-size: 13px; } #wal-modal .didaktik { background: rgba(184, 104, 64, 0.12); padding: 10px 14px; border-left: 3px solid #b86840; border-radius: 4px; margin: 10px 0; font-size: 13px; color: #4a3520; } #wal-modal button.next { background: linear-gradient(135deg, #2d4a3e, #1f3329); color: #f4ede0; border: none; padding: 12px 24px; border-radius: 8px; font-weight: 700; cursor: pointer; font-family: inherit; font-size: 15px; margin-top: 12px; } #wal-modal button.next:hover { background: linear-gradient(135deg, #1f3329, #1a2620); } #wal-modal .quiz-q { background: rgba(255,255,255,0.6); padding: 14px; border-radius: 8px; margin-bottom: 12px; } #wal-modal .quiz-q .q-text { font-weight: 700; margin-bottom: 8px; color: #2d4a3e; } #wal-modal .quiz-q button.opt { display: block; width: 100%; text-align: left; background: #fff; color: #1a2620; border: 1px solid #b8a987; padding: 8px 12px; border-radius: 6px; margin-bottom: 5px; cursor: pointer; font-family: inherit; font-size: 13px; } #wal-modal .quiz-q button.opt:hover { background: #f4ede0; border-color: #2d4a3e; } #wal-modal .quiz-q button.opt.correct { background: rgba(74, 124, 74, 0.2); border-color: #4a7c4a; } #wal-modal .quiz-q button.opt.wrong { background: rgba(160, 64, 48, 0.2); border-color: #a04030; } #wal-tasklist { position: fixed; top: 10px; left: 50%; transform: translateX(-50%); background: rgba(26, 38, 32, 0.92); backdrop-filter: blur(14px); border: 1px solid #4a6f5e; border-radius: 10px; padding: 8px 14px; color: #f4ede0; font-family: 'Hanken Grotesk', system-ui, sans-serif; font-size: 13px; z-index: 100; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.3); } #wal-tasklist.show { display: flex; gap: 14px; align-items: center; } #wal-tasklist .lbl { font-weight: 700; color: #c9b794; } #wal-tasklist button { background: #2d4a3e; color: #f4ede0; border: 1px solid #4a6f5e; padding: 4px 10px; border-radius: 4px; cursor: pointer; font-family: inherit; font-size: 11px; } #wal-tasklist button:hover { background: #4a6f5e; } `; var s = document.createElement('style'); s.textContent = css; document.head.appendChild(s); function el(tag, cls, html) { var e = document.createElement(tag); if (cls) e.className = cls; if (html != null) e.innerHTML = html; return e; } function showModal(title, body, btnLabel, btnFn) { var overlay = document.getElementById('wal-overlay') || (function(){ var o = el('div'); o.id = 'wal-overlay'; document.body.appendChild(o); return o; })(); overlay.innerHTML = ''; var modal = el('div'); modal.id = 'wal-modal'; modal.appendChild(el('h2', null, title)); modal.appendChild(el('div', null, body)); var btn = el('button', 'next', btnLabel); btn.onclick = function() { overlay.classList.remove('show'); if (btnFn) btnFn(); }; modal.appendChild(btn); overlay.appendChild(modal); overlay.classList.add('show'); } function showTask(idx) { if (!TASKS || !TASKS.tasks[idx]) return endGame(); var t = TASKS.tasks[idx]; var body = ''; // Mode-Switch bei Bedarf (krill vs. fracht) if (t.mode && window.setMode) window.setMode(t.mode); if (t.mode) body += '
Ziel: ' + t.goal + '
'; if (t.expect) body += '