Files
geograsim/App/impressum.html
T
Adminator 9a61f55cb1 Atlas: Infrastruktur + Team-Konventionen + Sprachregel Lernarbeit
- Design-System (assets/css/design-system.css) mit 21 Komponenten,
  iPad-Responsive-Breakpoints, Touch-Ziele 36px, Music-Player,
  Glossar-Tooltips
- Templates (sims/template.html + student/teacher-Dashboard)
- Docs: module-interface.md (inkl. 4a Sprachregel, 4b Leichte Sprache,
  4c iPad), content-architecture.md, crash-recovery.md, music-registry.md
- Admin-Infrastruktur: admin-modules.html + api/admin-modules.php
  (Titel, Emoji, Bild, Status, Dauer, Alter pro Modul)
- Inbox-System: _inbox/README.md + _status.md fuer Atlas + Briefings
  an Klima, Glossar, Lehrplan, Fluss
- Zentrale SFX-Pipeline (scripts/generate-sounds.py)
- DALL-E-Bilder: 8 Badges + 5 Glossar-Repraesentationsbilder (Querformat)
- Logo + Inter-Font lokal
- PHP-APIs: admin, glossar, levels, licenses, progress, waypoints,
  assignments, profile, tickets
- Spielsprache entfernt (admin-modules, admin-levels, schueler)
- Landing-Page-Bearbeitungen (Boote sichtbarer, Button-Hintergrund)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:51:14 +02:00

