/* 🌍 Space Journey — The Sensory Globe CSS Golden Master
   Estándar Solarpunk, PSM (Materialización Fotónica de Silueta) & Jerarquía Ámbar/Dorado
   Regla 6 (Standalone UX/UI), Regla 8 (Zero Friction) & Regla 11 (PSM) */

:root {
  --bg-space: #02070a;
  --bg-deep: #051016;
  --theme-accent: #10B981;
  --theme-accent-dark: #059669;
  --theme-btn-gradient: linear-gradient(135deg, #10B981 0%, #059669 100%);
  --theme-glow: rgba(16, 185, 129, 0.4);
  --solar-gold: #E8C57D;
  --solar-gold-glow: rgba(232, 197, 125, 0.45);
  --sj-dorado-piel: #E8C57D;
  --sj-dorado-subtle: rgba(232, 197, 125, 0.18);
  --emerald-zenith: #10B981;
  --emerald-glow: rgba(16, 185, 129, 0.35);
  --text-primary: #F8FAFC;
  --text-secondary: #94A3B8;
  --text-tertiary: #64748B;
  --glass-bg: rgba(5, 16, 22, 0.86);
  --glass-border: rgba(232, 197, 125, 0.22);
  --cosmos-gradient: radial-gradient(ellipse at 50% 45%, rgba(6, 36, 30, 0.75) 0%, rgba(3, 18, 24, 0.92) 48%, #02070a 100%);
  --cosmos-stars-opacity: 0.52;
  --cosmos-orb-color: rgba(16, 185, 129, 0.14);
  --font-sans: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  /* --font-display se USABA en .gct-name sin estar definida, así que esa regla
     caía siempre a su respaldo ('Space Grotesk') y el nombre de las tarjetas se
     pintaba con una fuente que no es de la marca. Se define aquí, con Outfit,
     que es lo que le toca por ser titular. */
  --font-display: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  /* Lora: texto general (lectura). Decidido por Daniel el 14-oct-2026:
     titulares y CTAs → Outfit · textos generales → Lora. */
  --font-serif: 'Lora', Georgia, 'Times New Roman', serif;
  /* --font-mono NO es para texto de interfaz: solo para código y registros.
     Antes decía 'Space Grotesk', que no es monoespaciada ni es de la marca.
     Los seis sitios que la usaban eran etiquetas y cifras (badges, contadores,
     décadas, porcentajes), así que pasan a Outfit. Esta pila queda para cuando
     de verdad haya que mostrar código. */
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
  /* --family-color y --family-glow se USABAN en .drawer-family-btn.active sin
     definirse en ningún sitio, y el JS tampoco las define (usa activeFamilyColor
     como variable de Three.js, no como propiedad CSS). Su respaldo era
     var(--solar-gold) = #F59E0B, así que el botón de familia activo pintaba ORO
     mientras el tema por defecto (Solarpunk Green) es verde. Se atan al tema
     activo: al ser var(), cada [data-theme] los resuelve solo. */
  --family-color: var(--theme-accent);
  --family-glow: var(--theme-glow);
  --transition-smooth: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

[data-theme="dark"] {
  --theme-accent: #10B981;
  --theme-accent-dark: #059669;
  --theme-btn-gradient: linear-gradient(135deg, #10B981 0%, #059669 100%);
  --theme-glow: rgba(16, 185, 129, 0.4);
  --bg-space: #02070a;
  --bg-deep: #051016;
  --cosmos-gradient: radial-gradient(ellipse at 50% 45%, rgba(6, 36, 30, 0.75) 0%, rgba(3, 18, 24, 0.92) 48%, #02070a 100%);
  --cosmos-stars-opacity: 0.52;
  --cosmos-orb-color: rgba(16, 185, 129, 0.14);
  --luma-light-1: rgba(16, 185, 129, 0.22);
  --luma-light-2: rgba(245, 158, 11, 0.16);
  --luma-light-3: rgba(13, 148, 136, 0.15);
}

[data-theme="light"] {
  --theme-accent: #D4AF37;
  --theme-accent-dark: #B8860B;
  --theme-btn-gradient: linear-gradient(135deg, #D4AF37 0%, #B8860B 100%);
  --theme-glow: rgba(212, 175, 55, 0.4);
  --bg-space: #070604;
  --bg-deep: #0f0d08;
  --cosmos-gradient: radial-gradient(ellipse at 50% 45%, rgba(44, 32, 12, 0.72) 0%, rgba(22, 16, 7, 0.9) 48%, #080604 100%);
  --cosmos-stars-opacity: 0.48;
  --cosmos-orb-color: rgba(245, 158, 11, 0.14);
  --luma-light-1: rgba(245, 158, 11, 0.25);
  --luma-light-2: rgba(217, 119, 6, 0.18);
  --luma-light-3: rgba(232, 197, 125, 0.18);
}

[data-theme="blue"] {
  --theme-accent: #3B82F6;
  --theme-accent-dark: #1D4ED8;
  --theme-btn-gradient: linear-gradient(135deg, #3B82F6 0%, #1D4ED8 100%);
  --theme-glow: rgba(59, 130, 246, 0.4);
  --bg-space: #030611;
  --bg-deep: #080e22;
  --cosmos-gradient: radial-gradient(ellipse at 50% 45%, rgba(10, 30, 70, 0.75) 0%, rgba(4, 15, 40, 0.92) 48%, #030611 100%);
  --cosmos-stars-opacity: 0.55;
  --cosmos-orb-color: rgba(59, 130, 246, 0.15);
  --luma-light-1: rgba(6, 182, 212, 0.22);
  --luma-light-2: rgba(59, 130, 246, 0.2);
  --luma-light-3: rgba(99, 102, 241, 0.16);
}

[data-theme="wine"] {
  --theme-accent: #9F1239;
  --theme-accent-dark: #4C0519;
  --theme-btn-gradient: linear-gradient(135deg, #9F1239 0%, #4C0519 100%);
  --theme-glow: rgba(159, 18, 57, 0.45);
  --bg-space: #080204;
  --bg-deep: #120308;
  --cosmos-gradient: radial-gradient(ellipse at 50% 45%, rgba(60, 5, 20, 0.75) 0%, rgba(25, 3, 10, 0.95) 48%, #080204 100%);
  --cosmos-stars-opacity: 0.52;
  --cosmos-orb-color: rgba(159, 18, 57, 0.18);
  --luma-light-1: rgba(159, 18, 57, 0.22);
  --luma-light-2: rgba(136, 19, 55, 0.18);
  --luma-light-3: rgba(76, 5, 25, 0.15);
}

* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  -webkit-font-smoothing: antialiased;
}

html,
body {
  width: 100%;
  height: 100%;
  height: 100dvh;
  position: fixed;
  inset: 0;
  overflow: hidden;
  background-color: var(--bg-space);
  font-family: var(--font-sans);
  color: var(--text-primary);
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}

/* Canvas WebGL */
#globe-canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  cursor: grab;
  touch-action: none;
  /* Crucial para móviles: evita que el scroll nativo interfiera con Three.js */
}

#globe-canvas:active {
  cursor: grabbing;
}

/* ==========================================================================
   FONDO CÓSMICO MULTICAPA & UNIVERSO VIVO (Reacciona a los 4 Temas)
   ========================================================================== */
.cosmic-backdrop {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 0;
  background: var(--cosmos-gradient);
  transition: background 0.8s cubic-bezier(0.16, 1, 0.3, 1);
  overflow: hidden;
}

.cosmic-stars {
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image:
    radial-gradient(1.5px 1.5px at 15% 18%, rgba(255, 255, 255, 0.85), transparent),
    radial-gradient(1px 1px at 32% 78%, rgba(232, 197, 125, 0.7), transparent),
    radial-gradient(1.8px 1.8px at 78% 22%, rgba(255, 255, 255, 0.8), transparent),
    radial-gradient(1px 1px at 88% 68%, rgba(16, 185, 129, 0.65), transparent),
    radial-gradient(1.5px 1.5px at 48% 12%, rgba(255, 255, 255, 0.75), transparent),
    radial-gradient(1.2px 1.2px at 22% 62%, rgba(232, 197, 125, 0.6), transparent),
    radial-gradient(1.6px 1.6px at 92% 38%, rgba(255, 255, 255, 0.7), transparent),
    radial-gradient(1px 1px at 62% 88%, rgba(255, 255, 255, 0.55), transparent);
  background-size: 500px 500px;
  opacity: var(--cosmos-stars-opacity, 0.5);
  animation: cosmicTwinkle 14s ease-in-out infinite alternate;
  transition: opacity 0.8s ease;
}

/* Malla Lumínica Ambiental Estilo Luma (Luces Orgánicas Desenfoque 130px) */
.luma-ambient-mesh {
  position: absolute;
  inset: -10%;
  width: 120%;
  height: 120%;
  pointer-events: none;
  overflow: hidden;
  z-index: 1;
}

.luma-light {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  mix-blend-mode: screen;
  transition: background 1s cubic-bezier(0.16, 1, 0.3, 1);
}

.luma-light-1 {
  top: 15%;
  left: 18%;
  width: 700px;
  height: 700px;
  background: radial-gradient(circle, var(--luma-light-1, rgba(16, 185, 129, 0.22)) 0%, transparent 70%);
  filter: blur(130px);
  animation: lumaFloat1 32s ease-in-out infinite alternate;
}

.luma-light-2 {
  bottom: 12%;
  right: 15%;
  width: 800px;
  height: 800px;
  background: radial-gradient(circle, var(--luma-light-2, rgba(245, 158, 11, 0.16)) 0%, transparent 70%);
  filter: blur(140px);
  animation: lumaFloat2 38s ease-in-out infinite alternate;
}

.luma-light-3 {
  top: 48%;
  left: 48%;
  width: 580px;
  height: 580px;
  background: radial-gradient(circle, var(--luma-light-3, rgba(13, 148, 136, 0.15)) 0%, transparent 68%);
  filter: blur(120px);
  animation: lumaFloat3 26s ease-in-out infinite alternate;
}

@keyframes cosmicTwinkle {
  0% {
    transform: scale(1) translateY(0);
    opacity: 0.35;
  }

  50% {
    transform: scale(1.02) translateY(-4px);
    opacity: 0.65;
  }

  100% {
    transform: scale(1) translateY(0);
    opacity: 0.35;
  }
}

@keyframes lumaFloat1 {
  0% {
    transform: translate(0, 0) scale(0.95);
  }

  50% {
    transform: translate(60px, -40px) scale(1.08);
  }

  100% {
    transform: translate(-30px, 30px) scale(1.0);
  }
}

@keyframes lumaFloat2 {
  0% {
    transform: translate(0, 0) scale(1.05);
  }

  50% {
    transform: translate(-70px, 50px) scale(0.92);
  }

  100% {
    transform: translate(40px, -30px) scale(1.08);
  }
}

@keyframes lumaFloat3 {
  0% {
    transform: translate(-50%, -50%) scale(0.9);
    opacity: 0.6;
  }

  50% {
    transform: translate(-45%, -55%) scale(1.12);
    opacity: 0.95;
  }

  100% {
    transform: translate(-55%, -48%) scale(0.98);
    opacity: 0.7;
  }
}

/* ==========================================================================
   TOOLTIP SENSORIAL HOLOGRÁFICO DE PAÍS / TERRITORIO (Futurismo Solarpunk)
   ========================================================================== */
.globe-country-tooltip {
  position: fixed;
  pointer-events: none;
  z-index: 9000;
  transform: translate(-50%, -125%);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.25s cubic-bezier(0.16, 1, 0.3, 1), transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  filter: drop-shadow(0 16px 36px rgba(0, 0, 0, 0.9));
}

.globe-country-tooltip.visible {
  opacity: 1;
  visibility: visible;
  transform: translate(-50%, -138%);
}

.gct-inner {
  display: flex;
  align-items: center;
  gap: 12px;
  background: rgba(3, 10, 18, 0.9);
  backdrop-filter: blur(28px);
  -webkit-backdrop-filter: blur(28px);
  border: 1px solid rgba(232, 197, 125, 0.38);
  border-radius: 18px;
  padding: 10px 16px;
  box-shadow: 0 0 28px rgba(16, 185, 129, 0.25), inset 0 0 16px rgba(232, 197, 125, 0.08);
}

.gct-flag {
  font-size: 24px;
  border-radius: 4px;
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.6);
  display: inline-block;
  flex-shrink: 0;
}

.gct-info {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.gct-header-row {
  display: flex;
  align-items: center;
}

.gct-name {
  font-family: var(--font-display, 'Outfit', sans-serif);
  font-size: 14.5px;
  font-weight: 700;
  color: #FFFFFF;
  line-height: 1.2;
  letter-spacing: -0.01em;
}

.gct-desc {
  font-size: 11px;
  color: var(--sj-dorado-piel);
  font-weight: 500;
  letter-spacing: 0.01em;
  line-height: 1.35;
}

.gct-tag-row {
  display: flex;
  align-items: center;
  margin-top: 3px;
}

.gct-tag {
  font-size: 8.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 2px 7px;
  border-radius: 6px;
  background: rgba(16, 185, 129, 0.18);
  border: 1px solid rgba(16, 185, 129, 0.35);
  color: #10B981;
  display: inline-block;
  white-space: nowrap;
}

.gct-chevron {
  display: none !important;
}

/* ==========================================================================
   CABECERA PRINCIPAL SOBERANA (Puntos 1, 2, 4: Branding, Búsqueda, Filtros e Idioma)
   ========================================================================== */
.globe-header {
  position: absolute;
  top: 16px;
  left: 20px;
  right: 20px;
  z-index: 25;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  pointer-events: none;
}

/* En Desktop, los contenedores de nivel se comportan como transparentes para 1 sola fila fluida */
.header-level-top {
  display: contents;
}

.header-level-search {
  display: contents;
}

.header-col-brand,
.header-col-search,
.header-col-lang {
  pointer-events: auto;
  display: flex;
  align-items: center;
}

/* Columna 1: Logo Libre y Clickeable (Punto 1 - Mayor tamaño y máxima legibilidad) */
.header-col-brand {
  order: 1;
  flex-shrink: 0;
}

.brand-logo-link {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 8px;
  transition: var(--transition-smooth);
}

.brand-logo-img {
  height: 26px !important;
  width: auto;
  max-width: 135px !important;
  object-fit: contain;
  filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.75));
  transition: filter 0.3s ease, transform 0.3s ease;
}

.brand-logo-link:hover .brand-logo-img {
  filter: drop-shadow(0 0 16px rgba(245, 158, 11, 0.55));
  transform: scale(1.03);
}

/* Columna 2: Cápsula Expansiva de Búsqueda y Filtros Internos (Punto 2) */
.header-col-search {
  order: 2;
  flex: 1;
  max-width: 960px;
  justify-content: center;
}

.search-console-capsule {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  background: rgba(8, 16, 24, 0.88);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(232, 197, 125, 0.25);
  border-radius: 40px;
  padding: 5px 12px;
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.6), 0 0 16px rgba(232, 197, 125, 0.08);
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

.search-console-capsule:focus-within {
  border-color: rgba(232, 197, 125, 0.45);
  box-shadow: 0 12px 38px rgba(0, 0, 0, 0.75), 0 0 22px rgba(232, 197, 125, 0.16);
}

.search-input-zone {
  position: relative;
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 140px;
}

.search-icon {
  font-size: 13px;
  color: var(--sj-dorado-piel);
  margin-right: 8px;
  flex-shrink: 0;
}

.search-input {
  width: 100%;
  background: transparent;
  border: none;
  outline: none;
  color: #F8FAFC;
  font-family: var(--font-sans);
  font-size: 13px;
  padding: 6px 0;
}

.search-input::placeholder {
  color: #64748B;
}

.capsule-divider {
  width: 1px;
  height: 22px;
  background: rgba(255, 255, 255, 0.12);
  flex-shrink: 0;
  margin: 0 4px;
}

/* Filtros de Tipo: Music, Free Radio, Podcast, Walks (Punto 2) */
.type-filter-cluster {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
}

.type-pill {
  background: transparent;
  border: 1px solid transparent;
  color: #94A3B8;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 5px 10px;
  border-radius: 20px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 5px;
  white-space: nowrap;
  transition: all 0.2s ease;
}

.type-pill:hover {
  color: #F8FAFC;
  background: rgba(255, 255, 255, 0.06);
}

.type-pill.active {
  background: rgba(245, 158, 11, 0.16);
  border-color: rgba(245, 158, 11, 0.4);
  color: #FDE68A;
  font-weight: 700;
  box-shadow: 0 0 10px rgba(245, 158, 11, 0.25);
}

/* Filtros de Fuente: Libre vs YouTube (Punto 2) */
.source-filter-cluster {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  transition: opacity 0.25s ease;
}

.source-cluster-label {
  font-size: 10px;
  color: #64748B;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-right: 2px;
  white-space: nowrap;
}

.source-pill {
  background: transparent;
  border: 1px solid transparent;
  color: #94A3B8;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 4px 8px;
  border-radius: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
  transition: all 0.2s ease;
}

.source-pill:hover {
  color: #F8FAFC;
  background: rgba(255, 255, 255, 0.06);
}

.source-pill.active {
  background: rgba(59, 130, 246, 0.18);
  border-color: rgba(96, 165, 250, 0.4);
  color: #93C5FD;
  font-weight: 700;
  box-shadow: 0 0 10px rgba(59, 130, 246, 0.25);
}

#sourcePillYoutube.active {
  background: rgba(239, 68, 68, 0.18);
  border-color: rgba(239, 68, 68, 0.4);
  color: #FCA5A5;
  box-shadow: 0 0 10px rgba(239, 68, 68, 0.25);
}

/* Submenú de Canales de Radio en Cabecera */
.header-radio-submenu {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  transition: opacity 0.25s ease;
}

.header-radio-vibe-pill {
  background: transparent;
  border: 1px solid transparent;
  color: #94A3B8;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 4px 8px;
  border-radius: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
  transition: all 0.2s ease;
}

.header-radio-vibe-pill:hover {
  color: #F8FAFC;
  background: rgba(255, 255, 255, 0.06);
}

.header-radio-vibe-pill.active {
  background: rgba(245, 158, 11, 0.18);
  border-color: rgba(245, 158, 11, 0.5);
  color: #FDE68A;
  font-weight: 700;
  box-shadow: 0 0 10px rgba(245, 158, 11, 0.25);
}

.sync-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #10B981;
  box-shadow: 0 0 6px #10B981;
  margin-left: 2px;
}

/* Columna 3: Idioma (Punto 4) */
.header-col-lang {
  order: 3;
  flex-shrink: 0;
  justify-content: flex-end;
}

/* Dropdown de Filtros en Barra de Búsqueda Móvil (Nivel 2 Header Mobile) */
.mobile-filter-dropdown-wrap {
  display: none;
}

.mobile-filter-trigger {
  display: flex;
  align-items: center;
  gap: 5px;
  background: rgba(245, 158, 11, 0.14);
  border: 1px solid rgba(245, 158, 11, 0.4);
  border-radius: 18px;
  padding: 5px 10px;
  color: #FDE68A;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  white-space: nowrap;
  pointer-events: auto !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transition: all 0.2s ease;
}

.mobile-filter-trigger:hover,
.mobile-filter-dropdown-wrap.open .mobile-filter-trigger {
  background: rgba(245, 158, 11, 0.25);
  border-color: var(--solar-gold, #F59E0B);
  box-shadow: 0 0 10px rgba(245, 158, 11, 0.35);
}

.mobile-filter-trigger .mft-icon {
  font-size: 11px;
}

.mobile-filter-trigger .mft-arrow {
  font-size: 9px;
  transition: transform 0.2s ease;
}

.mobile-filter-dropdown-wrap.open .mobile-filter-trigger .mft-arrow {
  transform: rotate(180deg);
}

.mobile-filter-dropdown-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  width: 280px;
  max-width: calc(100vw - 32px);
  background: rgba(5, 14, 22, 0.98);
  backdrop-filter: blur(28px);
  -webkit-backdrop-filter: blur(28px);
  border: 1px solid rgba(232, 197, 125, 0.35);
  border-radius: 16px;
  padding: 12px;
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.85), 0 0 16px rgba(245, 158, 11, 0.15);
  display: none;
  flex-direction: column;
  gap: 10px;
  z-index: 9999;
  pointer-events: auto !important;
  touch-action: manipulation;
}

.mobile-filter-dropdown-menu.open,
.mobile-filter-dropdown-wrap.open .mobile-filter-dropdown-menu {
  display: flex !important;
}

.mfd-section-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--sj-dorado-piel, #E8C57D);
}

.mfd-type-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.mfd-type-pill {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: #94A3B8;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 8px 10px;
  border-radius: 10px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
  transition: all 0.2s ease;
  pointer-events: auto !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.mfd-type-pill:hover {
  background: rgba(255, 255, 255, 0.1);
  color: #FFFFFF;
}

.mfd-type-pill.active {
  background: rgba(245, 158, 11, 0.2);
  border-color: rgba(245, 158, 11, 0.5);
  color: #FDE68A;
  font-weight: 700;
  box-shadow: 0 0 10px rgba(245, 158, 11, 0.25);
}

.mfd-divider {
  height: 1px;
  background: rgba(255, 255, 255, 0.1);
}

.mfd-source-row {
  display: flex;
  gap: 8px;
}

.mfd-source-pill {
  flex: 1;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: #94A3B8;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 8px 10px;
  border-radius: 10px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: all 0.2s ease;
  pointer-events: auto !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.mfd-source-pill:hover {
  background: rgba(255, 255, 255, 0.1);
  color: #FFFFFF;
}

.mfd-source-pill.active {
  background: rgba(59, 130, 246, 0.2);
  border-color: rgba(96, 165, 250, 0.5);
  color: #93C5FD;
  font-weight: 700;
}

#mobileSourceYoutube.active {
  background: rgba(239, 68, 68, 0.2);
  border-color: rgba(239, 68, 68, 0.5);
  color: #FCA5A5;
}

.lang-trigger-btn {
  background: rgba(8, 16, 24, 0.88);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid rgba(232, 197, 125, 0.25);
  border-radius: 24px;
  padding: 7px 14px;
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  color: #F8FAFC;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
  white-space: nowrap;
  transition: var(--transition-smooth);
}

.lang-trigger-btn:hover {
  border-color: var(--sj-dorado-piel);
  color: var(--sj-dorado-piel);
}

/* Dropdown de Autocompletado AJAX */
.search-autocomplete-dropdown {
  position: absolute;
  top: calc(100% + 12px);
  left: 0;
  width: 380px;
  max-height: 420px;
  overflow-y: auto;
  background: rgba(4, 13, 18, 0.96);
  backdrop-filter: blur(28px);
  -webkit-backdrop-filter: blur(28px);
  border: 1px solid var(--glass-border);
  border-radius: 16px;
  box-shadow: 0 20px 45px rgba(0, 0, 0, 0.7), 0 0 20px rgba(245, 158, 11, 0.1);
  padding: 8px 0;
  z-index: 100;
  scrollbar-width: thin;
  scrollbar-color: rgba(232, 197, 125, 0.3) transparent;
}

.search-autocomplete-dropdown::-webkit-scrollbar {
  width: 5px;
}

.search-autocomplete-dropdown::-webkit-scrollbar-thumb {
  background: rgba(232, 197, 125, 0.3);
  border-radius: 4px;
}

.search-cat-title {
  padding: 8px 14px 4px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--sj-dorado-piel);
  opacity: 0.9;
  display: flex;
  align-items: center;
  gap: 6px;
}

.search-result-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 14px;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
  border-left: 3px solid transparent;
}

.search-result-item:hover,
.search-result-item.selected {
  background: rgba(245, 158, 11, 0.14);
  border-left-color: var(--solar-gold);
}

.search-result-flag {
  font-size: 18px;
  flex-shrink: 0;
}

.search-result-text {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.search-result-title {
  font-size: 13px;
  font-weight: 600;
  color: #FFFFFF;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-title mark {
  background: transparent;
  color: var(--solar-gold);
  font-weight: 700;
}

.search-result-sub {
  font-size: 11px;
  color: var(--text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.search-result-badge {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 6px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--sj-dorado-piel);
  flex-shrink: 0;
}

.search-no-results {
  padding: 16px;
  text-align: center;
  font-size: 12px;
  color: var(--text-secondary);
}

/* Grupo Selector de Fuente (Radio Libre vs YouTube Oficial) */
.source-toggle-group {
  display: flex;
  align-items: center;
  gap: 4px;
  background: var(--glass-bg);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid var(--glass-border);
  padding: 4px;
  border-radius: 30px;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);
}

.source-toggle-btn {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 5px 10px;
  border-radius: 20px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 4px;
  transition: var(--transition-smooth);
}

.source-toggle-btn:hover {
  color: var(--text-primary);
  background: rgba(255, 255, 255, 0.06);
}

.source-toggle-btn.active {
  background: linear-gradient(135deg, #F59E0B, #D97706);
  color: #03080C;
  font-weight: 700;
  box-shadow: 0 2px 10px rgba(245, 158, 11, 0.35);
}

/* Botón Conectar YouTube */
.btn-connect-yt {
  background: rgba(239, 68, 68, 0.15);
  border: 1px solid rgba(239, 68, 68, 0.35);
  color: #FCA5A5;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  padding: 8px 14px;
  border-radius: 30px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
  transition: var(--transition-smooth);
}

.btn-connect-yt:hover {
  background: rgba(239, 68, 68, 0.25);
  border-color: #EF4444;
  color: #FFFFFF;
}

/* Selector de Idioma (ES / EN / PT) */
.lang-dropdown-wrap {
  position: relative;
}

.lang-trigger-btn {
  background: var(--glass-bg);
  backdrop-filter: blur(20px);
  border: 1px solid var(--glass-border);
  color: var(--text-primary);
  padding: 8px 14px;
  border-radius: 30px;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  transition: var(--transition-smooth);
}

.lang-trigger-btn:hover {
  border-color: var(--sj-dorado-piel);
}

.lang-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  background: var(--glass-bg);
  backdrop-filter: blur(24px);
  border: 1px solid var(--glass-border);
  border-radius: 14px;
  padding: 6px;
  display: none;
  flex-direction: column;
  gap: 4px;
  min-width: 130px;
  box-shadow: 0 16px 36px rgba(0, 0, 0, 0.6);
  z-index: 50;
}

.lang-dropdown-wrap.open .lang-menu {
  display: flex;
}

.lang-item {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  padding: 8px 12px;
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  text-align: left;
  transition: var(--transition-smooth);
}

.lang-item:hover,
.lang-item.active {
  color: var(--text-primary);
  background: rgba(232, 197, 125, 0.12);
}

/* ==========================================================================
/* ==========================================================================
   CONSOLA PRINCIPAL DE GÉNEROS Y SUBGÉNEROS (Protagonista Visual)
   ========================================================================== */
/* Banderas Soberanas con Proporciones Rectangulares Reales */
.fi {
  border-radius: 2px;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
  display: inline-block;
  vertical-align: middle;
}

/* ==========================================================================
   ZONA INFERIOR: REPRODUCTOR & FILTROS (Desktop: 1 Fila | Mobile: 2 Niveles)
   ========================================================================== */
.bottom-console-deck {
  position: fixed;
  bottom: 24px;
  left: 24px;
  right: 24px;
  width: calc(100% - 48px);
  max-width: none;
  transform: none;
  z-index: 100010 !important;
  display: flex;
  flex-direction: row;
  /* 1 FILA EN DESKTOP/LAPTOP */
  align-items: center;
  justify-content: space-between;
  /* Reproductor a la izquierda, Filtros a la derecha (Punto 7) */
  gap: 16px;
  pointer-events: none;
}

/* Reproductor a la IZQUIERDA en Desktop */
.bottom-console-deck .player-hud-dock {
  order: 1;
  position: relative;
  bottom: auto;
  left: auto;
  transform: none;
  margin: 0;
  pointer-events: auto !important;
}

/* Filtros a la DERECHA en Desktop */
.bottom-console-deck .bottom-filters-row {
  order: 2;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: nowrap;
  pointer-events: auto !important;
}

.bottom-filter-popover-wrap {
  position: relative;
  pointer-events: auto !important;
}

.bottom-filter-pill {
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(6, 15, 23, 0.90);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(232, 197, 125, 0.28);
  border-radius: 24px;
  padding: 8px 16px;
  color: #F8FAFC;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.55);
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  white-space: nowrap;
  pointer-events: auto !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.bottom-filter-pill:hover,
.bottom-filter-popover-wrap.open .bottom-filter-pill {
  border-color: var(--sj-dorado-piel, #E8C57D);
  color: #FDE68A;
  box-shadow: 0 0 16px rgba(232, 197, 125, 0.35);
  transform: translateY(-1px);
}

.bottom-filter-pill .pill-arrow {
  font-size: 10px;
  opacity: 0.7;
  transition: transform 0.2s ease;
}

.bottom-filter-popover-wrap.open .bottom-filter-pill .pill-arrow {
  transform: rotate(180deg);
}

/* Popover anclado a la derecha en Desktop para nunca cortarse fuera de la pantalla (Punto 7) */
.bottom-popover-menu {
  position: absolute;
  bottom: calc(100% + 12px);
  right: 0;
  left: auto;
  transform: translateY(8px);
  background: rgba(5, 14, 22, 0.96);
  backdrop-filter: blur(28px);
  -webkit-backdrop-filter: blur(28px);
  border: 1px solid rgba(232, 197, 125, 0.32);
  border-radius: 16px;
  padding: 14px;
  display: none;
  box-shadow: 0 20px 48px rgba(0, 0, 0, 0.85), 0 0 20px rgba(245, 158, 11, 0.15);
  z-index: 1000;
  min-width: 270px;
  max-height: 400px;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(232, 197, 125, 0.3) transparent;
  pointer-events: auto !important;
  touch-action: manipulation;
}

.bottom-filter-popover-wrap.open .bottom-popover-menu {
  display: flex;
  flex-direction: column;
  gap: 8px;
  transform: translateY(0);
}

/* Cabecera Móvil de Popovers con botón de cierre explícito (Punto 6) */
.popover-mobile-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 2px 4px 8px 4px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  margin-bottom: 8px;
}

.popover-mobile-header .pm-title {
  font-size: 11px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.popover-close-btn {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #94A3B8;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  cursor: pointer;
  transition: all 0.2s ease;
  line-height: 1;
}

.popover-close-btn:hover {
  background: rgba(255, 255, 255, 0.2);
  color: #FFFFFF;
  border-color: #FFFFFF;
}

/* Selector de Épocas: Fila 1 Superior para 'Todas las épocas' (Punto 5) */
.popover-era-top-row {
  width: 100%;
  margin-bottom: 6px;
}

.popover-era-top-row .decade-chip-all {
  width: 100%;
  display: block;
  text-align: center;
  padding: 9px 12px;
  font-size: 11.5px;
  font-weight: 700;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.14);
  color: #CBD5E1;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.popover-era-top-row .decade-chip-all:hover {
  background: rgba(232, 197, 125, 0.15);
  border-color: var(--sj-dorado-piel, #E8C57D);
  color: #FFFFFF;
}

.popover-era-top-row .decade-chip-all.active {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%)) !important;
  border-color: var(--sj-dorado-piel, #E8C57D) !important;
  color: #FFFFFF !important;
  box-shadow: 0 0 14px var(--theme-glow, rgba(16, 185, 129, 0.4)) !important;
}

/* Selector de Épocas: Tabla Estricta de 4x4 iniciando por < 1900 hasta 2020s (Punto 5) */
.popover-grid-decades {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 6px;
  min-width: 260px;
}

.decade-chip {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #CBD5E1;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 8px 6px;
  border-radius: 8px;
  cursor: pointer;
  text-align: center;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  outline: none;
  pointer-events: auto !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.decade-chip:hover {
  background: rgba(232, 197, 125, 0.15);
  border-color: var(--sj-dorado-piel, #E8C57D);
  color: #FFFFFF;
}

.decade-chip.active {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%)) !important;
  border-color: var(--sj-dorado-piel, #E8C57D) !important;
  color: #FFFFFF !important;
  font-weight: 700;
  box-shadow: 0 0 14px var(--theme-glow, rgba(16, 185, 129, 0.4)) !important;
}

/* Selector de Temas Solarpunk en el Footer (Punto 10) */
.bottom-theme-selector-wrap {
  display: flex;
  align-items: center;
  pointer-events: auto !important;
}

.theme-selector-bar {
  display: flex;
  align-items: center;
  gap: 6px;
  background: rgba(6, 15, 23, 0.90);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(232, 197, 125, 0.28);
  border-radius: 24px;
  padding: 5px 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.55);
}

.theme-circle-btn {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: transparent;
  border: 1.5px solid transparent;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.2s ease;
  outline: none;
}

.theme-circle-btn:hover {
  transform: scale(1.15);
}

.theme-circle-btn.active {
  border-color: #FFFFFF;
  box-shadow: 0 0 8px rgba(255, 255, 255, 0.6);
  transform: scale(1.1);
}

.theme-dot {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  display: block;
}

.theme-dot.dot-dark {
  background: linear-gradient(135deg, #10B981, #059669);
  box-shadow: 0 0 6px rgba(16, 185, 129, 0.5);
}

.theme-dot.dot-light {
  background: linear-gradient(135deg, #D4AF37, #B8860B);
  box-shadow: 0 0 6px rgba(212, 175, 55, 0.5);
}

.theme-dot.dot-blue {
  background: linear-gradient(135deg, #3B82F6, #1D4ED8);
  box-shadow: 0 0 6px rgba(59, 130, 246, 0.5);
}

.theme-dot.dot-wine {
  background: linear-gradient(135deg, #E11D48, #9F1239);
  box-shadow: 0 0 6px rgba(225, 29, 72, 0.5);
}

/* Modal Integrado de Géneros y Subgéneros (2 Columnas en Desktop) */
.genre-modal-popover {
  min-width: 500px;
  max-width: 580px;
  padding: 16px;
}

.genre-popover-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  align-items: start;
}

.popover-section-block {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.popover-section-title {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--sj-dorado-piel, #E8C57D);
  margin-bottom: 4px;
  padding-bottom: 4px;
  border-bottom: 1px solid rgba(232, 197, 125, 0.2);
}

.popover-section-divider {
  display: none;
}

.popover-list-families,
.popover-list-subgenres {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 320px;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(232, 197, 125, 0.3) transparent;
  padding-right: 4px;
}

.popover-item-chip {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 500;
  padding: 8px 12px;
  border-radius: 10px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  text-align: left;
  transition: all 0.2s ease;
  white-space: nowrap;
  pointer-events: auto !important;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
}

.popover-item-chip:hover {
  color: #FFFFFF;
  border-color: var(--sj-dorado-piel);
  background: rgba(232, 197, 125, 0.12);
}

.popover-item-chip.active {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%)) !important;
  border-color: var(--sj-dorado-piel, #E8C57D) !important;
  color: #FFFFFF !important;
  font-weight: 700;
  box-shadow: 0 0 12px var(--theme-glow, rgba(16, 185, 129, 0.35)) !important;
}

/* ==========================================================================
   MODAL DE VINCULACIÓN / LOGIN DE YOUTUBE (Punto 3)
   ========================================================================== */
.yt-auth-card {
  max-width: 440px;
  border-radius: 20px;
  padding: 24px;
  background: rgba(6, 16, 24, 0.96);
  backdrop-filter: blur(28px);
  -webkit-backdrop-filter: blur(28px);
  border: 1px solid rgba(232, 197, 125, 0.3);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.85), 0 0 30px rgba(239, 68, 68, 0.15);
}

.yt-auth-title-group {
  display: flex;
  align-items: center;
  gap: 12px;
}

.yt-badge-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  background: rgba(239, 68, 68, 0.15);
  border: 1px solid rgba(239, 68, 68, 0.3);
  flex-shrink: 0;
}

.yt-auth-sub {
  font-size: 10px;
  color: var(--sj-dorado-piel, #E8C57D);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

.yt-auth-body {
  margin-top: 14px;
}

.yt-auth-status-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 10px;
  padding: 8px 12px;
  font-size: 11px;
  color: #94A3B8;
  margin-bottom: 14px;
}

.status-indicator-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}

.status-indicator-dot.disconnected {
  background: #94A3B8;
  box-shadow: 0 0 6px rgba(148, 163, 184, 0.4);
}

.status-indicator-dot.connected {
  background: #10B981;
  box-shadow: 0 0 8px #10B981;
}

.btn-google-oauth {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  background: #FFFFFF;
  color: #1E293B;
  font-family: var(--font-sans);
  font-size: 13px;
  font-weight: 600;
  padding: 12px 18px;
  border-radius: 12px;
  border: none;
  cursor: pointer;
  transition: all 0.2s ease;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
}

.btn-google-oauth:hover {
  background: #F8FAFC;
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.45);
}

.modal-or-divider {
  display: flex;
  align-items: center;
  text-align: center;
  margin: 16px 0 12px;
  color: #64748B;
  font-size: 11px;
}

.modal-or-divider::before,
.modal-or-divider::after {
  content: '';
  flex: 1;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.modal-or-divider span {
  padding: 0 10px;
}

.genre-subgenres-ribbon::-webkit-scrollbar {
  display: none;
}

.genre-subgenre-chip {
  background: rgba(5, 16, 22, 0.85);
  backdrop-filter: blur(16px);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 500;
  padding: 4px 12px;
  border-radius: 16px;
  cursor: pointer;
  white-space: nowrap;
  transition: var(--transition-smooth);
}

.genre-subgenre-chip:hover {
  color: var(--text-primary);
  border-color: var(--sj-dorado-piel);
  background: rgba(232, 197, 125, 0.1);
}

.genre-subgenre-chip.active {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.3), rgba(217, 119, 6, 0.3));
  border-color: var(--solar-gold);
  color: var(--sj-dorado-piel);
  font-weight: 700;
  box-shadow: 0 0 10px rgba(245, 158, 11, 0.25);
}

/* Badge de Telemetría Sensorial */
.genre-telemetry-badge {
  font-size: 10px;
  color: var(--sj-dorado-piel);
  font-family: var(--font-sans);
  background: rgba(4, 13, 18, 0.7);
  padding: 2px 10px;
  border-radius: 12px;
  border: 1px solid rgba(232, 197, 125, 0.15);
  pointer-events: auto;
}

/* ==========================================================================
   BOTÓN FLOTANTE MÓVIL (FAB) & DRAWER SENSORIAL
   ========================================================================== */
.mobile-genre-fab {
  display: none;
  /* Visible solo en móviles vía media query */
  position: fixed;
  top: 68px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 22;
  background: linear-gradient(135deg, #F59E0B, #D97706);
  border: 1px solid rgba(255, 255, 255, 0.25);
  color: #03080C;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 700;
  padding: 8px 18px;
  border-radius: 30px;
  box-shadow: 0 8px 24px rgba(245, 158, 11, 0.45);
  cursor: pointer;
  align-items: center;
  gap: 8px;
  transition: var(--transition-smooth);
}

.mobile-genre-fab:active {
  transform: translateX(-50%) scale(0.96);
}

/* Backdrop del Drawer Móvil */
.mobile-drawer-backdrop {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.7);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  z-index: 95;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.mobile-drawer-backdrop.open {
  opacity: 1;
  pointer-events: auto;
}

/* Sheet Drawer Móvil (Bottom Sheet Táctil) */
.mobile-drawer-sheet {
  position: fixed;
  bottom: 0;
  left: 0;
  right: 0;
  max-height: 78vh;
  background: rgba(4, 13, 18, 0.97);
  backdrop-filter: blur(30px);
  -webkit-backdrop-filter: blur(30px);
  border-top: 1px solid rgba(232, 197, 125, 0.3);
  border-radius: 24px 24px 0 0;
  z-index: 100;
  transform: translateY(105%);
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1);
  display: flex;
  flex-direction: column;
  box-shadow: 0 -12px 48px rgba(0, 0, 0, 0.85);
}

.mobile-drawer-sheet.open {
  transform: translateY(0);
}

.drawer-drag-pill {
  width: 38px;
  height: 4px;
  border-radius: 2px;
  background: rgba(232, 197, 125, 0.4);
  margin: 10px auto 4px;
}

.drawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 18px 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}

.drawer-title-group {
  display: flex;
  align-items: center;
  gap: 8px;
}

.drawer-title-group h3 {
  font-size: 15px;
  font-weight: 700;
  color: var(--text-primary);
}

.drawer-close-btn {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  color: var(--text-secondary);
  width: 28px;
  height: 28px;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 13px;
}

.drawer-body {
  padding: 16px 18px;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.drawer-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.drawer-section-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--sj-dorado-piel);
}

