/* Barre de lecture en bas de page (playlist, émissions, chroniqueurs) */
.dock {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 10;
  display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto; align-items: center; gap: 24px;
  padding: 14px var(--pad) calc(14px + env(safe-area-inset-bottom));
  background: rgb(14 14 16 / 0.92); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border-top: 1px solid var(--line);
}
.seek {
  position: absolute; left: 0; right: 0; top: -7px; width: 100%; height: 14px; margin: 0;
  -webkit-appearance: none; appearance: none; background: transparent; cursor: pointer;
  --p: 0%;
}
.seek::-webkit-slider-runnable-track { height: 2px; background: linear-gradient(var(--accent), var(--accent)) 0 0 / var(--p) 100% no-repeat, var(--line); }
.seek::-moz-range-track { height: 2px; background: var(--line); }
.seek::-moz-range-progress { height: 2px; background: var(--accent); }
.seek::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; height: 12px; margin-top: -5px; background: var(--ink); border: 0; opacity: 0; transition: opacity 160ms ease; }
.seek::-moz-range-thumb { width: 12px; height: 12px; background: var(--ink); border: 0; border-radius: 0; opacity: 0; }
.dock:hover .seek::-webkit-slider-thumb, .seek:focus-visible::-webkit-slider-thumb { opacity: 1; }
.dock:hover .seek::-moz-range-thumb, .seek:focus-visible::-moz-range-thumb { opacity: 1; }
.seek:focus-visible { outline: none; }

.dock-meta {
  display: flex; align-items: center; gap: 14px; min-width: 0; padding: 0; border: 0;
  background: transparent; color: var(--ink); font: inherit; text-align: left; cursor: pointer;
}
.dock-cover { position: relative; flex: none; width: 56px; height: 56px; overflow: hidden; background: var(--tile); container-type: inline-size; }
.dock-cover > * { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.dock-text { display: grid; min-width: 0; }
.dock-title { font-family: var(--display); font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dock-artist { font-size: 14px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.dock-ctrl { display: flex; align-items: center; gap: 8px; }
.ctrl {
  width: 44px; height: 44px; display: grid; place-items: center; padding: 0; border: 0;
  background: transparent; color: var(--ink); font-size: 20px; cursor: pointer;
  transition: transform 160ms var(--ease-out), color 160ms ease;
}
.ctrl.main { width: 56px; height: 56px; background: var(--ink); color: var(--bg); font-size: 24px; box-shadow: none; transition: transform 140ms var(--ease-out), box-shadow 140ms var(--ease-out), background-color 200ms ease; }
.ctrl:active { transform: scale(0.94); }
.ctrl.main:active { transform: scale(0.95); }
@media (hover: hover) and (pointer: fine) {
  .ctrl:not(.main):hover { color: var(--accent); }
  .ctrl.main:hover { background: #ffffff; }
}
.dock[data-state="loading"] .ctrl.main i { animation: spin 0.9s linear infinite; }

.dock-time { justify-self: end; font-family: var(--mono); font-size: 14px; color: var(--muted); font-variant-numeric: tabular-nums; display: flex; gap: 6px; }
.dock-time .sep { opacity: 0.5; }
.dock[hidden] { display: none; }

/* Tablette */
@media (max-width: 1100px) {
  .dock { grid-template-columns: minmax(0, 1fr) auto auto; }
  .dock-vol { display: none; }
}
/* Mobile */
@media (max-width: 640px) {
  .dock { grid-template-columns: minmax(0, 1fr) auto; gap: 12px; }
  .dock-time { display: none; }
  .dock-cover { width: 48px; height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
  .dock[data-state="loading"] .ctrl.main i { animation: none; }
}
