/* ============================================================
   BGM — dock della musica di sottofondo
   Stesso linguaggio del FAB cookie (assets/css/cookies.css):
   cerchio 56px, gradiente radiale scuro, bordo neon, glow.
   Speculare: cookie in basso a sinistra, musica in basso a destra.
   z-index 145 = sopra il drawer (120), sotto lo skip-link (200).
   ============================================================ */

/* l'<audio> non ha box visivo: lo togliamo di mezzo senza display:none
   (alcuni WebKit storici sospendono gli elementi display:none) */
#bgm-track {
  position: absolute;
  width: 0; height: 0;
  opacity: 0;
  pointer-events: none;
}

.bgm-dock {
  position: fixed;
  right: clamp(12px, 2vw, 22px);
  bottom: max(clamp(12px, 2vw, 22px), env(safe-area-inset-bottom, 0px));
  z-index: 145;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 12px;
  transition: opacity .32s ease, transform .32s ease;
}
.bgm-dock[hidden] { display: none; }

/* banner cookie aperto: il dock si fa da parte (stesso angolo, su mobile) */
.bgm-dock.is-cookie-open {
  opacity: 0;
  transform: translateY(14px);
  pointer-events: none;
}

/* ---------- FAB on/off ---------- */
.bgm-fab {
  position: relative;
  width: 56px; height: 56px; padding: 0;
  display: grid; place-items: center;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 40%, #1b1119, #0c0709 70%);
  border: 1px solid rgba(255, 46, 136, .35);
  box-shadow: 0 12px 28px rgba(0, 0, 0, .55), 0 0 22px rgba(255, 46, 136, .22);
  color: var(--pink, #f6c7d8);
  cursor: pointer;
  transition: transform .3s cubic-bezier(.34, 1.56, .64, 1), box-shadow .3s ease, border-color .3s ease, color .3s ease;
}
.bgm-fab:hover {
  transform: translateY(-3px);
  border-color: var(--neon, #ff2e88);
  color: #fff;
  box-shadow: 0 16px 34px rgba(0, 0, 0, .6), 0 0 30px rgba(255, 46, 136, .4);
}
.bgm-fab:focus-visible { outline: 2px solid var(--neon, #ff2e88); outline-offset: 4px; }
.bgm-fab:active { transform: translateY(-1px) scale(.97); }

/* equalizzatore: visibile solo quando suona */
.bgm-eq { display: none; align-items: flex-end; gap: 3px; height: 20px; }
.bgm-eq i {
  display: block; width: 3px; height: 100%;
  border-radius: 2px;
  background: linear-gradient(180deg, #fff, var(--neon, #ff2e88));
  box-shadow: 0 0 8px rgba(255, 46, 136, .65);
  transform-origin: bottom center;
  transform: scaleY(.28);
}
.bgm-dock.is-playing .bgm-eq { display: flex; }
.bgm-dock.is-playing .bgm-eq i { animation: bgm-bar 1.1s ease-in-out infinite; }
.bgm-dock.is-playing .bgm-eq i:nth-child(2) { animation-duration: .82s; animation-delay: .12s; }
.bgm-dock.is-playing .bgm-eq i:nth-child(3) { animation-duration: 1.34s; animation-delay: .06s; }
.bgm-dock.is-playing .bgm-eq i:nth-child(4) { animation-duration: .96s; animation-delay: .2s; }
@keyframes bgm-bar {
  0%, 100% { transform: scaleY(.24); }
  50%      { transform: scaleY(1); }
}

/* speaker sbarrato: visibile quando è spento */
.bgm-off { display: block; width: 22px; height: 22px; }
.bgm-dock.is-playing .bgm-off { display: none; }

/* buffer in corso: anello che gira, nessun layout shift */
.bgm-dock.is-busy .bgm-fab::before {
  content: "";
  position: absolute; inset: -5px;
  border-radius: 50%;
  border: 1.5px solid transparent;
  border-top-color: var(--neon, #ff2e88);
  animation: bgm-spin .9s linear infinite;
}
@keyframes bgm-spin { to { transform: rotate(360deg); } }

/* cenno per chi ha gia' detto "sì" in una visita precedente */
.bgm-dock.is-nudging .bgm-fab { animation: bgm-nudge 2.4s ease-in-out 2; }
@keyframes bgm-nudge {
  0%, 100% { box-shadow: 0 12px 28px rgba(0, 0, 0, .55), 0 0 22px rgba(255, 46, 136, .22); }
  50%      { box-shadow: 0 12px 28px rgba(0, 0, 0, .55), 0 0 34px rgba(255, 46, 136, .7); }
}

/* tooltip (speculare a quello del FAB cookie) */
.bgm-fab::after {
  content: attr(data-tooltip);
  position: absolute; right: 62px; bottom: 12px;
  white-space: nowrap;
  font-family: var(--font-body, "Manrope", sans-serif);
  font-size: 11.5px; letter-spacing: .04em;
  padding: 6px 10px; border-radius: 999px;
  background: rgba(14, 10, 13, .92); color: var(--pink, #f6c7d8);
  border: 1px solid rgba(246, 199, 216, .2);
  opacity: 0; transform: translateX(6px);
  transition: opacity .25s ease, transform .25s ease;
  pointer-events: none;
}
.bgm-fab:hover::after, .bgm-fab:focus-visible::after { opacity: 1; transform: translateX(0); }

/* ---------- invito alla prima visita (solo se il browser blocca l'autoplay) ---------- */
.bgm-hint {
  width: min(320px, calc(100vw - 24px));
  margin: 0;
  padding: 16px 18px 14px;
  border-radius: 18px;
  background: linear-gradient(160deg, rgba(26, 15, 21, .96), rgba(10, 8, 11, .96));
  border: 1px solid rgba(246, 199, 216, .18);
  box-shadow: 0 24px 60px rgba(0, 0, 0, .6), 0 0 28px rgba(255, 46, 136, .12);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  backdrop-filter: blur(14px) saturate(140%);
  font-family: var(--font-body, "Manrope", sans-serif);
  color: var(--ink, #f4edf0);
  animation: bgm-rise .5s cubic-bezier(.22, 1, .36, 1) both;
}
.bgm-hint[hidden] { display: none; }
@keyframes bgm-rise {
  from { opacity: 0; transform: translateY(18px) scale(.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.bgm-hint-title {
  display: flex; align-items: center; gap: 8px;
  font-family: var(--font-display, "Archivo", sans-serif);
  font-size: 13px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
  color: var(--neon-2, #ff6fb1);
  margin-bottom: 6px;
}
.bgm-hint-title svg { width: 15px; height: 15px; flex: none; }
.bgm-hint p { font-size: 13.5px; line-height: 1.5; color: var(--muted, #a89aa1); }
.bgm-hint-actions { display: flex; gap: 8px; margin-top: 12px; }
.bgm-hint-actions button {
  flex: 1;
  font-family: var(--font-display, "Archivo", sans-serif);
  font-size: 12.5px; font-weight: 700; letter-spacing: .04em;
  padding: 10px 12px; border-radius: 999px; cursor: pointer;
  transition: transform .22s ease, box-shadow .22s ease, background .22s ease, color .22s ease, border-color .22s ease;
}
.bgm-hint-actions button:focus-visible { outline: 2px solid var(--neon, #ff2e88); outline-offset: 3px; }
.bgm-hint-yes {
  background: linear-gradient(120deg, var(--neon, #ff2e88), var(--neon-2, #ff6fb1));
  color: #12060c; border: 1px solid transparent;
  box-shadow: 0 0 16px rgba(255, 46, 136, .45);
}
.bgm-hint-yes:hover { transform: translateY(-2px); box-shadow: 0 0 24px rgba(255, 46, 136, .7); }
.bgm-hint-no {
  background: transparent; color: var(--pink, #f6c7d8);
  border: 1px solid rgba(246, 199, 216, .28);
}
.bgm-hint-no:hover { border-color: var(--neon, #ff2e88); color: #fff; }

/* ---------- mobile ---------- */
@media (max-width: 640px) {
  .bgm-fab { width: 50px; height: 50px; }
  .bgm-eq { height: 18px; }
  .bgm-off { width: 20px; height: 20px; }
  .bgm-fab::after { display: none; }        /* su touch il tooltip non ha hover */
  .bgm-hint { width: calc(100vw - 24px); padding: 14px 15px 12px; }
  .bgm-hint-actions { flex-direction: column; }
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .bgm-dock.is-playing .bgm-eq i,
  .bgm-dock.is-busy .bgm-fab::before,
  .bgm-dock.is-nudging .bgm-fab,
  .bgm-hint { animation: none; }
  .bgm-dock.is-playing .bgm-eq i { transform: scaleY(.7); }
  .bgm-fab, .bgm-hint-actions button { transition-duration: .01ms; }
}

/* ---------- print ---------- */
@media print {
  .bgm-dock { display: none; }
}