.drawer-section-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.drawer-badge-count {
  font-size: 10px;
  font-family: var(--font-sans);
  color: var(--text-tertiary);
}

/* Selector de formato en drawer */
.drawer-format-group {
  display: flex;
  gap: 6px;
}

.drawer-format-pill {
  flex: 1;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: var(--text-secondary);
  font-size: 11px;
  font-weight: 600;
  padding: 8px;
  border-radius: 12px;
  cursor: pointer;
  text-align: center;
  transition: var(--transition-smooth);
}

.drawer-format-pill.active {
  background: rgba(16, 185, 129, 0.2);
  border-color: var(--emerald-zenith);
  color: #6EE7B7;
}

/* Grilla de Familias en Drawer */
.drawer-families-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}

.drawer-family-btn {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  padding: 10px 12px;
  border-radius: 14px;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 8px;
  text-align: left;
  transition: var(--transition-smooth);
}

.drawer-family-btn.active {
  background: color-mix(in srgb, var(--theme-accent) 16%, transparent);
  border-color: var(--family-color, var(--theme-accent));
  color: #FFFFFF;
  box-shadow: 0 0 14px var(--family-glow, var(--theme-glow));
}

/* Grilla de Subgéneros en Drawer */
.drawer-subgenres-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.drawer-subgenre-btn {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--text-secondary);
  font-family: var(--font-sans);
  font-size: 11px;
  padding: 6px 12px;
  border-radius: 12px;
  cursor: pointer;
  transition: var(--transition-smooth);
}

.drawer-subgenre-btn.active {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.3), rgba(217, 119, 6, 0.3));
  border-color: var(--solar-gold);
  color: var(--sj-dorado-piel);
  font-weight: 700;
}

/* Fila de Décadas en Drawer */
.drawer-decades-row {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: none;
  padding-bottom: 4px;
}

.drawer-decades-row::-webkit-scrollbar {
  display: none;
}

.drawer-decade-btn {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--text-tertiary);
  font-family: var(--font-sans);
  font-size: 11px;
  padding: 6px 10px;
  border-radius: 8px;
  cursor: pointer;
  white-space: nowrap;
  transition: var(--transition-smooth);
}

.drawer-decade-btn.active {
  background: var(--solar-gold);
  color: #03080C;
  font-weight: 700;
  border-color: var(--solar-gold);
}

/* ==========================================================================
   TARJETA SENSORIAL PSM (Materialización Fotónica de Silueta — Regla 11)
   ========================================================================== */
.psm-card-container {
  position: absolute;
  top: 50%;
  right: 28px !important;
  /* Margen ergonómico de 28px respecto al borde derecho */
  transform: translateY(-50%) scale(0.96);
  width: 360px;
  max-width: calc(100vw - 40px);
  max-height: calc(100vh - 180px) !important;
  /* Límite ergonómico superior e inferior */
  z-index: 99990 !important;
  opacity: 0;
  pointer-events: none;
  filter: blur(8px);
  transition: opacity 0.35s ease, transform 0.4s cubic-bezier(0.16, 1, 0.3, 1), filter 0.35s ease;
  display: flex;
  flex-direction: column;
}

.psm-card-container.active {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(-50%) scale(1);
  filter: blur(0);
}

/* Trazador Perimetral de Luz Giratorio (Conic-Gradient PSM) */
.psm-card-wrapper {
  position: relative;
  border-radius: 22px;
  padding: 2px;
  overflow: hidden;
  background: rgba(232, 197, 125, 0.18);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.85);
  max-height: 100%;
  display: flex;
  flex-direction: column;
}

.psm-card-wrapper::before {
  content: '';
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: conic-gradient(from 0deg,
      transparent 0deg,
      transparent 60deg,
      var(--solar-gold) 120deg,
      var(--sj-dorado-piel) 180deg,
      #FFFFFF 200deg,
      transparent 260deg,
      transparent 360deg);
  animation: psmBeamRotate 4s linear infinite;
  z-index: 0;
}

@keyframes psmBeamRotate {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .psm-card-wrapper::before {
    animation: none;
    background: linear-gradient(135deg, var(--solar-gold), var(--sj-dorado-piel));
  }
}

.psm-card-inner {
  position: relative;
  z-index: 1;
  background: rgba(5, 14, 22, 0.94);
  backdrop-filter: blur(32px);
  -webkit-backdrop-filter: blur(32px);
  border: 1px solid rgba(232, 197, 125, 0.32);
  border-radius: 20px;
  padding: 20px 22px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: 0 30px 60px rgba(0, 0, 0, 0.8), 0 0 24px rgba(245, 158, 11, 0.15);
  max-height: calc(100vh - 184px) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: rgba(232, 197, 125, 0.45) rgba(5, 14, 22, 0.6);
  -webkit-overflow-scrolling: touch;
}

/* Barra deslizante de lujo Solarpunk (Regla 4 & Omotenashi) */
.psm-card-inner::-webkit-scrollbar {
  width: 5px;
}

.psm-card-inner::-webkit-scrollbar-track {
  background: rgba(5, 14, 22, 0.5);
  border-radius: 4px;
}

.psm-card-inner::-webkit-scrollbar-thumb {
  background: rgba(232, 197, 125, 0.4);
  border-radius: 4px;
  transition: background 0.2s ease;
}

.psm-card-inner::-webkit-scrollbar-thumb:hover {
  background: var(--solar-gold, #F59E0B);
}

.psm-header-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.psm-title-block {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.psm-country-header {
  display: flex;
  align-items: center;
  gap: 8px;
  /* ⚠️ JERARQUÍA, no gusto (Daniel): «el espacio entre el título del país y el primer
     texto se ve menos que los espacios entre textos y eso mentalmente daña la
     percepción».

     Y el número lo confirma: el contenedor separa sus bloques con 12px y el encabezado
     NO tenía margen inferior propio. **El título quedaba a la misma distancia del texto
     que dos párrafos entre sí — y entonces deja de leerse como título.**

     18px = 1,5× el gap: la proporción mínima para que el ojo agrupe, sin comerse los
     30px de altura que se acaban de ganar. */
  margin-bottom: 18px;
}

.psm-country-header h2 {
  font-size: 22px;
  font-weight: 700;
  color: var(--text-primary);
}

.psm-city-subtitle {
  font-size: 13px;
  color: var(--sj-dorado-piel);
  font-weight: 500;
}

/* ==========================================================================
   SENSOR DE LUZ SOLAR Y HORA LOCAL DEL DESTINO (+1 INNOVACIÓN DISRUPTIVA)
   ========================================================================== */
.psm-solar-time-sensor {
  display: flex;
  align-items: center;
  gap: 6px;
  background: rgba(0, 0, 0, 0.4);
  border: 1px solid rgba(232, 197, 125, 0.25);
  border-radius: 8px;
  padding: 4px 8px;
  font-size: 11px;
  line-height: 1.3;
  color: #E2E8F0;
  margin-top: -4px;
  margin-bottom: 2px;
}

.solar-sensor-glyph {
  font-size: 13px;
  line-height: 1;
}

.solar-sensor-city {
  color: #94A3B8;
  font-weight: 500;
  font-size: 10.5px;
}

.solar-sensor-time {
  color: var(--sj-dorado-piel, #E8C57D);
  font-weight: 700;
  font-size: 11.5px;
  letter-spacing: 0.02em;
}

.solar-sensor-sep {
  color: rgba(148, 163, 184, 0.5);
  font-size: 10px;
}

.solar-sensor-phase {
  color: #FDE68A;
  font-size: 10.5px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ==========================================================================
   MODOS CINEMATOGRÁFICOS CONTEMPLATIVOS: VUELO DRON & CÚPULA ISS (+1 ESTÁNDAR)
   ========================================================================== */
.psm-cinematic-controls-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  margin-top: 4px;
  margin-bottom: 2px;
}

.psm-cine-btn {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(232, 197, 125, 0.28);
  border-radius: 10px;
  padding: 6px 10px;
  color: #E2E8F0;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  font-family: inherit;
}

.psm-cine-btn:hover {
  background: rgba(245, 158, 11, 0.15);
  border-color: rgba(245, 158, 11, 0.6);
  color: #FDE68A;
  box-shadow: 0 4px 14px rgba(245, 158, 11, 0.25);
  transform: translateY(-1px);
}

.psm-cine-btn.active {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.25) 0%, rgba(16, 185, 129, 0.2) 100%);
  border-color: #F59E0B;
  color: #FFFFFF;
  box-shadow: 0 0 12px rgba(245, 158, 11, 0.4);
}

/* Insignia Flotante Informativa de Modo Cinematográfico (Punto 2) */
.psm-cinematic-exit-badge {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 99995 !important;
  background: rgba(4, 14, 22, 0.92);
  border: 1px solid rgba(232, 197, 125, 0.45);
  border-radius: 30px;
  padding: 6px 18px 6px 16px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.8), 0 0 20px rgba(245, 158, 11, 0.25);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  animation: fadeInDownCine 0.3s ease-out;
  pointer-events: none;
}

@keyframes fadeInDownCine {
  from {
    opacity: 0;
    transform: translate(-50%, -10px);
  }

  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

.cine-badge-inner {
  display: flex;
  align-items: center;
  gap: 10px;
}

.cine-badge-glyph {
  font-size: 16px;
}

.cine-badge-text-wrap {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.cine-badge-title {
  font-size: 12px;
  font-weight: 700;
  color: #FFFFFF;
  line-height: 1.2;
}

.cine-badge-sub {
  font-size: 9.5px;
  color: var(--sj-dorado-piel, #E8C57D);
  line-height: 1.2;
}

/* Micro-Enclaves y Territorios Asociados dentro de la tarjeta PSM (Punto 5) */
.psm-enclaves-container {
  margin-top: 14px;
  padding: 10px 12px;
  background: rgba(16, 185, 129, 0.08);
  border: 1px solid rgba(52, 211, 153, 0.25);
  border-radius: 12px;
}

.psm-enclaves-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  margin-bottom: 8px;
  letter-spacing: 0.3px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.psm-enclaves-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.psm-enclave-jump-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: rgba(15, 23, 42, 0.85);
  border: 1px solid rgba(232, 197, 125, 0.35);
  border-radius: 20px;
  color: #FFFFFF;
  font-size: 11.5px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.psm-enclave-jump-btn:hover {
  background: rgba(245, 158, 11, 0.2);
  border-color: var(--solar-gold, #F59E0B);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(245, 158, 11, 0.25);
}

.psm-enclave-jump-btn .pej-arrow {
  color: var(--solar-gold, #F59E0B);
  font-weight: 800;
}

/* Botón Audio Lock en la barra del reproductor (Punto 8) */
.player-audio-lock-btn.active {
  background: rgba(245, 158, 11, 0.22) !important;
  border-color: var(--solar-gold, #F59E0B) !important;
  box-shadow: 0 0 14px rgba(245, 158, 11, 0.45) !important;
  color: #FFFFFF !important;
}

.psm-close-btn {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: var(--text-secondary);
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-size: 14px;
  transition: var(--transition-smooth);
}

.psm-close-btn:hover {
  background: rgba(255, 255, 255, 0.15);
  color: var(--text-primary);
}

/* Banner VIP Space Journey */
.psm-vip-badge-box {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.2), rgba(16, 185, 129, 0.1));
  border: 1px solid rgba(245, 158, 11, 0.4);
  border-radius: 12px;
  padding: 8px 12px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.psm-vip-badge-box span {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  color: var(--solar-gold);
  text-transform: uppercase;
}

/* ==========================================================================
   SECCIÓN ARTISTA CULTURAL ÍCONO (PSM Spotlight — Punto 2)
   ========================================================================== */
.psm-artist-spotlight {
  background: linear-gradient(145deg, rgba(245, 158, 11, 0.08), rgba(6, 20, 24, 0.8));
  border: 1px solid rgba(232, 197, 125, 0.3);
  border-radius: 16px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

.psm-artist-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.psm-artist-tag {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--solar-gold);
}

.btn-random-artist {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(232, 197, 125, 0.25);
  color: var(--sj-dorado-piel);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 12px;
  cursor: pointer;
  transition: var(--transition-smooth);
}

.btn-random-artist:hover {
  background: rgba(245, 158, 11, 0.2);
  border-color: var(--solar-gold);
  color: #FFFFFF;
}

.psm-artist-title-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.psm-artist-name {
  font-size: 16px;
  font-weight: 700;
  color: #FFFFFF;
}

.psm-artist-era {
  font-family: var(--font-sans);
  font-size: 11px;
  color: var(--sj-dorado-piel);
  background: rgba(245, 158, 11, 0.15);
  padding: 1px 6px;
  border-radius: 6px;
}

.psm-artist-track {
  font-size: 12px;
  font-weight: 500;
  color: var(--solar-gold);
  margin-top: 2px;
}

.psm-artist-bio {
  font-size: 11px;
  line-height: 1.45;
  color: var(--text-secondary);
  margin-top: 4px;
}

.btn-play-artist {
  width: 100%;
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%)) !important;
  border: 1px solid rgba(232, 197, 125, 0.35);
  color: #FFFFFF !important;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 700;
  padding: 8px 12px;
  border-radius: 12px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-shadow: 0 4px 15px var(--theme-glow, rgba(16, 185, 129, 0.35));
  transition: var(--transition-smooth);
}

.btn-play-artist:hover {
  transform: translateY(-1px);
  filter: brightness(1.1);
  box-shadow: 0 6px 20px var(--theme-glow, rgba(16, 185, 129, 0.55));
  color: #FFFFFF !important;
}

/* Secreto Local / Atmósfera Territorial Inspirada (Omotenashi) */
.psm-whisper {
  font-family: var(--font-sans);
  font-size: 12px;
  line-height: 1.5;
  color: var(--sj-dorado-piel);
  background: rgba(232, 197, 125, 0.08);
  border-left: 2px solid var(--solar-gold);
  padding: 8px 12px;
  border-radius: 0 10px 10px 0;
  margin: 2px 0 8px 0;
  font-style: italic;
}

.psm-whisper[hidden] {
  display: none !important;
}

/* CÁPSULA DEL TIEMPO (Radiooooo Style con Música Libre de Derechos) */
.psm-capsule {
  background: rgba(16, 185, 129, 0.05);
  border: 1px solid rgba(16, 185, 129, 0.22);
  border-radius: 14px;
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 6px;
  backdrop-filter: blur(12px);
}

.psm-capsule[hidden] {
  display: none !important;
}

.psm-capsule-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.psm-capsule-eyebrow {
  font-size: 10.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--emerald-zenith);
}

.psm-capsule-taxi {
  background: rgba(245, 158, 11, 0.12);
  border: 1px solid rgba(245, 158, 11, 0.35);
  color: var(--sj-dorado-piel);
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 999px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  transition: var(--transition-smooth);
}

.psm-capsule-taxi:hover {
  background: var(--solar-gold);
  color: #03080C;
  transform: translateY(-1px);
}

.psm-capsule-eras {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 2px 0 4px 0;
  scrollbar-width: none;
}

.psm-capsule-eras::-webkit-scrollbar {
  display: none;
}

.psm-capsule-era-pill {
  padding: 4px 10px;
  font-size: 11px;
  font-weight: 600;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: var(--text-secondary);
  cursor: pointer;
  white-space: nowrap;
  transition: var(--transition-smooth);
}

.psm-capsule-era-pill:hover {
  background: rgba(255, 255, 255, 0.12);
  color: var(--text-primary);
}

.psm-capsule-era-pill.active {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%));
  color: #03080C;
  font-weight: 700;
  border-color: rgba(245, 158, 11, 0.8);
  box-shadow: 0 2px 10px rgba(245, 158, 11, 0.35);
}

.psm-capsule-line {
  font-size: 11.5px;
  line-height: 1.45;
  color: var(--text-secondary);
  margin: 2px 0 4px 0;
}

.psm-capsule-play {
  width: 100%;
  background: linear-gradient(135deg, #10B981 0%, #059669 100%);
  border: 1px solid rgba(232, 197, 125, 0.3);
  color: #FFFFFF;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 700;
  padding: 9px 14px;
  border-radius: 10px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  box-shadow: 0 4px 15px rgba(16, 185, 129, 0.28);
  transition: var(--transition-smooth);
}

.psm-capsule-play:hover {
  transform: translateY(-1px);
  filter: brightness(1.1);
  box-shadow: 0 6px 20px rgba(16, 185, 129, 0.45);
}

/* Reproductor: botón siguiente pista y licencia */
.player-btn-next {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.14);
  color: var(--text-primary);
  border-radius: 8px;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  margin-left: 6px;
  transition: var(--transition-smooth);
}

.player-btn-next:hover {
  background: rgba(245, 158, 11, 0.2);
  border-color: var(--solar-gold);
  color: var(--sj-dorado-piel);
}

.player-btn-next[hidden] {
  display: none !important;
}

.player-license-link {
  font-size: 9.5px;
  color: var(--sj-dorado-piel);
  text-decoration: underline;
  text-underline-offset: 2px;
  opacity: 0.85;
  display: inline-block;
  margin-top: 2px;
  transition: opacity 0.2s;
}

.player-license-link:hover {
  opacity: 1;
}

.player-license-link[hidden] {
  display: none !important;
}

.player-source-tag.archive {
  background: rgba(245, 158, 11, 0.15);
  color: var(--sj-dorado-piel);
  border-color: rgba(245, 158, 11, 0.35);
}

/* Botones de Reproducción en la Tarjeta */
.psm-playback-row {
  display: flex;
  gap: 8px;
}

.btn-media-action {
  flex: 1;
  background: rgba(245, 158, 11, 0.15);
  border: 1px solid rgba(245, 158, 11, 0.35);
  color: var(--sj-dorado-piel);
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  padding: 10px;
  border-radius: 12px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: var(--transition-smooth);
}

.btn-media-action:hover {
  background: var(--solar-gold);
  color: #03080C;
}

.btn-media-action.youtube {
  background: rgba(239, 68, 68, 0.15);
  border-color: rgba(239, 68, 68, 0.35);
  color: #FCA5A5;
}

.btn-media-action.youtube:hover {
  background: #EF4444;
  color: #FFFFFF;
}

/* Enlaces de Conversión Primaria (Regla 6) */
/* ═══════════════════════════════════════════════════════════════════════════
   EL CTA «¿Planeas viajar a X?» NO PUEDE DESAPARECER. (Daniel, 14-oct-2026)

   «Más altura en el modal de destinos para que se alcance a ver el botón de
    ¿Quieres viajar a X?, que es CLAVE PARA NUESTRO MODELO DE NEGOCIO.»

   Sus capturas lo confirman: en Namibia y en Indonesia-radio el botón NO se ve; en
   Indonesia-satélite SÍ, porque ese contenido es más corto. **La pieza que sostiene el
   negocio dependía de cuánto contenido hubiera encima.**

   Y la causa no era la altura: `.psm-card-inner` es el contenedor con `overflow-y: auto`
   (línea ~1982), y esta columna es su HIJA — así que **se desplazaba con el contenido**.

   → La solución no es dar más altura (siempre habrá un contenido más largo): es que la
     barra **quede pegada al fondo** y no se mueva. `position: sticky` lo consigue sin
     tocar la estructura del DOM, que es lo que lo hace seguro.
   ═══════════════════════════════════════════════════════════════════════════ */
.psm-actions-column {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-top: 4px;
  /* ⚠️ REVERTIDO (Daniel, 14-oct-2026). Aquí hubo un sticky para que el CTA «¿Planeas viajar
     a X?» no se perdiera al desplazar. Sus palabras: «se ve horrible, la persona no entiende
     que puede deslizar hacia abajo, en lugar de eso como que se le obliga y se daña la
     experiencia de encontrar la música.» Y tiene razón: **resolví «que se vea» haciendo que
     estorbara.** Un elemento fijo sobre contenido desplazable tapa lo que el usuario busca y
     **borra la pista de que hay más abajo**, que es lo que el scroll necesita para existir.
     El problema original se resuelve con MÁS ALTURA y con una BARRA VISIBLE. */
}

/* Y su tipografía, para que LEA como CTA y no como un botón más.
   El ADN: titulares y CTAs en Outfit; textos de lectura en Lora.
   Antes heredaba la fuente y se quedaba en 13px — que es tamaño de etiqueta. */
.psm-actions-column #psm-plan-btn {
  font-family: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: 15px;
  font-weight: 600;
  letter-spacing: 0.01em;
  line-height: 1.25;
  padding: 14px 18px;
}

/* ═══════════════════════════════════════════════════════════════════════════
   NARANJA PROHIBIDO EN UN BOTÓN PRIMARIO. (Encontrado el 14-oct-2026)

   Aquí había:  background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%);
                box-shadow: 0 8px 24px rgba(245, 158, 11, 0.35);

   **`#F59E0B` y `#D97706` son el naranja que el brand_dna §3 prohíbe**, y estaban en el
   estilo BASE de la clase. Sólo `#psm-plan-btn` lo sobreescribía con el gradiente del
   tema — así que los otros TRES elementos que usan `.btn-primary-gold` salían naranjas:

       · #yt-load-user-link-btn     (modal de YouTube)
       · #extInstallCtaBtn          (instalar la extensión de Chrome)
       · #extSaveMusicBtn           (guardar música)

   Y el `box-shadow` naranja **no lo sobreescribía nadie**, así que el propio CTA
   principal llevaba un resplandor naranja debajo.

   ⚠️ NO cuenta como la «excepción de temas» del globo: aquélla es para el sistema de
      TEMAS (`[data-theme]`, `--solar-gold`…). Esto era un color escrito a mano en un
      botón, que es exactamente lo que el ADN prohíbe.

   → Ahora el estilo base usa el MISMO gradiente de tema que el CTA principal. Los cuatro
     botones quedan coherentes y en marca, y la sombra deja de ser naranja.
   ═══════════════════════════════════════════════════════════════════════════ */
.btn-primary-gold {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%)) !important;
  color: #061118 !important;
  font-weight: 700;
  font-size: 13px;
  padding: 12px 18px;
  border-radius: 12px;
  text-decoration: none;
  text-align: center;
  border: 1px solid rgba(255, 255, 255, 0.3);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  /* Sombra NEUTRA: antes era rgba(245,158,11,.35), naranja. Un resplandor oscuro
     separa el botón del fondo sin teñirlo. */
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  transition: var(--transition-smooth);
}

.btn-primary-gold:hover {
  transform: translateY(-1px);
  filter: brightness(1.08);
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.45);
}

#psm-plan-btn {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%)) !important;
  color: #FFFFFF !important;
  border: 1px solid rgba(255, 255, 255, 0.35) !important;
  box-shadow: 0 8px 24px var(--theme-glow, rgba(16, 185, 129, 0.35)) !important;
  transition: var(--transition-smooth);
}

#psm-plan-btn:hover {
  transform: translateY(-1px);
  filter: brightness(1.1);
  box-shadow: 0 12px 30px var(--theme-glow, rgba(16, 185, 129, 0.55)) !important;
}

.btn-secondary-city {
  background: rgba(232, 197, 125, 0.1);
  border: 1px solid var(--sj-dorado-piel);
  color: var(--sj-dorado-piel);
  font-weight: 600;
  font-size: 12px;
  padding: 10px 14px;
  border-radius: 12px;
  text-decoration: none;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: var(--transition-smooth);
}

.btn-secondary-city:hover {
  background: rgba(232, 197, 125, 0.2);
}

.btn-passport-cta {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: var(--text-secondary);
  font-weight: 500;
  font-size: 11px;
  padding: 8px 12px;
  border-radius: 10px;
  text-decoration: none;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: var(--transition-smooth);
}

.btn-passport-cta:hover {
  color: var(--text-primary);
  border-color: var(--sj-dorado-piel);
}

/* ==========================================================================
   REPRODUCTOR INFERIOR DOCK (Player HUD)
   ========================================================================== */
.player-hud-dock {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 15;
  display: flex;
  align-items: center;
  gap: 16px;
  background: var(--glass-bg);
  backdrop-filter: blur(28px);
  -webkit-backdrop-filter: blur(28px);
  border: 1px solid var(--glass-border);
  padding: 10px 20px;
  border-radius: 50px;
  box-shadow: 0 20px 48px rgba(0, 0, 0, 0.65);
  max-width: 90vw;
  pointer-events: auto;
}

/* Portada de Álbum / Soundscape (Punto 7) */
.player-cover-box {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  overflow: hidden;
  border: 1.5px solid rgba(232, 197, 125, 0.45);
  background: #020609;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.6);
}

.player-cover-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 50%;
  transition: transform 0.3s ease;
}

.player-hud-dock.playing .player-cover-img {
  animation: spinCover 12s linear infinite;
}

@keyframes spinCover {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

.player-controls-left {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* Botón Play/Pause con Branding Verde y Dorado e Iconos Centrados Matemáticamente (Punto 2) */
.player-btn-play {
  background: linear-gradient(135deg, #10B981 0%, #059669 100%);
  border: 1.5px solid var(--sj-dorado-piel, #E8C57D);
  color: #FFFFFF;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 4px 16px rgba(16, 185, 129, 0.45), 0 0 10px rgba(232, 197, 125, 0.3);
  transition: var(--transition-smooth);
}

.player-btn-play:hover {
  transform: scale(1.06);
  box-shadow: 0 6px 22px rgba(16, 185, 129, 0.6), 0 0 14px rgba(232, 197, 125, 0.45);
}

.player-btn-play svg {
  display: block;
}

/* Ecualizador Animado */
.player-eq-anim {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 18px;
}

.player-eq-anim span {
  width: 3px;
  background: linear-gradient(180deg, #E8C57D 0%, #10B981 100%);
  border-radius: 2px;
  height: 4px;
  transition: height 0.2s ease;
}

.player-eq-anim.animating span:nth-child(1) {
  animation: eqBounce 1.1s ease-in-out infinite alternate;
}

.player-eq-anim.animating span:nth-child(2) {
  animation: eqBounce 1.4s ease-in-out infinite alternate 0.2s;
}

.player-eq-anim.animating span:nth-child(3) {
  animation: eqBounce 0.9s ease-in-out infinite alternate 0.4s;
}

@keyframes eqBounce {
  0% {
    height: 4px;
  }

  100% {
    height: 18px;
  }
}

.player-track-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 180px;
  max-width: 280px;
}

.player-track-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.player-track-sub {
  font-size: 11px;
  color: var(--text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.player-source-tag {
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  padding: 3px 8px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.08);
  color: var(--text-secondary);
}

.player-source-tag.radio {
  background: rgba(16, 185, 129, 0.15);
  color: var(--emerald-zenith);
}

.player-source-tag.youtube {
  background: rgba(239, 68, 68, 0.15);
  color: #F87171;
}

.player-volume-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--text-tertiary);
}

.player-vol-slider {
  width: 60px;
  accent-color: #10B981;
  cursor: pointer;
}

/* ==========================================================================
   VISOR FLOTANTE DE YOUTUBE (Retirado: El reproductor ahora vive 100% integrado en #psmHeroCard)
   ========================================================================== */
.youtube-floating-visor {
  display: none !important;
}

/* Modo Minimizado: Botón Flotante Circular con Icono Oficial YouTube (Punto 2) */
.youtube-floating-visor.minimized {
  width: 48px !important;
  height: 48px !important;
  min-width: 48px !important;
  border-radius: 50% !important;
  padding: 0 !important;
  background: rgba(12, 18, 28, 0.95) !important;
  border: 1.5px solid rgba(255, 0, 0, 0.6) !important;
  box-shadow: 0 6px 20px rgba(255, 0, 0, 0.4), 0 0 12px rgba(232, 197, 125, 0.25) !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.youtube-floating-visor.minimized:hover {
  transform: scale(1.08);
  border-color: #FF0000 !important;
  box-shadow: 0 8px 24px rgba(255, 0, 0, 0.6) !important;
}

.youtube-floating-visor.minimized .visor-header,
.youtube-floating-visor.minimized .visor-iframe-wrap {
  display: none !important;
}

.visor-minimized-fab {
  display: none;
  width: 100%;
  height: 100%;
  background: transparent;
  border: none;
  padding: 0;
  cursor: pointer;
  align-items: center;
  justify-content: center;
  outline: none;
}

.youtube-floating-visor.minimized .visor-minimized-fab {
  display: flex !important;
}

.visor-header {
  height: 38px;
  background: rgba(5, 16, 22, 0.92);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  user-select: none;
}

.visor-header span {
  font-size: 11px;
  font-weight: 600;
  color: var(--sj-dorado-piel);
  display: flex;
  align-items: center;
  gap: 6px;
}

.visor-header-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

.visor-action-btn {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: var(--text-secondary);
  width: 22px;
  height: 22px;
  border-radius: 6px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  transition: var(--transition-smooth);
}

.visor-action-btn:hover {
  background: rgba(232, 197, 125, 0.2);
  color: var(--text-primary);
  border-color: var(--sj-dorado-piel);
}

.visor-iframe-wrap {
  flex: 1;
  width: 100%;
  height: 100%;
}

/* ==========================================================================
   MODAL DE VINCULACIÓN DE YOUTUBE
   ========================================================================== */
.modal-backdrop-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.78);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  z-index: 100050 !important;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px;
  box-sizing: border-box;
}

.modal-backdrop-overlay.visible {
  display: flex;
}

.modal-box-card {
  width: 480px;
  max-width: 92vw;
  max-height: 80vh;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: rgba(232, 197, 125, 0.35) transparent;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  border-radius: 20px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: 0 30px 70px rgba(0, 0, 0, 0.85);
  box-sizing: border-box;
}

.modal-box-card::-webkit-scrollbar {
  width: 6px;
}

.modal-box-card::-webkit-scrollbar-track {
  background: transparent;
}

.modal-box-card::-webkit-scrollbar-thumb {
  background: rgba(232, 197, 125, 0.35);
  border-radius: 4px;
}

.modal-box-card::-webkit-scrollbar-thumb:hover {
  background: var(--solar-gold, #F59E0B);
}

.modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
}

.modal-header h3 {
  font-size: 18px;
  color: var(--text-primary);
  display: flex;
  align-items: center;
  gap: 8px;
}

.modal-close-btn {
  background: transparent;
  border: none;
  color: var(--text-secondary);
  font-size: 18px;
  cursor: pointer;
}

.modal-desc {
  font-size: 13px;
  color: var(--text-secondary);
  line-height: 1.5;
}

.modal-input-group {
  display: flex;
  gap: 8px;
}

.modal-input {
  flex: 1;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(232, 197, 125, 0.3);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 13px;
  padding: 10px 14px;
  border-radius: 12px;
  outline: none;
}

.modal-input:focus {
  border-color: var(--solar-gold);
}

/* ==========================================================================
   RESPONSIVE DESIGN (Regla 6: Móviles < 900px & < 600px)
   ========================================================================== */
@media (max-width: 900px) {

  /* Ocultar elementos secundarios de escritorio */
  .genre-console-bar,
  .type-filter-cluster,
  .source-filter-cluster,
  .capsule-divider,
  .mobile-genre-fab,
  .mobile-drawer-backdrop,
  .mobile-drawer-sheet,
  .sj-semantic-credit {
    display: none !important;
  }

  /* Mostrar dropdown de filtros móviles dentro de la barra de búsqueda */
  .mobile-filter-dropdown-wrap {
    display: block !important;
    position: relative;
    pointer-events: auto !important;
  }

  /* =========================================================================
     CABECERA MÓVIL EN 2 NIVELES (Punto 2)
     ========================================================================= */
  .globe-header {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    top: 10px;
    left: 10px;
    right: 10px;
    gap: 8px;
    pointer-events: none;
  }

  /* Nivel 1 Superior: Logo a la izquierda, Desplegable de Idioma a la derecha */
  .header-level-top {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    width: 100% !important;
    pointer-events: none;
  }

  .header-level-top .header-col-brand,
  .header-level-top .header-col-lang {
    pointer-events: auto !important;
    display: flex;
    align-items: center;
  }

  /* Logo en Mobile (Punto 1: 10% más pequeño) */
  .brand-logo-img {
    height: 34px !important;
    max-width: 170px !important;
    filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.8)) !important;
  }

  .lang-trigger-btn {
    padding: 6px 12px;
    font-size: 11px;
    gap: 6px;
    pointer-events: auto !important;
  }

  /* Ocultar botón Guardar para mi viaje en móviles (Punto 8.3) */
  #psm-chrome-save-btn {
    display: none !important;
  }

  /* Nivel 2 Inferior: Barra de búsqueda con desplegable de filtros */
  .header-level-search {
    display: flex !important;
    width: 100% !important;
    pointer-events: auto !important;
  }

  .header-level-search .header-col-search {
    width: 100% !important;
    max-width: 100% !important;
    pointer-events: auto !important;
  }

  .search-console-capsule {
    width: 100%;
    padding: 6px 12px;
    border-radius: 28px;
    gap: 8px;
    pointer-events: auto !important;
  }

  .search-input {
    font-size: 12px;
  }

  .search-autocomplete-dropdown {
    position: fixed;
    top: 96px;
    left: 10px;
    right: 10px;
    width: auto;
    max-height: 50vh;
  }

  .psm-card-container {
    top: auto;
    bottom: 112px !important;
    left: 12px;
    right: 12px;
    width: auto;
    max-width: 380px;
    margin: 0 auto;
    max-height: 48vh;
    overflow-y: auto;
    overscroll-behavior: contain;
    transform: translateY(20px) scale(0.98);
    z-index: 99990 !important;
  }

  .psm-card-inner {
    padding: 16px 18px;
    gap: 10px;
  }

  .psm-card-container.active {
    transform: translateY(0) scale(1);
  }

  /* =========================================================================
     FOOTER MÓVIL EN 2 NIVELES (Punto 3)
     Superior: Selector de época y géneros
     Inferior: Reproductor sin etiqueta
     ========================================================================= */
  .bottom-console-deck {
    flex-direction: column !important;
    bottom: max(10px, env(safe-area-inset-bottom)) !important;
    left: 10px;
    right: 10px;
    transform: none;
    max-width: none;
    width: calc(100% - 20px);
    gap: 8px;
    pointer-events: none;
  }

  /* Nivel 1 Superior: Filtros de época y géneros musicales */
  .bottom-console-deck .bottom-filters-row {
    order: 1 !important;
    width: 100% !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 6px !important;
    overflow-x: visible !important;
    padding: 0 !important;
    pointer-events: auto !important;
  }

  .bottom-filter-pill {
    padding: 6px 12px;
    font-size: 11px;
    flex-shrink: 0;
    pointer-events: auto !important;
    touch-action: manipulation;
  }

  /* Nivel 2 Inferior: Reproductor Dock sin etiqueta */
  .bottom-console-deck .player-hud-dock {
    order: 2 !important;
    width: 100% !important;
    padding: 8px 14px;
    gap: 10px;
    border-radius: 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    pointer-events: auto !important;
  }

  .player-track-info {
    flex: 1;
    min-width: 0;
    max-width: none;
  }

  .player-track-title {
    font-size: 11px;
  }

  .player-track-sub {
    font-size: 9px;
  }

  .player-volume-wrap {
    display: none;
  }

  /* Visor de YouTube en Móvil (Posicionado con holgura segura sobre los controles inferiores) */
  .youtube-floating-visor {
    width: 220px;
    height: 124px;
    bottom: 142px;
    left: 14px;
    z-index: 50;
  }

  .youtube-floating-visor.minimized {
    width: 48px !important;
    height: 48px !important;
    bottom: 142px !important;
    left: 14px !important;
    border-radius: 50% !important;
  }

  /* =========================================================================
     POPOVERS FLOTANTES MÓVILES (Fijos, Centrados y 100% Cliqueables)
     ========================================================================= */
  .bottom-popover-menu {
    position: fixed !important;
    bottom: 110px !important;
    left: 12px !important;
    right: 12px !important;
    width: auto !important;
    max-width: calc(100vw - 24px) !important;
    max-height: 52vh !important;
    transform: none !important;
    z-index: 9999 !important;
    pointer-events: auto !important;
    touch-action: manipulation;
    box-shadow: 0 16px 48px rgba(0, 0, 0, 0.9), 0 0 24px rgba(245, 158, 11, 0.2) !important;
  }

  .bottom-filter-popover-wrap.open .bottom-popover-menu {
    transform: none !important;
  }

  .popover-grid-decades {
    grid-template-columns: repeat(4, 1fr) !important;
    min-width: 0 !important;
    width: 100% !important;
  }

  .decade-chip {
    padding: 8px 4px !important;
    font-size: 10.5px !important;
  }

  .genre-modal-popover {
    max-height: 56vh !important;
    padding: 10px !important;
  }

  /* Sistema de 2 Columnas de Géneros y Subgéneros en Móviles (Punto 5) */
  .genre-popover-inner {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 8px !important;
  }

  .popover-list-families,
  .popover-list-subgenres {
    max-height: 250px !important;
    min-width: 0 !important;
    width: 100% !important;
  }

  .popover-item-chip {
    padding: 6px 8px !important;
    font-size: 10.5px !important;
    gap: 4px !important;
    border-radius: 8px !important;
  }

  .popover-section-divider {
    display: none !important;
  }
}

@media (max-width: 600px) {
  .globe-header {
    gap: 6px;
  }

  /* Logo compacto en pantallas pequeñas (Punto 3) */
  .brand-logo-img {
    height: 22px !important;
    max-width: 115px !important;
  }

  .search-input {
    font-size: 11px;
  }

  .search-icon {
    font-size: 10px;
    margin-right: 4px;
  }

  .bottom-filter-pill {
    padding: 6px 11px;
    font-size: 10.5px;
    gap: 6px;
  }

  /* Optimización Móvil Completa: Tarjeta, Modales, Deslizadores y Reproductor (Punto 3) */
  .psm-card-container {
    bottom: 115px !important;
    left: 8px !important;
    right: 8px !important;
    max-width: calc(100vw - 16px) !important;
    /* 50vh + 30px REALES: Daniel pidió «unos 30 píxeles más hacia arriba». */
    max-height: calc(50vh + 30px) !important;
    ;
    overflow-y: auto !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    border-radius: 20px;
    scrollbar-width: thin;
    scrollbar-color: rgba(232, 197, 125, 0.4) transparent;
  }

  .psm-card-inner {
    padding: 14px 14px !important;
    gap: 8px !important;
  }

  .psm-card-inner::-webkit-scrollbar {
    width: 4px;
  }

  .psm-card-inner::-webkit-scrollbar-thumb {
    background: rgba(232, 197, 125, 0.4);
    border-radius: 4px;
  }

  .bottom-console-deck .player-hud-dock {
    padding: 6px 10px !important;
    gap: 6px !important;
    border-radius: 24px !important;
  }

  .player-btn-play {
    width: 32px !important;
    height: 32px !important;
  }

  .player-btn-shuffle {
    width: 28px !important;
    height: 28px !important;
  }

  .player-actions-cluster {
    gap: 4px !important;
  }

  .player-action-circle-btn {
    width: 28px !important;
    height: 28px !important;
  }

  .modal-box-card {
    max-width: 95vw !important;
    padding: 18px 14px !important;
    max-height: 82vh !important;
  }

  .ext-install-card {
    padding: 16px 14px !important;
  }
}

/* ==========================================================================
   MODAL DE PLANIFICACIÓN DE VIAJE, EXTENSIÓN Y ALIADOS (Punto 8.3)
   ========================================================================== */
.travel-planning-card {
  width: 540px;
  max-width: 92vw;
  background: rgba(6, 16, 24, 0.97);
  border: 1px solid rgba(232, 197, 125, 0.35);
  border-radius: 24px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: 0 32px 80px rgba(0, 0, 0, 0.9), 0 0 30px rgba(245, 158, 11, 0.2);
  max-height: 88vh;
  overflow-y: auto;
}

.tp-title-group {
  display: flex;
  align-items: center;
  gap: 12px;
}

.tp-badge-icon {
  width: 38px;
  height: 38px;
  border-radius: 12px;
  background: rgba(245, 158, 11, 0.15);
  border: 1px solid rgba(245, 158, 11, 0.3);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}

.tp-sub {
  font-size: 11px;
  color: var(--sj-dorado-piel);
  font-weight: 600;
  display: block;
  margin-top: 2px;
}

.tp-modal-body {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.tp-feature-card {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 16px;
  border-radius: 16px;
  text-decoration: none !important;
  color: #FFFFFF !important;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.04);
  transition: all 0.25s ease;
}

.tp-feature-card:visited,
.tp-partner-item:visited,
.travel-planning-card a:visited {
  color: #FFFFFF !important;
  text-decoration: none !important;
}

.tp-feature-card:hover {
  transform: translateY(-2px);
  border-color: var(--sj-dorado-piel);
  background: rgba(232, 197, 125, 0.08);
  color: #FFFFFF !important;
}

.tp-feature-card.planner-card {
  border-color: rgba(16, 185, 129, 0.35);
  background: linear-gradient(135deg, rgba(16, 185, 129, 0.12) 0%, rgba(5, 150, 105, 0.06) 100%);
}

.tp-feature-card.chrome-card {
  border-color: rgba(66, 133, 244, 0.3);
  background: linear-gradient(135deg, rgba(66, 133, 244, 0.08) 0%, rgba(52, 168, 83, 0.08) 100%);
}

.tp-feature-icon {
  font-size: 24px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
}

.tp-feature-info {
  flex: 1;
}

.tp-feature-info h4 {
  font-size: 13.5px;
  font-weight: 700;
  color: #FFFFFF !important;
  margin-bottom: 3px;
}

.tp-feature-info p {
  font-size: 11px;
  color: var(--text-secondary);
  line-height: 1.4;
  margin: 0;
}

.tp-action-arrow {
  font-size: 16px;
  color: var(--theme-accent, #10B981);
  font-weight: 700;
}

.tp-action-badge {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 4px 10px;
  border-radius: 20px;
  background: rgba(16, 185, 129, 0.2);
  border: 1px solid rgba(16, 185, 129, 0.4);
  color: #34D399;
}

.tp-partners-section {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding-top: 6px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}

.tp-partners-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.tp-partners-title {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--sj-dorado-piel);
}

.tp-partners-badge {
  font-size: 10px;
  color: #10B981;
  font-weight: 600;
}

.tp-partners-disclosure {
  font-size: 10px;
  color: var(--text-tertiary);
  margin: 0;
  line-height: 1.35;
}

.tp-partners-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
}

@media (max-width: 600px) {
  .tp-partners-grid {
    grid-template-columns: 1fr !important;
  }
}

.tp-partner-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  text-decoration: none !important;
  color: #FFFFFF !important;
  transition: all 0.2s ease;
}

.tp-partner-item:hover {
  background: rgba(16, 185, 129, 0.12);
  border-color: rgba(16, 185, 129, 0.35);
  transform: translateY(-1px);
  color: #FFFFFF !important;
}

.tp-p-icon {
  font-size: 16px;
  flex-shrink: 0;
}

