From cf05463a326c26bfeb7645ca2697e27d01001c13 Mon Sep 17 00:00:00 2001 From: annika koenig Date: Wed, 3 Jun 2026 17:06:57 +0200 Subject: [PATCH 01/10] mond --- kontakt.html | 1 - 1 file changed, 1 deletion(-) diff --git a/kontakt.html b/kontakt.html index 049e65a..22a4805 100644 --- a/kontakt.html +++ b/kontakt.html @@ -24,7 +24,6 @@ -🌙 Mode From 61250e13393ff6f337605235449db8f9a364c2c8 Mon Sep 17 00:00:00 2001 From: annika koenig Date: Thu, 11 Jun 2026 14:07:11 +0200 Subject: [PATCH 02/10] darkmodegeht!! --- style.css | 337 ++++++++++++------------------------------------------ 1 file changed, 76 insertions(+), 261 deletions(-) diff --git a/style.css b/style.css index 86ba420..09143d8 100644 --- a/style.css +++ b/style.css @@ -1,6 +1,6 @@ /* ================================ - EIS PROJEKT – style.css - ================================ */ + EIS PROJEKT – STYLE (CLEAN) +================================ */ *, *::before, *::after { box-sizing: border-box; @@ -17,6 +17,10 @@ --muted: #7a5c7e; } +/* ================================ + BASE +================================ */ + body { font-family: 'DM Sans', sans-serif; background: var(--cream); @@ -25,7 +29,10 @@ body { overflow-x: hidden; } -/* ── NAVIGATION ── */ +/* ================================ + NAVIGATION +================================ */ + nav { position: sticky; top: 0; @@ -44,7 +51,6 @@ nav { font-family: 'Playfair Display', serif; font-size: 1.3rem; color: var(--rose); - letter-spacing: 0.02em; } .nav-links { @@ -58,15 +64,17 @@ nav { font-size: 0.9rem; font-weight: 500; color: var(--muted); - letter-spacing: 0.04em; - transition: color 0.2s; + transition: 0.2s; } .nav-links a:hover { color: var(--rose); } -/* ── HERO ── */ +/* ================================ + HERO +================================ */ + .hero { position: relative; display: grid; @@ -75,7 +83,6 @@ nav { min-height: 88vh; padding: 4rem 2.5rem; gap: 3rem; - overflow: hidden; } .hero::before { @@ -83,9 +90,8 @@ nav { position: absolute; inset: 0; background: - radial-gradient(ellipse 70% 60% at 80% 50%, rgba(249, 168, 201, 0.25) 0%, transparent 70%), - radial-gradient(ellipse 50% 50% at 10% 80%, rgba(155, 89, 182, 0.1) 0%, transparent 60%); - pointer-events: none; + radial-gradient(ellipse 70% 60% at 80% 50%, rgba(249,168,201,0.25), transparent), + radial-gradient(ellipse 50% 50% at 10% 80%, rgba(155,89,182,0.1), transparent); } .hero-content { @@ -95,123 +101,76 @@ nav { .hero-tag { display: inline-flex; - align-items: center; - gap: 6px; font-size: 0.78rem; - font-weight: 500; - letter-spacing: 0.1em; - text-transform: uppercase; - color: var(--rose); - background: rgba(232, 103, 154, 0.1); padding: 6px 14px; + background: rgba(232,103,154,0.1); + border: 1px solid rgba(232,103,154,0.2); border-radius: 100px; - margin-bottom: 1.5rem; - border: 1px solid rgba(232, 103, 154, 0.2); + color: var(--rose); + margin-bottom: 1rem; } .hero h1 { font-family: 'Playfair Display', serif; - font-size: clamp(2.8rem, 5vw, 4.2rem); + font-size: 3rem; line-height: 1.1; - margin-bottom: 1.5rem; - color: var(--text); } .hero h1 span { background: linear-gradient(135deg, var(--rose), var(--violet)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; - background-clip: text; } .hero p { - font-size: 1.05rem; - line-height: 1.75; color: var(--muted); + margin-top: 1rem; max-width: 420px; - margin-bottom: 2.5rem; } +/* ================================ + BUTTONS +================================ */ + .btn-group { + margin-top: 2rem; display: flex; gap: 1rem; - flex-wrap: wrap; } .btn-primary { - display: inline-flex; - align-items: center; - gap: 8px; background: linear-gradient(135deg, var(--rose), var(--violet)); color: white; padding: 13px 26px; border-radius: 50px; - font-size: 0.9rem; - font-weight: 500; text-decoration: none; - transition: transform 0.2s, box-shadow 0.2s; - box-shadow: 0 4px 20px rgba(232, 103, 154, 0.35); -} - -.btn-primary:hover { - transform: translateY(-2px); - box-shadow: 0 6px 28px rgba(232, 103, 154, 0.45); } .btn-ghost { - display: inline-flex; - align-items: center; - gap: 8px; + border: 1px solid rgba(232,103,154,0.4); color: var(--rose); padding: 13px 26px; border-radius: 50px; - font-size: 0.9rem; - font-weight: 500; text-decoration: none; - border: 1.5px solid rgba(232, 103, 154, 0.35); - transition: background 0.2s, border-color 0.2s; } -.btn-ghost:hover { - background: rgba(232, 103, 154, 0.07); - border-color: var(--rose); -} +/* ================================ + HERO IMAGE +================================ */ -/* ── HERO IMAGE ── */ .hero-visual { - position: relative; - z-index: 1; display: flex; - align-items: center; justify-content: center; } .img-frame { position: relative; - width: 100%; max-width: 420px; } -.img-frame::before { - content: ''; - position: absolute; - top: -12px; - left: -12px; - right: 12px; - bottom: 12px; - border: 2px solid rgba(232, 103, 154, 0.25); - border-radius: 24px; - z-index: 0; -} - .img-frame img { - position: relative; - z-index: 1; width: 100%; - height: 360px; - object-fit: cover; border-radius: 20px; - display: block; } .img-badge { @@ -219,109 +178,73 @@ nav { bottom: -16px; left: 24px; background: white; - border-radius: 14px; padding: 10px 18px; - display: flex; - align-items: center; - gap: 10px; - box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); - z-index: 2; + border-radius: 14px; } -.badge-icon { - font-size: 1.5rem; -} +/* ================================ + SECTIONS +================================ */ -.badge-text { - font-size: 0.8rem; - font-weight: 500; - color: var(--text); - line-height: 1.3; -} - -.badge-text span { - display: block; - font-size: 0.7rem; - color: var(--muted); -} - -/* ── SECTIONS ── */ section { padding: 5rem 2.5rem; max-width: 1100px; - margin: 0 auto; + margin: auto; } .section-label { font-size: 0.75rem; - font-weight: 500; - letter-spacing: 0.12em; - text-transform: uppercase; color: var(--rose); - margin-bottom: 0.75rem; + text-transform: uppercase; } .section-title { - font-family: 'Playfair Display', serif; - font-size: clamp(1.8rem, 3vw, 2.4rem); - margin-bottom: 1rem; - color: var(--text); + font-family: 'Playfair Display'; + margin: 1rem 0; } .section-sub { - font-size: 1rem; color: var(--muted); - max-width: 560px; - line-height: 1.7; - margin-bottom: 3rem; + max-width: 600px; } -/* ── STATS ── */ +/* ================================ + STATS +================================ */ + .stats-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; - margin-top: 3rem; + margin-top: 2rem; } .stat-card { - text-align: center; - padding: 2rem 1.5rem; - border: 1px solid rgba(232, 103, 154, 0.18); - border-radius: 20px; background: white; + padding: 2rem; + border-radius: 20px; + text-align: center; } .stat-num { - font-family: 'Playfair Display', serif; - font-size: 2.5rem; + font-size: 2rem; color: var(--rose); - display: block; - margin-bottom: 0.4rem; } -.stat-label { - font-size: 0.85rem; - color: var(--muted); -} +/* ================================ + GALLERY +================================ */ -/* ── GALLERY ── */ .gallery-grid { display: grid; grid-template-columns: repeat(3, 1fr); - gap: 1.25rem; -} - -.gallery-col { - display: flex; - flex-direction: column; - gap: 1.25rem; + gap: 1rem; } .gallery-card { - border-radius: 16px; - overflow: hidden; position: relative; + overflow: hidden; + border-radius: 16px; background: #f0e8ef; } @@ -329,159 +252,53 @@ section { width: 100%; height: 240px; object-fit: cover; - display: block; - transition: transform 0.4s ease; } -.gallery-card.tall img { - height: 360px; -} - -.gallery-col .gallery-card img { - height: 160px; -} - -.gallery-card:hover img { - transform: scale(1.04); -} - -.gallery-overlay { - position: absolute; - inset: 0; - background: linear-gradient(to top, rgba(45, 26, 46, 0.6) 0%, transparent 50%); - opacity: 0; - transition: opacity 0.3s; - display: flex; - align-items: flex-end; - padding: 1.25rem; -} - -.gallery-card:hover .gallery-overlay { - opacity: 1; -} - -.gallery-overlay-text { - color: white; - font-size: 0.85rem; - font-weight: 500; -} - -/* ── CTA STRIP ── */ -.cta-section { - padding-top: 0; -} +/* ================================ + CTA +================================ */ .info-strip { background: linear-gradient(135deg, var(--rose), var(--violet)); + padding: 3rem; border-radius: 24px; - padding: 3rem 3.5rem; - display: grid; - grid-template-columns: 1fr auto; - align-items: center; - gap: 2rem; -} - -.info-strip h3 { - font-family: 'Playfair Display', serif; - font-size: 1.8rem; + display: flex; + justify-content: space-between; color: white; - margin-bottom: 0.5rem; } -.info-strip p { - color: rgba(255, 255, 255, 0.8); - font-size: 0.95rem; - line-height: 1.6; -} +/* ================================ + FOOTER +================================ */ -.btn-white { - display: inline-flex; - align-items: center; - gap: 8px; - background: white; - color: var(--rose); - padding: 13px 26px; - border-radius: 50px; - font-size: 0.9rem; - font-weight: 600; - text-decoration: none; - white-space: nowrap; - transition: transform 0.2s; -} - -.btn-white:hover { - transform: translateY(-2px); -} - -/* ── FOOTER ── */ footer { - background: var(--text); - color: rgba(255, 255, 255, 0.65); text-align: center; padding: 2rem; - font-size: 0.85rem; - margin-top: 4rem; + background: var(--text); + color: white; } -footer span { - color: var(--pink); -} +/* ================================ + RESPONSIVE +================================ */ -/* ── RESPONSIVE ── */ @media (max-width: 768px) { .hero { grid-template-columns: 1fr; } - .hero-visual { - display: none; - } + .gallery-grid { - grid-template-columns: 1fr 1fr; - } - .info-strip { grid-template-columns: 1fr; } + .stats-row { grid-template-columns: 1fr; } - nav { - padding: 0 1.5rem; - } - .nav-links { - display: none; - } - section { - padding: 3rem 1.5rem; - } - - body.dark { - --cream: #120d14; - --text: #f5e9f2; - --muted: #c7b2c9; - - background: var(--cream); - color: var(--text); } -body.dark nav { - background: rgba(18, 13, 20, 0.85); - border-bottom: 1px solid rgba(255, 255, 255, 0.08); -} - -body.dark .stat-card, -body.dark .gallery-card { - background: #1b141d; - border-color: rgba(255, 255, 255, 0.08); -} - -body.dark .img-badge { - background: #1b141d; - color: var(--text); -} - -body.dark footer { - background: #0d0a10; -} +/* ================================ + DARK MODE (WICHTIG: AUSSERHALB MEDIA QUERY) +================================ */ body.dark { --cream: #120d14; @@ -494,13 +311,12 @@ body.dark { body.dark nav { background: rgba(18, 13, 20, 0.85); - border-bottom: 1px solid rgba(255, 255, 255, 0.08); + border-bottom: 1px solid rgba(255,255,255,0.08); } body.dark .stat-card, body.dark .gallery-card { background: #1b141d; - border-color: rgba(255, 255, 255, 0.08); } body.dark .img-badge { @@ -510,5 +326,4 @@ body.dark .img-badge { body.dark footer { background: #0d0a10; -} } \ No newline at end of file From 630fb14e61c0354defefcd4b8245e3226eae031e Mon Sep 17 00:00:00 2001 From: annika koenig Date: Thu, 11 Jun 2026 14:59:15 +0200 Subject: [PATCH 03/10] notenrechner+textanalyse --- style.css => css/style.css | 0 eis_projekt.html | 23 +++++++++------- impressum.html | 23 +++++++++------- index.html | 23 +++++++++------- js/notenrechner.js | 43 +++++++++++++++++++++++++++++ script.js => js/script.js | 0 js/textanalyse.js | 27 +++++++++++++++++++ kontakt.html | 23 +++++++++------- notenrechner.html | 55 ++++++++++++++++++++++++++++++++++++++ textanalyse.html | 55 ++++++++++++++++++++++++++++++++++++++ ueber_uns.html | 23 +++++++++------- 11 files changed, 250 insertions(+), 45 deletions(-) rename style.css => css/style.css (100%) create mode 100644 js/notenrechner.js rename script.js => js/script.js (100%) create mode 100644 js/textanalyse.js create mode 100644 notenrechner.html create mode 100644 textanalyse.html diff --git a/style.css b/css/style.css similarity index 100% rename from style.css rename to css/style.css diff --git a/eis_projekt.html b/eis_projekt.html index d5fd461..46e8c9d 100644 --- a/eis_projekt.html +++ b/eis_projekt.html @@ -7,7 +7,7 @@ Projekt – Studienprojekt 2026 - + @@ -15,13 +15,18 @@ @@ -161,5 +166,5 @@ - + \ No newline at end of file diff --git a/impressum.html b/impressum.html index 390bc9b..a94bda2 100644 --- a/impressum.html +++ b/impressum.html @@ -7,7 +7,7 @@ Impressum – Studienprojekt 2026 - + @@ -16,13 +16,18 @@ @@ -94,5 +99,5 @@ - + \ No newline at end of file diff --git a/index.html b/index.html index 33fe9e9..16e04ce 100644 --- a/index.html +++ b/index.html @@ -5,7 +5,7 @@ Eis Projekt - + @@ -13,13 +13,18 @@ @@ -109,5 +114,5 @@ - + \ No newline at end of file diff --git a/js/notenrechner.js b/js/notenrechner.js new file mode 100644 index 0000000..8f45e2c --- /dev/null +++ b/js/notenrechner.js @@ -0,0 +1,43 @@ +// =============================== +// NOTENRECHNER +// =============================== + +window.berechneNote = function (punkte) { + if (punkte >= 90) return "sehr gut"; + if (punkte >= 75) return "gut"; + if (punkte >= 60) return "befriedigend"; + if (punkte >= 50) return "ausreichend"; + return "nicht bestanden"; +}; + +function leseZahl(text) { + const eingabe = prompt(text); + + if (eingabe === null || eingabe.trim() === "") return NaN; + + return Number(eingabe.trim().replace(",", ".")); +} + +window.startNotenrechner = function () { + const punkte = leseZahl("Wie viele Punkte hast du erreicht?"); + const max = leseZahl("Maximale Punktzahl?"); + + if ( + Number.isNaN(punkte) || + Number.isNaN(max) || + max <= 0 || + punkte < 0 || + punkte > max + ) { + alert("Bitte gültige Werte eingeben!"); + return; + } + + const prozent = (punkte / max) * 100; + const note = window.berechneNote(prozent); + + const text = `${punkte} von ${max} Punkten (${prozent.toFixed(1)}%) = ${note}`; + + console.log(text); + alert(text); +}; diff --git a/script.js b/js/script.js similarity index 100% rename from script.js rename to js/script.js diff --git a/js/textanalyse.js b/js/textanalyse.js new file mode 100644 index 0000000..f3b55fc --- /dev/null +++ b/js/textanalyse.js @@ -0,0 +1,27 @@ +window.analyseText = function (text) { + const sauberesText = text.trim(); + + const zeichen = sauberesText.length; + const wörter = sauberesText.split(/\s+/).filter(Boolean).length; + const upper = sauberesText.toUpperCase(); + + return ` +Zeichen: ${zeichen} +Wörter: ${wörter} +Großbuchstaben: ${upper} + `; +}; + +window.startAnalyse = function () { + const text = prompt("Gib einen Text ein:"); + + if (typeof text !== "string" || text.trim() === "") { + alert("Fehler: Kein gültiger Text eingegeben!"); + return; + } + + const result = window.analyseText(text); + + console.log(result); + alert(result); +}; \ No newline at end of file diff --git a/kontakt.html b/kontakt.html index 22a4805..2f0919e 100644 --- a/kontakt.html +++ b/kontakt.html @@ -7,7 +7,7 @@ Kontakt – Studienprojekt 2026 - + @@ -15,13 +15,18 @@
diff --git a/impressum.html b/impressum.html index a94bda2..33fb6ac 100644 --- a/impressum.html +++ b/impressum.html @@ -28,7 +28,7 @@
  • Kontakt
  • Impressum
  • - +
    diff --git a/index.html b/index.html index 16e04ce..2b79e25 100644 --- a/index.html +++ b/index.html @@ -25,8 +25,7 @@
  • Kontakt
  • Impressum
  • - - +
    diff --git a/js/script.js b/js/script.js index 433f1d0..6f36a1d 100644 --- a/js/script.js +++ b/js/script.js @@ -1,20 +1,20 @@ -document.querySelector("form")?.addEventListener("submit", function (e) { - e.preventDefault(); - alert("Nachricht gesendet 💖"); -}); +document.addEventListener("DOMContentLoaded", () => { + const toggle = document.getElementById("dark-mode-toggle"); -function toggleDarkMode() { - document.body.classList.toggle("dark"); - - if (document.body.classList.contains("dark")) { - localStorage.setItem("theme", "dark"); - } else { - localStorage.setItem("theme", "light"); - } -} - -window.addEventListener("load", () => { - if (localStorage.getItem("theme") === "dark") { + // gespeicherten Zustand laden + if (localStorage.getItem("darkMode") === "true") { document.body.classList.add("dark"); + toggle.textContent = "Light Mode"; } + + toggle.addEventListener("click", () => { + document.body.classList.toggle("dark"); + + const isDark = document.body.classList.contains("dark"); + + localStorage.setItem("darkMode", isDark); + + // Button Text ändern + toggle.textContent = isDark ? "Light Mode" : "Dark Mode"; + }); }); \ No newline at end of file diff --git a/kontakt.html b/kontakt.html index 2f0919e..deb94a8 100644 --- a/kontakt.html +++ b/kontakt.html @@ -27,7 +27,7 @@
  • Kontakt
  • Impressum
  • - + diff --git a/notenrechner.html b/notenrechner.html index 883770b..e489b61 100644 --- a/notenrechner.html +++ b/notenrechner.html @@ -28,7 +28,7 @@
  • Impressum
  • - +
    diff --git a/textanalyse.html b/textanalyse.html index 5c51bef..e983da5 100644 --- a/textanalyse.html +++ b/textanalyse.html @@ -28,7 +28,7 @@
  • Impressum
  • - +
    diff --git a/ueber_uns.html b/ueber_uns.html index b479db5..b172086 100644 --- a/ueber_uns.html +++ b/ueber_uns.html @@ -45,18 +45,7 @@ window.onload = function () {
  • Kontakt
  • Impressum
  • - +
    From dd8e285d2b51db976716b2b4a0f5a050b071a5db Mon Sep 17 00:00:00 2001 From: annika koenig Date: Wed, 17 Jun 2026 14:54:04 +0200 Subject: [PATCH 06/10] Erstes Python-Programm --- hallo.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 hallo.py diff --git a/hallo.py b/hallo.py new file mode 100644 index 0000000..1f1793d --- /dev/null +++ b/hallo.py @@ -0,0 +1 @@ +print("Hallo Welt") \ No newline at end of file From 18e41cb6a889ffad200d0b7d45937e81b13c1525 Mon Sep 17 00:00:00 2001 From: annika koenig Date: Wed, 17 Jun 2026 14:57:53 +0200 Subject: [PATCH 07/10] Rechner --- hallo.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hallo.py b/hallo.py index 1f1793d..e9a908e 100644 --- a/hallo.py +++ b/hallo.py @@ -1 +1,3 @@ -print("Hallo Welt") \ No newline at end of file +print("Hallo Welt") +print("Hallo Welt") +print(3 + 5) \ No newline at end of file From de59d7289fb9637ed9c6d4109d92fc346a9cca54 Mon Sep 17 00:00:00 2001 From: annika koenig Date: Wed, 17 Jun 2026 15:00:01 +0200 Subject: [PATCH 08/10] korrekturhallo --- hallo.py | 1 - 1 file changed, 1 deletion(-) diff --git a/hallo.py b/hallo.py index e9a908e..af3f144 100644 --- a/hallo.py +++ b/hallo.py @@ -1,3 +1,2 @@ print("Hallo Welt") -print("Hallo Welt") print(3 + 5) \ No newline at end of file From f60df5ccfc946e870d92f85c83bc9a88c462bb57 Mon Sep 17 00:00:00 2001 From: annika koenig Date: Wed, 17 Jun 2026 15:14:12 +0200 Subject: [PATCH 09/10] Flask-App angelegt --- .gitignore | 2 +- app.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 app.py diff --git a/.gitignore b/.gitignore index 418fe5d..0029b67 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ *.swp *~ .DS_Store - +venv/ diff --git a/app.py b/app.py new file mode 100644 index 0000000..63e9e1e --- /dev/null +++ b/app.py @@ -0,0 +1,10 @@ +from flask import Flask + +app = Flask(__name__) + +@app.route("/") +def hello(): + return "Hallo aus meiner Flask-App!" + +if __name__ == "__main__": + app.run(host="0.0.0.0", port=9006) # 90 + Raumnummer \ No newline at end of file From faff91877497ff3b7928cb61f9dcc0a500bab48f Mon Sep 17 00:00:00 2001 From: annika koenig Date: Wed, 17 Jun 2026 15:26:26 +0200 Subject: [PATCH 10/10] escaperoommessage --- app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 63e9e1e..d9ff89d 100644 --- a/app.py +++ b/app.py @@ -4,7 +4,7 @@ app = Flask(__name__) @app.route("/") def hello(): - return "Hallo aus meiner Flask-App!" + return "Willkommen in unserem Escape Room!" if __name__ == "__main__": - app.run(host="0.0.0.0", port=9006) # 90 + Raumnummer \ No newline at end of file + app.run(host="0.0.0.0", port=9006) # 90 + Raumnummer