/* ============================================================
   藏地音景 · Tibetan Soundscape — soundscape.css
   Version: 1.0.0
   Dark amber-gold aesthetic, no glassmorphism, minimal radius
   ============================================================ */

:root {
  --sp-bg:          #14110F;
  --sp-bg-alpha:    rgba(20, 17, 15, 0.92);
  --sp-gold:        #C4A96A;
  --sp-gold-dim:    rgba(196, 169, 106, 0.35);
  --sp-gold-glow:   rgba(196, 169, 106, 0.18);
  --sp-text:        #E8DCC8;
  --sp-text-dim:    rgba(232, 220, 200, 0.55);
  --sp-border:      rgba(196, 169, 106, 0.22);
  --sp-radius:      2px;
  --sp-radius-lg:   4px;
}

/* ── Floating Trigger Button ─────────────────────────────── */
.sp-trigger {
  position: fixed;
  z-index: 99990;
  right: 24px;
  bottom: 24px;
  width: 52px;
  height: 52px;
  border: 1px solid var(--sp-border);
  border-radius: 50%;
  background: var(--sp-bg);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color 0.4s, background 0.4s;
  padding: 0;
  outline: none;
  -webkit-tap-highlight-color: transparent;
}
.sp-trigger:hover,
.sp-trigger:focus-visible {
  border-color: var(--sp-gold);
}
.sp-trigger svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: var(--sp-gold);
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke 0.3s;
}

/* ── Ripple ring (only when playing) ─────────────────────── */
.sp-ripple {
  position: absolute;
  inset: -6px;
  border-radius: 50%;
  border: 1px solid var(--sp-gold-dim);
  opacity: 0;
  pointer-events: none;
}
.sp-trigger.is-playing .sp-ripple {
  animation: sp-ripple-anim 2.8s ease-out infinite;
}
.sp-trigger.is-playing .sp-ripple:nth-child(2) {
  animation-delay: 0.9s;
}
.sp-trigger.is-playing .sp-ripple:nth-child(3) {
  animation-delay: 1.8s;
}
@keyframes sp-ripple-anim {
  0%   { transform: scale(1);   opacity: 0.6; }
  100% { transform: scale(1.9); opacity: 0;   }
}

/* ── Panel ───────────────────────────────────────────────── */
.sp-panel {
  position: fixed;
  z-index: 99989;
  right: 24px;
  bottom: 88px;
  width: 300px;
  background: var(--sp-bg-alpha);
  border: 1px solid var(--sp-border);
  border-radius: var(--sp-radius-lg);
  padding: 20px 18px 16px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);
  transition: opacity 0.35s, visibility 0.35s, transform 0.35s;
  font-family: "Noto Sans SC", "Source Han Sans SC", -apple-system, sans-serif;
}
.sp-panel.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

/* ── Panel Header ────────────────────────────────────────── */
.sp-header {
  margin-bottom: 16px;
  border-bottom: 1px solid var(--sp-border);
  padding-bottom: 12px;
}
.sp-title {
  font-size: 13px;
  font-weight: 400;
  color: var(--sp-gold);
  letter-spacing: 0.06em;
  margin: 0 0 3px;
  line-height: 1.4;
}
.sp-subtitle {
  font-size: 11px;
  color: var(--sp-text-dim);
  letter-spacing: 0.02em;
  margin: 0;
  line-height: 1.4;
}

/* ── Track Row ───────────────────────────────────────────── */
.sp-track {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 0;
}
.sp-track + .sp-track {
  border-top: 1px solid rgba(196, 169, 106, 0.10);
}
.sp-track-icon {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--sp-radius);
  border: 1px solid var(--sp-border);
  transition: border-color 0.3s, background 0.3s;
}
.sp-track.is-active .sp-track-icon {
  border-color: var(--sp-gold-dim);
  background: var(--sp-gold-glow);
}
.sp-track-icon svg {
  width: 14px;
  height: 14px;
  stroke: var(--sp-text-dim);
  fill: none;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke 0.3s;
}
.sp-track.is-active .sp-track-icon svg {
  stroke: var(--sp-gold);
}