.tp-p-info {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.tp-p-name {
  font-size: 11px;
  font-weight: 700;
  color: #FFFFFF !important;
}

.tp-p-desc {
  font-size: 9.5px;
  color: var(--text-secondary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

#travelPlanningModal {
  z-index: 100050 !important;
}

/* ==========================================================================
   SCROLLBAR SOLARPUNK UNIVERSAL DE ALTA GAMA (PUNTOS 2 & 17)
   ========================================================================== */
.tp-modal-body,
.travel-planning-card,
.psm-card-inner,
.ext-install-card,
.modal-box-card,
.bottom-popover-menu {
  scrollbar-width: thin !important;
  scrollbar-color: var(--theme-accent, #10B981) rgba(4, 12, 18, 0.75) !important;
}

.tp-modal-body::-webkit-scrollbar,
.travel-planning-card::-webkit-scrollbar,
.psm-card-inner::-webkit-scrollbar,
.ext-install-card::-webkit-scrollbar,
.modal-box-card::-webkit-scrollbar,
.bottom-popover-menu::-webkit-scrollbar {
  width: 6px !important;
  height: 6px !important;
}

.tp-modal-body::-webkit-scrollbar-track,
.travel-planning-card::-webkit-scrollbar-track,
.psm-card-inner::-webkit-scrollbar-track,
.ext-install-card::-webkit-scrollbar-track,
.modal-box-card::-webkit-scrollbar-track,
.bottom-popover-menu::-webkit-scrollbar-track {
  background: rgba(4, 12, 18, 0.75) !important;
  border-radius: 8px !important;
}

.tp-modal-body::-webkit-scrollbar-thumb,
.travel-planning-card::-webkit-scrollbar-thumb,
.psm-card-inner::-webkit-scrollbar-thumb,
.ext-install-card::-webkit-scrollbar-thumb,
.modal-box-card::-webkit-scrollbar-thumb,
.bottom-popover-menu::-webkit-scrollbar-thumb {
  background: var(--theme-btn-gradient, linear-gradient(180deg, #F59E0B 0%, #10B981 100%)) !important;
  border-radius: 8px !important;
  box-shadow: 0 0 8px var(--theme-glow, rgba(16, 185, 129, 0.35)) !important;
}

/* REACTIVIDAD TOTAL DE MODALES AL TEMA ACTIVO (PUNTO 3) */
.modal-box-card,
.travel-planning-card,
.ext-install-card,
.yt-auth-card {
  border: 1px solid var(--theme-accent, #10B981) !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.85), 0 0 24px var(--theme-glow, rgba(16, 185, 129, 0.25)) !important;
}

/* ==========================================================================
   PANEL DE 6 ICONOS SENSORIALES Y CULTURALES (Doctrina César Val & Omotenashi)
   ========================================================================== */
.psm-toolbar-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 5px;
  margin: 6px 0 10px;
}

.psm-tool-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 6px 1.5px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(232, 197, 125, 0.2);
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  color: var(--text-primary);
  outline: none;
  min-width: 0;
}

.psm-tool-btn:hover {
  background: rgba(232, 197, 125, 0.12);
  border-color: var(--sj-dorado-piel, #E8C57D);
  transform: translateY(-1.5px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4), 0 0 10px rgba(245, 158, 11, 0.15);
}

.psm-tool-btn.active {
  background: rgba(245, 158, 11, 0.2);
  border-color: var(--solar-gold, #F59E0B);
  box-shadow: 0 0 12px rgba(245, 158, 11, 0.3);
}

.psm-tool-btn .tool-icon {
  font-size: 14px;
  line-height: 1;
}

.psm-tool-btn .tool-label {
  font-size: 8px;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  color: #94A3B8;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 100%;
}

.psm-tool-btn:hover .tool-label,
.psm-tool-btn.active .tool-label {
  color: #FDE68A;
}

.psm-tool-travel {
  border-color: rgba(245, 158, 11, 0.35);
  background: rgba(245, 158, 11, 0.08);
}

/* Cajones Desplegables Sub-modales de Iconos */
.psm-subdrawer {
  background: rgba(4, 14, 20, 0.85);
  border: 1px solid rgba(232, 197, 125, 0.25);
  border-radius: 12px;
  padding: 10px 12px;
  margin-bottom: 8px;
  backdrop-filter: blur(12px);
  animation: fadeInDownSubdrawer 0.22s ease-out;
}

@keyframes fadeInDownSubdrawer {
  from {
    opacity: 0;
    transform: translateY(-6px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.psm-subdrawer-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 11px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 8px;
}

.subdrawer-close-btn {
  background: transparent;
  border: none;
  color: #94A3B8;
  cursor: pointer;
  font-size: 11px;
  padding: 2px 6px;
  border-radius: 4px;
  transition: all 0.15s ease;
}

.subdrawer-close-btn:hover {
  color: #FFFFFF;
  background: rgba(255, 255, 255, 0.1);
}

/* ==========================================================================
   CAJÓN DE ARTISTA DESTACADO (PSM ARTIST DRAWER — Punto 2)
   ========================================================================== */
.psm-artist-subdrawer {
  background: linear-gradient(145deg, rgba(8, 20, 28, 0.95) 0%, rgba(4, 12, 18, 0.98) 100%) !important;
  border: 1px solid rgba(232, 197, 125, 0.35) !important;
  border-radius: 16px !important;
  padding: 12px 14px !important;
  box-shadow: 0 12px 30px rgba(0, 0, 0, 0.7), inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
}

.psm-subdrawer-title-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.psm-artist-drawer-inner {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.psm-artist-card-lead {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(232, 197, 125, 0.15);
}

.psm-artist-avatar-ring {
  width: 44px;
  height: 44px;
  min-width: 44px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(245, 158, 11, 0.25) 0%, rgba(6, 18, 26, 0.8) 100%);
  border: 1.5px solid rgba(232, 197, 125, 0.5);
  box-shadow: 0 0 14px rgba(245, 158, 11, 0.25);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
}

.psm-artist-meta-col {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  min-width: 0;
}

.psm-artist-card-name {
  font-size: 14.5px;
  font-weight: 700;
  color: #FFFFFF;
  margin: 0;
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-artist-drawer-badges {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
}

.psm-artist-chip {
  font-size: 10px;
  font-weight: 600;
  padding: 2px 7px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.15);
  color: #E2E8F0;
  white-space: nowrap;
}

.psm-artist-chip#psm-drawer-era-chip {
  background: rgba(245, 158, 11, 0.15);
  border-color: rgba(245, 158, 11, 0.35);
  color: #FDE68A;
}

.psm-artist-chip-country {
  background: rgba(16, 185, 129, 0.12);
  border-color: rgba(16, 185, 129, 0.3);
  color: #34D399;
}

.psm-artist-drawer-bio {
  font-size: 11px;
  color: #94A3B8;
  line-height: 1.45;
  margin: 0;
  font-style: italic;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.psm-artist-track-box {
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(0, 0, 0, 0.35);
  border: 1px solid rgba(232, 197, 125, 0.2);
  border-radius: 8px;
  padding: 7px 10px;
}

.psm-artist-track-icon {
  font-size: 14px;
}

.psm-artist-track-info {
  display: flex;
  flex-direction: column;
  min-width: 0;
  flex: 1;
}

.psm-artist-track-label {
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--sj-dorado-piel, #E8C57D);
  font-weight: 600;
}

.psm-artist-track-name {
  font-size: 12px;
  font-weight: 600;
  color: #FFFFFF;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-artist-play-action {
  width: 100%;
  padding: 8px 14px;
  border-radius: 10px;
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.2) 0%, rgba(217, 119, 6, 0.3) 100%);
  border: 1px solid rgba(245, 158, 11, 0.5);
  color: #FDE68A;
  font-weight: 700;
  font-size: 12px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: all 0.2s ease;
  font-family: inherit;
  box-shadow: 0 4px 12px rgba(245, 158, 11, 0.15);
}

.psm-artist-play-action:hover {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%));
  color: #051016;
  border-color: #F59E0B;
  box-shadow: 0 6px 18px rgba(245, 158, 11, 0.4);
  transform: translateY(-1px);
}

/* Contenedor Hero Card */
.psm-hero-card {
  width: 100%;
  margin-bottom: 8px;
}

/* Botón Principal: Reproducir música del territorio (Punto 1) */
.psm-territory-play-btn {
  width: 100%;
  padding: 11px 16px;
  border-radius: 12px;
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%));
  color: #FFFFFF;
  border: 1px solid rgba(255, 255, 255, 0.3);
  font-weight: 700;
  font-size: 13px;
  font-family: var(--font-sans);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-shadow: 0 8px 24px var(--theme-glow, rgba(16, 185, 129, 0.35));
  transition: var(--transition-smooth);
  margin-top: 4px;
  margin-bottom: 4px;
  outline: none;
}

.psm-territory-play-btn:hover {
  transform: translateY(-1px);
  filter: brightness(1.08);
  box-shadow: 0 12px 30px var(--theme-glow, rgba(16, 185, 129, 0.55));
}

.psm-territory-play-btn.playing {
  background: rgba(255, 255, 255, 0.08);
  border-color: var(--theme-accent, #10B981);
  color: var(--theme-accent, #10B981);
  box-shadow: 0 0 14px var(--theme-glow, rgba(16, 185, 129, 0.3));
}

/* ==========================================================================
   SELECTOR DE ILUMINACIÓN SOLAR DÍA / NOCHE / REAL EN VIVO (PUNTO 5)
   ========================================================================== */
.bottom-solar-toggle-wrap {
  display: flex;
  align-items: center;
  background: rgba(5, 16, 24, 0.92);
  border: 1px solid rgba(232, 197, 125, 0.28);
  border-radius: 20px;
  padding: 2px;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

.solar-toggle-btn {
  padding: 5px 9px;
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font-size: 11px;
  font-weight: 600;
  border-radius: 16px;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}

.solar-toggle-btn:hover {
  color: #FFFFFF;
}

.solar-toggle-btn.active {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%));
  color: #FFFFFF;
  box-shadow: 0 0 10px var(--theme-glow, rgba(16, 185, 129, 0.4));
}

/* ==========================================================================
   MÓDULO DE VALORACIÓN CON 5 ESTRELLAS TRIP SAVER (PUNTOS 10 & 17)
   ========================================================================== */
.rating-card-box {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(232, 197, 125, 0.22);
  border-radius: 16px;
  padding: 12px 14px;
  margin-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  text-align: center;
}

.rating-card-title {
  font-size: 12px;
  font-weight: 700;
  color: #FFFFFF;
}

.rating-card-sub {
  font-size: 10px;
  color: var(--text-secondary);
  line-height: 1.35;
}

.rating-stars-container {
  display: flex;
  justify-content: center;
  gap: 6px;
  margin: 3px 0;
}

.rating-star-btn {
  background: transparent;
  border: none;
  font-size: 20px;
  color: rgba(255, 255, 255, 0.25);
  cursor: pointer;
  transition: transform 0.15s ease, color 0.15s ease;
  padding: 2px 4px;
}

.rating-star-btn:hover,
.rating-star-btn.active {
  color: var(--solar-gold, #F59E0B);
  transform: scale(1.2);
  text-shadow: 0 0 12px rgba(245, 158, 11, 0.6);
}

.rating-feedback-block {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-items: center;
  padding-top: 6px;
  border-top: 1px dashed rgba(232, 197, 125, 0.2);
}

.rating-heart-box {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 10.5px;
  color: #FFFFFF;
  line-height: 1.4;
  text-align: left;
}

.btn-rating-store {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 10px;
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%));
  color: #FFFFFF;
  text-decoration: none;
  font-size: 11px;
  font-weight: 700;
  box-shadow: 0 4px 14px var(--theme-glow, rgba(16, 185, 129, 0.35));
  transition: all 0.2s ease;
}

.btn-rating-store:hover {
  transform: translateY(-1px);
  filter: brightness(1.1);
}

/* ==========================================================================
   PUNTOS 2, 3, 4 & 10: ACCIONES DEL REPRODUCTOR HUD (Guardar, Compartir, Vol, Zen)
   ========================================================================== */
.player-actions-cluster {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  flex-shrink: 0;
}

.player-action-circle-btn {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(232, 197, 125, 0.3);
  color: var(--sj-dorado-piel, #E8C57D);
  cursor: pointer;
  transition: var(--transition-smooth);
  outline: none;
  position: relative;
}

.player-action-circle-btn:hover {
  transform: scale(1.08);
  background: rgba(232, 197, 125, 0.18);
  border-color: #F59E0B;
  color: #FFFFFF;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4), 0 0 12px rgba(245, 158, 11, 0.35);
}

/* Botón Guardar con Imagotipo Space Journey (Punto 2) */
.player-save-btn {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.22) 0%, rgba(16, 185, 129, 0.18) 100%);
  border: 1.5px solid var(--sj-dorado-piel, #E8C57D);
  color: #FFFFFF;
  box-shadow: 0 0 10px rgba(245, 158, 11, 0.25);
}

.player-save-btn:hover {
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%));
  border-color: #FFFFFF;
  color: #FFFFFF;
  box-shadow: 0 0 18px rgba(245, 158, 11, 0.6);
}

/* ==========================================================================
   PUNTO 3: CONTROL DE VOLUMEN CON POPOVER VERTICAL ASCENDENTE
   ========================================================================== */
.player-volume-popover-wrap {
  position: relative;
  display: flex;
  align-items: center;
}

.player-volume-popover {
  position: absolute;
  bottom: 48px;
  left: 50%;
  transform: translateX(-50%) translateY(8px);
  width: 44px;
  padding: 12px 6px;
  background: rgba(5, 16, 24, 0.96);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1px solid rgba(232, 197, 125, 0.35);
  border-radius: 22px;
  box-shadow: 0 14px 40px rgba(0, 0, 0, 0.85), 0 0 16px rgba(245, 158, 11, 0.22);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  opacity: 0;
  pointer-events: none;
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: 100;
}

.player-volume-popover.visible,
.player-volume-popover-wrap.open .player-volume-popover {
  opacity: 1 !important;
  pointer-events: auto !important;
  transform: translateX(-50%) translateY(0) !important;
}

.vol-popover-title {
  font-size: 8.5px;
  font-weight: 800;
  color: var(--text-tertiary);
  letter-spacing: 0.08em;
}

.vol-slider-vertical-box {
  height: 86px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.player-vol-slider-vertical {
  -webkit-appearance: slider-vertical;
  appearance: slider-vertical;
  writing-mode: vertical-lr;
  direction: rtl;
  width: 6px;
  height: 80px;
  accent-color: var(--solar-gold, #F59E0B);
  cursor: pointer;
  background: rgba(255, 255, 255, 0.12);
  border-radius: 4px;
  outline: none;
}

.vol-popover-percent {
  font-size: 9.5px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  font-family: var(--font-sans);
}

/* ==========================================================================
   PUNTO 2: MODAL DE INSTALACIÓN DE EXTENSIÓN CON NAVEGADORES CHROMIUM
   ========================================================================== */
.ext-install-card {
  width: 500px;
  max-width: 92vw;
  max-height: 80vh !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: thin;
  scrollbar-color: rgba(232, 197, 125, 0.35) transparent;
  background: rgba(6, 18, 26, 0.98) !important;
  border: 1px solid rgba(232, 197, 125, 0.35) !important;
  border-radius: 22px !important;
  padding: 20px 20px !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.9), 0 0 28px rgba(245, 158, 11, 0.18) !important;
  color: #FFFFFF !important;
  box-sizing: border-box;
}

.ext-install-card::-webkit-scrollbar {
  width: 6px;
}

.ext-install-card::-webkit-scrollbar-track {
  background: transparent;
}

.ext-install-card::-webkit-scrollbar-thumb {
  background: rgba(232, 197, 125, 0.35);
  border-radius: 4px;
}

.ext-install-card::-webkit-scrollbar-thumb:hover {
  background: var(--solar-gold, #F59E0B);
}

.ext-header-brand {
  display: flex;
  align-items: center;
  gap: 12px;
}

.ext-modal-logo-wrap {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.25) 0%, rgba(16, 185, 129, 0.2) 100%);
  border: 1.5px solid var(--sj-dorado-piel, #E8C57D);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 0 16px rgba(245, 158, 11, 0.3);
}

.ext-install-card h3 {
  font-size: 14.5px;
  font-weight: 700;
  color: #FFFFFF;
  margin: 0 0 2px;
  line-height: 1.3;
}

.ext-modal-sub {
  font-size: 10.5px;
  color: var(--sj-dorado-piel, #E8C57D);
  font-weight: 600;
}

.ext-modal-body {
  margin-top: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.ext-intro-desc {
  font-size: 12px;
  color: var(--text-secondary);
  line-height: 1.45;
  margin: 0;
}

.ext-active-track-box {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: rgba(245, 158, 11, 0.1);
  border: 1px solid rgba(245, 158, 11, 0.3);
  border-radius: 12px;
}

.eatb-icon {
  font-size: 16px;
}

.eatb-meta {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.eatb-label {
  font-size: 9px;
  color: var(--sj-dorado-piel);
  font-weight: 600;
  text-transform: uppercase;
}

.eatb-title {
  font-size: 11.5px;
  font-weight: 700;
  color: #FFFFFF;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ext-browsers-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.ext-browsers-title {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--sj-dorado-piel, #E8C57D);
  letter-spacing: 0.05em;
}

.ext-browsers-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 8px;
}

@media (max-width: 520px) {
  .ext-browsers-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.ext-browser-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 8px 4px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 12px;
  transition: var(--transition-smooth);
}

.ext-browser-card img {
  width: 28px;
  height: 28px;
  object-fit: contain;
  filter: drop-shadow(0 2px 5px rgba(0, 0, 0, 0.45));
  transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.ext-browser-card:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(232, 197, 125, 0.4);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.5);
}

.ext-browser-card:hover img {
  transform: scale(1.12);
}

.ext-browser-card span {
  font-size: 10px;
  font-weight: 600;
  color: var(--text-secondary);
}

.ext-cws-badge-note {
  font-size: 10.5px;
  color: #94A3B8;
  line-height: 1.4;
  margin: 0;
  padding: 7px 11px;
  background: rgba(255, 255, 255, 0.03);
  border-radius: 8px;
  border-left: 2px solid #10B981;
}

.ext-cta-install-btn {
  width: 100%;
  padding: 11px 18px;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  box-sizing: border-box;
}

/* ==========================================================================
   BOTÓN SHUFFLE Y BOTÓN SOLAR EN REPRODUCTOR (Puntos 2 & 5)
   ========================================================================== */
.player-btn-shuffle {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(232, 197, 125, 0.25);
  color: var(--sj-dorado-piel, #E8C57D);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  padding: 0;
  flex-shrink: 0;
  outline: none;
}

.player-btn-shuffle:hover {
  background: rgba(245, 158, 11, 0.22);
  border-color: var(--solar-gold, #F59E0B);
  color: #FFFFFF;
  transform: scale(1.12) rotate(15deg);
  box-shadow: 0 0 16px rgba(245, 158, 11, 0.4);
}

.player-btn-shuffle:active {
  transform: scale(0.95);
}

.player-solar-btn {
  color: var(--sj-dorado-piel, #E8C57D);
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  display: flex;
  align-items: center;
  justify-content: center;
}

.player-solar-btn:hover {
  color: #FFFFFF;
  border-color: var(--solar-gold, #F59E0B);
  transform: scale(1.1);
  box-shadow: 0 0 14px rgba(245, 158, 11, 0.35);
}

/* Notificación Flotante de Teletransportación Sonora (+1 de Hospitalidad) */
.shuffle-teleport-toast {
  position: fixed;
  top: 72px;
  left: 50%;
  transform: translateX(-50%) translateY(-10px);
  z-index: 100060;
  background: rgba(6, 18, 26, 0.95);
  border: 1px solid var(--sj-dorado-piel, #E8C57D);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  color: #FFFFFF;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  padding: 8px 18px;
  border-radius: 30px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.8), 0 0 20px rgba(245, 158, 11, 0.3);
  opacity: 0;
  pointer-events: none;
  transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.shuffle-teleport-toast.active {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ==========================================================================
   PUNTO 4: ESTILOS OFICIALES DEL MODAL SWEETALERT2 DE 10 CANALES (SOLARPUNK)
   ========================================================================== */
div:where(.swal2-container),
.swal2-container {
  z-index: 999999 !important;
}

.sj-solarpunk-popup {
  z-index: 1000000 !important;
  background: rgba(6, 18, 26, 0.98) !important;
  backdrop-filter: blur(28px) !important;
  -webkit-backdrop-filter: blur(28px) !important;
  border: 1px solid rgba(232, 197, 125, 0.35) !important;
  border-radius: 24px !important;
  font-family: var(--font-sans) !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.9), 0 0 30px rgba(245, 158, 11, 0.2) !important;
  padding: 24px 20px !important;
  color: #FFFFFF !important;
}

.sj-solarpunk-popup .swal2-title {
  color: #FFFFFF !important;
  font-family: var(--font-sans) !important;
  font-weight: 700 !important;
  font-size: 18px !important;
  padding-top: 6px !important;
}

.sj-solarpunk-popup .swal2-close {
  color: var(--text-secondary) !important;
  font-size: 22px !important;
  transition: color 0.2s ease !important;
}

.sj-solarpunk-popup .swal2-close:hover {
  color: #FFFFFF !important;
}

/* ==========================================================================
   PUNTO 10: MODO RESPIRO CONTEMPLATIVO ZEN (Orbit Zen)
   ========================================================================== */
body.zen-orbit-mode .globe-header,
body.zen-orbit-mode .bottom-console-deck,
body.zen-orbit-mode .psm-card-container,
body.zen-orbit-mode .youtube-floating-visor,
body.zen-orbit-mode .globe-country-tooltip {
  opacity: 0 !important;
  pointer-events: none !important;
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1) !important;
}

.zen-mode-overlay-indicator {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 9999;
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(5, 16, 24, 0.88);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  padding: 10px 24px;
  border-radius: 30px;
  border: 1px solid rgba(232, 197, 125, 0.35);
  color: var(--sj-dorado-piel, #E8C57D);
  font-size: 12px;
  font-weight: 600;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.5s ease;
  box-shadow: 0 10px 28px rgba(0, 0, 0, 0.65);
  max-width: min(880px, 92vw);
  text-align: center;
}

body.zen-orbit-mode .zen-mode-overlay-indicator {
  opacity: 1;
  pointer-events: auto;
}

@media (max-width: 768px) {
  .zen-mode-overlay-indicator {
    top: 55px;
    font-size: 11px;
    padding: 8px 16px;
    max-width: 92vw;
    border-radius: 20px;
  }
}

.zen-pulse-beacon {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #10B981;
  box-shadow: 0 0 10px #10B981;
  animation: zenBeaconPulse 2s ease-in-out infinite;
}

@keyframes zenBeaconPulse {

  0%,
  100% {
    transform: scale(1);
    opacity: 0.8;
  }

  50% {
    transform: scale(1.5);
    opacity: 1;
    box-shadow: 0 0 16px #10B981;
  }
}

/* ==========================================================================
   BOTÓN FILTRO MODO GRAMÓFONO 1910 (Web Audio API)
   ========================================================================== */
.player-gramophone-btn {
  background: rgba(232, 197, 125, 0.08);
  border: 1px solid rgba(232, 197, 125, 0.3);
  color: var(--sj-dorado-piel, #E8C57D);
  transition: all 0.25s ease;
}

.player-gramophone-btn:hover {
  background: rgba(232, 197, 125, 0.2);
  border-color: #F59E0B;
  color: #FFFFFF;
  box-shadow: 0 0 12px rgba(245, 158, 11, 0.35);
}

.player-gramophone-btn.active-gramophone {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.32) 0%, rgba(217, 119, 6, 0.4) 100%) !important;
  border-color: #F59E0B !important;
  color: #FFFFFF !important;
  box-shadow: 0 0 16px rgba(245, 158, 11, 0.5) !important;
}

/* ==========================================================================
   MÓDULO DE GRABACIÓN HISTÓRICA VINTAGE & MÉTRICAS SIS (Pre-1926)
   ========================================================================== */
.psm-vintage-module {
  margin-top: 8px;
  margin-bottom: 2px;
  background: linear-gradient(145deg, rgba(16, 26, 36, 0.95) 0%, rgba(8, 16, 22, 0.98) 100%) !important;
  border: 1px solid rgba(232, 197, 125, 0.35) !important;
  border-radius: 14px !important;
  padding: 12px 14px !important;
  display: flex;
  flex-direction: column;
  gap: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5) !important;
  position: relative !important;
  overflow: hidden !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.psm-vintage-module::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, rgba(232, 197, 125, 0.6) 50%, transparent 100%);
}

.psm-vintage-header {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.psm-vintage-title-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
}

.psm-vintage-badge-tag {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  padding: 3px 8px;
  border-radius: 12px;
  background: rgba(16, 185, 129, 0.15);
  border: 1px solid rgba(16, 185, 129, 0.35);
  color: #34D399;
}

.psm-vintage-badge-tag.vibe-vital_movement {
  background: rgba(245, 158, 11, 0.15);
  border-color: rgba(245, 158, 11, 0.35);
  color: #FBBF24;
}

.psm-vintage-badge-tag.vibe-ancestral_mystic {
  background: rgba(139, 92, 246, 0.15);
  border-color: rgba(139, 92, 246, 0.35);
  color: #C084FC;
}

.psm-vintage-year {
  font-size: 11px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  padding: 2px 6px;
  background: rgba(232, 197, 125, 0.12);
  border-radius: 6px;
}

.psm-vintage-pd-mark {
  font-size: 9.5px;
  color: #94A3B8;
  font-weight: 500;
  white-space: nowrap;
}

.psm-vintage-body {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.psm-vintage-track-title {
  font-size: 13px;
  font-weight: 700;
  color: #FFFFFF;
  margin: 0;
  line-height: 1.35;
}

.psm-vintage-artist {
  font-size: 11px;
  color: #94A3B8;
  margin: 0 0 2px;
  line-height: 1.35;
}

.psm-vintage-sis-row {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin: 2px 0 4px;
}

.sis-pill {
  font-size: 10px;
  font-weight: 600;
  padding: 2.5px 8px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #E2E8F0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.sis-pill#psm-sis-score-pill {
  border-color: rgba(232, 197, 125, 0.4);
  color: var(--sj-dorado-piel, #E8C57D);
  background: rgba(232, 197, 125, 0.1);
  font-weight: 700;
}

.psm-vintage-lore-box {
  background: rgba(0, 0, 0, 0.3);
  border-left: 2px solid var(--sj-dorado-piel, #E8C57D);
  padding: 7px 10px;
  border-radius: 0 8px 8px 0;
  margin-top: 2px;
}

.psm-vintage-lore-text {
  font-size: 10.5px;
  color: #CBD5E1;
  font-style: italic;
  line-height: 1.45;
  margin: 0;
}

/* ==========================================================================
   SELECTOR DE MODO EN HUD (Memoria Histórica vs Radio en Vivo)
   ========================================================================== */
.player-mode-switch {
  display: inline-flex;
  align-items: center;
  background: rgba(0, 0, 0, 0.45);
  border: 1px solid rgba(232, 197, 125, 0.25);
  border-radius: 20px;
  padding: 2px;
  gap: 2px;
  margin-left: 6px;
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.4);
}

.player-mode-pill {
  background: transparent;
  border: 1px solid transparent;
  color: #94A3B8;
  font-size: 11px;
  font-weight: 600;
  padding: 3.5px 9px;
  border-radius: 16px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  font-family: inherit;
  white-space: nowrap;
}

.player-mode-pill:hover {
  color: #FFFFFF;
  background: rgba(255, 255, 255, 0.08);
}

.player-mode-pill.active[data-mode="vintage"] {
  background: linear-gradient(135deg, rgba(232, 197, 125, 0.25), rgba(245, 158, 11, 0.22));
  color: #FDE68A;
  border-color: rgba(232, 197, 125, 0.55);
  box-shadow: 0 0 10px rgba(232, 197, 125, 0.25);
}

.player-mode-pill.active[data-mode="live_radio"] {
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.25), rgba(244, 63, 94, 0.22));
  color: #FECDD3;
  border-color: rgba(239, 68, 68, 0.55);
  box-shadow: 0 0 10px rgba(239, 68, 68, 0.25);
}

.mode-live-dot {
  width: 6.5px;
  height: 6.5px;
  border-radius: 50%;
  background: #EF4444;
  box-shadow: 0 0 6px #EF4444;
  display: inline-block;
  animation: liveDotPulseAnim 1.6s ease-in-out infinite alternate;
}

@keyframes liveDotPulseAnim {
  0% {
    transform: scale(0.85);
    opacity: 0.75;
  }

  100% {
    transform: scale(1.25);
    opacity: 1;
    filter: drop-shadow(0 0 4px #EF4444);
  }
}

/* ==========================================================================
   MÓDULO DE RADIO EN VIVO & CANALES SENSORIALES (PSM Card)
   ========================================================================== */
.psm-live-radio-module {
  margin-top: 8px;
  margin-bottom: 2px;
  background: linear-gradient(145deg, rgba(16, 26, 36, 0.95) 0%, rgba(8, 16, 22, 0.98) 100%) !important;
  border: 1px solid rgba(16, 185, 129, 0.35) !important;
  border-radius: 14px !important;
  padding: 12px 14px !important;
  display: flex;
  flex-direction: column;
  gap: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5) !important;
  position: relative !important;
  overflow: hidden !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.psm-live-radio-module::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, rgba(16, 185, 129, 0.6) 50%, transparent 100%);
}

.psm-radio-header {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.psm-radio-title-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
}

.psm-radio-live-badge {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 3px 8px;
  border-radius: 12px;
  background: rgba(239, 68, 68, 0.15);
  border: 1px solid rgba(239, 68, 68, 0.4);
  color: #FCA5A5;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.live-dot-pulse {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #EF4444;
  box-shadow: 0 0 6px #EF4444;
  display: inline-block;
  animation: liveDotPulseAnim 1.6s ease-in-out infinite alternate;
}

.psm-radio-status-tag {
  font-size: 9.5px;
  color: #34D399;
  font-weight: 600;
  padding: 2px 6px;
  background: rgba(16, 185, 129, 0.12);
  border-radius: 6px;
  border: 1px solid rgba(16, 185, 129, 0.25);
}

.psm-radio-country-chip {
  font-size: 11px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  padding: 2px 7px;
  background: rgba(232, 197, 125, 0.12);
  border: 1px solid rgba(232, 197, 125, 0.3);
  border-radius: 6px;
}

/* 3 Canales Sensoriales en Tabs de Alta Conversión */
.psm-radio-channels-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  margin-top: 2px;
  margin-bottom: 2px;
}

.radio-channel-tab {
  background: rgba(0, 0, 0, 0.35);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 10px;
  padding: 6px 4px;
  color: #94A3B8;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  font-family: inherit;
}

.radio-channel-tab:hover {
  background: rgba(255, 255, 255, 0.08);
  color: #FFFFFF;
  border-color: rgba(255, 255, 255, 0.2);
}

.radio-channel-tab.active {
  background: linear-gradient(135deg, rgba(16, 185, 129, 0.2), rgba(245, 158, 11, 0.15));
  border-color: rgba(232, 197, 125, 0.55);
  color: #FDE68A;
  box-shadow: 0 0 10px rgba(16, 185, 129, 0.2);
}

.radio-channel-tab .tab-emoji {
  font-size: 14px;
  line-height: 1;
}

.radio-channel-tab .tab-label {
  font-size: 10px;
  letter-spacing: 0.02em;
}

.psm-radio-body {
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.psm-radio-station-name {
  font-size: 13px;
  font-weight: 700;
  color: #FFFFFF;
  margin: 0;
  line-height: 1.35;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-radio-meta {
  font-size: 11px;
  color: #94A3B8;
  margin: 0 0 2px;
  line-height: 1.35;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-radio-stream-info {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 2px;
}

.stream-pill {
  font-size: 10px;
  font-weight: 600;
  padding: 2.5px 8px;
  border-radius: 6px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #E2E8F0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.stream-cycle-btn {
  margin-left: auto;
  background: rgba(232, 197, 125, 0.12);
  border: 1px solid rgba(232, 197, 125, 0.35);
  border-radius: 8px;
  color: var(--sj-dorado-piel, #E8C57D);
  font-size: 10px;
  font-weight: 600;
  padding: 3.5px 9px;
  cursor: pointer;
  transition: all 0.2s ease;
  font-family: inherit;
}

.stream-cycle-btn:hover {
  background: rgba(232, 197, 125, 0.25);
  color: #FFFFFF;
  border-color: rgba(232, 197, 125, 0.6);
}

/* ==========================================================================
   OMOTENASHI SENSORY GATEWAY (Pasarela de Alternativas Sensoriales)
   ========================================================================== */
.psm-radio-gateway {
  display: none;
  flex-direction: column;
  gap: 10px;
  width: 100%;
  box-sizing: border-box;
  animation: psmGatewayFadeIn 0.35s cubic-bezier(0.16, 1, 0.3, 1);
}

.psm-live-radio-module.gateway-active .psm-radio-header,
.psm-live-radio-module.gateway-active #psm-radio-body-standard {
  display: none !important;
}

.psm-live-radio-module.gateway-active .psm-radio-gateway {
  display: flex !important;
}

@keyframes psmGatewayFadeIn {
  from {
    opacity: 0;
    transform: translateY(4px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.psm-gateway-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.psm-gateway-badge {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 3px 8px;
  border-radius: 12px;
  background: rgba(245, 158, 11, 0.15);
  border: 1px solid rgba(245, 158, 11, 0.45);
  color: #FCD34D;
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.gw-sparkle {
  color: #F59E0B;
  font-size: 11px;
}

.psm-gateway-desc {
  font-size: 11.5px;
  line-height: 1.45;
  color: #CBD5E1;
  margin: 0;
  font-weight: 400;
}

.psm-gateway-options {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
}

.psm-gw-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  border-radius: 10px;
  background: rgba(15, 23, 42, 0.75);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: #FFFFFF;
  cursor: pointer;
  text-align: left;
  transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  font-family: inherit;
  width: 100%;
  box-sizing: border-box;
  position: relative;
  overflow: hidden;
}

.psm-gw-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.35);
}

.psm-gw-btn-icon {
  font-size: 18px;
  flex-shrink: 0;
  line-height: 1;
}

.psm-gw-btn-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  min-width: 0;
}

.psm-gw-btn-tag {
  font-size: 8.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.psm-gw-btn-title {
  font-size: 12px;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: #FFFFFF;
}

.psm-gw-btn-meta {
  font-size: 10px;
  color: #94A3B8;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-gw-btn-arrow {
  font-size: 13px;
  color: rgba(255, 255, 255, 0.4);
  transition: transform 0.2s ease, color 0.2s ease;
  flex-shrink: 0;
}

.psm-gw-btn:hover .psm-gw-btn-arrow {
  transform: translateX(3px);
  color: #FFFFFF;
}

/* Estilo destacado para la Fonoteca Histórica (Opción recomendada) */
.psm-gw-btn-vault {
  background: linear-gradient(135deg, rgba(232, 197, 125, 0.15) 0%, rgba(245, 158, 11, 0.08) 100%);
  border: 1px solid rgba(232, 197, 125, 0.5);
}

.psm-gw-btn-vault .psm-gw-btn-tag {
  color: var(--sj-dorado-piel, #E8C57D);
}

.psm-gw-btn-vault:hover {
  border-color: rgba(232, 197, 125, 0.85);
  box-shadow: 0 0 16px rgba(232, 197, 125, 0.25);
}

/* Estilo para YouTube Curado */
.psm-gw-btn-youtube {
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.12) 0%, rgba(15, 23, 42, 0.7) 100%);
  border: 1px solid rgba(239, 68, 68, 0.35);
}

.psm-gw-btn-youtube .psm-gw-btn-tag {
  color: #FCA5A5;
}

.psm-gw-btn-youtube:hover {
  border-color: rgba(239, 68, 68, 0.65);
  box-shadow: 0 0 14px rgba(239, 68, 68, 0.2);
}

/* Estilo para Frecuencia Limítrofe */
.psm-gw-btn-neighbor {
  background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(15, 23, 42, 0.7) 100%);
  border: 1px solid rgba(16, 185, 129, 0.3);
}

.psm-gw-btn-neighbor .psm-gw-btn-tag {
  color: #6EE7B7;
}

.psm-gw-btn-neighbor:hover {
  border-color: rgba(16, 185, 129, 0.6);
  box-shadow: 0 0 14px rgba(16, 185, 129, 0.2);
}

/* ==========================================================================
   MÓDULO DE MÚSICA CONTEMPORÁNEA (1980s - 2026) YOUTUBE SENSORY KINETIC
   ========================================================================== */
.psm-contemporary-module {
  margin-top: 8px;
  margin-bottom: 2px;
  background: linear-gradient(145deg, rgba(20, 16, 32, 0.95) 0%, rgba(10, 12, 24, 0.98) 100%) !important;
  border: 1px solid rgba(245, 158, 11, 0.35) !important;
  border-radius: 14px !important;
  padding: 12px 14px !important;
  display: flex;
  flex-direction: column;
  gap: 8px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5) !important;
  position: relative !important;
  overflow: hidden !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.psm-contemporary-module::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, rgba(245, 158, 11, 0.7) 50%, transparent 100%);
}

.psm-contemporary-header {
  display: flex !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
  width: 100% !important;
  box-sizing: border-box !important;
}

.psm-contemporary-title-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.psm-contemporary-badge-tag {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  padding: 3px 8px;
  border-radius: 12px;
  background: rgba(245, 158, 11, 0.18);
  border: 1px solid rgba(245, 158, 11, 0.45);
  color: #FDE68A;
}

.psm-contemporary-genre {
  font-size: 11px;
  color: #94A3B8;
  font-weight: 500;
}

.psm-yt-hifi-pill {
  font-size: 9.5px;
  color: #FBBF24;
  font-weight: 700;
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.3);
}

.psm-contemporary-brand-group {
  display: flex;
  align-items: center;
  gap: 6px;
}

.psm-contemporary-brand-mark {
  font-size: 10px;
  font-weight: 700;
  color: #F87171;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

/* Contenedor de Video Embebido en la Tarjeta de Destino (16:9 Solarpunk Frame) */
.psm-yt-embedded-frame-box {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 180px;
  background: #020813;
  border: 1px solid rgba(232, 197, 125, 0.28);
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.65), 0 0 12px rgba(245, 158, 11, 0.15);
  margin: 2px 0 4px;
  transition: all 0.28s cubic-bezier(0.16, 1, 0.3, 1);
}

.psm-yt-embedded-frame-box:hover {
  border-color: rgba(232, 197, 125, 0.55);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.8), 0 0 16px rgba(245, 158, 11, 0.25);
}

