[hidden] { display: none !important; }
/* 必须 100vh，不能 100dvh：iOS standalone + black-translucent 真机实测(safe-debug-C.html)，100dvh 会在底部漏一条 */
.player-host { margin: 0; height: 100vh; display: flex; flex-direction: column; background: #151616; color: #f5f5f3; overflow: hidden; }
#app-view { flex: 1; min-height: 0; width: 100%; border: 0; background: #d9dadd; }
.player-mini { box-sizing: border-box; display: grid; grid-template-columns: minmax(0,1fr) 44px 44px; align-items: center; padding: 3px 8px; background: var(--player-panel, #eeeeec); color: var(--player-fg, #242525); border-top: 1px solid rgb(128 128 128 / 20%); font: 12px -apple-system, BlinkMacSystemFont, sans-serif; }
.player-mini button { min-height: 44px; min-width: 44px; border: 0; background: transparent; color: inherit; cursor: pointer; }
.mini-track { display: flex; gap: 8px; align-items: center; text-align: left; min-width: 0; }
.mini-cover { display: grid; place-items: center; width: 32px; height: 32px; flex: none; background: #8882 center / cover; border-radius: 4px; }
.mini-copy { min-width: 0; }
.mini-copy strong, .mini-copy small { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mini-copy small { margin-top: 3px; opacity: .65; font-size: 10px; }
.mini-timeline { grid-column: 1 / -1; display: flex; align-items: center; gap: 6px; font-size: 10px; font-variant-numeric: tabular-nums; }
.mini-seek { min-width: 0; flex: 1; margin: 0; height: 44px; accent-color: var(--player-accent, #414345); cursor: pointer; }
.mini-error { grid-column: 1 / -1; font-size: 11px; }
.mini-error:empty { display: none; }
.player-mini button:focus-visible { outline: 2px solid var(--player-accent, #555); outline-offset: -2px; border-radius: 6px; }

/* 悬浮播放器：叠在 iframe 上，不占页面高度；四个角吸附 */
.music-float { --float-gap: 12px; position: fixed; z-index: 50; transition: transform 260ms cubic-bezier(.2,.8,.2,1); }
.music-float.dragging { transition: none; }
.music-float[data-x="left"] { left: calc(var(--float-gap) + env(safe-area-inset-left)); }
.music-float[data-x="right"] { right: calc(var(--float-gap) + env(safe-area-inset-right)); }
/* 顶部让开状态栏和各页面的顶栏按钮 */
.music-float[data-y="top"] { top: calc(env(safe-area-inset-top) + 72px); }
.music-float[data-y="bottom"] { bottom: calc(var(--float-gap) + env(safe-area-inset-bottom)); }
.float-bubble, .float-bar { touch-action: none; -webkit-user-select: none; user-select: none; }
.float-bubble { display: grid; place-items: center; width: 52px; height: 52px; padding: 5px; border: 0; border-radius: 50%; background: var(--player-panel, #eeeeec); box-shadow: 0 8px 24px rgb(0 0 0 / 28%); cursor: grab; -webkit-tap-highlight-color: transparent; }
.float-bubble-art { display: grid; place-items: center; width: 100%; height: 100%; border-radius: 50%; background: #8883 center / cover; color: var(--player-fg, #242525); font-size: 18px; }
.music-float[data-playing] .float-bubble-art { animation: float-spin 8s linear infinite; }
.float-card { width: min(340px, calc(100vw - 2 * var(--float-gap))); overflow: hidden; border-radius: 18px; background: var(--player-panel, #eeeeec); color: var(--player-fg, #242525); box-shadow: 0 12px 36px rgb(0 0 0 / 28%); }
.float-bar { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; height: 28px; padding: 0 4px; cursor: grab; }
.float-grip { width: 36px; height: 4px; border-radius: 2px; background: currentColor; opacity: .25; }
.float-actions { display: flex; justify-self: end; }
.float-actions button { width: 36px; height: 28px; border: 0; background: transparent; color: inherit; font: 18px/1 -apple-system, sans-serif; opacity: .6; cursor: pointer; }
.float-card .player-mini { border-top: 0; padding-top: 0; }
@keyframes float-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .music-float { transition: none; }
  .music-float[data-playing] .float-bubble-art { animation: none; }
}