/* Breathing glow on active icon */
.sp-track.is-active .sp-track-icon {
  animation: sp-breathe 3.5s ease-in-out infinite;
}
@keyframes sp-breathe {
  0%, 100% { box-shadow: 0 0 0 0 transparent; }
  50%       { box-shadow: 0 0 8px 1px var(--sp-gold-glow); }
}

.sp-track-name {
  flex: 1;
  min-width: 0;
  font-size: 12px;
  color: var(--sp-text);
  letter-spacing: 0.03em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color 0.3s;
}
.sp-track.is-active .sp-track-name {
  color: var(--sp-gold);
}

/* Toggle switch */
.sp-toggle {
  position: relative;
  width: 32px;
  height: 18px;
  flex-shrink: 0;
  cursor: pointer;
}
.sp-toggle input {
  opacity: 0;
  width: 0;
  height: 0;
  position: absolute;
}
.sp-toggle-track {
  position: absolute;
  inset: 0;
  background: rgba(232, 220, 200, 0.12);
  border-radius: 9px;
  border: 1px solid var(--sp-border);
  transition: background 0.3s, border-color 0.3s;
}
.sp-toggle input:checked + .sp-toggle-track {
  background: var(--sp-gold-dim);
  border-color: var(--sp-gold);
}
.sp-toggle-thumb {
  position: absolute;
  top: 3px;
  left: 3px;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--sp-text-dim);
  transition: transform 0.25s, background 0.3s;
  pointer-events: none;
}
.sp-toggle input:checked ~ .sp-toggle-thumb {
  transform: translateX(14px);
  background: var(--sp-gold);
}

/* Volume slider */
.sp-vol-wrap {
  display: flex;
  align-items: center;
  width: 56px;
  flex-shrink: 0;
}
.sp-vol {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 3px;
  background: rgba(232, 220, 200, 0.12);
  border-radius: 2px;
  outline: none;
  cursor: pointer;
}
.sp-vol::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--sp-text-dim);
  border: none;
  cursor: pointer;
  transition: background 0.2s;
}
.sp-vol::-moz-range-thumb {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--sp-text-dim);
  border: none;
  cursor: pointer;
}
.sp-track.is-active .sp-vol::-webkit-slider-thumb {
  background: var(--sp-gold);
}
.sp-track.is-active .sp-vol::-moz-range-thumb {
  background: var(--sp-gold);
}

/* ── Timer Bar ───────────────────────────────────────────── */
.sp-timer {
  display: flex;
  gap: 6px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--sp-border);
}
.sp-timer-btn {
  flex: 1;
  height: 26px;
  font-size: 10px;
  letter-spacing: 0.04em;
  color: var(--sp-text-dim);
  background: transparent;
  border: 1px solid var(--sp-border);
  border-radius: var(--sp-radius);
  cursor: pointer;
  transition: color 0.25s, border-color 0.25s, background 0.25s;
  font-family: inherit;
  padding: 0;
  outline: none;
}
.sp-timer-btn:hover {
  color: var(--sp-text);
  border-color: var(--sp-gold-dim);
}
.sp-timer-btn.is-active {
  color: var(--sp-gold);
  border-color: var(--sp-gold);
  background: var(--sp-gold-glow);
}

/* ── Status line (playing indicator) ─────────────────────── */
.sp-status {
  margin-top: 10px;
  font-size: 10px;
  color: var(--sp-text-dim);
  letter-spacing: 0.04em;
  text-align: center;
  min-height: 14px;
  transition: color 0.3s;
}
.sp-status.is-live {
  color: var(--sp-gold-dim);
}

/* ── Mobile adjustments ──────────────────────────────────── */
@media (max-width: 480px) {
  .sp-trigger {
    right: 16px;
    bottom: 16px;
    width: 46px;
    height: 46px;
  }
  .sp-panel {
    right: 12px;
    left: 12px;
    bottom: 74px;
    width: auto;
  }
}

/* ── Reduced motion ──────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .sp-trigger.is-playing .sp-ripple,
  .sp-track.is-active .sp-track-icon {
    animation: none;
  }
}