.psm-yt-embedded-frame-box .psm-yt-viewport,
.psm-yt-embedded-frame-box iframe {
  width: 100% !important;
  height: 100% !important;
  border: none !important;
  display: block !important;
  border-radius: 9px;
}

.psm-contemporary-body {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.psm-contemporary-track-title {
  font-size: 13.5px;
  font-weight: 700;
  color: #FFFFFF;
  margin: 0;
  line-height: 1.35;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-contemporary-artist {
  font-size: 11px;
  color: var(--sj-dorado-piel, #E8C57D);
  margin: 0;
  line-height: 1.35;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-contemporary-meta-row {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 3px;
}

#psm-contemporary-match-pill {
  color: var(--sj-dorado-piel, #E8C57D);
  background: rgba(232, 197, 125, 0.1);
  border-color: rgba(232, 197, 125, 0.3);
}

#psm-contemporary-lore-pill {
  color: #34D399;
  background: rgba(16, 185, 129, 0.1);
  border-color: rgba(16, 185, 129, 0.3);
}

@media (max-width: 640px) {
  .psm-yt-embedded-frame-box {
    max-height: 155px;
  }
}

/* =========================================================================
   LANZADOR Y MODAL UNIFICADO DE VISTAS CINEMATOGRÁFICAS (Punto 1)
   ========================================================================= */
.psm-cinematic-launcher-wrap {
  width: 100%;
  margin: 4px 0 2px 0;
}

.psm-cine-launcher-btn {
  width: 100%;
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.16) 0%, rgba(16, 185, 129, 0.12) 100%);
  border: 1px solid rgba(232, 197, 125, 0.45);
  color: #FDE68A;
  border-radius: 12px;
  padding: 8px 12px;
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.25);
}

.psm-cine-launcher-btn:hover {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.3) 0%, rgba(16, 185, 129, 0.22) 100%);
  border-color: var(--solar-gold, #F59E0B);
  color: #FFFFFF;
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(245, 158, 11, 0.22);
}

.cine-launch-glyph {
  font-size: 14px;
}

.cine-launch-text {
  flex: 1;
  text-align: left;
  letter-spacing: 0.02em;
}

.cine-launch-spark {
  color: var(--sj-dorado-piel, #E8C57D);
  font-size: 11px;
}

/* Modal Box Card para Vistas Cinematográficas */
.cine-modes-card {
  max-width: 520px !important;
  width: 92% !important;
  background: rgba(8, 18, 28, 0.96) !important;
  border: 1px solid rgba(232, 197, 125, 0.35) !important;
  border-radius: 24px !important;
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.75), 0 0 40px rgba(16, 185, 129, 0.12) !important;
  backdrop-filter: blur(20px) !important;
  -webkit-backdrop-filter: blur(20px) !important;
}

.cine-modes-title-group {
  display: flex;
  align-items: center;
  gap: 10px;
}

.cine-modes-icon {
  font-size: 22px;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: rgba(245, 158, 11, 0.15);
  border: 1px solid rgba(245, 158, 11, 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
}

.cine-modal-sub {
  font-size: 11px;
  color: var(--sj-dorado-piel, #E8C57D);
  font-weight: 500;
}

.cine-modes-body {
  padding: 4px 0 10px 0;
}

.cine-modes-intro {
  font-size: 12px;
  color: #94A3B8;
  line-height: 1.5;
  margin: 0 0 14px 0;
}

.cine-options-grid {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.cine-option-card {
  width: 100%;
  text-align: left;
  background: rgba(15, 28, 42, 0.75);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  padding: 14px 16px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  gap: 14px;
  transition: all 0.25s ease;
  font-family: var(--font-sans);
}

.cine-option-card:hover {
  background: rgba(20, 36, 54, 0.95);
  border-color: rgba(232, 197, 125, 0.45);
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), 0 0 20px rgba(232, 197, 125, 0.12);
}

.cine-opt-badge {
  /* ⚠️ ANTES era position: absolute (top 8, right 12) y **se montaba encima del título** —
     se ve en las tres tarjetas de la captura de Daniel. El DOM ya la ponía como PRIMER hijo,
     así que la intención era que fuera encima del título; al sacarla del flujo, quedó
     flotando sobre él.

     → Ahora está **en el flujo**, dentro de .cine-opt-content y antes del <h4>. **No puede
       superponerse** porque no es absoluta.

     ⚠️ Y NO se resolvió con un padding-right en el título: la insignia más ancha («VISTA DE
     ASTRONAUTA») mide ~113px, y reservarlos habría dejado el título en ~143px de ancho —
     tres líneas para «Vuelo Contemplativo en Dron». **Reservar espacio a ciegas rompe el
     título; sacarlo del flujo arregla las dos cosas.** */
  display: inline-block;
  align-self: flex-start;
  margin-bottom: 6px;
  /* 9px estaba por debajo del suelo de legibilidad de la casa (10.5px). Es una insignia
     corta, así que se queda en 10px en vez de subir al suelo completo. */
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.05em;
  padding: 2px 7px;
  border-radius: 8px;
  /* ⚠️ Aquí había rgba(245,158,11,…) — **el naranja prohibido**, otra vez escrito a mano.
     El ADN manda el oro #E8C57D. */
  background: rgba(232, 197, 125, 0.15);
  border: 1px solid rgba(232, 197, 125, 0.35);
  color: #E8C57D;
}

.cine-opt-glyph {
  font-size: 26px;
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.cine-opt-content {
  flex: 1;
}

.cine-opt-content h4 {
  margin: 0 0 3px 0;
  font-size: 13.5px;
  font-weight: 700;
  color: #FFFFFF;
}

.cine-opt-content p {
  margin: 0;
  font-size: 11px;
  color: #94A3B8;
  line-height: 1.4;
}

.cine-opt-action {
  font-size: 11px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  white-space: nowrap;
}

.cine-option-card:hover .cine-opt-action {
  color: var(--solar-gold, #F59E0B);
}

/* ==========================================================================
   BOTÓN FLOTANTE SUPERIOR DERECHA: SALIR DE MODO CONTEMPLATIVO (Punto 4)
   Visible en Dron, Cúpula Ada e ISS, y Órbita Zen (Desktop, Laptop y Mobile)
   ========================================================================== */
.floating-contemplative-exit-btn {
  position: fixed;
  top: 24px;
  right: 28px;
  z-index: 10005;
  display: none;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  background: rgba(11, 19, 29, 0.90);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(232, 197, 125, 0.45);
  border-radius: 999px;
  color: var(--sj-dorado-piel, #E8C57D);
  font-family: var(--font-sans);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  /* ⚠️ Aquí había `rgba(245, 158, 11, 0.22)`: **el naranja prohibido `#F59E0B`**, el mismo
     que se corrigió en `.btn-primary-gold` (ronda 41). Aparece otra vez, ahora como
     RESPLANDOR del botón de salir de los modos contemplativos.
     Es la misma clase de fallo que el otro: un color escrito a mano donde el ADN pide
     `#E8C57D`. Y no cuenta como la «excepción de temas» del globo, que es para el sistema
     de temas (`[data-theme]`, `--solar-gold`), no para un color fijo en un botón.
     → Ahora el resplandor es del ORO CORPORATIVO, que es lo que corresponde. */
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.55), 0 0 16px rgba(232, 197, 125, 0.22);
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}

.floating-contemplative-exit-btn:hover {
  background: rgba(15, 23, 42, 0.98);
  border-color: var(--solar-gold, #F59E0B);
  color: #FFFFFF;
  transform: translateY(-2px) scale(1.02);
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.65), 0 0 24px rgba(245, 158, 11, 0.40);
}

.floating-contemplative-exit-btn:active {
  transform: translateY(0) scale(0.98);
}

.floating-contemplative-exit-btn .fce-glyph {
  font-size: 14px;
  color: var(--solar-gold, #F59E0B);
  display: flex;
  align-items: center;
  justify-content: center;
}

.floating-contemplative-exit-btn .fce-text {
  letter-spacing: 0.3px;
  white-space: nowrap;
}

.floating-contemplative-exit-btn .fce-badge {
  font-size: 10px;
  font-weight: 800;
  padding: 2px 7px;
  background: rgba(232, 197, 125, 0.15);
  border: 1px solid rgba(232, 197, 125, 0.3);
  border-radius: 6px;
  color: var(--sj-dorado-piel, #E8C57D);
}

/* Laptops pequeñas y Tablets */
@media (max-width: 1024px) {
  .floating-contemplative-exit-btn {
    top: 18px;
    right: 20px;
    padding: 9px 15px;
    font-size: 12.5px;
  }
}

/* Móviles (< 768px): Ergonómico, nunca invade el centro de la pantalla */
@media (max-width: 768px) {
  .floating-contemplative-exit-btn {
    /* ⚠️ Antes: top: 14px; right: 14px — la ESQUINA SUPERIOR DERECHA, donde están el
       selector «Español» y el avatar. Con z-index 10005 el botón se les echaba encima.
       Se ve en la captura del modo Cúpula: la píldora «… Cúpula Ada» colisionando con la
       cabecera y la barra de búsqueda.

       El valor 130px NO es una estimación: sale de las capturas de Daniel, que son la
       única medida real del móvil. A escala ≈1,84, la cabecera ocupa hasta ~70 CSS px y
       la búsqueda con los filtros hasta ~125. Debajo de ahí no hay nada.

       Se CONSERVA el "right: 14px": el botón sigue siendo fácil de alcanzar con el pulgar
       y ya no compite con la cabecera. */
    top: 130px;
    right: 14px;
    padding: 8px 14px;
    font-size: 12px;
    gap: 7px;
  }

  .floating-contemplative-exit-btn .fce-badge {
    display: none;
  }
}







/* ==========================================================================
   ARQUITECTURA MODULAR PSM: SELECTOR DE MODO (MÚSICA LIBRE / RADIO / YOUTUBE)
   Y FILTROS CONECTADOS DINÁMICOS
   ========================================================================== */
.psm-mode-selector-wrap {
  width: 100%;
  margin: 6px 0 8px;
}

.psm-mode-toggle-cluster {
  display: flex;
  background: rgba(4, 13, 20, 0.85);
  border: 1px solid rgba(232, 197, 125, 0.28);
  border-radius: 12px;
  padding: 3px;
  gap: 3px;
  box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.4);
}

.psm-mode-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 7px 4px;
  background: transparent;
  border: none;
  border-radius: 9px;
  color: #94A3B8;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  outline: none;
  white-space: nowrap;
}

.psm-mode-btn .mode-icon {
  font-size: 13px;
  line-height: 1;
}

.psm-mode-btn:hover {
  color: #FFFFFF;
  background: rgba(255, 255, 255, 0.05);
}

.psm-mode-btn.active {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.35) 0%, rgba(217, 119, 6, 0.25) 100%);
  border: 1px solid rgba(245, 158, 11, 0.6);
  color: #FDE68A;
  box-shadow: 0 2px 10px rgba(245, 158, 11, 0.25), inset 0 0 8px rgba(245, 158, 11, 0.2);
}

/* Fila de Filtros Dinámicos Conectados */
.psm-context-filter-row {
  width: 100%;
  margin-bottom: 8px;
}

.psm-context-cluster {
  display: flex;
  gap: 6px;
  width: 100%;
}

.psm-context-filter-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 5px;
  padding: 6px 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(232, 197, 125, 0.22);
  border-radius: 8px;
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: 10.5px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  outline: none;
  min-width: 0;
}

.psm-context-filter-btn:hover {
  background: rgba(232, 197, 125, 0.1);
  border-color: var(--sj-dorado-piel, #E8C57D);
}

.psm-context-filter-btn .c-filter-label {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  text-align: left;
}

.psm-context-filter-btn .c-filter-caret {
  font-size: 9px;
  color: var(--sj-dorado-piel, #E8C57D);
  opacity: 0.8;
}

/* Selector de Diales de Radio (AM / FM / Digital) */
.psm-radio-dials-group {
  display: flex;
  width: 100%;
  gap: 5px;
  background: rgba(0, 0, 0, 0.3);
  padding: 3px;
  border-radius: 9px;
  border: 1px solid rgba(232, 197, 125, 0.18);
}

.psm-dial-pill {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 6px 2px;
  background: transparent;
  border: none;
  border-radius: 7px;
  color: #94A3B8;
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s ease;
  outline: none;
  white-space: nowrap;
}

.psm-dial-pill:hover {
  color: #FFFFFF;
}

.psm-dial-pill.active {
  background: rgba(245, 158, 11, 0.25);
  border: 1px solid rgba(245, 158, 11, 0.5);
  color: #FDE68A;
  box-shadow: 0 0 8px rgba(245, 158, 11, 0.2);
}

/* ==========================================================================
   SIMPLIFICACIÓN SUPREMA UX/UI (Doctrina César Val & Omotenashi - Reducción de Ruido)
   ========================================================================== */

/* 1. Header Zen: Cápsula de búsqueda limpia y despejada en escritorio */
@media (min-width: 901px) {

  .type-filter-cluster,
  .source-filter-cluster,
  .capsule-divider,
  #headerRadioSubmenu {
    display: none !important;
  }

  .search-console-capsule {
    max-width: 500px !important;
    width: 100% !important;
    justify-content: center !important;
  }

  .search-input-zone {
    width: 100% !important;
  }
}

/* 2. Tarjeta Sensorial de Destinos: Cero botones redundantes */
.psm-context-filter-row {
  display: none !important;
}

.psm-toolbar-grid {
  display: none !important;
}

/* 2. Retirar el secreto de la tarjeta de destino (Feedback Usuario) */
#psm-secret-drawer,
.psm-subdrawer#psm-secret-drawer {
  display: none !important;
}

/* Módulo Agrupado: Descripción de Canción / Radio + Botón de Reproducción */
.psm-playback-cluster {
  background: rgba(0, 0, 0, 0.42);
  border: 1px solid rgba(232, 197, 125, 0.25);
  border-radius: 16px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.5);
  margin: 6px 0 10px;
}

