diff --git a/backend/static/css/layout.css b/backend/static/css/layout.css index 175ad72..21572ad 100644 --- a/backend/static/css/layout.css +++ b/backend/static/css/layout.css @@ -14,34 +14,34 @@ overflow: hidden; } -/* Content-Bereich scrollt intern */ +/* Content-Bereich scrollt intern — kein padding-bottom nötig da Nav Flex-Kind */ #page-content { - flex: 1; - min-height: 0; - overflow-y: auto; - overflow-x: hidden; + flex: 1; + min-height: 0; + overflow-y: auto; + overflow-x: hidden; -webkit-overflow-scrolling: touch; - overscroll-behavior-y: none; /* verhindert iOS-Bounce → fixed Nav bleibt stabil */ - padding-bottom: calc(var(--nav-bottom-height) + var(--safe-bottom) + 16px); + overscroll-behavior-y: none; } /* Vollbild-Seiten: #page-content kein Scroll */ body.page-fullscreen #page-content { - overflow: hidden; - padding-bottom: 0; + overflow: hidden; } -/* Desktop: normaler Dokumentfluss, Sidebar-Layout */ +/* Desktop: window-scroll, Sidebar-Layout */ @media (min-width: 768px) { #app { - height: auto; - min-height: 100dvh; - overflow: visible; + height: auto; + min-height: 100dvh; + overflow: visible; flex-direction: row; } #page-content { + flex: unset; min-height: unset; overflow-y: visible; + overflow-x: visible; padding-bottom: 0; padding-left: var(--nav-sidebar-width); } @@ -174,23 +174,19 @@ body.page-fullscreen #page-content { 3. BOTTOM NAVIGATION (Mobile) ------------------------------------------------------------ */ #bottom-nav { - /* position:fixed relativ zum Viewport — da #app kein transform hat, - ist dies stabil. Scroll passiert in #page-content (overflow-y:auto), - nicht im window → kein iOS-Drift. */ - position: fixed; - bottom: 0; - left: 0; - right: 0; - z-index: 700; - min-height: calc(var(--nav-bottom-height) + var(--safe-bottom)); + /* Flex-Kind von #app{height:100dvh} — kein position:fixed nötig. + 100dvh auf iOS inkludiert Safe Areas → Nav endet am physischen Rand. */ + flex-shrink: 0; + z-index: 700; + min-height: calc(var(--nav-bottom-height) + var(--safe-bottom)); padding-top: var(--space-1); padding-bottom: calc(var(--safe-bottom) + var(--space-1)); - background: var(--c-surface); - border-top: 1px solid var(--c-border-light); - display: flex; - align-items: stretch; - box-shadow: 0 -2px 12px rgba(42, 31, 20, 0.08); - transition: border-top-color 0.4s ease; + background: var(--c-surface); + border-top: 1px solid var(--c-border-light); + display: flex; + align-items: stretch; + box-shadow: 0 -2px 12px rgba(42, 31, 20, 0.08); + transition: border-top-color 0.4s ease; } @keyframes nav-alert-pulse { diff --git a/backend/static/index.html b/backend/static/index.html index 1df386e..16a5b81 100644 --- a/backend/static/index.html +++ b/backend/static/index.html @@ -434,33 +434,32 @@ + + - - - diff --git a/backend/static/js/app.js b/backend/static/js/app.js index 1c82b56..b5a6d90 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '510'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '511'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const APP_VERSION = '1.0.0'; // ← semantische Version, wird bei make release gesetzt const IS_STAGING = location.hostname === 'staging.banyaro.app'; diff --git a/backend/static/sw.js b/backend/static/sw.js index 1fd0053..0bc32de 100644 --- a/backend/static/sw.js +++ b/backend/static/sw.js @@ -3,7 +3,7 @@ Offline-Cache + Push Notifications + Tile-Cache ============================================================ */ -const CACHE_VERSION = 'by-v533'; +const CACHE_VERSION = 'by-v534'; const CACHE_STATIC = `${CACHE_VERSION}-static`; const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache