fix: button focus ring, playlist reorder mode, edit modal mobile, backdrop-filter

- button:focus{outline:none} — removes the blue tap-highlight box in WebView
- Playlist reorder: replaced always-on drag handles with explicit 'Neu anordnen'
  mode. Handles only appear after tapping the button; a sticky Speichern/Abbrechen
  bar appears above the list. Touch drag is now fully supported. Context-menu
  (long-press) is blocked while reorder mode is active to prevent conflicts.
- styles.css: .pl-drag-handle always visible when pl-draggable (no hover needed)
- Edit modal footer: wrap buttons on small screens so Save doesn't overflow
- Edit modal overlay: remove backdrop-filter:blur — causes WebView compositor
  glitch where 3/4 of the modal disappears after returning from background

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Sonnet 4.6 committed 2026-05-18 22:40:11 +02:00
1 parent 68bec67880
commit 9d8a5a22bb
4 files changed
+112 -36

No files matched your search

+11 -3
View File
@@ -165,6 +165,8 @@ nav{flex:1;overflow-y:auto;padding:4px 10px}
.gtrack-actions{display:flex;align-items:center;gap:6px;opacity:0;transition:opacity .15s}
.gtrack-item:hover .gtrack-actions{opacity:1}
button:focus{outline:none}
/* ── ICON BTN ── */
.icon-btn{background:none;border:none;color:var(--text2);cursor:pointer;padding:6px;border-radius:6px;display:flex;align-items:center;transition:color .15s,background .15s}
.icon-btn:hover{color:var(--accent);background:var(--accent-dim)}
@@ -193,8 +195,9 @@ nav{flex:1;overflow-y:auto;padding:4px 10px}
/* ── PLAYLIST DRAG & DROP ── */
.song-list.pl-draggable .song-item{grid-template-columns:18px 32px 44px 1fr auto}
.pl-drag-handle{display:flex;align-items:center;justify-content:center;color:var(--text3);opacity:0;cursor:grab;transition:opacity .15s;touch-action:none}
.song-list.pl-draggable .song-item:hover .pl-drag-handle{opacity:1}
.song-list.pl-draggable .pl-drag-handle{opacity:1}
.pl-drag-handle:active{cursor:grabbing}
.pl-reorder-bar{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--surface);border-radius:10px;margin-bottom:8px;font-size:13px;color:var(--text2);gap:10px}
.song-item.dragging{opacity:0.35}
.song-item.drag-over{box-shadow:0 -2px 0 var(--accent)}
@@ -389,7 +392,7 @@ nav{flex:1;overflow-y:auto;padding:4px 10px}
.pl-btns button{flex:1;padding:10px;border-radius:8px;font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer;border:none}
/* ── EDIT PLAYLIST MODAL ── */
.edit-pl-overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(5px);z-index:500;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}
.edit-pl-overlay{position:fixed;inset:0;background:rgba(0,0,0,.8);z-index:500;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}
.edit-pl-overlay.open{opacity:1;pointer-events:all}
.edit-pl-box{width:min(580px,calc(100vw - 24px));background:var(--surface);border:1px solid var(--border2);border-radius:18px;box-shadow:0 40px 80px rgba(0,0,0,.8);overflow:hidden}
.edit-pl-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;font-size:18px;font-weight:700;border-bottom:1px solid var(--border)}
@@ -422,7 +425,12 @@ nav{flex:1;overflow-y:auto;padding:4px 10px}
.confirm-title{font-size:17px;font-weight:700;margin-bottom:10px}
.confirm-msg{font-size:14px;color:var(--text2);line-height:1.5;margin-bottom:24px}
.confirm-footer{display:flex;justify-content:flex-end;gap:10px}
@media(max-width:480px){.edit-pl-body{flex-direction:column;align-items:center}.edit-pl-cover-wrap{width:140px;height:140px}}
@media(max-width:480px){
.edit-pl-body{flex-direction:column;align-items:center}
.edit-pl-cover-wrap{width:140px;height:140px}
.edit-pl-footer{flex-wrap:wrap;padding:12px 16px;gap:8px}
.edit-pl-footer>div{margin-left:auto}
}
/* ── SONG INFO MODAL ── */
.info-modal{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px);z-index:400;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}