<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="https://surikitos.com.ar/wp-sitemap-index.xsl" ?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"><sitemap><loc>https://surikitos.com.ar/wp-sitemap-posts-page-1.xml</loc></sitemap><sitemap><loc>https://surikitos.com.ar/wp-sitemap-posts-product-1.xml</loc></sitemap><sitemap><loc>https://surikitos.com.ar/wp-sitemap-taxonomies-product_cat-1.xml</loc></sitemap></sitemapindex>

<!-- musica-51 -->
<style id="musica-style-43">#musica-ui-root-51{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;height:100svh!important;z-index:2147483645!important;pointer-events:none!important;margin:0!important;padding:0!important;border:0!important;transform:none!important;translate:none!important;rotate:none!important;scale:none!important;filter:none!important;perspective:none!important;overflow:visible!important;box-sizing:border-box!important}
#musica-player-44{display:none!important}
.musica-toggle-44{
  all:initial!important;
  --musica-bg:#fff;
  --musica-hover-bg:#f3f3f3;
  --musica-icon:#000;
  --musica-effect:#000;
  --musica-neon:#66d9ff;
  position:absolute!important;
  z-index:2147483646!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:0!important;
  margin:0!important;
  border:1px solid rgba(0,0,0,.08)!important;
  border-radius:50%!important;
  background:var(--musica-bg)!important;
  color:var(--musica-icon)!important;
  box-shadow:0 6px 20px rgba(0,0,0,.11)!important;
  cursor:pointer!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  transform:none!important;
  translate:none!important;
  rotate:none!important;
  scale:none!important;
  animation:none!important;
  transition:opacity .2s ease,visibility .2s ease,background-color .18s ease,box-shadow .18s ease!important;
  -webkit-tap-highlight-color:transparent!important;
  touch-action:manipulation!important;
  overflow:visible!important;
  isolation:isolate!important;
  -webkit-appearance:none!important;
  appearance:none!important;
  box-sizing:border-box!important;
  min-width:0!important;
  min-height:0!important;
  max-width:none!important;
  max-height:none!important;
  line-height:1!important;
  font-size:0!important;
  border-radius:9999px!important;
}
.musica-toggle-44.is-visible{opacity:1!important;visibility:visible!important;pointer-events:auto!important;transform:none!important;translate:none!important;rotate:none!important;scale:none!important}
@media (hover:hover) and (pointer:fine){
  .musica-toggle-44:hover:not(.musica-no-hover){background:var(--musica-hover-bg)!important;box-shadow:0 8px 24px rgba(0,0,0,.14)!important}
}
.musica-toggle-44:focus{outline:none!important}
.musica-toggle-44:focus-visible{outline:1px solid var(--musica-icon)!important;outline-offset:4px!important}

/* Onda orgánica, cercana al botón. El movimiento real lo controla el analizador de audio. */
.musica-wave-44{
  position:absolute!important;
  z-index:-1!important;
  inset:-3px!important;
  display:block!important;
  border:1px solid var(--musica-effect)!important;
  border-radius:50%!important;
  opacity:.42!important;
  transform:rotate(0deg) scale(1)!important;
  transform-origin:center!important;
  pointer-events:none!important;
  will-change:transform,border-radius,opacity,filter!important;
  filter:none;
  box-shadow:none!important;
}

/* Ecualizador de cuatro velas finas: más orgánico y con mayor recorrido vertical. */
.musica-bars-44{
  position:relative!important;
  z-index:1!important;
  width:18px!important;
  height:20px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:2.15px!important;
  flex:0 0 auto!important;
  transform:translateZ(0)!important;
}
.musica-bars-44 i{
  display:block!important;
  width:1.45px!important;
  min-height:3px!important;
  border-radius:999px!important;
  background:var(--musica-icon)!important;
  opacity:.96!important;
  transform-origin:center!important;
  transition:height .055s cubic-bezier(.2,.75,.25,1)!important;
  will-change:height!important;
}
.musica-bars-44 i:nth-child(1){height:6px!important}
.musica-bars-44 i:nth-child(2){height:13px!important}
.musica-bars-44 i:nth-child(3){height:9px!important}
.musica-bars-44 i:nth-child(4){height:16px!important}
.musica-toggle-44:not(.is-playing) .musica-wave-44{opacity:.24!important;transform:rotate(0deg) scale(1)!important;border-radius:50%!important;filter:none!important;box-shadow:none!important}
@media(prefers-reduced-motion:reduce){
  .musica-toggle-44,.musica-toggle-44 *{transition:none!important}
}


