fix(mobile): Zoom blocken, Long-Press, KW-Bubble, Swipe-Nav, Safe-Area

- Viewport: maximum-scale=1, user-scalable=no — kein Pinch-Zoom mehr
- Profil-Dropdown öffnet wieder: overflow:hidden auf .topbar-right
  in der Mobile-Media-Query entfernt (hatte das absolut positionierte
  Dropdown abgeschnitten)
- Long-Press auf Kalenderzellen markiert keinen Text mehr:
  user-select/touch-callout/tap-highlight in der ganzen Mobile-UI aus
- Long-Press auf Avatar zeigt nicht "Bild speichern":
  -webkit-touch-callout:none + pointer-events:none auf <img>
- Kalenderwochen erscheinen als kleine Bubble oben links in jeder
  Zeile statt als eigene 38px-Spalte
- Status-Bar-Overlap im Settings-Modal behoben: safe-area-inset-top
  auf .settings-page-header und Modal-Header in der Mobile-Media-Query
- Swipe links/rechts auf #view-container navigiert prev/next
  (≥60 px, überwiegend horizontal, < 700 ms)
- Version v3 → v4 (auch SW-Cache)
This commit is contained in:
Scarriffle
2026-05-07 18:52:51 +02:00
parent 6c7c8a4662
commit 3d7779ae83
5 changed files with 94 additions and 8 deletions

View File

@@ -1270,7 +1270,7 @@ a { color: var(--primary); text-decoration: none; }
}
.topbar-right {
min-width: 0;
overflow: hidden;
/* no overflow:hidden — would clip the user dropdown on tap */
}
.view-switcher {
overflow-x: auto;
@@ -1346,6 +1346,64 @@ a { color: var(--primary); text-decoration: none; }
/* ── Misc safety: prevent overflow on flex topbar items ──── */
.main-view { width: 100%; min-width: 0; }
#view-container { max-width: 100%; overflow-x: hidden; }
/* ── Long-press / text-selection / image-save fixes ──────── */
/* Calendar UI shouldn't be selectable on touch — long-press
should reach our handlers, not trigger iOS text selection. */
.topbar, .sidebar, .main-view,
.month-view, .month-row, .month-col, .cell-day, .month-events-overlay, .month-span-event,
.week-view, .day-view, .week-day-col, .week-day-header, .week-allday-row,
.quarter-view, .agenda-view,
.view-switcher, .view-btn, .btn, .icon-btn, .user-avatar, .user-dropdown, .dropdown-item {
-webkit-user-select: none;
user-select: none;
-webkit-touch-callout: none;
-webkit-tap-highlight-color: transparent;
}
/* Faster taps, no double-tap zoom on interactive elements */
.icon-btn, .btn, .view-btn, .user-avatar, .month-col, .week-day-col, .dropdown-item,
.sidebar-copyright, .impressum-link, .modal-close, [data-modal] {
touch-action: manipulation;
}
/* Avatar long-press: don't show "Save Image" — taps reach parent */
.user-avatar img {
-webkit-touch-callout: none;
pointer-events: none;
}
/* ── Calendar weeks (KW) shown as a small bubble, not a column ── */
.month-header {
grid-template-columns: repeat(7, 1fr) !important;
}
.month-kw-header { display: none !important; }
.month-row-right {
margin-left: 0 !important;
}
.month-kw-cell {
position: absolute;
left: 3px; top: 3px;
width: auto; height: auto;
bottom: auto;
padding: 1px 7px;
background: var(--bg-active);
border: none !important;
border-radius: 10px;
font-size: 10px; font-weight: 600;
color: var(--text-2);
z-index: 5;
display: inline-flex;
align-items: center;
}
/* ── Status-bar safe area inside full-screen modals (PWA) ── */
.modal-card .modal-header,
.settings-page-header {
padding-top: calc(16px + env(safe-area-inset-top, 0px));
}
.modal-footer,
.settings-page-body {
padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
}
}
/* iOS notch / home-indicator safe areas (PWA standalone) */