.psm-playback-cluster .psm-hero-card {
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
  border: none !important;
  box-shadow: none !important;
}

.psm-playback-cluster .psm-territory-play-btn {
  margin: 0 !important;
  width: 100% !important;
}

/* En Modo YouTube Contemporáneo, ocultar el botón redundante de Play Territory (Doctrina Zero Friction) */
.psm-hero-card.mode-contemporary~#psm-territory-play-btn,
.psm-playback-cluster:has(.mode-contemporary) #psm-territory-play-btn {
  display: none !important;
}

/* ==========================================================================
   LOADER SUTIL SENSORIAL OMOTENASHI (Texto + Micro-animación Solarpunk)
   ========================================================================== */
.psm-audio-loader-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  padding: 8px 16px;
  margin: 2px 0 6px;
  background: rgba(10, 24, 38, 0.96);
  border: 1px solid rgba(232, 197, 125, 0.55);
  border-radius: 20px;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.65), 0 0 16px rgba(245, 158, 11, 0.22);
  box-sizing: border-box;
  animation: sjLoaderFadeIn 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  transition: all 0.25s ease;
  position: relative;
  z-index: 15;
}

.psm-audio-loader-banner .psm-loader-star {
  color: #E8C57D;
  font-size: 14px;
  line-height: 1;
  display: inline-block;
  animation: sjLoaderSpin 1.4s linear infinite;
  text-shadow: 0 0 10px rgba(232, 197, 125, 0.85);
  flex-shrink: 0;
}

.psm-audio-loader-banner .psm-loader-text {
  color: #FFFFFF;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.3px;
  line-height: 1.35;
  font-family: var(--font-sans, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif);
  text-align: center;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.9);
}

@keyframes sjLoaderFadeIn {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes sjLoaderSpin {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}

@media (prefers-reduced-motion: reduce) {
  .psm-audio-loader-banner .psm-loader-star {
    animation: none;
  }
}

/* Destacar botón "Planeas viajar a X" en Verde Solarpunk (Feedback Usuario) */
#psm-plan-btn,
.btn-primary-gold#psm-plan-btn {
  background: linear-gradient(135deg, #10B981 0%, #059669 100%) !important;
  border: 1.5px solid #34D399 !important;
  color: #FFFFFF !important;
  box-shadow: 0 4px 18px rgba(16, 185, 129, 0.4), 0 0 12px rgba(16, 185, 129, 0.25) !important;
  font-weight: 700 !important;
}

#psm-plan-btn:hover,
.btn-primary-gold#psm-plan-btn:hover {
  background: linear-gradient(135deg, #34D399 0%, #10B981 100%) !important;
  box-shadow: 0 6px 24px rgba(16, 185, 129, 0.6), 0 0 18px rgba(52, 211, 153, 0.45) !important;
  transform: translateY(-1.5px) !important;
}

/* Botón Cerrar (X) de la Tarjeta de Destino: Circular / Sin óvalo */
.psm-close-btn {
  background: transparent !important;
  border: none !important;
  color: var(--text-secondary, #94A3B8) !important;
  width: 28px !important;
  height: 28px !important;
  min-width: 28px !important;
  max-width: 28px !important;
  min-height: 28px !important;
  max-height: 28px !important;
  border-radius: 50% !important;
  padding: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  cursor: pointer !important;
  font-size: 16px !important;
  line-height: 1 !important;
  flex-shrink: 0 !important;
  transition: all 0.2s ease !important;
}

.psm-close-btn:hover {
  background: rgba(255, 255, 255, 0.1) !important;
  color: #FFFFFF !important;
}

/* Modal de Vuelo Contemplativo: Sin icono de cámara ni enlaces redundantes */
.cine-modes-icon {
  display: none !important;
}

.cine-opt-action {
  display: none !important;
}

/* Indicador de Modo Zen con Dedicatoria Sutil a Sergio Alejandro */
.zen-memorial-tribute {
  font-size: 11.5px;
  color: var(--sj-dorado-piel, #E8C57D);
  font-style: normal;
  letter-spacing: 0.02em;
  font-weight: 500;
  line-height: 1.45;
  opacity: 0.95;
  text-shadow: 0 0 10px rgba(245, 158, 11, 0.35);
}

/* Vistas y Vuelo Contemplativo como botón secundario refinado */
.psm-cinematic-launcher-wrap {
  margin: 6px 0 10px !important;
}

.psm-cine-launcher-btn {
  width: 100% !important;
  padding: 8px 12px !important;
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(232, 197, 125, 0.25) !important;
  border-radius: 12px !important;
  color: var(--text-primary) !important;
  font-size: 11.5px !important;
  font-weight: 600 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  cursor: pointer !important;
  transition: all 0.22s ease !important;
}

.psm-cine-launcher-btn:hover {
  background: rgba(232, 197, 125, 0.12) !important;
  border-color: var(--sj-dorado-piel, #E8C57D) !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.4) !important;
}

/* 3. Popover de Ajustes Sensoriales del Reproductor HUD */
.player-sensory-settings-popover-wrap {
  position: relative;
  display: flex;
  align-items: center;
}

.player-sensory-settings-popover {
  position: absolute;
  bottom: 50px;
  right: 0;
  width: 250px;
  background: rgba(5, 16, 24, 0.96);
  backdrop-filter: blur(28px);
  -webkit-backdrop-filter: blur(28px);
  border: 1px solid rgba(232, 197, 125, 0.35);
  border-radius: 18px;
  box-shadow: 0 16px 45px rgba(0, 0, 0, 0.9), 0 0 20px rgba(245, 158, 11, 0.2);
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  opacity: 0;
  pointer-events: none;
  transform: translateY(10px) scale(0.96);
  transition: opacity 0.22s ease, transform 0.22s cubic-bezier(0.16, 1, 0.3, 1);
  z-index: 100020;
}

.player-sensory-settings-popover.visible {
  opacity: 1 !important;
  pointer-events: auto !important;
  transform: translateY(0) scale(1) !important;
}

.sensory-popover-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 6px;
  border-bottom: 1px solid rgba(232, 197, 125, 0.18);
}

.sensory-popover-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--sj-dorado-piel, #E8C57D);
}

.sensory-popover-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.sensory-group-label {
  font-size: 9.5px;
  font-weight: 600;
  color: #94A3B8;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin-bottom: 2px;
}

.sensory-popover-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: #E2E8F0;
  cursor: pointer;
  transition: all 0.2s ease;
  width: 100%;
  text-align: left;
  outline: none;
}

.sensory-popover-item:hover {
  background: rgba(232, 197, 125, 0.12);
  border-color: rgba(232, 197, 125, 0.4);
  transform: translateX(2px);
}

.sensory-popover-item.active {
  background: rgba(245, 158, 11, 0.18);
  border-color: #F59E0B;
  box-shadow: 0 0 10px rgba(245, 158, 11, 0.25);
}

.sensory-item-icon {
  font-size: 16px;
  line-height: 1;
  width: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.sensory-item-content {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}

.sensory-item-title {
  font-size: 11px;
  font-weight: 600;
  color: #FFFFFF;
  line-height: 1.2;
}

.sensory-item-sub {
  font-size: 9px;
  color: #94A3B8;
  line-height: 1.2;
}

.sensory-popover-divider {
  height: 1px;
  background: rgba(255, 255, 255, 0.08);
  margin: 2px 0;
}

/* ==========================================================================
   BLINDAJE DE EXCLUSIVIDAD MUTUA DE TARJETA HERO (ZERO OVERLAP)
   ========================================================================== */
#psmHeroCard.mode-vault #psm-vintage-module {
  display: flex !important;
}

#psmHeroCard.mode-vault #psm-live-radio-module {
  display: none !important;
}

#psmHeroCard.mode-vault #psm-contemporary-module {
  display: none !important;
}

#psmHeroCard.mode-radio #psm-vintage-module {
  display: none !important;
}

#psmHeroCard.mode-radio #psm-live-radio-module {
  display: flex !important;
}

#psmHeroCard.mode-radio #psm-contemporary-module {
  display: none !important;
}

#psmHeroCard.mode-contemporary #psm-vintage-module {
  display: none !important;
}

#psmHeroCard.mode-contemporary #psm-live-radio-module {
  display: none !important;
}

#psmHeroCard.mode-contemporary #psm-contemporary-module {
  display: flex !important;
}

/* ==========================================================================
   🛂 CHIP DEL VIAJERO — PASAPORTE SONORO (Fase 1)
   Un solo control, tres estados: invitado · viajero · sellando.
   No toca el buscador, los filtros ni el HUD del reproductor.
   Gobierno: js/SJAuth.js (window.SJPassport)
   ========================================================================== */

.header-col-lang {
  gap: 10px;
  align-items: center;
}

.sj-account-chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 6px 12px 6px 8px;
  border-radius: 999px;
  border: 1px solid var(--glass-border, rgba(232, 197, 125, 0.22));
  background: rgba(5, 16, 22, 0.72);
  backdrop-filter: blur(12px);
  color: var(--text-secondary, #94A3B8);
  font-family: var(--font-sans, 'Outfit', system-ui, sans-serif);
  font-size: 12.5px;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  transition: border-color .3s ease, color .3s ease, background-color .3s ease, transform .3s ease;
  -webkit-tap-highlight-color: transparent;
}