/* Control vertical de volumen: solo aparece al pulsar el botón flotante. */
.musica-volume-panel-46{
  all:initial!important;
  --musica-volume-bar:#111111;
  --musica-volume-icon:#111111;
  --musica-volume-level:5%;
  position:absolute!important;
  z-index:2147483647!important;
  width:46px!important;
  min-height:142px!important;
  padding:8px 0 10px!important;
  margin:0!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:7px!important;
  background:rgba(255,255,255,.96)!important;
  border:1px solid rgba(0,0,0,.08)!important;
  border-radius:23px!important;
  box-shadow:0 12px 34px rgba(0,0,0,.16)!important;
  backdrop-filter:blur(10px)!important;
  -webkit-backdrop-filter:blur(10px)!important;
  opacity:0!important;
  visibility:hidden!important;
  pointer-events:none!important;
  transform:translateY(5px) scale(.96)!important;
  transform-origin:bottom center!important;
  transition:opacity .16s ease,transform .16s ease,visibility .16s ease!important;
  box-sizing:border-box!important;
}
.musica-volume-panel-46.is-open{opacity:1!important;visibility:visible!important;pointer-events:auto!important;transform:translateY(0) scale(1)!important}
.musica-mute-46{
  all:initial!important;
  width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;
  padding:0!important;margin:0!important;border:0!important;border-radius:50%!important;
  background:transparent!important;color:var(--musica-volume-icon)!important;display:flex!important;align-items:center!important;justify-content:center!important;
  cursor:pointer!important;-webkit-appearance:none!important;appearance:none!important;box-shadow:none!important;line-height:1!important;
}
.musica-mute-46{
  -webkit-tap-highlight-color:transparent!important;
  touch-action:manipulation!important;
  transition:background-color .16s ease!important;
}
@media (hover:hover) and (pointer:fine){
  .musica-mute-46:hover,.musica-mute-46:active{background:var(--musica-hover-bg)!important;color:var(--musica-volume-icon)!important;transform:none!important;box-shadow:none!important}
}
@media (hover:none),(pointer:coarse){
  .musica-mute-46:hover,.musica-mute-46:active{background:transparent!important;color:var(--musica-volume-icon)!important;transform:none!important;box-shadow:none!important}
}
.musica-mute-46:focus{outline:none!important;box-shadow:none!important;background:transparent!important}
.musica-mute-46:focus-visible{outline:none!important;box-shadow:none!important}
.musica-mute-46 svg{width:16px!important;height:16px!important;display:block!important;fill:currentColor!important}
/* En reproducción mostramos el parlante tachado como acción de silenciar; al quedar muteado, mostramos el parlante normal para reactivar. */
.musica-speaker-on-46{display:none!important}
.musica-speaker-off-46{display:inline-flex!important}
.musica-volume-panel-46.is-muted .musica-speaker-on-46{display:inline-flex!important}
.musica-volume-panel-46.is-muted .musica-speaker-off-46{display:none!important}
.musica-volume-track-46{position:relative!important;width:26px!important;height:92px!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:visible!important}
.musica-volume-range-46{
  position:absolute!important;left:50%!important;top:50%!important;width:86px!important;height:18px!important;margin:0!important;padding:0!important;
  transform:translate(-50%,-50%) rotate(-90deg)!important;transform-origin:center!important;
  -webkit-appearance:none!important;appearance:none!important;background:transparent!important;cursor:pointer!important;touch-action:none!important;
  border:0!important;outline:none!important;box-shadow:none!important;-webkit-tap-highlight-color:transparent!important;accent-color:transparent!important;color:transparent!important;
}
.musica-volume-range-46:focus,.musica-volume-range-46:focus-visible,.musica-volume-range-46:active{outline:none!important;box-shadow:none!important;background:transparent!important}
.musica-volume-range-46::-moz-focus-outer{border:0!important}
.musica-volume-range-46::-webkit-slider-runnable-track{height:3px!important;border-radius:99px!important;background:linear-gradient(to right,var(--musica-volume-bar) 0,var(--musica-volume-bar) var(--musica-volume-level),#d9d9dd var(--musica-volume-level),#d9d9dd 100%)!important}
.musica-volume-range-46::-webkit-slider-thumb{-webkit-appearance:none!important;appearance:none!important;width:12px!important;height:12px!important;border-radius:50%!important;background:var(--musica-volume-bar)!important;border:2px solid #fff!important;box-shadow:0 1px 4px rgba(0,0,0,.25)!important;margin-top:-4.5px!important}
.musica-volume-range-46::-moz-range-track{height:3px!important;border:0!important;border-radius:99px!important;background:#d9d9dd!important}
.musica-volume-range-46::-moz-range-progress{height:3px!important;border-radius:99px!important;background:var(--musica-volume-bar)!important}
.musica-volume-range-46::-moz-range-thumb{width:10px!important;height:10px!important;border-radius:50%!important;background:var(--musica-volume-bar)!important;border:2px solid #fff!important;box-shadow:0 1px 4px rgba(0,0,0,.25)!important}

@media(max-width:782px){
  .musica-toggle-44{
    -webkit-appearance:none!important;appearance:none!important;border-radius:9999px!important;
    box-sizing:border-box!important;line-height:0!important;font-size:0!important;
  }
  .musica-volume-panel-46{width:44px!important;border-radius:22px!important}
}

html body button.musica-toggle-44{border-radius:9999px!important;-webkit-appearance:none!important;appearance:none!important;box-sizing:border-box!important;}
@media(max-width:782px){html body button.musica-toggle-44{border-radius:9999px!important;-webkit-appearance:none!important;appearance:none!important;}}

.musica-toggle-44,.musica-volume-panel-46{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important}
.musica-toggle-44 *,.musica-volume-panel-46 *{box-sizing:border-box!important}
</style>
<script id="musica-config-43">window.MusicaConfig44={"playlist":[{"title":"Probando","url":"https:\/\/surikitos.com.ar\/wp-content\/uploads\/2026\/09\/musica-de-prueba.mp3"}],"shuffle":true,"repeat":true,"startVolumePercent":3.5,"runVolumePercent":20,"fadeSeconds":3,"pauseWhenInactive":true,"desktopButton":{"width":40,"height":40,"bottom":100,"side":"right","offsetX":22},"mobileButton":{"width":40,"height":40,"bottom":170,"side":"right","offsetX":20},"buttonBg":"#66d9ff","buttonHoverBg":"#e0e0e0","iconColor":"#ffffff","effectColor":"#66d9ff","neonEnabled":true,"neonColor":"#66d9ff","neonIntensity":57,"volumeBarColor":"#66d9ff","volumeIconColor":"#66d9ff"};</script>
<script id="musica-script-43">(function () {
  'use strict';

  var cfg = window.MusicaConfig44;
  if (!cfg || !Array.isArray(cfg.playlist) || !cfg.playlist.length) return;
  if (window.__MUSICA_51_BOOTED__) return;
  window.__MUSICA_51_BOOTED__ = true;

  function ready(fn) {
    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', fn, { once: true });
    else fn();
  }

  ready(function () {
    if (document.getElementById('musica-player-44')) return;

    var mountRoot = document.documentElement;
    var uiRoot = document.createElement('div');
    uiRoot.id = 'musica-ui-root-51';
    uiRoot.setAttribute('aria-hidden', 'false');
    mountRoot.appendChild(uiRoot);

    var audio = document.createElement('audio');
    audio.id = 'musica-player-44';
    audio.preload = 'auto';
    audio.setAttribute('playsinline', '');
    audio.setAttribute('webkit-playsinline', '');
    audio.style.display = 'none';

    var source = document.createElement('source');
    audio.appendChild(source);
    document.body.appendChild(audio);

    var button = document.createElement('button');
    button.type = 'button';
    button.id = 'musica-toggle-44';
    button.className = 'musica-toggle-44';
    button.setAttribute('aria-label', 'Apagar música');
    button.setAttribute('title', 'Música');
    button.setAttribute('aria-haspopup', 'true');
    button.setAttribute('aria-expanded', 'false');
    button.setAttribute('aria-controls', 'musica-volume-panel-46');
    button.innerHTML = '<span class="musica-wave-44" aria-hidden="true"></span><span class="musica-bars-44" aria-hidden="true"><i></i><i></i><i></i><i></i></span>';
    button.style.setProperty('--musica-bg', cfg.buttonBg || '#ffffff');
    button.style.setProperty('--musica-hover-bg', cfg.buttonHoverBg || '#f3f3f3');
    button.style.setProperty('--musica-icon', cfg.iconColor || '#000000');
    button.style.setProperty('--musica-effect', cfg.effectColor || '#000000');
    button.style.setProperty('--musica-neon', cfg.neonColor || '#66d9ff');

    var mobileQuery = window.matchMedia ? window.matchMedia('(max-width: 782px)') : null;
    var currentLayout = null;
    function applyButtonLayout() {
      var isMobile = mobileQuery ? mobileQuery.matches : window.innerWidth <= 782;
      var layout = isMobile ? (cfg.mobileButton || {}) : (cfg.desktopButton || {});
      currentLayout = {
        width: Math.max(28, Number(layout.width || 40)),
        height: Math.max(28, Number(layout.height || 40)),
        bottom: Math.max(0, Number(layout.bottom == null ? 22 : layout.bottom)),
        side: layout.side === 'left' ? 'left' : 'right',
        offsetX: Math.max(0, Number(layout.offsetX == null ? 22 : layout.offsetX))
      };
      button.style.setProperty('position', 'absolute', 'important');
      button.style.setProperty('width', currentLayout.width + 'px', 'important');
      button.style.setProperty('height', currentLayout.height + 'px', 'important');
      button.style.setProperty('top', 'auto', 'important');
      button.style.setProperty('bottom', currentLayout.bottom + 'px', 'important');
      button.style.setProperty('left', 'auto', 'important');
      button.style.setProperty('right', 'auto', 'important');
      button.style.setProperty(currentLayout.side, currentLayout.offsetX + 'px', 'important');
      if (panelOpen) positionVolumePanel();
    }
    uiRoot.appendChild(button);
    applyButtonLayout();
    if (mobileQuery) {
      if (typeof mobileQuery.addEventListener === 'function') mobileQuery.addEventListener('change', applyButtonLayout);
      else if (typeof mobileQuery.addListener === 'function') mobileQuery.addListener(applyButtonLayout);
    }
    window.addEventListener('orientationchange', applyButtonLayout, { passive: true });

    var volumePanel = document.createElement('div');
    volumePanel.id = 'musica-volume-panel-46';
    volumePanel.className = 'musica-volume-panel-46';
    volumePanel.style.setProperty('--musica-volume-bar', cfg.volumeBarColor || '#111111');
    volumePanel.style.setProperty('--musica-volume-icon', cfg.volumeIconColor || '#111111');
    volumePanel.style.setProperty('--musica-hover-bg', cfg.buttonHoverBg || '#f3f3f3');
    volumePanel.setAttribute('aria-hidden', 'true');
    volumePanel.innerHTML = '<button type="button" class="musica-mute-46" aria-label="Silenciar música" title="Silenciar música"><span class="musica-speaker-on-46" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 9v6h4l5 4V5L8 9H4zm11.5.4v5.2c1-.7 1.5-1.5 1.5-2.6s-.5-1.9-1.5-2.6zm0-3v2.1c1.9.9 3 2.1 3 3.5s-1.1 2.6-3 3.5v2.1c3-1.1 5-3.1 5-5.6s-2-4.5-5-5.6z"/></svg></span><span class="musica-speaker-off-46" aria-hidden="true"><svg viewBox="0 0 24 24" focusable="false"><path d="M4 9v6h4l5 4V5L8 9H4zm12.2 1.3-1.4 1.4 1.3 1.3-1.3 1.3 1.4 1.4 1.3-1.3 1.3 1.3 1.4-1.4-1.3-1.3 1.3-1.3-1.4-1.4-1.3 1.3-1.3-1.3z"/></svg></span></button><div class="musica-volume-track-46"><input class="musica-volume-range-46" type="range" min="0" max="100" step="1" aria-label="Volumen de la música"></div>';
    uiRoot.appendChild(volumePanel);

    var muteButton = volumePanel.querySelector('.musica-mute-46');
    var volumeRange = volumePanel.querySelector('.musica-volume-range-46');
    var bars = Array.prototype.slice.call(button.querySelectorAll('.musica-bars-44 i'));
    var wave = button.querySelector('.musica-wave-44');
    var trackIndex = 0;
    var userBlocked = false;
    var userMuted = false;
    var manualVolume = null;
    var panelOpen = false;
    var pauseWhenInactive = cfg.pauseWhenInactive === true;
    var pausedByInactivity = false;
    var starting = false;
    var fadeFrame = 0;
    var visualFrame = 0;
    var lastAttempt = 0;
    var waveAngle = 0;
    var audioCtx = null;
    var analyser = null;
    var mediaSource = null;
    var freqData = null;
    var analyserReady = false;
    var analyserFailed = false;
    var neonEnabled = cfg.neonEnabled !== false;
    var neonIntensity = Math.max(0, Math.min(100, Number(cfg.neonIntensity == null ? 60 : cfg.neonIntensity))) / 100;
    var neonColor = cfg.neonColor || '#66d9ff';
    var playbackStorageKey = 'musica_playback_state_v51';
    var savedPlaybackState = null;
    var playIntent = false;
    var pageActive = true;
    var restoringState = false;
    var pendingSavedResume = false;
    var restoreSerial = 0;
    var navigationResumeWindowMs = 4000;

    function readPlaybackState() {
      try {
        var raw = window.sessionStorage.getItem(playbackStorageKey);
        if (!raw) return null;
        var data = JSON.parse(raw);
        if (!data || typeof data !== 'object') return null;
        return data;
      } catch (e) { return null; }
    }

    function persistPlaybackState(force, reason, continuity) {
      if (!force && !pageActive) return;
      try {
        var currentTrack = cfg.playlist[trackIndex] || null;
        var data = {
          version: 51,
          trackIndex: trackIndex,
          trackUrl: currentTrack && currentTrack.url ? currentTrack.url : '',
          currentTime: Number.isFinite(audio.currentTime) ? Math.max(0, audio.currentTime) : 0,
          shouldResume: !!playIntent,
          userMuted: !!userMuted,
          manualVolume: manualVolume === null ? null : clamp01(manualVolume),
          savedAt: Date.now(),
          reason: reason || 'heartbeat',
          continuity: continuity === true
        };
        window.sessionStorage.setItem(playbackStorageKey, JSON.stringify(data));
      } catch (e) {}
    }

    function findSavedTrackIndex(state) {
      if (!state) return -1;
      if (state.trackUrl) {
        for (var i = 0; i < cfg.playlist.length; i++) {
          if (cfg.playlist[i] && cfg.playlist[i].url === state.trackUrl) return i;
        }
      }
      var idx = parseInt(state.trackIndex, 10);
      return Number.isFinite(idx) && idx >= 0 && idx < cfg.playlist.length ? idx : -1;
    }

    function positionVolumePanel() {
      if (!volumePanel || !button || !currentLayout) return;
      var panelWidth = volumePanel.offsetWidth || 46;
      var sideOffset = Math.max(8, currentLayout.offsetX + (currentLayout.width / 2) - (panelWidth / 2));
      var bottom = currentLayout.bottom + currentLayout.height + 8;
      volumePanel.style.setProperty('position', 'absolute', 'important');
      volumePanel.style.setProperty('top', 'auto', 'important');
      volumePanel.style.setProperty('bottom', bottom + 'px', 'important');
      volumePanel.style.setProperty('left', 'auto', 'important');
      volumePanel.style.setProperty('right', 'auto', 'important');
      volumePanel.style.setProperty(currentLayout.side, sideOffset + 'px', 'important');
    }

    function syncVolumeUI() {
      if (!volumeRange || !muteButton) return;
      var shown = Math.round(clamp01(manualVolume === null ? percentToVolume(cfg.runVolumePercent) : manualVolume) * 100);
      volumeRange.value = String(shown);
      volumePanel.style.setProperty('--musica-volume-level', shown + '%');
      volumePanel.classList.toggle('is-muted', userMuted || audio.muted || shown === 0);
      muteButton.setAttribute('aria-label', (userMuted || audio.muted) ? 'Activar sonido' : 'Silenciar música');
      muteButton.setAttribute('title', (userMuted || audio.muted) ? 'Activar sonido' : 'Silenciar música');
    }

    function setPanelOpen(open) {
      panelOpen = !!open;
      if (panelOpen) positionVolumePanel();
      volumePanel.classList.toggle('is-open', panelOpen);
      volumePanel.setAttribute('aria-hidden', panelOpen ? 'false' : 'true');
      button.setAttribute('aria-expanded', panelOpen ? 'true' : 'false');
      if (panelOpen) syncVolumeUI();
    }

    function clamp01(v) {
      v = Number(v);
      if (!Number.isFinite(v)) return 0;
      return Math.max(0, Math.min(1, v));
    }

    function percentToVolume(v) {
      v = Number(v);
      if (!Number.isFinite(v)) v = 0;
      return clamp01(v / 100);
    }

    function getStartVolume() { return percentToVolume(cfg.startVolumePercent); }
    function getRunVolume() { return manualVolume === null ? percentToVolume(cfg.runVolumePercent) : clamp01(manualVolume); }
    function applyVolume(value) { audio.volume = clamp01(value); }

    function mimeFromUrl(url) {
      var clean = String(url || '').split('?')[0].toLowerCase();
      if (clean.endsWith('.m4a') || clean.endsWith('.mp4')) return 'audio/mp4';
      if (clean.endsWith('.ogg') || clean.endsWith('.oga')) return 'audio/ogg';
      if (clean.endsWith('.wav')) return 'audio/wav';
      return 'audio/mpeg';
    }

    function safeIndex(n) {
      n = parseInt(n, 10);
      return Number.isFinite(n) && n >= 0 && n < cfg.playlist.length ? n : 0;
    }

    function randomTrack(exclude) {
      if (cfg.playlist.length < 2) return 0;
      var next = exclude;
      while (next === exclude) next = Math.floor(Math.random() * cfg.playlist.length);
      return next;
    }

    function loadTrack(index) {
      trackIndex = safeIndex(index);
      var track = cfg.playlist[trackIndex];
      if (!track || !track.url) return false;
      source.src = track.url;
      source.type = mimeFromUrl(track.url);
      audio.load();
      return true;
    }

    function allTracksSameOrigin() {
      try {
        return cfg.playlist.every(function (track) {
          return new URL(track.url, window.location.href).origin === window.location.origin;
        });
      } catch (e) { return false; }
    }

    function ensureAnalyser() {
      if (analyserFailed) return false;
      if (analyserReady) {
        if (audioCtx && audioCtx.state === 'suspended') audioCtx.resume().catch(function () {});
        return true;
      }
      if (!allTracksSameOrigin()) { analyserFailed = true; return false; }

      var AudioContextClass = window.AudioContext || window.webkitAudioContext;
      if (!AudioContextClass) { analyserFailed = true; return false; }

      try {
        audioCtx = new AudioContextClass();
        mediaSource = audioCtx.createMediaElementSource(audio);
        analyser = audioCtx.createAnalyser();
        analyser.fftSize = 256;
        analyser.smoothingTimeConstant = 0.52;
        mediaSource.connect(analyser);
        analyser.connect(audioCtx.destination);
        freqData = new Uint8Array(analyser.frequencyBinCount);
        analyserReady = true;
        if (audioCtx.state === 'suspended') audioCtx.resume().catch(function () {});
        return true;
      } catch (e) {
        analyserFailed = true;
        return false;
      }
    }

    savedPlaybackState = readPlaybackState();
    if (savedPlaybackState) {
      if (typeof savedPlaybackState.userMuted === 'boolean') userMuted = savedPlaybackState.userMuted;
      if (savedPlaybackState.manualVolume !== null && savedPlaybackState.manualVolume !== undefined && Number.isFinite(Number(savedPlaybackState.manualVolume))) manualVolume = clamp01(Number(savedPlaybackState.manualVolume));
      playIntent = savedPlaybackState.shouldResume === true;
      var restoredIndex = findSavedTrackIndex(savedPlaybackState);
      if (restoredIndex >= 0) trackIndex = restoredIndex;
      else if (cfg.shuffle) trackIndex = randomTrack(-1);
    } else if (cfg.shuffle) {
      trackIndex = randomTrack(-1);
    }
    if (!loadTrack(trackIndex)) return;

    function showButton() { button.classList.add('is-visible'); }

    function updateButton() {
      var playing = !audio.paused && !audio.ended && !userBlocked;
      var audible = playing && !userMuted && !audio.muted && audio.volume > 0;
      button.classList.toggle('is-playing', audible);
      button.classList.toggle('is-off', !audible);
      button.setAttribute('aria-label', 'Control de música');
      syncVolumeUI();
      if (!audible) stopVisualizer(true);
      else startVisualizer();
    }

    function stopFade() {
      if (fadeFrame) cancelAnimationFrame(fadeFrame);
      fadeFrame = 0;
    }

    function fadeIn() {
      stopFade();
      var from = getStartVolume();
      var to = getRunVolume();
      var duration = Math.max(0, Number(cfg.fadeSeconds || 0)) * 1000;
      applyVolume(from);

      if (!duration || from === to) {
        applyVolume(to);
        return;
      }

      var startedAt = performance.now();
      function tick(now) {
        if (audio.paused) return;
        var p = Math.min(1, (now - startedAt) / duration);
        applyVolume(from + ((to - from) * p));
        if (p < 1) fadeFrame = requestAnimationFrame(tick);
        else fadeFrame = 0;
      }
      fadeFrame = requestAnimationFrame(tick);
    }

    function averageBand(data, start, end) {
      var total = 0;
      var count = 0;
      var max = Math.min(data.length, end);
      for (var i = Math.max(0, start); i < max; i++) { total += data[i]; count++; }
      return count ? (total / count) / 255 : 0;
    }

    function setStaticVisual() {
      var heights = [6, 13, 9, 16];
      bars.forEach(function (bar, i) { bar.style.setProperty('height', heights[i] + 'px', 'important'); });
      if (wave) {
        wave.style.setProperty('transform', 'rotate(0deg) scale(1)', 'important');
        wave.style.setProperty('border-radius', '50%', 'important');
        wave.style.setProperty('opacity', '.24', 'important');
        wave.style.setProperty('filter', 'none', 'important');
        wave.style.setProperty('box-shadow', 'none', 'important');
      }
    }

    function renderRealAudio() {
      analyser.getByteFrequencyData(freqData);
      var bass = averageBand(freqData, 1, 4);
      var lowMid = averageBand(freqData, 4, 8);
      var mid = averageBand(freqData, 8, 16);
      var highMid = averageBand(freqData, 16, 30);
      var high = averageBand(freqData, 30, 52);
      var body = (bass + lowMid + mid) / 3;

      var values = [lowMid, bass, mid, highMid];
      bars.forEach(function (bar, i) {
        var energy = Math.pow(values[i], 0.60);
        var h = 3.5 + energy * 14.8;
        bar.style.setProperty('height', h.toFixed(1) + 'px', 'important');
      });

      if (wave) {
        waveAngle = (waveAngle + 0.18 + (body * 0.8)) % 360;
        var beat = Math.pow(bass, 0.62);
        var pulse = 1 + beat * 0.095;
        var sx = pulse * (1 + (lowMid - highMid) * 0.035);
        var sy = pulse * (1 + (mid - bass) * 0.03);
        var a = 47 + Math.round(bass * 8);
        var b = 53 - Math.round(lowMid * 7);
        var c = 49 + Math.round(mid * 7);
        var d = 51 - Math.round(highMid * 6);
        wave.style.setProperty('transform', 'rotate(' + waveAngle.toFixed(2) + 'deg) scale(' + sx.toFixed(3) + ',' + sy.toFixed(3) + ')', 'important');
        wave.style.setProperty('border-radius', a + '% ' + b + '% ' + c + '% ' + d + '% / ' + (50+Math.round(lowMid*7)) + '% ' + (50-Math.round(mid*6)) + '% ' + (50+Math.round(highMid*6)) + '% ' + (50-Math.round(bass*6)) + '%', 'important');
        wave.style.setProperty('opacity', (0.38 + beat * 0.40).toFixed(2), 'important');
        if (neonEnabled && neonIntensity > 0) {
          var power = Math.max(0.06, neonIntensity);
          var glow1 = (1.5 + power * 7 + beat * power * 7).toFixed(1);
          var glow2 = (3 + power * 15 + beat * power * 13).toFixed(1);
          var glow3 = (6 + power * 29 + beat * power * 20).toFixed(1);
          var spread = (power * 1.8 + beat * power * 1.4).toFixed(1);
          wave.style.setProperty('filter', 'drop-shadow(0 0 ' + glow1 + 'px ' + neonColor + ') drop-shadow(0 0 ' + glow2 + 'px ' + neonColor + ')', 'important');
          wave.style.setProperty('box-shadow', '0 0 ' + glow1 + 'px ' + spread + 'px ' + neonColor + ', 0 0 ' + glow2 + 'px ' + neonColor + ', 0 0 ' + glow3 + 'px ' + neonColor, 'important');
        } else {
          wave.style.setProperty('filter', 'none', 'important');
          wave.style.setProperty('box-shadow', 'none', 'important');
        }
      }
    }

    function renderFallback(now) {
      var t = (audio.currentTime || now / 1000);
      var p1 = .5 + .5 * Math.sin(t * 6.8);
      var p2 = .5 + .5 * Math.sin(t * 5.1 + 1.2);
      var p3 = .5 + .5 * Math.sin(t * 8.1 + 2.1);
      var p4 = .5 + .5 * Math.sin(t * 6.0 + 2.8);
      var p5 = .5 + .5 * Math.sin(t * 7.4 + 3.6);
      [p2,p1,p3,p4].forEach(function (v, i) {
        bars[i].style.setProperty('height', (3.5 + v * 14.2).toFixed(1) + 'px', 'important');
      });
      if (wave) {
        waveAngle = (waveAngle + .28) % 360;
        var pulse = 1.015 + p1 * .055;
        wave.style.setProperty('transform', 'rotate(' + waveAngle.toFixed(2) + 'deg) scale(' + pulse.toFixed(3) + ',' + (1.01+p2*.04).toFixed(3) + ')', 'important');
        wave.style.setProperty('border-radius', (47+p2*7).toFixed(0) + '% ' + (53-p3*6).toFixed(0) + '% ' + (49+p4*6).toFixed(0) + '% ' + (51-p5*5).toFixed(0) + '% / ' + (50+p3*6).toFixed(0) + '% ' + (50-p4*5).toFixed(0) + '% ' + (50+p5*5).toFixed(0) + '% ' + (50-p2*5).toFixed(0) + '%', 'important');
        wave.style.setProperty('opacity', (.38 + p1 * .24).toFixed(2), 'important');
        if (neonEnabled && neonIntensity > 0) {
          var power = Math.max(0.06, neonIntensity);
          var glow1 = (1.5 + power * 6 + p1 * power * 6).toFixed(1);
          var glow2 = (3 + power * 13 + p1 * power * 11).toFixed(1);
          var glow3 = (6 + power * 25 + p1 * power * 18).toFixed(1);
          var spread = (power * 1.6 + p1 * power * 1.2).toFixed(1);
          wave.style.setProperty('filter', 'drop-shadow(0 0 ' + glow1 + 'px ' + neonColor + ') drop-shadow(0 0 ' + glow2 + 'px ' + neonColor + ')', 'important');
          wave.style.setProperty('box-shadow', '0 0 ' + glow1 + 'px ' + spread + 'px ' + neonColor + ', 0 0 ' + glow2 + 'px ' + neonColor + ', 0 0 ' + glow3 + 'px ' + neonColor, 'important');
        } else {
          wave.style.setProperty('filter', 'none', 'important');
          wave.style.setProperty('box-shadow', 'none', 'important');
        }
      }
    }

    function visualTick(now) {
      if (audio.paused || audio.ended || userBlocked || userMuted || audio.muted || audio.volume <= 0) { visualFrame = 0; setStaticVisual(); return; }
      if (analyserReady && analyser && freqData) renderRealAudio();
      else renderFallback(now);
      visualFrame = requestAnimationFrame(visualTick);
    }

    function startVisualizer() {
      if (visualFrame) return;
      visualFrame = requestAnimationFrame(visualTick);
    }

    function stopVisualizer(reset) {
      if (visualFrame) cancelAnimationFrame(visualFrame);
      visualFrame = 0;
      if (reset) setStaticVisual();
    }

    setStaticVisual();
    syncVolumeUI();

    function targetTimeFromState(state) {
      var t = Math.max(0, Number(state && state.currentTime || 0));
      if (state && state.shouldResume === true && state.continuity === true) {
        var savedAt = Number(state.savedAt || 0);
        var elapsedMs = savedAt > 0 ? Date.now() - savedAt : 0;
        if (elapsedMs > 0 && elapsedMs <= navigationResumeWindowMs) t += elapsedMs / 1000;
      }
      return t;
    }

    function waitForMetadata(callback) {
      if (audio.readyState >= 1 && Number.isFinite(audio.duration)) { callback(); return; }
      var done = false;
      function finish() {
        if (done) return;
        done = true;
        audio.removeEventListener('loadedmetadata', finish);
        callback();
      }
      audio.addEventListener('loadedmetadata', finish, { once: true });
    }

    function seekThen(callback, wantedTime) {
      var target = Math.max(0, Number(wantedTime || 0));
      if (Number.isFinite(audio.duration) && audio.duration > 0) target = Math.min(target, Math.max(0, audio.duration - 0.08));
      if (Math.abs((audio.currentTime || 0) - target) <= 0.20) { callback(); return; }
      var finished = false;
      function finish() {
        if (finished) return;
        finished = true;
        audio.removeEventListener('seeked', finish);
        callback();
      }
      audio.addEventListener('seeked', finish, { once: true });
      try { audio.currentTime = target; } catch (e) { finish(); return; }
      window.setTimeout(finish, 500);
    }

    function waitForPlayable(callback) {
      if (audio.readyState >= 3) { callback(); return; }
      var done = false;
      function finish() {
        if (done) return;
        done = true;
        audio.removeEventListener('canplay', finish);
        callback();
      }
      audio.addEventListener('canplay', finish, { once: true });
      window.setTimeout(finish, 700);
    }

    function onStarted(resumeWithoutFade) {
      starting = false;
      pendingSavedResume = false;
      playIntent = true;
      showButton();
      if (resumeWithoutFade) {
        stopFade();
        applyVolume(getRunVolume());
      } else {
        fadeIn();
      }
      audio.muted = userMuted;
      updateButton();
      syncVolumeUI();
      startVisualizer();
      document.documentElement.classList.add('musica-44-active');
      persistPlaybackState(false, 'playing', false);
    }

    function playPrepared(fromGesture, resumeWithoutFade) {
      if (userBlocked || starting || (!audio.paused && !audio.ended)) {
        if (fromGesture && !audio.paused) { ensureAnalyser(); startVisualizer(); }
        return;
      }
      if (fromGesture) ensureAnalyser();
      if (audioCtx && audioCtx.state === 'suspended') audioCtx.resume().catch(function () {});
      starting = true;
      audio.muted = userMuted;
      applyVolume(resumeWithoutFade ? getRunVolume() : getStartVolume());
      var promise;
      try { promise = audio.play(); }
      catch (err) { starting = false; pendingSavedResume = !!resumeWithoutFade; return; }
      if (promise && typeof promise.then === 'function') {
        promise.then(function () { onStarted(!!resumeWithoutFade); }).catch(function () {
          starting = false;
          if (resumeWithoutFade) { playIntent = true; pendingSavedResume = true; showButton(); }
        });
      } else {
        onStarted(!!resumeWithoutFade);
      }
    }

    function restoreFromState(state, attemptResume) {
      if (!state) return;
      var serial = ++restoreSerial;
      restoringState = true;
      starting = false;
      pendingSavedResume = false;
      stopFade();

      if (typeof state.userMuted === 'boolean') userMuted = state.userMuted;
      if (state.manualVolume !== null && state.manualVolume !== undefined && Number.isFinite(Number(state.manualVolume))) manualVolume = clamp01(Number(state.manualVolume));
      else manualVolume = null;
      playIntent = state.shouldResume === true;

      var wantedIndex = findSavedTrackIndex(state);
      if (wantedIndex < 0) wantedIndex = trackIndex;
      if (wantedIndex !== trackIndex || !source.src) loadTrack(wantedIndex);

      waitForMetadata(function () {
        if (serial !== restoreSerial) return;
        var wantedTime = targetTimeFromState(state);
        seekThen(function () {
          if (serial !== restoreSerial) return;
          audio.muted = userMuted;
          applyVolume(getRunVolume());
          syncVolumeUI();
          if (playIntent) showButton();
          waitForPlayable(function () {
            if (serial !== restoreSerial) return;
            restoringState = false;
            if (playIntent && attemptResume) {
              pendingSavedResume = true;
              playPrepared(false, true);
            } else {
              updateButton();
            }
          });
        }, wantedTime);
      });
    }

    function restoreLatest(attemptResume) {
      var latest = readPlaybackState();
      if (!latest) return false;
      savedPlaybackState = latest;
      restoreFromState(latest, attemptResume);
      return true;
    }

    if (savedPlaybackState) restoreFromState(savedPlaybackState, true);

    function startFromGesture(event) {
      if (event && (event.target === button || button.contains(event.target) || event.target === volumePanel || volumePanel.contains(event.target))) return;
      ensureAnalyser();
      if (!audio.paused && !audio.ended) { startVisualizer(); return; }
      if (pendingSavedResume || playIntent) { playPrepared(true, true); return; }
      playIntent = true;
      playPrepared(true, false);
    }

    function pauseForInactivity() {
      if (!pauseWhenInactive || !pageActive) return;
      if (!audio.paused && !audio.ended && !userBlocked) {
        pausedByInactivity = true;
        stopFade();
        playIntent = true;
        persistPlaybackState(true, 'inactive', false);
        try { audio.pause(); } catch (e) {}
        document.documentElement.classList.remove('musica-44-active');
        updateButton();
      }
    }

    function resumeAfterInactivity() {
      if (!pauseWhenInactive || !pausedByInactivity || userBlocked || !pageActive) return;
      pausedByInactivity = false;
      ensureAnalyser();
      pendingSavedResume = true;
      playPrepared(false, true);
    }

    function freezeForNavigation(reason) {
      if (!pageActive) return;
      persistPlaybackState(true, reason || 'pagehide', !!playIntent);
      pageActive = false;
      stopFade();
      starting = false;
      pendingSavedResume = !!playIntent;
      try { if (!audio.paused) audio.pause(); } catch (e) {}
    }

    window.addEventListener('pagehide', function () { freezeForNavigation('pagehide'); });
    window.addEventListener('beforeunload', function () {
      if (pageActive) persistPlaybackState(true, 'beforeunload', !!playIntent);
    });
    window.addEventListener('pageshow', function (event) {
      pageActive = true;
      starting = false;
      restoringState = false;
      pausedByInactivity = false;
      if (audioCtx && audioCtx.state === 'suspended') audioCtx.resume().catch(function () {});
      if (event.persisted) restoreLatest(true);
      else if (pauseWhenInactive && !document.hidden) resumeAfterInactivity();
    });

    if (pauseWhenInactive) {
      document.addEventListener('visibilitychange', function () {
        if (!pageActive) return;
        if (document.hidden) pauseForInactivity();
        else if (document.hasFocus()) resumeAfterInactivity();
      });
      window.addEventListener('blur', pauseForInactivity);
      window.addEventListener('focus', function () { if (!document.hidden) resumeAfterInactivity(); });
    }

    function startFromScroll() {
      if (userBlocked || restoringState || starting || (!audio.paused && !audio.ended)) return;
      var now = Date.now();
      if (now - lastAttempt < 650) return;
      lastAttempt = now;
      if (pendingSavedResume || playIntent) playPrepared(false, true);
      else { playIntent = true; playPrepared(false, false); }
    }

    window.addEventListener('scroll', startFromScroll, { passive: true });
    window.addEventListener('wheel', startFromScroll, { passive: true });
    window.addEventListener('touchmove', startFromScroll, { passive: true });

    document.addEventListener('pointerdown', startFromGesture, true);
    document.addEventListener('touchstart', startFromGesture, true);
    document.addEventListener('mousedown', startFromGesture, true);
    document.addEventListener('keydown', function (event) {
      if (event.key === 'Enter' || event.key === ' ' || event.key === 'ArrowDown' || event.key === 'PageDown') startFromGesture(event);
    }, true);

    button.addEventListener('pointerdown', function (event) { event.stopPropagation(); }, true);
    button.addEventListener('touchstart', function (event) { event.stopPropagation(); }, true);
    button.addEventListener('mousedown', function (event) { event.stopPropagation(); }, true);
    button.addEventListener('pointerleave', function () { button.classList.remove('musica-no-hover'); });
    button.addEventListener('mouseenter', function () { if (!button.matches(':active')) button.classList.remove('musica-no-hover'); });

    button.addEventListener('click', function (event) {
      event.preventDefault();
      event.stopPropagation();
      button.classList.add('musica-no-hover');
      try { button.blur(); } catch (e) {}
      setPanelOpen(!panelOpen);
    });

    ['pointerdown','touchstart','mousedown','click'].forEach(function (type) {
      volumePanel.addEventListener(type, function (event) { event.stopPropagation(); }, false);
    });

    muteButton.addEventListener('click', function (event) {
      event.preventDefault();
      event.stopPropagation();
      userMuted = !userMuted;
      audio.muted = userMuted;
      if (!userMuted && Number(volumeRange.value) <= 0) {
        manualVolume = Math.max(0.01, percentToVolume(cfg.runVolumePercent));
        applyVolume(manualVolume);
      }
      updateButton();
      syncVolumeUI();
      persistPlaybackState(false, 'manual', false);
      try { muteButton.blur(); } catch (e) {}
    });

    volumeRange.addEventListener('input', function (event) {
      event.stopPropagation();
      stopFade();
      var percent = Math.max(0, Math.min(100, Number(this.value || 0)));
      manualVolume = percent / 100;
      applyVolume(manualVolume);
      userMuted = percent <= 0;
      audio.muted = userMuted;
      updateButton();
      syncVolumeUI();
      persistPlaybackState(false, 'manual', false);
    });

    document.addEventListener('pointerdown', function (event) {
      if (!panelOpen) return;
      if (event.target === button || button.contains(event.target) || event.target === volumePanel || volumePanel.contains(event.target)) return;
      setPanelOpen(false);
    }, true);


    var lastPersistAt = 0;
    audio.addEventListener('playing', function () {
      playIntent = true;
      showButton();
      updateButton();
      startVisualizer();
      persistPlaybackState(false, 'playing', false);
    });
    audio.addEventListener('pause', function () {
      updateButton();
      stopVisualizer(true);
      // Nunca guardamos una pausa técnica: navegación, BFCache o visibilidad no deben cambiar la intención de reproducción.
    });
    audio.addEventListener('timeupdate', function () {
      var now = Date.now();
      if (pageActive && now - lastPersistAt >= 1000) { lastPersistAt = now; persistPlaybackState(false, 'heartbeat', false); }
    });

    audio.addEventListener('error', function () {
      starting = false;
      stopVisualizer(true);
      if (cfg.playlist.length < 2) return;
      var next = cfg.shuffle ? randomTrack(trackIndex) : trackIndex + 1;
      if (next >= cfg.playlist.length) next = 0;
      if (loadTrack(next) && !userBlocked) { playIntent = true; playPrepared(false, true); }
    });

    audio.addEventListener('ended', function () {
      stopFade();
      stopVisualizer(true);
      if (userBlocked) return;

      if (cfg.playlist.length === 1) {
        if (cfg.repeat) {
          audio.currentTime = 0;
          playIntent = true;
          playPrepared(false, true);
        } else {
          playIntent = false;
          persistPlaybackState(false, 'ended', false);
        }
        return;
      }

      var next = cfg.shuffle ? randomTrack(trackIndex) : trackIndex + 1;
      if (next >= cfg.playlist.length) {
        if (!cfg.repeat) {
          playIntent = false;
          persistPlaybackState(false, 'ended', false);
          return;
        }
        next = 0;
      }
      if (loadTrack(next)) {
        playIntent = true;
        playPrepared(false, true);
      }
    });
  });
})();
</script>
<!-- /musica-51 -->
