/* ==========================================================
   SWAT PLAYER — lecteur audio sur mesure DJ-TheSwat
   Couleurs reprises du thème (variables modifiables depuis l'admin)
   ========================================================== */
.sp{--sp-a:var(--cyan,#2ee6ff);--sp-b:var(--violet,#8b5cff);--sp-bg:rgba(6,10,36,.8);--sp-line:rgba(46,230,255,.22);--sp-mute:#8da0c9;--bass:0}
.sp *{box-sizing:border-box}
.sp button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.sp svg{width:20px;height:20px;fill:currentColor;display:block}
.sp-ic{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;color:#c9d6f5;transition:.2s;position:relative}
.sp-ic:hover{color:#fff;background:rgba(255,255,255,.06)}
.sp-ic.on{color:var(--sp-a)}
.sp-ic.on::after{content:"";position:absolute;bottom:3px;width:4px;height:4px;border-radius:50%;background:var(--sp-a);box-shadow:0 0 6px var(--sp-a)}
.sp-ic .one{position:absolute;top:5px;right:5px;font-size:9px;font-weight:700;color:var(--sp-a)}
.sp .sp-play{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:#020414;
  background:linear-gradient(135deg,var(--sp-a),var(--blue,#2a5bff));
  box-shadow:0 0 calc(14px + var(--bass)*26px) rgba(46,230,255,.7);transition:transform .15s}
.sp-play:hover{transform:scale(1.07)}
.sp-play svg{width:22px;height:22px}
.sp-like.liked{color:#ff4f8b}

/* ---------- BARRE ---------- */
.sp-bar{position:fixed;left:50%;bottom:12px;transform:translateX(-50%);width:min(1240px,100% - 24px);z-index:70;
  display:grid;grid-template-columns:minmax(220px,1fr) minmax(0,2.2fr) auto;gap:20px;align-items:center;
  padding:10px 14px 10px 10px;border-radius:20px;background:var(--sp-bg);backdrop-filter:blur(18px) saturate(1.5);
  border:1px solid var(--sp-line);box-shadow:0 12px 40px rgba(0,0,0,.55),0 0 calc(20px + var(--bass)*40px) rgba(46,230,255,calc(.08 + var(--bass)*.25));
  transition:box-shadow .08s linear}
.sp-now{display:flex;align-items:center;gap:12px;min-width:0}
.sp-cover{position:relative;width:56px;height:56px;border-radius:14px;flex:none;display:grid;place-items:center;overflow:hidden}
.sp-cover img{width:92%;transition:filter .1s}
.sp.playing .sp-cover img{animation:sp-spin 12s linear infinite;filter:drop-shadow(0 0 calc(4px + var(--bass)*14px) var(--sp-a))}
@keyframes sp-spin{to{transform:rotate(360deg)}}
.sp-cover::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.sp-cover:hover::before{content:"⤢";position:absolute;inset:0;z-index:2;display:grid;place-items:center;background:rgba(0,0,0,.5);font-size:20px}
.sp-meta{min-width:0}
.sp-title{display:block;font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-artist{display:block;color:var(--sp-mute);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-center{display:flex;align-items:center;gap:14px;min-width:0}
.sp-ctrl{display:flex;align-items:center;gap:2px;flex:none}
.sp-seek{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.sp-time{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--sp-mute);min-width:36px;text-align:center}
.sp-wave{position:relative;flex:1;height:44px;cursor:pointer;touch-action:none}
.sp-wave canvas{width:100%;height:100%;display:block}
.sp-tip{position:absolute;bottom:calc(100% + 6px);transform:translateX(-50%);padding:3px 8px;border-radius:6px;background:#020414;border:1px solid var(--sp-line);
  font:600 11px "JetBrains Mono",monospace;color:var(--sp-a);pointer-events:none;opacity:0;transition:opacity .15s;white-space:nowrap}
.sp-wave:hover .sp-tip{opacity:1}
.sp-right{display:flex;align-items:center;gap:4px}
.sp .sp-vol{-webkit-appearance:none;appearance:none;width:90px;height:4px;padding:0;border:0;box-shadow:none;border-radius:9px;outline:none;cursor:pointer;
  background:linear-gradient(90deg,var(--sp-a) var(--v,80%),rgba(255,255,255,.15) var(--v,80%))}
.sp-vol::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 0 8px var(--sp-a)}
.sp-vol::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:#fff;box-shadow:0 0 8px var(--sp-a)}

/* ---------- FILE D'ATTENTE ---------- */
.sp-queue{position:fixed;right:12px;bottom:96px;z-index:69;width:min(380px,100% - 24px);max-height:min(560px,70vh);display:flex;flex-direction:column;
  border-radius:20px;background:rgba(6,10,36,.92);backdrop-filter:blur(18px);border:1px solid var(--sp-line);box-shadow:0 20px 60px rgba(0,0,0,.6);
  opacity:0;transform:translateY(16px) scale(.98);pointer-events:none;transition:.25s cubic-bezier(.2,.8,.2,1)}
.sp.q-open .sp-queue{opacity:1;transform:none;pointer-events:auto}
.sp-qh{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 10px;font-family:var(--ft);font-size:14px;letter-spacing:.06em}
.sp-qh small{font-family:var(--fb);color:var(--sp-mute);letter-spacing:0;font-size:12px}
.sp-ql{list-style:none;margin:0;padding:0 8px 10px;overflow:auto}
.sp-ql li{display:grid;grid-template-columns:40px 1fr auto;gap:12px;align-items:center;padding:8px 10px;border-radius:12px;cursor:pointer}
.sp-ql li:hover{background:rgba(46,230,255,.07)}
.sp-ql li.cur{background:rgba(46,230,255,.12)}
.sp-ql li.cur b{color:var(--sp-a)}
.sp-ql .qc{width:40px;height:40px;border-radius:9px;display:grid;place-items:center;overflow:hidden}
.sp-ql .qc img{width:90%}
.sp-ql b{display:block;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sp-ql small{color:var(--sp-mute);font-size:11px}
.sp-ql .qd{font:12px "JetBrains Mono",monospace;color:var(--sp-mute)}
.sp-eqi{display:inline-flex;gap:2px;align-items:flex-end;height:12px;margin-right:6px;vertical-align:-1px}
.sp-eqi i{width:2px;background:var(--sp-a);animation:sp-eq .9s ease-in-out infinite}
.sp-eqi i:nth-child(2){animation-delay:-.3s}.sp-eqi i:nth-child(3){animation-delay:-.6s}
.sp:not(.playing) .sp-eqi i{animation-play-state:paused}
@keyframes sp-eq{0%,100%{height:25%}50%{height:100%}}

/* ---------- MODE PLEIN ÉCRAN « NOW PLAYING » ---------- */
.sp-full{position:fixed;inset:0;z-index:80;display:grid;grid-template-rows:auto 1fr auto;padding:22px clamp(16px,4vw,48px) 30px;
  background:#03051a;opacity:0;visibility:hidden;transition:opacity .35s,visibility .35s;overflow:hidden}
.sp.f-open .sp-full{opacity:1;visibility:visible}
.sp-full .bg{position:absolute;inset:-40px;background:var(--sp-hero,none) center/cover;filter:blur(40px) saturate(1.4) brightness(.35);transform:scale(1.1)}
.sp-full .bg::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,transparent,#03051a 75%)}
.sp-full>*{position:relative}
.sp-fh{display:flex;justify-content:space-between;align-items:center}
.sp-fh span{font:12px "JetBrains Mono",monospace;letter-spacing:.2em;color:var(--sp-a)}
.sp-stage{display:grid;place-items:center;min-height:0}
.sp-viz{position:relative;width:min(62vh,86vw);aspect-ratio:1}
.sp-viz canvas{position:absolute;inset:0;width:100%;height:100%}
.sp-viz img{position:absolute;inset:22%;width:56%;transform:scale(calc(1 + var(--bass)*.08));filter:drop-shadow(0 0 calc(18px + var(--bass)*50px) var(--sp-a));transition:transform .06s}
.sp.playing .sp-viz img{animation:sp-spin 30s linear infinite}
.sp-finfo{text-align:center;margin-top:-10px}
.sp-finfo h3{font-family:var(--ft);font-size:clamp(24px,4vw,40px);margin:0;text-shadow:0 0 24px rgba(46,230,255,.4)}
.sp-finfo p{color:var(--sp-mute);margin:6px 0 0}
.sp-fbottom{width:min(900px,100%);margin:0 auto;display:grid;gap:14px}
.sp-fbottom .sp-seek .sp-wave{height:64px}
.sp-fbottom .sp-ctrl{justify-content:center;gap:12px}
.sp .sp-fbottom .sp-play{width:64px;height:64px}
.sp-fbottom .sp-play svg{width:28px;height:28px}

@media (max-width:860px){
  .sp-bar{grid-template-columns:1fr auto;gap:8px 10px;padding:8px 10px 10px 8px;border-radius:18px}
  .sp-center{grid-column:1/-1;order:3}
  .sp-bar .sp-ctrl [data-a=shuffle],.sp-bar .sp-ctrl [data-a=repeat],.sp-bar .sp-ctrl [data-a=prev],.sp-vol,.sp-right [data-a=mute],.sp-bar .sp-like{display:none}
  .sp-bar .sp-ctrl{order:2}
  .sp-cover{width:46px;height:46px}
  .sp-wave{height:34px}
  .sp-queue{bottom:150px}
}
@media (prefers-reduced-motion:reduce){.sp *{animation:none!important}}