156 lines
8.1 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">
<title>GeoGraSim — Impressum</title>
<link rel="icon" type="image/png" href="favicon-96x96.png" sizes="96x96">
<link rel="icon" type="image/svg+xml" href="favicon.svg">
<link rel="stylesheet" href="assets/fonts/inter.css">
<style>
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Inter',sans-serif;background:#f7f6f3;color:#1a1a1a;line-height:1.7}
.topbar{background:#fff;padding:.6rem 1.2rem;display:flex;align-items:center;gap:.8rem;border-bottom:1px solid rgba(0,0,0,.06);flex-wrap:wrap}
.topbar a{text-decoration:none}
.topbar img{height:32px}
.topbar .spacer{flex:1}
.btn-sm{padding:.3rem .6rem;border:1px solid rgba(0,0,0,.08);border-radius:6px;background:#fff;font-size:.68rem;font-weight:600;color:#4a4a4a;text-decoration:none}
.wrap{max-width:760px;margin:0 auto;padding:2rem 1.5rem 4rem}
h1{font-size:1.6rem;font-weight:900;color:#1f4e5a;margin-bottom:.5rem}
h2{font-size:1rem;font-weight:800;color:#1f4e5a;margin:1.5rem 0 .4rem;padding-top:.8rem;border-top:1px solid rgba(0,0,0,.06)}
p,li{font-size:.85rem;color:#333;margin-bottom:.5rem}
.card{background:#fff;border-radius:12px;padding:1.2rem;border:1px solid rgba(0,0,0,.04);margin-bottom:1rem}
label{display:block;font-size:.72rem;font-weight:600;color:#4a4a4a;margin-bottom:.2rem;margin-top:.6rem}
input,textarea,select{width:100%;padding:.5rem .7rem;border:1.5px solid rgba(0,0,0,.1);border-radius:7px;font-size:.82rem;font-family:inherit;outline:none}
input:focus,textarea:focus{border-color:#4a7c8a}
textarea{resize:vertical;min-height:100px}
.btn{padding:.5rem 1.2rem;border:none;border-radius:8px;background:#4a7c8a;color:#fff;font-size:.82rem;font-weight:700;cursor:pointer;margin-top:.6rem}
.btn:hover{background:#3a6470}
.captcha-box{background:#f7f6f3;border-radius:8px;padding:.8rem;margin-top:.6rem;display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}
.captcha-q{font-size:.82rem;font-weight:600;color:#1f4e5a}
.captcha-input{width:80px;text-align:center;font-size:1rem;font-weight:700}
.msg{font-size:.75rem;padding:.4rem .6rem;border-radius:6px;margin-top:.5rem;display:none}
.msg.ok{display:block;background:#dceadd;color:#5a8a5e}
.msg.err{display:block;background:#f2ddd8;color:#c07a6b}
.footer-note{font-size:.72rem;color:#8a8a8a;text-align:center;margin-top:2rem;padding-top:1rem;border-top:1px solid rgba(0,0,0,.06)}
.footer-note a{color:#4a7c8a;text-decoration:none}
</style>
</head>
<body>
<div class="topbar">
<a href="index.html"><img src="assets/img/geograsim_t.svg" alt="GeoGraSim"></a>
<span class="spacer"></span>
<a href="index.html" class="btn-sm">Startseite</a>
<a href="ueber.html" class="btn-sm">Über</a>
<a href="handbuch.html" class="btn-sm">Handbuch</a>
</div>
<div class="wrap">
<h1>Impressum</h1>
<p>Angaben gemäß § 5 E-Commerce-Gesetz (ECG) und § 25 Mediengesetz (MedienG)</p>
<div class="card">
<p><strong>Medieninhaber und Herausgeber:</strong></p>
<p>
Dominik Mößlang<br>
Laimburggasse 32/Tür 18<br>
8010 Graz, Österreich
</p>
<p><strong>Kontakt:</strong></p>
<p>
E-Mail: <a href="mailto:support@geograsim.at" style="color:#4a7c8a">support@geograsim.at</a><br>
Web: <a href="https://geograsim.at" style="color:#4a7c8a">geograsim.at</a>
</p>
<p><strong>Unternehmensgegenstand:</strong><br>Entwicklung und Betrieb einer webbasierten Lernplattform für den Geografie- und Wirtschaftskunde-Unterricht.</p>
<p><strong>Anwendbare Rechtsvorschriften:</strong><br>E-Commerce-Gesetz (ECG), Mediengesetz (MedienG), Datenschutz-Grundverordnung (DSGVO), Telekommunikationsgesetz 2021 (TKG 2021)</p>
</div>
<h2>Haftungsausschluss</h2>
<p>Die Inhalte dieser Website wurden mit größter Sorgfalt erstellt. Für die Richtigkeit, Vollständigkeit und Aktualität der Inhalte können wir jedoch keine Gewähr übernehmen. Als Diensteanbieter sind wir für eigene Inhalte auf diesen Seiten nach den allgemeinen Gesetzen verantwortlich.</p>
<p>Für die Inhalte externer Links (OpenStreetMap, Wikipedia) übernehmen wir keine Haftung. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.</p>
<h2>Urheberrecht</h2>
<p>Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem österreichischen Urheberrecht. Die Simulationen, Texte, Grafiken und das didaktische Konzept sind geistiges Eigentum von Schroffenegger & Mößlang.</p>
<p>Geodaten: © <a href="https://www.openstreetmap.org/copyright" style="color:#4a7c8a">OpenStreetMap</a> contributors.</p>
<h2>Kontaktformular</h2>
<div class="card">
<label>Ihr Name</label>
<input type="text" id="cf-name" placeholder="Vor- und Nachname">
<label>E-Mail-Adresse</label>
<input type="email" id="cf-email" placeholder="name@example.at">
<label>Betreff</label>
<select id="cf-subject">
<option value="Allgemeine Anfrage">Allgemeine Anfrage</option>
<option value="Technisches Problem">Technisches Problem</option>
<option value="Datenschutz">Datenschutz</option>
<option value="Barrierefreiheit">Barrierefreiheit</option>
<option value="Lizenzanfrage">Lizenzanfrage</option>
<option value="Sonstiges">Sonstiges</option>
</select>
<label>Nachricht</label>
<textarea id="cf-message" placeholder="Ihre Nachricht…"></textarea>
<div class="captcha-box">
<span class="captcha-q" id="captcha-question"></span>
<input type="text" id="captcha-answer" class="captcha-input" placeholder="?">
<span style="font-size:.65rem;color:#8a8a8a">(Spam-Schutz)</span>
</div>
<button class="btn" onclick="sendContact()">Nachricht senden</button>
<div class="msg" id="cf-msg"></div>
</div>
<div class="footer-note">
<p><a href="datenschutz.html">Datenschutz</a> · <a href="barrierefreiheit.html">Barrierefreiheit</a> · <a href="index.html">geograsim.at</a></p>
</div>
</div>
<script>
var BASE = (window.__GGS__?.baseUrl) || '';
if (!BASE) { var p = location.pathname, i = p.indexOf('/geograsim'); if (i !== -1) { var rest = p.substring(i + '/geograsim'.length); BASE = rest.indexOf('/App/') === 0 ? p.substring(0, i) + '/geograsim/App' : p.substring(0, i) + '/geograsim'; } }
// Eigenes Captcha: einfache Rechenaufgabe
var captchaA, captchaB, captchaOp, captchaResult;
function newCaptcha() {
captchaA = 2 + Math.floor(Math.random() * 8);
captchaB = 1 + Math.floor(Math.random() * 9);
captchaOp = Math.random() < 0.5 ? '+' : '×';
captchaResult = captchaOp === '+' ? captchaA + captchaB : captchaA * captchaB;
document.getElementById('captcha-question').textContent = 'Was ist ' + captchaA + ' ' + captchaOp + ' ' + captchaB + '?';
document.getElementById('captcha-answer').value = '';
}
newCaptcha();
async function sendContact() {
var name = document.getElementById('cf-name').value.trim();
var email = document.getElementById('cf-email').value.trim();
var subject = document.getElementById('cf-subject').value;
var message = document.getElementById('cf-message').value.trim();
var answer = parseInt(document.getElementById('captcha-answer').value);
var msgEl = document.getElementById('cf-msg');
if (!name || !email || !message) { msgEl.textContent = 'Bitte alle Felder ausfüllen.'; msgEl.className = 'msg err'; return; }
if (answer !== captchaResult) { msgEl.textContent = 'Rechenaufgabe falsch. Bitte nochmal versuchen.'; msgEl.className = 'msg err'; newCaptcha(); return; }
try {
var r = await fetch(BASE + '/api/auth', {
method: 'POST', headers: {'Content-Type':'application/json'},
body: JSON.stringify({action:'contact', name:name, email:email, subject:subject, message:message})
});
var d = await r.json();
if (d.error) { msgEl.textContent = d.error; msgEl.className = 'msg err'; return; }
msgEl.textContent = 'Nachricht gesendet! Wir melden uns zeitnah.'; msgEl.className = 'msg ok';
document.getElementById('cf-name').value = '';
document.getElementById('cf-email').value = '';
document.getElementById('cf-message').value = '';
newCaptcha();
} catch(e) {
msgEl.textContent = 'Fehler beim Senden. Bitte versuchen Sie es per E-Mail.'; msgEl.className = 'msg err';
}
}
</script>
</body>
</html>