diff --git a/backend/__pycache__/app.cpython-312.pyc b/backend/__pycache__/app.cpython-312.pyc index 2afa598..a477905 100644 Binary files a/backend/__pycache__/app.cpython-312.pyc and b/backend/__pycache__/app.cpython-312.pyc differ diff --git a/backend/app.py b/backend/app.py index 881eb46..466b8f0 100644 --- a/backend/app.py +++ b/backend/app.py @@ -272,7 +272,7 @@ TEXTS = { "login": "Login", "group_name": "Benutzername", "group_password": "Passwort", - "login_submit": "Weiter zum Gästebereich", + "login_submit": "Weiter zum Eingangsbereich", "guest_area": "Gästebereich", "hello_guest": "Hallo {name}.", "logout": "Abmelden", @@ -305,6 +305,8 @@ TEXTS = { "location_story_title": "Klostermühle in den Weinbergen", "location_story_text": "Die Klostermühle liegt mitten in den Weinbergen und verbindet ein besonderes Weingut-Ambiente mit saisonaler Küche. Euch erwartet eine entspannte Atmosphäre zwischen Natur, gutem Essen und einem wunderschönen Rahmen für unseren Hochzeitstag.", "route_from_current": "Route ab aktuellem Standort", + "route_location_denied": "Standortfreigabe abgelehnt. Es wurde keine Route mit deinem Standort erstellt.", + "route_location_unavailable": "Standort ist in diesem Browser derzeit nicht verfügbar.", "maps_privacy_notice": "Zur Anzeige der Karte werden Daten an Google übertragen.", "maps_load_button": "Google Maps anzeigen", "privacy": "Datenschutz", @@ -314,7 +316,8 @@ TEXTS = { "hero_headline_with_group": "Willkommen zu unserer Hochzeit, {name}", "hero_text_single": "Wir freuen uns riesig, diesen besonderen Tag am 04.09.26 mit dir zu feiern.", "hero_text_group": "Wir freuen uns riesig, diesen besonderen Tag am 04.09.26 mit euch zu feiern.", - "hero_app_hint": "In dieser Webapp könnt ihr Zu- oder Absagen, Fotos hochladen, die Galerie ansehen und alle wichtigen Infos rund um den Tag finden. Bitte gebt eure Zu- oder Absage möglichst bald ab.", + "hero_app_hint_single": "In dieser Webapp kannst du zu- oder absagen, Fotos hochladen, die Galerie ansehen und alle wichtigen Infos rund um den Tag finden. Bitte gib deine Zu- oder Absage möglichst bald ab.", + "hero_app_hint": "In dieser Webapp könnt ihr zu- oder absagen, Fotos hochladen, die Galerie ansehen und alle wichtigen Infos rund um den Tag finden. Bitte gebt eure Zu- oder Absage möglichst bald ab.", "to_guest_area": "Zum Gästebereich", "schedule_text": "15:00 Trauung, 17:00 Empfang, 19:00 Dinner.", "schedule_intro": "Hier findet ihr den Ablauf für unseren Hochzeitstag.", @@ -350,11 +353,11 @@ TEXTS = { "hotel_weinhaus_engel_desc": "Gemütliches Weinhaus-Hotel in Rauenthal.", "taxi_text": "An einem Taxiservice arbeiten wir noch.", "taxi_sticker_alt": "Bauarbeiter-Sticker: Arbeit in Progress", - "gifts_teaser": "Wir würden uns über Geschenke sehr freuen...", + "gifts_teaser": "Wir würden uns über diese Geschenke sehr freuen...", "gifts_reveal_button": "Wunsch aufdecken", "gifts_image_alt": "Ein großer Haufen Geldscheine", "gifts_caption": "Trommelwirbel... in unserer 70-Quadratmeter-Wohnung ist leider kein Platz mehr für Materielles.", - "gifts_text": "Also: Money! Wir freuen uns über einen finanziellen Beitrag zu unserer Reise nach der Hochzeit.", + "gifts_text": "Also: Money! Ein finanzieller Beitrag zu unserer Reise nach der Hochzeit ist herzlich willkommen.", "gallery_uploaded_by": "von {name}", "gallery_empty": "Noch keine Bilder vorhanden.", "gallery_image_alt": "Upload von {name}", @@ -408,7 +411,7 @@ TEXTS = { "login": "Login", "group_name": "Username", "group_password": "Password", - "login_submit": "Open guest area", + "login_submit": "Continue to entrance area", "guest_area": "Guest Area", "hello_guest": "Hello {name}.", "logout": "Logout", @@ -441,6 +444,8 @@ TEXTS = { "location_story_title": "Klostermuehle in the vineyards", "location_story_text": "Klostermuehle is surrounded by vineyards and combines a unique winery atmosphere with seasonal cuisine. Expect a relaxed setting with nature, great food, and a beautiful backdrop for our wedding day.", "route_from_current": "Route from current location", + "route_location_denied": "Location access was denied. No route with your location was created.", + "route_location_unavailable": "Location is currently unavailable in this browser.", "maps_privacy_notice": "To display the map, data will be transferred to Google.", "maps_load_button": "Show Google Maps", "privacy": "Privacy", @@ -450,6 +455,7 @@ TEXTS = { "hero_headline_with_group": "Welcome to our wedding, {name}", "hero_text_single": "We are incredibly excited to celebrate this special day on 09/04/26 with you.", "hero_text_group": "We are incredibly excited to celebrate this special day on 09/04/26 with all of you.", + "hero_app_hint_single": "In this web app, you can send your RSVP, upload photos, view the gallery, and find all important details for the day. Please submit your RSVP soon.", "hero_app_hint": "In this web app, you can send your RSVP, upload photos, view the gallery, and find all important details for the day. Please submit your RSVP soon.", "to_guest_area": "Open guest area", "schedule_text": "3:00 PM ceremony, 5:00 PM reception, 7:00 PM dinner.", @@ -486,11 +492,11 @@ TEXTS = { "hotel_weinhaus_engel_desc": "Cozy winehouse hotel in Rauenthal.", "taxi_text": "We are still working on a taxi service.", "taxi_sticker_alt": "Construction worker sticker: Work in progress", - "gifts_teaser": "We would be very happy to receive gifts...", + "gifts_teaser": "We would be very happy to receive these gifts...", "gifts_reveal_button": "Reveal wish", "gifts_image_alt": "A big pile of cash", "gifts_caption": "Drum roll... in our 70-square-meter apartment, we sadly have no room left for material things.", - "gifts_text": "So: Money! We would be very happy about a financial contribution to our trip after the wedding.", + "gifts_text": "So: Money! A financial contribution to our trip after the wedding is very welcome.", "gallery_uploaded_by": "by {name}", "gallery_empty": "No photos available yet.", "gallery_image_alt": "Uploaded by {name}", @@ -526,7 +532,7 @@ TEXTS = { "dashboard": "Dashboard", "back": "Back", "countdown_button_label": "Wedding countdown", - "countdown_until": "Starts in", + "countdown_until": "Countdown", "countdown_started": "The celebration has started", "countdown_days": "Days", "countdown_hours": "Hrs", @@ -905,7 +911,7 @@ def welcome(): "welcome.html", welcome_headline=welcome_headline, welcome_text=welcome_text, - welcome_hint=t("hero_app_hint"), + welcome_hint=t("hero_app_hint_single") if is_single_guest else t("hero_app_hint"), ) diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 0be2c9c..9f82ac2 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -7,4 +7,5 @@ requires-python = ">=3.12" dependencies = [ "flask>=3.1.2", "gunicorn>=23.0.0", + "pillow>=12.1.1", ] diff --git a/backend/static/styles.css b/backend/static/styles.css index cb64da8..086d08f 100644 --- a/backend/static/styles.css +++ b/backend/static/styles.css @@ -335,6 +335,7 @@ section.card > p { background: rgba(255, 252, 247, 0.98); box-shadow: 0 14px 34px rgba(0, 0, 0, 0.22); backdrop-filter: blur(4px); + text-align: center; } .login-privacy-title { @@ -642,9 +643,10 @@ input[type="file"]:focus { } .toolbar-timer-popover { - position: absolute; - top: calc(100% + 0.38rem); - right: 0; + position: fixed; + top: 4.4rem; + left: 50%; + transform: translateX(-50%); min-width: 12.4rem; padding: 0.62rem 0.7rem; border-radius: 12px; @@ -658,6 +660,7 @@ input[type="file"]:focus { margin: 0 0 0.35rem; color: rgba(31, 31, 31, 0.72); font-size: 0.76rem; + text-align: center; } .toolbar-timer-grid { @@ -701,6 +704,7 @@ input[type="file"]:focus { margin: 0.42rem 0 0; color: rgba(31, 31, 31, 0.74); font-size: 0.74rem; + text-align: center; } @keyframes countdown-pop { @@ -1191,6 +1195,7 @@ body.has-route-modal { border: 1px solid rgba(31, 58, 47, 0.12); padding: 1rem; background: linear-gradient(155deg, #fff8eb 0%, #f3e6cc 100%); + text-align: center; } .gift-lead { @@ -1235,6 +1240,7 @@ body.has-route-modal { margin: 0.8rem 0 0; font-weight: 700; color: var(--forest); + text-align: center; } .money-rain { @@ -1490,12 +1496,17 @@ body.has-route-modal { .hero-overlay { max-width: 54ch; padding: 2rem; + margin-inline: auto; } .hero-banner { min-height: 78vh; background-position: center 24%; } + + .hero-hint-below { + margin-inline: auto; + } } @media (max-width: 640px) { diff --git a/backend/templates/info.html b/backend/templates/info.html index 6613115..fbe1144 100644 --- a/backend/templates/info.html +++ b/backend/templates/info.html @@ -191,7 +191,12 @@ {% elif page == 'location' %}

{{ t('location_story_title') }}

{{ t('location_story_text') }}

-