.sj-account-chip:hover {
  border-color: var(--sj-dorado-piel, #E8C57D);
  color: var(--text-primary, #F8FAFC);
}

.sj-account-chip:focus-visible {
  outline: 2px solid var(--sj-dorado-piel, #E8C57D);
  outline-offset: 2px;
}

.sj-account-avatar {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  overflow: hidden;
  color: var(--sj-dorado-piel, #E8C57D);
  background: rgba(232, 197, 125, 0.12);
  border: 1px solid rgba(232, 197, 125, 0.3);
}

.sj-account-chip.is-guest .sj-account-avatar {
  color: var(--text-secondary, #94A3B8);
  background: rgba(148, 163, 184, 0.1);
  border-color: rgba(148, 163, 184, 0.25);
}

.sj-account-avatar-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.sj-account-label {
  font-weight: 600;
  letter-spacing: .2px;
  max-width: 190px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.sj-account-chip.is-traveler .sj-account-label {
  color: var(--text-primary, #F8FAFC);
  max-width: 120px;
}

.sj-account-stats {
  display: none;
  align-items: center;
  gap: 5px;
  padding-left: 7px;
  border-left: 1px solid rgba(255, 255, 255, 0.08);
}

.sj-account-chip.is-traveler .sj-account-stats {
  display: inline-flex;
}

/* Píldoras de gamificación — mismos colores que el HUD de Space Journey */
.sj-stat {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 700;
  font-family: var(--font-sans);
  line-height: 1.35;
}

.sj-stat i {
  font-size: 12px;
}

.sj-stat small {
  font-size: 8.5px;
  opacity: 0.85;
  font-weight: 700;
}

.sj-stat-sc {
  background: rgba(245, 158, 11, 0.15);
  border: 1px solid rgba(245, 158, 11, 0.35);
  color: #f59e0b;
}

.sj-stat-exp {
  background: rgba(16, 185, 129, 0.15);
  border: 1px solid rgba(16, 185, 129, 0.35);
  color: #10b981;
}

.sj-account-arrow {
  font-size: 15px;
  line-height: 1;
  opacity: .5;
}

.sj-account-chip:hover .sj-account-arrow {
  opacity: 1;
}

/* Sellando: anillo dorado animado (el sello del Pasaporte) */
.sj-account-chip.is-sealing .sj-account-avatar::after {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: 50%;
  background: conic-gradient(from 0deg, transparent 0 55%, var(--solar-gold, #F59E0B) 78%, var(--sj-dorado-piel, #E8C57D) 92%, transparent 100%);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
  mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 2px));
  animation: sjSealSpin .9s linear infinite;
}

.sj-account-chip.is-sealing {
  border-color: var(--solar-gold, #F59E0B);
  box-shadow: 0 0 18px rgba(245, 158, 11, 0.35);
}

@keyframes sjSealSpin {
  to {
    transform: rotate(360deg);
  }
}

/* ==========================================================================
   TOAST DEL PASAPORTE — no bloqueante, nunca tapa el globo ni los controles
   Desktop: abajo-izquierda · Mobile (<900px): snackbar sobre el reproductor
   ========================================================================== */

.sj-passport-toast {
  position: fixed;
  left: 18px;
  bottom: 104px;
  z-index: 9600;
  display: flex;
  align-items: center;
  gap: 10px;
  max-width: min(380px, calc(100vw - 36px));
  padding: 11px 10px 11px 14px;
  border-radius: 14px;
  border: 1px solid var(--glass-border, rgba(232, 197, 125, 0.22));
  background: rgba(5, 16, 22, 0.92);
  backdrop-filter: blur(14px);
  color: var(--text-primary, #F8FAFC);
  font-family: var(--font-sans, 'Outfit', system-ui, sans-serif);
  font-size: 13px;
  line-height: 1.35;
  box-shadow: 0 14px 38px rgba(0, 0, 0, 0.45);
  opacity: 0;
  transform: translateY(10px) scale(.97);
  pointer-events: none;
  transition: opacity .26s ease, transform .26s cubic-bezier(0.16, 1, 0.3, 1);
}

.sj-passport-toast.is-in {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}

.sj-passport-toast.is-gold {
  border-color: rgba(245, 158, 11, 0.45);
}

.sj-passport-toast-text {
  flex: 1 1 auto;
  min-width: 0;
}

.sj-passport-toast-action {
  flex: 0 0 auto;
  padding: 7px 12px;
  border-radius: 10px;
  border: 1px solid rgba(245, 158, 11, 0.45);
  background: linear-gradient(135deg, var(--solar-gold, #F59E0B), #D97706);
  color: #1A1206;
  font: inherit;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: filter .25s ease;
}

.sj-passport-toast-action:hover {
  filter: brightness(1.06);
}

.sj-passport-toast-close {
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--text-tertiary, #64748B);
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
  transition: color .25s ease, background-color .25s ease;
}

.sj-passport-toast-close:hover {
  color: var(--text-primary, #F8FAFC);
  background: rgba(255, 255, 255, 0.06);
}

@media (max-width: 900px) {
  .sj-account-chip {
    padding: 6px 8px;
    min-height: 38px;
    gap: 6px;
  }

  .sj-account-chip .sj-account-label {
    display: none;
  }

  .sj-account-label {
    max-width: 0;
  }

  .sj-account-chip .sj-account-arrow {
    display: none;
  }

  .sj-account-chip.is-traveler .sj-account-tokens {
    padding-left: 6px;
    gap: 6px;
  }

  .sj-account-chip.is-traveler .sj-stat-exp {
    display: none;
  }

  .sj-passport-toast {
    left: 12px;
    right: 12px;
    bottom: 128px;
    max-width: none;
  }
}

@media (max-width: 600px) {
  .sj-account-chip.is-traveler .sj-account-stats {
    display: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .sj-account-chip.is-sealing .sj-account-avatar::after {
    animation: none;
  }

  .sj-passport-toast {
    transition: opacity .01ms linear;
    transform: none;
  }

  .sj-passport-toast.is-in {
    transform: none;
  }
}

/* ═══ HUD DE LADO A LADO EN MÓVIL (Daniel, 14-oct-2026) ═══ */
/*
 * Petición de Daniel: «reproductor del HUD de lado a lado».
 *
 * El HUD ya pedía `width: 100%`, pero su contenedor `.bottom-console-deck` está
 * insertado con `left: 10px; right: 10px` — así que el 100 % era el de una caja ya
 * encogida, y quedaban 10 px de margen por lado.
 *
 * Se hace SANGRAR al HUD con márgenes negativos, en vez de ensanchar el contenedor:
 * así la fila de filtros de arriba (épocas, géneros, colores) sigue insertada, que es
 * como está bien. **Sólo se ensancha lo que se pidió ensanchar.**
 *
 * Y al llegar a los bordes, la píldora deja de tener sentido: un reproductor a todo lo
 * ancho se redondea sólo arriba, como una hoja inferior.
 */
@media (max-width: 768px) {
  .bottom-console-deck .player-hud-dock {
    /* Sangrado: anula los 10px del contenedor por cada lado. */
    margin-left: -10px;
    margin-right: -10px;
    width: calc(100% + 20px) !important;
    /* De píldora a hoja inferior: redondeo sólo arriba. */
    border-radius: 18px 18px 0 0;
    /* Un poco más de aire dentro, ahora que hay más ancho. */
    padding-left: 16px;
    padding-right: 16px;
  }

  /*
   * TIPOGRAFÍAS DEL REPRODUCTOR.
   *
   * Estaban en 11px la pista y **9px el subtítulo**. 9px no es una medida de
   * interfaz en ninguna parte: es tamaño de nota al pie. Y son justo los dos textos
   * que el viajero mira mientras escucha. Por eso salían cortados («Kosmo…»).
   *
   * 13px / 10.5px siguen siendo discretos y ya son legibles. Con el sangrado hay
   * 20px más de ancho, así que caben mejor sin tocar nada más.
   */
  .player-track-title {
    font-size: 13px;
  }

  .player-track-sub {
    font-size: 10.5px;
  }
}

/* ═══ SUELO DE LEGIBILIDAD: ningún texto por debajo de 10.5px ═══ */
/*
 * Auditoría del 14-oct-2026, a raíz de «ajustaría tipografías» (Daniel).
 *
 * Había **19 valores por debajo de 10px**, y varios son texto que hay que leer:
 * etiquetas de botón a 8px, descripciones a 9.5px, insignias de estado.
 * **8px no se lee en ninguna pantalla.** No es una preferencia: es un defecto.
 *
 * SE APLICA UN SUELO DE 10.5px A LOS TEXTOS, y nada más:
 *
 *   · **No se toca ninguna regla original.** Son overrides al final del fichero, donde
 *     ganan por orden de cascada. Revertir = borrar este bloque.
 *   · **Sólo TEXTO, nunca glifos.** Una flecha o un separador a 9px no es un problema
 *     de legibilidad, y agrandarlo SÍ puede romper su caja. Se quedan como están.
 *   · **La zona gris (10-11px) NO se toca.** Puede estar bien en micro-copy corto y
 *     mal en algo que hay que leer, y eso necesita una mirada, no una regla.
 *
 * El suelo es 10.5px y no 12px a propósito: sube lo que está mal (1 a 2.5px) sin
 * arriesgar desbordes en insignias y pastillas, que es donde vive casi todo esto.
 */

.psm-tool-btn .tool-label {
  font-size: 10.5px;
}

.gct-tag {
  font-size: 10.5px;
}

.vol-popover-title {
  font-size: 10.5px;
}

.sj-stat small {
  font-size: 10.5px;
}

.player-source-tag {
  font-size: 10.5px;
}

.player-track-sub {
  font-size: 10.5px;
}

.eatb-label {
  font-size: 10.5px;
}

.cine-opt-badge {
  font-size: 10.5px;
}

.sensory-item-sub {
  font-size: 10.5px;
}

.cine-badge-sub {
  font-size: 10.5px;
}

.player-license-link {
  font-size: 10.5px;
}

.tp-p-desc {
  font-size: 10.5px;
}

.psm-artist-track-label {
  font-size: 10.5px;
}

.vol-popover-percent {
  font-size: 10.5px;
}

.psm-radio-status-tag {
  font-size: 10.5px;
}

.psm-yt-hifi-pill {
  font-size: 10.5px;
}

.sensory-group-label {
  font-size: 10.5px;
}

/* ═══ BARRA DE SCROLL VISIBLE EN MÓVIL (Daniel, 14-oct-2026) ═══
 *
 * «agrega una barra lateral de scroll del color del tema para que el usuario pueda intuir
 *  el scroll»
 *
 * ⚠️ La regla móvil YA tenía scrollbar-width y scrollbar-color... **pero scrollbar-color NO
 * está soportado en móvil.** WebKit y Blink —los navegadores de todos los móviles— no lo
 * implementan; sólo Firefox de escritorio. **Por eso no se veía ninguna barra.**
 *
 * → Hace falta ::-webkit-scrollbar, que es lo que esos navegadores SÍ usan.
 *
 * Y no es cosmético: **sin barra no se sabe que hay más contenido**, y entonces el CTA de
 * abajo es invisible sin que se entienda por qué. **La barra es lo que hace que el CTA se
 * descubra solo** — que era justo lo que el sticky intentaba resolver por la fuerza.
 */
.psm-card-container::-webkit-scrollbar,
.psm-card-inner::-webkit-scrollbar {
  width: 5px;
}

.psm-card-container::-webkit-scrollbar-track,
.psm-card-inner::-webkit-scrollbar-track {
  background: rgba(232, 197, 125, 0.08);
  border-radius: 3px;
}

.psm-card-container::-webkit-scrollbar-thumb,
.psm-card-inner::-webkit-scrollbar-thumb {
  background: rgba(232, 197, 125, 0.45);
  /* el oro del ADN */
  border-radius: 3px;
}

/* ═══ PUNTO 2 · LA EXTENSIÓN DE CHROME NO EXISTE EN MÓVIL (Daniel, 14-oct-2026) ═══
 *
 * «Enlace a extensión de Chrome en un celular no tiene sentido.»
 * Y es más fuerte de lo que parece: **Chrome para Android NO soporta extensiones.** No es que
 * sean menos útiles en un celular — **no se pueden instalar.**
 *
 * Un botón que lleva a una tienda donde el producto no se puede instalar no es sólo espacio
 * perdido: **es una promesa que el dispositivo no puede cumplir.**
 *
 * ⚠️ Y NO se borra: en ESCRITORIO la extensión es el núcleo del modelo —el Protocolo Kairós,
 *    el Copilot de llegada, los deep-links con UTMs— y el skill `chrome-extension-architect`
 *    describe todo su flujo en escritorio. **Se oculta sólo donde no funciona.**
 */
@media (max-width: 900px) {

  /* ⚠️ Los selectores son los REALES, leídos del CSS — no los que supuse.
     El primer intento usó «.ext-cta-card», que NO existe: la clase de la tarjeta es
     «.ext-install-card». Con un nombre inventado, la tarjeta habría seguido visible y la
     regla habría parecido correcta. */
  .ext-install-card,
  .ext-cta-install-btn,
  #extInstallCtaBtn,
  #extSaveMusicBtn,
  .ext-browsers-section,
  .ext-browsers-title,
  .ext-browsers-grid,
  .ext-browser-card,
  .ext-cws-badge-note {
    display: none !important;
  }
}

/* ==========================================================================
   REINGENIERÍA DEL PANEL DE DESTINO (CERO GRASA, ZERO-SCROLL & VIRALIDAD)
   ========================================================================== */
.psm-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.psm-header-flight-btn {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.15) 0%, rgba(217, 119, 6, 0.25) 100%);
  border: 1px solid rgba(232, 197, 125, 0.45);
  color: var(--sj-dorado-piel, #E8C57D);
  padding: 4px 12px;
  border-radius: 999px;
  font-family: 'Space Grotesk', 'Outfit', sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  cursor: pointer;
  transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1.4;
}

.psm-header-flight-btn:hover {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.35) 0%, rgba(217, 119, 6, 0.5) 100%);
  border-color: var(--sj-dorado-piel, #E8C57D);
  color: #FFFFFF;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(245, 158, 11, 0.3);
}

.psm-header-flight-btn:active {
  transform: translateY(0);
}

/* Micro-cápsulas compactas de ~58-60px */
.psm-capsule-module {
  min-height: 54px;
  background: rgba(15, 23, 42, 0.65);
  border: 1px solid rgba(232, 197, 125, 0.2);
  border-radius: 12px;
  padding: 8px 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  backdrop-filter: blur(10px);
  transition: border-color 0.25s ease, box-shadow 0.25s ease;
  box-sizing: border-box;
}

.psm-capsule-module:hover {
  border-color: rgba(232, 197, 125, 0.4);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
}

.psm-live-radio-module.psm-capsule-module {
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  overflow: hidden;
}

.psm-live-radio-module .psm-radio-body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  gap: 10px;
  width: 100%;
  box-sizing: border-box;
}

.psm-contemporary-module.psm-capsule-module {
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  overflow: hidden;
}

.psm-contemporary-module .psm-contemporary-body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  gap: 10px;
  width: 100%;
  box-sizing: border-box;
}

.psm-capsule-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  overflow: hidden;
  flex: 1;
  min-width: 0;
}

.psm-capsule-title {
  font-size: 13px;
  font-weight: 600;
  color: #FFFFFF;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: -0.01em;
}

.psm-capsule-sub {
  font-size: 11px;
  color: #94A3B8;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-capsule-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.psm-capsule-btn {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.12);
  color: #E2E8F0;
  padding: 5px 11px;
  border-radius: 8px;
  font-family: 'Outfit', sans-serif;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1.3;
}

.psm-capsule-btn:hover {
  background: rgba(255, 255, 255, 0.12);
  color: #FFFFFF;
  border-color: rgba(232, 197, 125, 0.4);
}

.psm-capsule-cycle {
  padding: 5px 9px;
  font-size: 11px;
  gap: 5px;
}

.psm-capsule-cycle i {
  font-size: 11px;
}

.psm-capsule-prev {
  padding: 5px 8px;
  font-size: 11px;
}

.psm-capsule-prev i {
  font-size: 11px;
}

.psm-cycle-label {
  display: inline-block;
  font-weight: 600;
  font-size: 11px;
}

.psm-capsule-btn[disabled],
.psm-capsule-btn.disabled {
  opacity: 0.3 !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
}

.psm-capsule-share {
  color: var(--sj-dorado-piel, #E8C57D);
  border-color: rgba(232, 197, 125, 0.35);
  background: rgba(232, 197, 125, 0.08);
  gap: 5px;
}

.psm-capsule-share:hover {
  background: rgba(232, 197, 125, 0.2);
  border-color: var(--sj-dorado-piel, #E8C57D);
  color: #FFFFFF;
}

.psm-capsule-playlist {
  background: rgba(239, 68, 68, 0.15);
  border-color: rgba(239, 68, 68, 0.35);
  color: #FCA5A5;
}

.psm-capsule-playlist:hover {
  background: rgba(239, 68, 68, 0.28);
  border-color: #EF4444;
  color: #FFFFFF;
}

/* ==========================================================================
   ✦ Smart Mix Sintético & Ergonómico (SensoryMixEngine & Regla 6)
   Dropdown select + botón de acción primario ámbar
   ========================================================================== */
.psm-smart-mix-box {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 8px;
  margin-bottom: 4px;
  padding: 4px 6px;
  background: rgba(15, 23, 42, 0.45);
  border: 1px solid rgba(232, 197, 125, 0.22);
  border-radius: 10px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.psm-mix-select-wrapper {
  position: relative;
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 0;
  gap: 6px;
  padding-left: 2px;
}

.psm-mix-select-icon {
  font-size: 13px;
  line-height: 1;
  color: var(--sj-dorado-piel, #E8C57D);
  flex-shrink: 0;
}

.psm-mix-select {
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
  background: transparent;
  border: none;
  outline: none;
  color: #F1F5F9;
  font-family: 'Outfit', -apple-system, sans-serif;
  font-size: 11.5px;
  font-weight: 500;
  padding: 4px 18px 4px 0;
  cursor: pointer;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E8C57D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 2px center;
  background-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}

.psm-mix-select option {
  background: #0B132B;
  color: #F1F5F9;
  font-family: 'Outfit', -apple-system, sans-serif;
  font-size: 12px;
  padding: 6px 10px;
}

.psm-mix-launch-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  background: linear-gradient(135deg, #F59E0B 0%, #D97706 100%);
  border: 1px solid rgba(245, 158, 11, 0.8);
  border-radius: 8px;
  color: #020813;
  font-family: 'Outfit', -apple-system, sans-serif;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.3px;
  padding: 5px 12px;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(245, 158, 11, 0.35);
  transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1);
}

.psm-mix-launch-btn:hover {
  background: linear-gradient(135deg, #FBBF24 0%, #D97706 100%);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(245, 158, 11, 0.55);
}

.psm-mix-launch-btn:active {
  transform: translateY(0);
}

.psm-mix-launch-btn.active {
  background: linear-gradient(135deg, #10B981 0%, #059669 100%);
  border-color: #10B981;
  color: #FFFFFF;
  box-shadow: 0 2px 10px rgba(16, 185, 129, 0.45);
}

/* ═══════════════════════════════════════════════════════════════════════════
   MÓDULO UNIFICADO B2B: EXPERIENCIAS & ALIADOS DE DESTINO (V4.1)
   ═══════════════════════════════════════════════════════════════════════════ */
.psm-allies-module {
  margin-top: 8px;
  margin-bottom: 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Pestañas de Alternancia de Aliados (Mismo Estilo Outfit y Branding que Selector de Radio - Punto 2) */
.psm-allies-tabs {
  display: flex;
  background: rgba(4, 13, 20, 0.85);
  border: 1px solid rgba(232, 197, 125, 0.28);
  border-radius: 12px;
  padding: 3px;
  gap: 3px;
  box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.4);
  width: 100%;
  box-sizing: border-box;
}

.psm-ally-tab {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 7px 4px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 9px;
  color: #94A3B8;
  font-family: 'Outfit', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  outline: none;
  white-space: nowrap;
  line-height: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  user-select: none;
}

.psm-ally-tab span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.psm-ally-tab:hover {
  color: #FFFFFF;
  background: rgba(255, 255, 255, 0.05);
}

.psm-ally-tab.active {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.35) 0%, rgba(217, 119, 6, 0.25) 100%);
  border: 1px solid rgba(245, 158, 11, 0.6);
  color: #FDE68A;
  box-shadow: 0 2px 10px rgba(245, 158, 11, 0.25), inset 0 0 8px rgba(245, 158, 11, 0.2);
  font-weight: 700;
}

/* Tarjeta Showcase Unificada */
.psm-ally-card {
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.03) 0%, rgba(15, 23, 42, 0.75) 100%);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 12px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  box-sizing: border-box;
  transition: border-color 0.25s ease, transform 0.2s ease, box-shadow 0.25s ease;
}

.psm-ally-card:hover {
  border-color: var(--theme-accent, #10B981);
  box-shadow: 0 4px 16px var(--theme-glow, rgba(16, 185, 129, 0.2));
}

.psm-ally-top {
  display: flex;
  align-items: center;
  gap: 10px;
}

.psm-ally-avatar-box {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  overflow: hidden;
  border: 1.5px solid var(--theme-accent, #10B981);
  background: #061018;
}

.psm-ally-avatar-box.psm-hotel-box,
.psm-ally-avatar-box.psm-prod-box {
  border-radius: 8px;
}

.psm-ally-avatar {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.psm-ally-header-info {
  flex: 1;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.psm-ally-badge-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
}

.psm-ally-badge {
  font-size: 9.5px;
  font-weight: 700;
  color: var(--sj-dorado-piel, #E8C57D);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.psm-ally-badge.psm-badge-gold {
  color: #E8C57D;
}

.psm-ally-badge.psm-badge-emerald {
  color: var(--theme-accent, #10B981);
}

/* Carrusel de Navegación Centrado Debajo del Botón (Puntos 1 y 2) */
.psm-carousel-nav {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  background: rgba(4, 13, 20, 0.85);
  border: 1px solid rgba(232, 197, 125, 0.28);
  border-radius: 14px;
  padding: 3px 8px;
  margin: 6px auto 0 auto;
  align-self: center;
  box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.35);
}

.psm-carousel-btn {
  background: var(--theme-accent, #10B981);
  color: #FFFFFF !important;
  border: none;
  width: 20px;
  height: 20px;
  min-width: 20px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  margin: 0;
  transition: all 0.15s ease;
  user-select: none;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
}

.psm-carousel-btn svg {
  display: block;
  pointer-events: none;
}

.psm-carousel-btn:hover {
  opacity: 0.88;
  transform: scale(1.1);
}

.psm-carousel-counter {
  font-family: 'Outfit', sans-serif;
  font-size: 9px;
  font-weight: 700;
  color: #FDE68A;
  padding: 0 4px;
  text-transform: uppercase;
  white-space: nowrap;
  user-select: none;
  letter-spacing: 0.04em;
}

.psm-ally-title {
  font-size: 13px;
  font-weight: 700;
  color: #FFFFFF;
  margin: 0;
  line-height: 1.3;
  letter-spacing: -0.01em;
}

.psm-ally-desc {
  font-size: 11px;
  color: #94A3B8;
  margin: 0;
  line-height: 1.4;
}

/* Botones en Filas Distintas (Puntos 2 y 4: Adaptados al Tema Activo) */
.psm-ally-actions.psm-stacked-actions {
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
  margin-top: 4px;
}

.psm-btn-emerald {
  width: 100%;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  background: var(--theme-btn-gradient, linear-gradient(135deg, #10B981 0%, #059669 100%)) !important;
  color: #FFFFFF !important;
  font-size: 11px;
  font-weight: 700;
  padding: 8px 12px;
  border-radius: 8px;
  text-decoration: none;
  transition: opacity 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
  box-shadow: 0 2px 10px var(--theme-glow, rgba(16, 185, 129, 0.35));
  text-align: center;
  border: none;
}

.psm-btn-emerald:hover {
  opacity: 0.94;
  transform: translateY(-1px);
}

.psm-btn-gold {
  width: 100%;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  background: linear-gradient(135deg, rgba(232, 197, 125, 0.25) 0%, rgba(232, 197, 125, 0.1) 100%);
  border: 1px solid #E8C57D;
  color: #E8C57D;
  font-size: 11px;
  font-weight: 700;
  padding: 8px 12px;
  border-radius: 8px;
  text-decoration: none;
  transition: background 0.2s ease;
  text-align: center;
}

.psm-btn-gold:hover {
  background: rgba(232, 197, 125, 0.35);
  color: #FFFFFF;
}

.psm-btn-gold-outline {
  width: 100%;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  background: rgba(15, 23, 42, 0.7);
  border: 1px solid rgba(232, 197, 125, 0.45);
  color: #E8C57D;
  font-size: 11px;
  font-weight: 600;
  padding: 7px 12px;
  border-radius: 8px;
  text-decoration: none;
  transition: all 0.2s ease;
  text-align: center;
}

.psm-btn-gold-outline:hover {
  border-color: #E8C57D;
  background: rgba(232, 197, 125, 0.15);
  color: #FFFFFF;
}


/* Alineación limpia del botón primario de viaje sin flechas ni saturación */
#psm-plan-btn,
.btn-primary-gold#psm-plan-btn {
  justify-content: center !important;
  text-align: center !important;
  padding: 10px 16px !important;
}


/* ============================================================
   Filtro de géneros: guía de familia + CTA 'Escuchar esta selección'
   Dorado #E8C57D para texto; botón primario ámbar #F59E0B → #D97706 (Regla 6)
   ============================================================ */
.popover-hint {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 14px 12px;
  margin: 4px 2px;
  border: 1px dashed rgba(232, 197, 125, 0.35);
  border-radius: 12px;
  color: rgba(255, 255, 255, 0.72);
  font-size: 13px;
  line-height: 1.45;
}

.popover-hint span:first-child {
  color: #E8C57D;
  font-size: 16px;
}

.genre-apply-bar {
  position: sticky;
  bottom: 0;
  z-index: 5;
  margin-top: 10px;
  padding: 12px 4px 4px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: stretch;
  background: linear-gradient(to top, rgba(5, 14, 22, 0.98) 70%, rgba(5, 14, 22, 0));
}

.genre-apply-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 44px;
  padding: 10px 18px;
  border: 0;
  border-radius: 12px;
  cursor: pointer;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.02em;
  color: #1a1205;
  background: linear-gradient(135deg, #F59E0B, #D97706);
  box-shadow: 0 6px 18px rgba(245, 158, 11, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.25);
  transition: transform 0.18s ease, box-shadow 0.18s ease, opacity 0.18s ease;
}

.genre-apply-btn:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(245, 158, 11, 0.4);
}

.genre-apply-btn:focus-visible {
  outline: 2px solid #E8C57D;
  outline-offset: 2px;
}

.genre-apply-btn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}

.genre-apply-sub {
  text-align: center;
  font-size: 12px;
  color: #E8C57D;
  opacity: 0.9;
  min-height: 16px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (prefers-reduced-motion: reduce) {
  .genre-apply-btn {
    transition: none;
  }

  .genre-apply-btn:hover:not(:disabled) {
    transform: none;
  }
}

/* =========================================================================
   AVISO SENSORIAL DE AUSENCIA Y REDIRECCIÓN DE GÉNERO (Doctrina Omotenashi)
   ========================================================================= */
.psm-genre-redirect-notice {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 16px;
  background: rgba(10, 16, 28, 0.98);
  border: 1px solid rgba(232, 197, 125, 0.4);
  border-radius: 12px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.65), inset 0 1px 0 rgba(232, 197, 125, 0.25);
  margin-bottom: 8px;
  box-sizing: border-box;
  width: 100%;
  animation: psmNoticeFadeIn 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}

@keyframes psmNoticeFadeIn {
  from {
    opacity: 0;
    transform: translateY(-4px) scale(0.98);
  }

  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.pgr-header {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}

.pgr-icon-badge {
  width: 30px;
  height: 30px;
  border-radius: 8px;
  background: rgba(232, 197, 125, 0.14);
  border: 1px solid rgba(232, 197, 125, 0.35);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  flex-shrink: 0;
}

.pgr-header-texts {
  flex: 1;
  min-width: 0;
}

.pgr-title {
  font-family: 'Outfit', sans-serif;
  font-size: 14px;
  font-weight: 700;
  color: #E8C57D;
  letter-spacing: 0.01em;
  margin: 0;
  line-height: 1.3;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.pgr-desc {
  font-size: 12px;
  line-height: 1.45;
  color: rgba(226, 232, 240, 0.88);
  margin: 0;
}

.pgr-target-box {
  background: rgba(255, 255, 255, 0.035);
  border: 1px solid rgba(232, 197, 125, 0.25);
  border-radius: 10px;
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  box-sizing: border-box;
  width: 100%;
}

.pgr-target-label-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  min-width: 0;
}

.pgr-target-label {
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #E8C57D;
  font-weight: 700;
  white-space: nowrap;
}

.pgr-distance-chip {
  font-size: 10px;
  color: #F59E0B;
  background: rgba(245, 158, 11, 0.12);
  border: 1px solid rgba(245, 158, 11, 0.28);
  padding: 1px 8px;
  border-radius: 99px;
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
}

.pgr-target-dest-row {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.pgr-target-flag {
  width: 22px;
  height: 16px;
  border-radius: 2px;
  flex-shrink: 0;
  display: inline-block;
  background-size: cover;
  background-position: center;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
}

.pgr-target-country {
  font-family: 'Outfit', sans-serif;
  font-size: 13.5px;
  font-weight: 700;
  color: #FFFFFF;
  letter-spacing: 0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  min-width: 0;
}

.pgr-target-track-row {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 11.5px;
  color: rgba(226, 232, 240, 0.82);
  padding-top: 4px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  min-width: 0;
}

.pgr-track-icon {
  font-size: 11px;
  color: #E8C57D;
  opacity: 0.9;
  flex-shrink: 0;
}

.pgr-target-track {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  min-width: 0;
}

.pgr-countdown-wrap {
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin-top: 2px;
}

.pgr-countdown-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  min-width: 0;
}

.pgr-countdown-label {
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: rgba(148, 163, 184, 0.8);
  white-space: nowrap;
}

.pgr-countdown-text {
  font-size: 11px;
  color: #E8C57D;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.pgr-countdown-bar-bg {
  width: 100%;
  height: 4px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 99px;
  overflow: hidden;
}

.pgr-countdown-bar {
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, #F59E0B, #E8C57D);
  border-radius: 99px;
  transition: width 0.1s linear;
}

.pgr-actions {
  display: flex;
  gap: 8px;
  margin-top: 4px;
  box-sizing: border-box;
  width: 100%;
}

.btn-pgr-fly {
  flex: 1.25;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 40px;
  height: 40px;
  box-sizing: border-box;
  padding: 0 12px;
  border: 0;
  border-radius: 8px;
  font-family: 'Outfit', sans-serif;
  font-size: 12px;
  font-weight: 700;
  color: #020813;
  background: linear-gradient(135deg, #F59E0B, #D97706);
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(245, 158, 11, 0.28);
  transition: transform 0.18s ease, box-shadow 0.18s ease;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

.btn-pgr-fly:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(245, 158, 11, 0.42);
}

.btn-pgr-stay {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 40px;
  height: 40px;
  box-sizing: border-box;
  padding: 0 10px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 8px;
  font-family: 'Outfit', sans-serif;
  font-size: 11.5px;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.88);
  background: rgba(255, 255, 255, 0.05);
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

.btn-pgr-stay:hover {
  background: rgba(255, 255, 255, 0.09);
  border-color: rgba(255, 255, 255, 0.35);
}