/* Estilo de la aplicación de canciones. Editable libremente.
   Sistema de TEMAS: se elige con el selector del encabezado y se guarda
   en el navegador. El tema se aplica con data-theme en <html>. */

/* Tema por defecto: NOCHE DE ADORACIÓN (oscuro elegante) */
:root, [data-theme="noche"] {
    --color-principal: #9d7bff;
    --color-principal-oscuro: #7d5cff;
    --gris-fondo: #14121f;
    --card: #1f1c2e;
    --input-bg: #2a2740;
    --gris-borde: #322e47;
    --texto: #f2f0fa;
    --texto-suave: #a39fbb;
    --rojo: #ff6b6b;
    --hero: linear-gradient(135deg, #2a1f4d 0%, #47338f 55%, #5ad1e0 160%);
}

/* AMANECER (cálido y suave) */
[data-theme="amanecer"] {
    --color-principal: #e8688a;
    --color-principal-oscuro: #d24f73;
    --gris-fondo: #fbf7f0;
    --card: #ffffff;
    --input-bg: #ffffff;
    --gris-borde: #ece3d5;
    --texto: #3a3330;
    --texto-suave: #8a7d70;
    --rojo: #d64545;
    --hero: linear-gradient(135deg, #f5a623 0%, #e8688a 100%);
}

/* VIOLETA SERENO (claro, refinado) */
[data-theme="violeta"] {
    --color-principal: #6d4aff;
    --color-principal-oscuro: #5639d6;
    --gris-fondo: #f6f5fa;
    --card: #ffffff;
    --input-bg: #ffffff;
    --gris-borde: #e0e0e6;
    --texto: #222222;
    --texto-suave: #777777;
    --rojo: #d64545;
    --hero: linear-gradient(135deg, #6d4aff 0%, #9d7bff 100%);
}

* { box-sizing: border-box; }

body {
    margin: 0;
    font-family: -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    background: var(--gris-fondo);
    color: var(--texto);
    line-height: 1.5;
}

header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    background: var(--hero);
    padding: 16px 24px;
    position: sticky;
    top: 0;
    z-index: 10;
    box-shadow: 0 2px 12px rgba(0,0,0,0.18);
}

.logo {
    font-size: 1.35rem;
    font-weight: 800;
    color: #ffffff;
    text-decoration: none;
    letter-spacing: 0.3px;
}
.header-acciones { display: flex; align-items: center; gap: 10px; }

/* Selector de tema */
.tema-selector {
    background: rgba(255,255,255,0.15);
    color: #fff;
    border: 1px solid rgba(255,255,255,0.4);
    border-radius: 8px;
    padding: 7px 10px;
    font-size: 0.85rem;
    cursor: pointer;
}
.tema-selector option { color: #222; }

.usuario-chip {
    color: #fff;
    font-size: 0.85rem;
    background: rgba(255,255,255,0.15);
    border-radius: 14px;
    padding: 5px 12px;
}

/* El botón "+ Nueva canción" sobre el degradé del header */
header .btn-nueva {
    background: rgba(255,255,255,0.18);
    border: 1px solid rgba(255,255,255,0.45);
    color: #fff;
}
header .btn-nueva:hover { background: rgba(255,255,255,0.3); }

/* Controles de formulario adaptados al tema (importante en modo oscuro) */
input, select, textarea {
    background: var(--input-bg);
    color: var(--texto);
}
input::placeholder, textarea::placeholder { color: var(--texto-suave); }

/* ── Wrapper de dos "páginas" horizontales con snap-scroll ─────── */
.vistas-h {
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
    scrollbar-width: none;   /* Firefox */
}
.vistas-h::-webkit-scrollbar { display: none; }

/* Sin panel derecho: bloquear scroll horizontal para evitar espacio vacío */
.vistas-h.sin-panel-der { overflow-x: hidden; }

/* main ocupa exactamente un viewport de ancho */
main {
    flex: 0 0 100vw;
    min-width: 100vw;
    max-width: 100vw;
    scroll-snap-align: start;
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}
/* El contenido interno mantiene el centrado y padding originales */
.main-cont {
    max-width: 820px;
    margin: 24px auto;
    padding: 0 20px;
}
main.main-cancion .main-cont {
    max-width: 1300px;
}

/* En la página de canción se necesita más ancho para las 2 columnas */
main.main-cancion {
    max-width: 1300px;
}

footer {
    text-align: center;
    color: var(--texto-suave);
    font-size: 0.85rem;
    padding: 30px 0;
}

/* Botones */
.btn {
    display: inline-block;
    padding: 8px 16px;
    border-radius: 8px;
    border: 1px solid var(--gris-borde);
    background: var(--card);
    color: var(--texto);
    text-decoration: none;
    font-size: 0.95rem;
    cursor: pointer;
    transition: background 0.15s;
}
.btn:hover { background: var(--gris-fondo); }

.btn-nueva {
    background: var(--color-principal);
    color: white;
    border-color: var(--color-principal);
}
.btn-nueva:hover { background: var(--color-principal-oscuro); }

.btn-rojo { color: var(--rojo); border-color: var(--rojo); }
.btn-rojo:hover { background: #fdeaea; }

.btn-gris { color: var(--texto-suave); }

/* Botón "← Menú principal" (aparece en páginas secundarias) */
.btn-volver-inicio {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.82rem;
    color: var(--texto-suave);
    text-decoration: none;
    padding: 4px 10px;
    border-radius: 20px;
    border: 1px solid var(--gris-borde);
    margin-bottom: 12px;
    transition: color .15s, border-color .15s, background .15s;
}
.btn-volver-inicio:hover {
    color: var(--color-principal);
    border-color: var(--color-principal);
    background: rgba(157,123,255,.07);
}

/* Fila de fecha + botón sábado siguiente */
.rep-fecha-fila {
    display: flex;
    gap: 6px;
    align-items: center;
    margin-bottom: 10px;
}
.rep-fecha-fila input[type="date"] {
    flex: 1;
    min-width: 0;
}

/* Avisos (mensajes flash) */
.aviso {
    background: #eafbe7;
    border: 1px solid #b8e6b0;
    color: #2d6a23;
    padding: 10px 16px;
    border-radius: 8px;
    margin-bottom: 16px;
}

/* Buscador */
.buscador {
    display: flex;
    gap: 8px;
    margin-bottom: 20px;
}
.buscador input {
    flex: 1;
    padding: 10px 14px;
    border: 1px solid var(--gris-borde);
    border-radius: 8px;
    font-size: 1rem;
}

.contador { color: var(--texto-suave); font-size: 0.9rem; }

/* Índice desplegable con filtro instantáneo */
.indice {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    margin-bottom: 16px;
    padding: 0 4px;
}
.indice-titulo {
    padding: 12px 14px;
    cursor: pointer;
    font-weight: 600;
    color: var(--color-principal);
    list-style: none;
    user-select: none;
}
.indice-titulo::-webkit-details-marker { display: none; }
.indice-filtro {
    width: 100%;
    padding: 9px 12px;
    border: 1px solid var(--gris-borde);
    border-radius: 8px;
    font-size: 0.95rem;
    margin: 0 0 10px;
}
.indice-lista {
    list-style: none;
    margin: 0 0 6px;
    padding: 0;
    max-height: 320px;
    overflow-y: auto;
    columns: 2;
    column-gap: 20px;
}
.indice-lista li { break-inside: avoid; margin-bottom: 4px; }
.indice-lista a {
    text-decoration: none;
    color: var(--texto);
    font-size: 0.92rem;
}
.indice-lista a:hover { color: var(--color-principal); text-decoration: underline; }
.indice-artista { color: var(--texto-suave); font-size: 0.82rem; }
.indice-sin-resultados { color: var(--texto-suave); padding: 0 14px 10px; }

@media (max-width: 600px) {
    .indice-lista { columns: 1; }
}

/* Importar canciones */
.importar-bloque {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 16px 18px;
    margin-bottom: 16px;
}
.importar-bloque h3 { margin: 0 0 6px; }

/* YouTube: fijar link faltante */
.yt-fijar { display: inline-flex; gap: 6px; margin-left: 8px; }
.yt-link-input { padding: 5px 8px; border: 1px solid var(--gris-borde); border-radius: 6px; font-size: 0.82rem; }

/* Barra de filtros del listado */
.filtros-barra {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: center;
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 10px 14px;
    margin-bottom: 14px;
    font-size: 0.88rem;
    color: var(--texto-suave);
}
.filtros-barra select {
    padding: 6px 9px;
    border: 1px solid var(--gris-borde);
    border-radius: 6px;
    margin-left: 4px;
}

/* Apariciones en eventos (detalle de canción) */
.apariciones {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 8px;
    padding: 10px 14px;
    margin-bottom: 14px;
    font-size: 0.9rem;
    color: var(--texto-suave);
}
.aparicion-chip {
    display: inline-block;
    background: var(--gris-fondo);
    border-radius: 10px;
    padding: 2px 9px;
    margin: 2px;
    font-size: 0.82rem;
}

/* Historial: número de lista y búsqueda por número */
.hist-num {
    display: flex;
    gap: 8px;
    align-items: center;
    margin-bottom: 12px;
    color: var(--texto-suave);
    font-size: 0.9rem;
}
.hist-num input {
    width: 110px;
    padding: 6px 9px;
    border: 1px solid var(--gris-borde);
    border-radius: 6px;
    margin-left: 6px;
}
.hist-num-badge {
    background: var(--color-principal);
    color: #fff;
    border-radius: 8px;
    padding: 1px 7px;
    font-size: 0.78rem;
}

/* Grupos desplegables (acordeón por categoría) */
.grupo {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    margin-bottom: 12px;
    overflow: hidden;
}
.grupo-titulo {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 18px;
    cursor: pointer;
    font-weight: 600;
    font-size: 1.05rem;
    list-style: none;
    user-select: none;
    background: var(--gris-fondo);
}
.grupo-titulo::-webkit-details-marker { display: none; }
.grupo-titulo::before {
    content: "▸";
    color: var(--color-principal);
    transition: transform 0.15s;
}
.grupo[open] > .grupo-titulo::before { transform: rotate(90deg); }
.grupo-nombre { flex: 1; }
.grupo-cantidad {
    background: var(--color-principal);
    color: white;
    border-radius: 12px;
    padding: 1px 10px;
    font-size: 0.8rem;
}
.grupo .lista-canciones { padding: 8px 12px 12px; }
.grupo .lista-canciones li { border-radius: 8px; }

/* Lista de canciones */
.lista-canciones { list-style: none; padding: 0; margin: 0; }
.lista-canciones li {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    margin-bottom: 10px;
    padding: 14px 18px;
}
.lista-canciones a {
    text-decoration: none;
    color: var(--texto);
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 12px;
}
.lista-canciones .titulo { font-weight: 600; font-size: 1.1rem; }
.lista-canciones .artista { color: var(--texto-suave); }
.lista-canciones .tono {
    margin-left: auto;
    font-size: 0.85rem;
    color: var(--color-principal);
}

/* Fila de canción con botón de agregar a la lista */
.fila-cancion { display: flex; align-items: center; gap: 10px; }
.fila-cancion > a { flex: 1; }
.btn-agregar {
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 1px solid var(--color-principal);
    background: var(--card);
    color: var(--color-principal);
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}
.btn-agregar:hover { background: var(--color-principal); color: white; }

/* Estrella "Conocida" (cada usuario marca las canciones que ya tocó) */
.btn-conocida {
    flex-shrink: 0;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 1px solid var(--gris-borde);
    background: var(--card);
    color: #c79a00;
    font-size: 1.15rem;
    line-height: 1;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, transform 0.1s;
}
.btn-conocida:hover { transform: scale(1.12); border-color: #e0b400; }
.btn-conocida.activo {
    background: #fff7df;
    border-color: #e0b400;
}

/* Barra de acciones de "Conocidas" (debajo de los filtros) */
.conocidas-barra {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
    margin-bottom: 14px;
    font-size: 0.88rem;
    color: var(--texto-suave);
}
.conocidas-info { margin-right: 4px; }

/* Botones rápidos de clasificación por canción */
.clasif {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px dashed var(--gris-borde);
}
.clasif-grupo { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.clasif-label {
    font-size: 0.72rem;
    color: var(--texto-suave);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-right: 2px;
}
.clasif-btn {
    background: var(--gris-fondo);
    color: var(--texto-suave);
    border: 1px solid var(--gris-borde);
    border-radius: 12px;
    padding: 2px 10px;
    font-size: 0.78rem;
    cursor: pointer;
    transition: all 0.12s;
}
.clasif-btn:hover { border-color: var(--color-principal); color: var(--color-principal); }
.clasif-btn.activo {
    background: var(--color-principal);
    color: #fff;
    border-color: var(--color-principal);
    font-weight: 600;
}
.clasif-btn.yt-add { border-color: #cc0000; color: #ff5252; }
.clasif-btn.yt-add:hover { background: #cc0000; color: #fff; }
.yt-count { font-size: 0.78rem; color: #ff5252; font-weight: 600; }

/* Grupo borrar: separado con un borde arriba y margen extra */
.clasif-grupo-borrar { margin-top: 6px; padding-top: 8px; border-top: 1px solid #fca5a5; width: 100%; }

.etiquetas { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px; }
.etiqueta {
    background: var(--gris-fondo);
    border: 1px solid var(--gris-borde);
    border-radius: 12px;
    padding: 2px 10px;
    font-size: 0.8rem;
    color: var(--texto-suave);
}

.vacio { text-align: center; padding: 60px 20px; color: var(--texto-suave); }
.vacio .btn { margin-top: 12px; }

/* Detalle de canción */
.detalle-cabecera {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    flex-wrap: wrap;
}
.detalle h1 { margin: 0 0 8px; }
.acciones { display: flex; gap: 8px; align-items: center; }

.meta {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    color: var(--texto-suave);
    margin: 12px 0 20px;
    font-size: 0.95rem;
}

/* Controles de transposición */
.transponer {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 10px 14px;
    margin-bottom: 16px;
    font-size: 0.95rem;
}
.btn-chico { padding: 5px 12px; font-size: 0.9rem; }
.transponer-valor {
    min-width: 90px;
    text-align: center;
    font-weight: 600;
    color: var(--color-principal);
}

.youtube-links {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
}
.btn-yt {
    background: #ff0000;
    color: white;
    border-color: #ff0000;
    font-size: 0.9rem;
    padding: 6px 12px;
}
.btn-yt:hover { background: #cc0000; }

.letra {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 20px;
    font-family: "Consolas", "Courier New", monospace;
    font-size: 1rem;
    white-space: pre-wrap;
    word-wrap: break-word;
    margin-bottom: 20px;
}

/* Formulario */
.formulario { display: flex; flex-direction: column; gap: 16px; }
.formulario label { font-weight: 600; display: flex; flex-direction: column; gap: 6px; }
.formulario input,
.formulario textarea {
    padding: 10px 12px;
    border: 1px solid var(--gris-borde);
    border-radius: 8px;
    font-size: 1rem;
    font-weight: normal;
    font-family: inherit;
}
.formulario textarea { font-family: "Consolas", "Courier New", monospace; resize: vertical; }
.fila { display: flex; gap: 16px; }
.fila label { flex: 1; }

@media (max-width: 600px) {
    .fila { flex-direction: column; }
}

/* ===== Lista del evento (repertorio) ===== */
.rep-toggle {
    position: fixed;
    bottom: 20px;
    right: 20px;
    z-index: 50;
    background: var(--color-principal);
    color: white;
    border: none;
    border-radius: 30px;
    padding: 12px 20px;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(0,0,0,0.25);
}
.rep-toggle:hover { background: var(--color-principal-oscuro); }
.rep-badge {
    background: var(--card);
    color: var(--color-principal);
    border-radius: 12px;
    padding: 0 8px;
    margin-left: 4px;
    font-size: 0.85rem;
}

.rep-panel {
    position: fixed;
    top: 0;
    right: 0;
    height: 100%;
    width: 340px;
    max-width: 90vw;
    background: var(--card);
    border-left: 1px solid var(--gris-borde);
    box-shadow: -4px 0 18px rgba(0,0,0,0.15);
    transform: translateX(100%);
    transition: transform 0.25s ease;
    z-index: 60;
    display: flex;
    flex-direction: column;
}
.rep-panel.abierto { transform: translateX(0); }

.rep-cabecera {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 14px;
    border-bottom: 1px solid var(--gris-borde);
    font-size: 1.05rem;
    gap: 8px;
}
.rep-cab-acciones {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}
.rep-btn-guardar {
    font-size: 0.8rem !important;
    padding: 5px 10px !important;
    border-radius: 8px !important;
}
.rep-cerrar {
    background: none;
    border: none;
    font-size: 1.2rem;
    cursor: pointer;
    color: var(--texto-suave);
}

.rep-lista {
    list-style: none;
    margin: 0;
    padding: 10px;
    overflow-y: auto;
    flex: 1;
}
.rep-lista li {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 6px;
    border-bottom: 1px solid var(--gris-fondo);
    transition: background .15s, box-shadow .15s;
    border-radius: 6px;
    cursor: default;
}
/* Handle de arrastre */
.rep-drag-handle {
    font-size: 1.1rem;
    color: var(--gris-borde);
    cursor: grab;
    touch-action: none;
    flex-shrink: 0;
    padding: 2px 3px;
    border-radius: 4px;
    user-select: none;
}
.rep-drag-handle:hover { color: var(--texto-suave); background: var(--gris-fondo); }
.rep-drag-handle:active { cursor: grabbing; }
/* Estado al pasar por encima al arrastrar */
.rep-lista li.drag-over {
    background: rgba(157, 123, 255, 0.15);
    box-shadow: inset 0 0 0 2px var(--color-principal);
}
/* Ayuda de arrastre */
.rep-drag-ayuda {
    font-size: 0.72rem;
    color: var(--texto-suave);
    text-align: center;
    padding: 4px 10px 8px;
    margin: 0;
    opacity: 0.7;
}
.rep-num {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    background: var(--gris-fondo);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--texto-suave);
}
.rep-tono {
    flex-shrink: 0;
    background: var(--color-principal);
    color: white;
    border-radius: 6px;
    padding: 1px 7px;
    font-size: 0.78rem;
    font-weight: 600;
    max-width: 90px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.rep-titulo {
    flex: 1;
    text-decoration: none;
    color: var(--texto);
    font-size: 0.92rem;
}
.rep-titulo:hover { color: var(--color-principal); }
.rep-acciones { display: flex; gap: 2px; flex-shrink: 0; }
.rep-acciones button {
    background: none;
    border: 1px solid var(--gris-borde);
    border-radius: 5px;
    width: 24px;
    height: 24px;
    cursor: pointer;
    font-size: 0.7rem;
    color: var(--texto-suave);
}
.rep-acciones button:hover { background: var(--gris-fondo); }

.rep-vacio { color: var(--texto-suave); text-align: center; padding: 30px 14px; line-height: 1.6; }

.rep-opciones {
    padding: 12px;
    border-top: 1px solid var(--gris-borde);
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.rep-opciones label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    font-size: 0.9rem;
    color: var(--texto-suave);
}
.rep-opciones select {
    flex: 1;
    max-width: 60%;
    padding: 6px 8px;
    border: 1px solid var(--gris-borde);
    border-radius: 6px;
    font-size: 0.9rem;
}
.rep-opciones .btn-nueva { margin-top: 4px; }

.rep-envio {
    padding: 12px;
    border-top: 1px solid var(--gris-borde);
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.rep-envio label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 0.85rem;
    color: var(--texto-suave);
}
.rep-envio input {
    padding: 7px 9px;
    border: 1px solid var(--gris-borde);
    border-radius: 6px;
    font-size: 0.9rem;
}
.btn-wsp {
    background: #25d366;
    color: white;
    border: none;
    border-radius: 8px;
    padding: 9px 14px;
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
    margin-top: 2px;
}
.btn-wsp:hover { background: #1ebe5b; }
.rep-nota { font-size: 0.75rem; color: var(--texto-suave); line-height: 1.5; margin: 4px 0 0; }

.rep-pie { padding: 12px; border-top: 1px solid var(--gris-borde); text-align: center; }

/* ===== Playlist de YouTube ===== */
.yt-acciones { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; }
.yt-lista { padding-left: 22px; }
.yt-lista li { background: var(--card); border: 1px solid var(--gris-borde); border-radius: 8px; padding: 10px 14px; margin-bottom: 8px; }
.yt-titulo { font-weight: 600; margin-right: 10px; }
.yt-link { color: #cc0000; text-decoration: none; font-size: 0.9rem; margin-right: 10px; }
.yt-link:hover { text-decoration: underline; }
.yt-sin { color: var(--texto-suave); font-size: 0.85rem; font-style: italic; }

/* ===== Pantalla de control de proyección ===== */
.btn-proy { background: #2a2740; color: #fff; border-color: #4a4470; }
.btn-proy:hover { background: #3a3560; }

.proy-body { background: var(--gris-fondo); }
.proy-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    background: var(--hero);
    padding: 14px 20px;
}
.proy-header .logo { color: #fff; font-size: 1.1rem; font-weight: 800; }
.proy-header .btn { background: rgba(255,255,255,0.16); border-color: rgba(255,255,255,0.4); color: #fff; }
.proy-header .btn:hover { background: rgba(255,255,255,0.3); }

.proy-grid {
    display: grid;
    grid-template-columns: 230px 1fr 360px;
    gap: 14px;
    padding: 16px;
    height: calc(100vh - 60px);
}
.proy-grid h3 { margin: 0 0 10px; font-size: 0.95rem; color: var(--texto-suave); }
.proy-canciones, .proy-parrafos, .proy-preview {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 14px;
    overflow-y: auto;
}
.proy-canciones ul { list-style: none; margin: 0; padding: 0; }
.proy-canciones li {
    padding: 8px 10px;
    border-radius: 6px;
    cursor: pointer;
    color: var(--texto);
    font-size: 0.92rem;
    margin-bottom: 2px;
}
.proy-canciones li:hover { background: var(--gris-fondo); }
.proy-canciones li.activa { background: var(--color-principal); color: #fff; }

.proy-parrafo {
    background: var(--gris-fondo);
    border: 1px solid var(--gris-borde);
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 10px;
    white-space: pre-wrap;
    cursor: pointer;
    line-height: 1.5;
    transition: border-color 0.1s;
}
.proy-parrafo:hover { border-color: var(--color-principal); }
.proy-parrafo.emitiendo { border-color: var(--color-principal); box-shadow: 0 0 0 2px var(--color-principal) inset; }

.proy-preview-pantalla {
    background: #000;
    color: #fff;
    border-radius: 8px;
    min-height: 200px;
    padding: 20px;
    white-space: pre-wrap;
    text-align: center;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
}

.proy-fondos { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.proy-fondos button {
    flex: 1;
    min-width: 70px;
    padding: 7px 8px;
    border: 1px solid var(--gris-borde);
    border-radius: 7px;
    background: var(--gris-fondo);
    color: var(--texto);
    font-size: 0.82rem;
    cursor: pointer;
}
.proy-fondos button:hover { border-color: var(--color-principal); color: var(--color-principal); }
.proy-fondo-url {
    width: 100%;
    padding: 7px 9px;
    border: 1px solid var(--gris-borde);
    border-radius: 7px;
    font-size: 0.82rem;
    margin-bottom: 8px;
}

@media (max-width: 900px) {
    .proy-grid { grid-template-columns: 1fr; height: auto; }
}

/* ===== Historial de listas ===== */

/* Cabecera con título y pestañas */
.hist-header { margin-bottom: 12px; }
.hist-header h1 { margin: 0 0 12px; }

/* Pestañas Futuras / Históricas */
.hist-tabs {
    display: flex;
    gap: 0;
    border-bottom: 2px solid var(--gris-borde);
    margin-bottom: 16px;
}
.hist-tab {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 10px 28px 8px;
    text-decoration: none;
    color: var(--texto-suave);
    border-bottom: 3px solid transparent;
    margin-bottom: -2px;
    font-size: 1rem;
    font-weight: 600;
    transition: color .15s, border-color .15s;
    border-radius: 8px 8px 0 0;
}
.hist-tab:hover { color: var(--color-principal); }
.hist-tab.activa {
    color: var(--color-principal);
    border-bottom-color: var(--color-principal);
    background: var(--card);
}
.hist-tab-desc {
    font-size: 0.72rem;
    font-weight: 400;
    opacity: .7;
    margin-top: 1px;
}

.hist-filtros {
    display: flex;
    gap: 18px;
    align-items: center;
    flex-wrap: wrap;
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 12px 16px;
    margin-bottom: 16px;
    color: var(--texto-suave);
    font-size: 0.9rem;
}
.hist-filtros select { padding: 6px 10px; border: 1px solid var(--gris-borde); border-radius: 6px; }
.hist-fav-check { display: flex; align-items: center; gap: 6px; }

.hist-borrador-card {
    background: var(--card);
    border: 2px dashed var(--acento);
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 14px;
}
.hist-borrador-cab {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 8px;
}
.hist-borr-meta { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.borr-inp-meta {
    padding: 6px 10px;
    border: 1px solid var(--gris-borde);
    border-radius: 7px;
    background: var(--fondo);
    color: var(--texto);
    font-size: 0.9rem;
    outline: none;
}
.borr-inp-meta:focus { border-color: var(--acento); }
#borr-inp-nombre { flex: 1; min-width: 180px; font-weight: bold; }
.borr-inp-fecha  { width: 148px; }
.hist-borr-cab-btns { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.hist-borrador-sub { font-size: 0.8rem; color: var(--texto-suave); }
.hist-borrador-items { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 5px; }
.hist-borrador-item { display: flex; align-items: center; gap: 7px; padding: 6px 8px; background: var(--fondo); border-radius: 7px; }
.hist-borr-ord { display: flex; flex-direction: column; gap: 2px; flex-shrink: 0; }
.btn-borr-ord { background: none; border: 1px solid var(--gris-borde); border-radius: 3px; cursor: pointer; font-size: 0.65rem; padding: 1px 5px; color: var(--texto); line-height: 1.2; }
.btn-borr-ord:active { background: var(--acento); color: #fff; }
.hist-borr-tono { min-width: 42px; font-size: 0.82rem; font-weight: bold; color: var(--acento); cursor: pointer; border: 1px dashed var(--gris-borde); border-radius: 4px; padding: 2px 6px; text-align: center; flex-shrink: 0; }
.hist-borr-tono:hover { border-color: var(--acento); }
.borr-tono-vacio { color: var(--texto-suave); font-weight: normal; font-size: 0.75rem; }
.hist-borr-titulo { flex: 1; color: var(--texto); text-decoration: none; font-size: 0.95rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.hist-borr-titulo:hover { text-decoration: underline; }
/* Sugerencias: botones de tempo y contador de usos */
.sug-tempo { display: inline-flex; gap: 6px; margin-left: 6px; }
.sug-usos {
    display: inline-block; font-size: 0.75rem; padding: 1px 8px; border-radius: 10px;
    margin: 0 4px; white-space: nowrap; background: rgba(128,128,128,0.15); color: var(--texto-suave);
}
.sug-usos.tiene { background: rgba(210,150,0,0.20); color: #d19a00; cursor: pointer; }
.sug-usos.tiene:hover { background: rgba(210,150,0,0.35); }
.sug-actual { display: inline-block; font-size: 0.72rem; padding: 1px 8px; border-radius: 10px;
    margin: 0 4px; white-space: nowrap; background: rgba(150,110,230,0.25); color: #b79cff; }

/* Buscador para agregar canciones dentro de la edición de la lista */
.borr-buscar { position: relative; display: flex; gap: 8px; margin: 8px 0 10px; }
.borr-buscar > input {
    flex: 1; padding: 9px 12px; border-radius: 8px;
    border: 1px solid var(--gris-borde); background: var(--fondo); color: var(--texto); font-size: 0.95rem;
}
.borr-buscar-res {
    position: absolute; top: 100%; left: 0; right: 0; z-index: 50; margin-top: 4px;
    background: var(--card); border: 1px solid var(--gris-borde); border-radius: 8px;
    box-shadow: 0 6px 20px rgba(0,0,0,0.3); max-height: 320px; overflow-y: auto;
}
.borr-res-item {
    display: flex; align-items: center; gap: 10px; padding: 8px 12px; cursor: pointer;
    border-bottom: 1px solid var(--gris-borde);
}
.borr-res-item:last-child { border-bottom: none; }
.borr-res-item:hover { background: rgba(128,128,128,0.12); }
.borr-res-item.ya { opacity: 0.55; cursor: default; }
.borr-res-tono { min-width: 42px; font-weight: bold; color: var(--acento); font-size: 0.82rem; text-align: center; }
.borr-res-tit { flex: 1; color: var(--texto); }
.borr-res-add { color: var(--acento); font-size: 0.82rem; white-space: nowrap; }
.borr-res-ya { color: var(--texto-suave); font-size: 0.78rem; white-space: nowrap; }
.borr-res-vacio { padding: 10px 12px; color: var(--texto-suave); }

.borr-badges { display: inline-flex; gap: 5px; flex-shrink: 0; }
.borr-badge { font-size: 0.72rem; padding: 1px 7px; border-radius: 10px; white-space: nowrap; line-height: 1.5; }
.badge-listas { background: rgba(120, 130, 220, 0.20); color: var(--texto-suave); }
.badge-hist { background: rgba(210, 150, 0, 0.20); color: #d19a00; cursor: pointer; }
.badge-hist:hover { background: rgba(210, 150, 0, 0.35); }
.btn-borr-del { background: none; border: none; cursor: pointer; color: var(--rojo, #c62828); font-size: 1rem; padding: 2px 5px; flex-shrink: 0; opacity: 0.7; }
.btn-borr-del:hover { opacity: 1; }
.drag-handle { font-size: 1.2rem; color: var(--texto-suave); padding: 0 6px; cursor: grab; touch-action: none; flex-shrink: 0; user-select: none; }
.drag-handle:active { cursor: grabbing; color: var(--acento); }
.borr-dragging { opacity: 0.45; border: 2px dashed var(--acento) !important; background: var(--gris-fondo) !important; }

.hist-grid { display: grid; grid-template-columns: 300px 1fr; gap: 14px; }
.hist-listas { display: flex; flex-direction: column; gap: 8px; }
.hist-item {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 12px 14px;
    cursor: pointer;
}
.hist-item:hover { border-color: var(--color-principal); }
.hist-item.activa { border-color: var(--color-principal); box-shadow: 0 0 0 2px var(--color-principal) inset; }
.hist-item-top { display: flex; align-items: center; gap: 4px; }
.hist-nombre { font-weight: 600; flex: 1 1 auto; min-width: 0; }
.hist-item-edit, .hist-item-ver {
    background: transparent; border: none; cursor: pointer;
    font-size: 1.05rem; line-height: 1; padding: 6px 8px; border-radius: 8px;
    opacity: 0.7; flex-shrink: 0;
}
.hist-item-edit:hover, .hist-item-ver:hover { opacity: 1; background: rgba(0,0,0,0.07); }
.hist-item-ver { font-weight: bold; color: var(--texto-suave); }
.hist-nombre-fecha { font-size: 0.75rem; color: var(--texto-suave); font-weight: normal; }
.hist-meta { color: var(--texto-suave); font-size: 0.82rem; margin-top: 4px; }
.hist-uso { font-size: 0.8rem; color: var(--texto-suave); margin-top: 3px; }
.hist-uso.nunca { color: #d19a00; font-weight: 600; }

/* Guardar acordes / historial (vista de canción) */
.acordes-guardar {
    display: flex; gap: 8px; flex-wrap: wrap; align-items: center;
    margin: 6px 0; padding: 8px 10px; border-radius: 8px;
    background: var(--card); border: 1px solid var(--gris-borde);
}
.acordes-guardar .ag-label { font-size: 0.85rem; color: var(--texto-suave); }
.ag-personal { font-size: 0.82rem; color: #d19a00; margin: 4px 0 8px; }
.acordes-historial { margin: 8px 0 4px; font-size: 0.85rem; }
.acordes-historial summary { cursor: pointer; color: var(--texto-suave); }
.acordes-historial ul { margin: 6px 0 0; padding-left: 18px; }
.acordes-historial li { margin: 3px 0; color: var(--texto-suave); }

/* Bloque [chico] … [/chico]: renglones más chicos (repeticiones, etc.) */
.ln-letra.ln-chica   { font-size: 0.72em; }
.ln-acorde.ln-chica  { font-size: 0.72em; }
.ln-seccion.ln-chica { font-size: 0.85em; }

/* Subtítulo de sección: "Estribillo:", "[Coro]", "(Puente)"… destacado */
.ln-subtitulo {
    display: block;
    font-size: 0.8em; font-weight: 800;
    text-transform: uppercase; letter-spacing: 0.12em;
    color: var(--color-principal);
    margin: 0.8em 0 0.2em;
}
.ln-subtitulo.ln-chica { font-size: 0.68em; }
/* Rótulo de sección con contenido ("Instrumental: Solo de Guitarra") */
.ln-seccion.ln-sec-acento { color: var(--color-principal); }
/* "Puente: Nadie es como El" → el rótulo destacado, la letra en su color normal */
.ln-rotulo {
    color: var(--color-principal); font-weight: 800;
    letter-spacing: 0.05em; margin-right: 0.15em;
}
/* Acordes pintados dentro de una línea mixta ("Interludio: B C# (nota)").
   Mismo color y TAMAÑO que los acordes normales (.ln-acorde). Al ser em, si el
   renglón se achica con puntitos, los acordes se achican junto con él. */
.ln-ac-inline { color: #1565c0; font-weight: 800; }
.ln-letra .ln-ac-inline { font-size: 0.72em; }   /* = .ln-acorde */
/* Sección sin canto ("Instrumental: Solo de Guitarra"): rótulo y nota del mismo tamaño */
.ln-seccion .ln-rotulo { font-size: 1em; }

/* Recuadro del ESTRIBILLO / CORO: borde + fondo suave para distinguirlo al leer */
.bloque-estribillo {
    border: 1px solid var(--gris-borde);
    background: rgba(128, 128, 128, 0.10);
    border-radius: 6px;
    padding: 2px 12px 6px 8px;
    margin: 8px 0;
    width: fit-content;      /* se ajusta al ancho de la letra, no a toda la columna */
    max-width: 100%;
    break-inside: avoid; page-break-inside: avoid;
}
/* Estribillo resumido en una línea ("Estribillo: Tú eres…"): compacto */
.bloque-estribillo.caja-1linea { padding: 3px 10px; margin: 6px 0; }
.hist-fecha-evento { font-size: 0.85rem; margin-top: 6px; color: var(--texto-suave); }
.hfe-form { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 4px; }
/* Inputs de nombre y fecha en el panel de detalle */
.hfe-meta-fila { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-bottom: 6px; }
.hfe-inp-nom { flex: 1; min-width: 140px; padding: 6px 10px; border: 1px solid var(--gris-borde); border-radius: 7px; background: var(--fondo); color: var(--texto); font-size: 1rem; font-weight: bold; outline: none; }
.hfe-inp-nom:focus { border-color: var(--acento); }
.hfe-inp-fecha { width: 144px; padding: 6px 8px; border: 1px solid var(--gris-borde); border-radius: 7px; background: var(--fondo); color: var(--texto); font-size: 0.9rem; outline: none; }
.hfe-inp-fecha:focus { border-color: var(--acento); }

.hist-detalle {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 18px;
    min-height: 200px;
}
.hist-detalle-cab h2 { margin: 0 0 4px; }
.hist-canciones { padding-left: 22px; margin: 12px 0; }
.hist-canciones li { margin-bottom: 8px; }
.hist-canciones a { color: var(--texto); text-decoration: none; }
.hist-canciones a:hover { color: var(--color-principal); }
.hist-vacio { color: var(--texto-suave); text-align: center; padding: 40px 10px; }
/* Pie de sugerencias: botones "agregar todas" + "10 más" */
.sug-pie {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 14px;
    align-items: center;
}

/* ── Modal picker "A qué lista" ─────────────────────────────────── */
.sug-modal-fondo {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    width: 100%; height: 100%;
    background: rgba(0,0,0,.5);
    display: flex; align-items: center; justify-content: center;
    z-index: 9000;
    padding: 16px;
    box-sizing: border-box;
}
.sug-modal {
    background: var(--card);
    border-radius: 14px;
    padding: 22px 20px 18px;
    max-width: 420px;
    width: 100%;
    box-shadow: 0 8px 32px rgba(0,0,0,.28);
}
.sug-modal h3 { margin: 0 0 4px; font-size: 1.05rem; }
.sug-modal-sub {
    font-size: 0.88rem;
    color: var(--texto-suave);
    margin: 0 0 14px;
    font-style: italic;
}
.sug-modal-opciones {
    display: flex;
    flex-direction: column;
    gap: 8px;
    max-height: 55vh;
    overflow-y: auto;
}
.sug-modal-opc {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    padding: 10px 14px;
    border-radius: 10px;
    border: 2px solid var(--gris-borde);
    background: var(--card);
    cursor: pointer;
    text-align: left;
    font-size: 0.92rem;
    transition: border-color .15s, background .15s;
}
.sug-modal-opc:hover:not(:disabled) {
    border-color: var(--color-principal);
    background: rgba(157,123,255,.07);
}
.sug-modal-opc:disabled { opacity: .6; cursor: default; }
.sug-modal-fecha { font-size: 0.8rem; color: var(--texto-suave); }
.sug-modal-cant  { font-size: 0.78rem; color: var(--texto-suave); }
.sug-modal-opc-panel {
    border-style: dashed;
    color: var(--texto-suave);
    font-size: 0.88rem;
}
.sug-modal hr { border: none; border-top: 1px solid var(--gris-borde); margin: 8px 0; }
.sug-modal-cargando, .sug-modal-vacio {
    font-size: 0.9rem; color: var(--texto-suave); padding: 8px 0;
}

@media (max-width: 800px) {
    .hist-grid { grid-template-columns: 1fr; }
}

/* ===== Editor visual de acordes ===== */
.sub { color: var(--texto-suave); margin-top: -8px; }
.ed-ayuda {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-left: 4px solid var(--color-principal);
    border-radius: 8px;
    padding: 12px 14px;
    font-size: 0.9rem;
    color: var(--texto-suave);
    margin-bottom: 18px;
    line-height: 1.6;
}
.editor {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 10px;
    padding: 20px;
    overflow-x: auto;
}
.ed-medidor {
    font-family: "Consolas", "Courier New", monospace;
    font-size: 1rem;
    position: absolute;
    visibility: hidden;
    white-space: pre;
}
.ed-texto {
    font-family: "Consolas", "Courier New", monospace;
    font-size: 1rem;
    white-space: pre;
    min-height: 1.5em;
    line-height: 1.5;
}
.ed-acordes {
    position: relative;
    height: 1.7em;
    margin-bottom: -2px;
}
.ed-chip {
    position: absolute;
    top: 0;
    font-family: "Consolas", "Courier New", monospace;
    font-size: 1rem;
    font-weight: 700;
    color: var(--color-principal);
    background: #ece7ff;
    border: 1px solid #cdbcff;
    border-radius: 4px;
    padding: 0 3px;
    cursor: grab;
    user-select: none;
    white-space: nowrap;
}
.ed-chip:hover { background: #ddd2ff; }
.ed-chip.arrastrando { cursor: grabbing; opacity: 0.85; z-index: 5; box-shadow: 0 2px 8px rgba(0,0,0,0.25); }
.ed-mas {
    position: absolute;
    right: 0;
    top: -2px;
    font-size: 0.72rem;
    color: var(--texto-suave);
    background: var(--gris-fondo);
    border: 1px dashed var(--gris-borde);
    border-radius: 10px;
    padding: 1px 8px;
    cursor: pointer;
}
.ed-mas:hover { color: var(--color-principal); border-color: var(--color-principal); }


/* ================================================================
   LETRA CON ACORDES EN COLOR
   Usada en cancion.html, imprimir.html y repertorio_pdf.html
   ================================================================ */

/* Contenedor principal en la vista de canción */
/* ──────────────────────────────────────────────────────────────
   VISTA DE CANCIÓN — letra con acordes, 2 columnas, texto grande
   ────────────────────────────────────────────────────────────── */

/* Cuando estamos en la página de canción, el contenedor principal
   se amplía para dar espacio a las 2 columnas de letra. */
.detalle {
    max-width: 100%;    /* el article sí ocupa todo el ancho disponible */
}

/* Área de la letra: 2 columnas, texto grande, igual al PDF de referencia */
.letra-bloque {
    font-family: "Calibri", "Segoe UI", "Arial", sans-serif;
    font-size: 1.25rem;        /* tamaño base, ajustable con A+/A− */
    font-weight: 700;
    line-height: 1.35;
    word-break: break-word;
    margin: 16px 0 12px;
    /* 2 columnas en pantallas anchas.
       column-fill: balance = el navegador distribuye el contenido
       equitativamente entre las 2 columnas (sin necesitar altura fija). */
    columns: 2;
    column-gap: 8%;
    column-fill: balance;
}
/* En pantallas chicas (celular vertical) = 1 columna */
@media (max-width: 680px) {
    .letra-bloque { columns: 1; font-size: 1.1rem; }
}

/* Líneas de acordes: azul oscuro, un poco más chico que la letra */
.ln-acorde {
    display: block;
    font-size: 0.72em;         /* siempre más chico que el contenedor */
    font-weight: 700;
    color: #1565c0;            /* azul oscuro — igual al PDF de referencia */
    letter-spacing: 0.04em;
    margin-top: 0.4em;
    white-space: pre-wrap;
}

/* Líneas de letra: tamaño del contenedor */
.ln-letra {
    display: block;
    font-weight: 700;
    white-space: pre-wrap;
}

/* Indicaciones de sección: (Coro), [Estrofa], etc. */
.ln-seccion {
    display: block;
    font-size: 0.72em;
    font-style: italic;
    font-weight: 400;
    color: #888;
    margin-top: 0.5em;
    white-space: pre-wrap;
}

/* Líneas vacías: espacio entre estrofas */
.ln-vacio {
    display: block;
    height: 0.5em;
}

/* Controles de tamaño A+ / A− */
.letra-controles {
    margin: 4px 0 18px;
    display: flex;
    gap: 6px;
    align-items: center;
}

/* ================================================================
   MODO COMANDOS — index.html
   ================================================================ */

/* ── Barra de Clasificación (toggle Comandos) ── */
.cmds-barra {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 4px 0 14px;
    flex-wrap: wrap;
}
/* Cuando el modo está activo: dos mitades */
.cmds-barra.activo {
    justify-content: space-between;
}
.cmds-barra-izq {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1 1 auto;
    min-width: 0;
}
.cmds-barra-der {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
}

/* Botón principal: chip gris cuando OFF, verde cuando ON */
.cmds-toggle-btn {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 8px 14px;
    border-radius: 24px;
    border: 2px solid var(--gris-borde);
    background: var(--card);
    color: var(--texto-suave);
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: 500;
    transition: all .2s;
    line-height: 1;
}
.cmds-toggle-btn:hover {
    border-color: var(--color-principal);
    color: var(--color-principal);
    background: rgba(157,123,255,.08);
}
/* Estado ON: verde, llamativo */
.cmds-toggle-btn.activo {
    border-color: #22c55e;
    background: rgba(34,197,94,.12);
    color: #22c55e;
}
.cmds-toggle-btn .cmds-icono { font-size: 1rem; }

/* Pill ON / OFF */
.cmds-pill {
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: .8px;
    padding: 2px 7px;
    border-radius: 10px;
    background: var(--gris-borde);
    color: var(--texto-suave);
    transition: background .2s, color .2s;
}
.cmds-toggle-btn.activo .cmds-pill {
    background: #22c55e;
    color: #fff;
}

.cmds-ayuda {
    font-size: 0.78rem;
    color: var(--texto-suave);
}
/* En móvil ocultar el texto ayuda para no ocupar espacio */
@media (max-width: 500px) {
    .cmds-ayuda { display: none; }
}

/* Botón "Solo sin clasificar" — mismo estilo base que cmds-toggle-btn */
.cmds-btn-sinclasif {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 8px 14px;
    border-radius: 24px;
    border: 2px solid var(--gris-borde);
    background: var(--card);
    color: var(--texto-suave);
    cursor: pointer;
    font-size: 0.9rem;
    font-weight: 500;
    transition: all .2s;
    line-height: 1;
    white-space: nowrap;
}
.cmds-btn-sinclasif:hover {
    border-color: #f59e0b;
    color: #f59e0b;
    background: rgba(245,158,11,.08);
}
.cmds-btn-sinclasif.activo {
    border-color: #f59e0b;
    background: rgba(245,158,11,.12);
    color: #b45309;
}
.cmds-btn-sinclasif.activo .cmds-pill {
    background: #f59e0b;
    color: #fff;
}
/* Contador "X sin clasificar · Y ya clasificadas" */
.sinclasif-contador {
    font-size: 0.78rem;
    color: var(--texto-suave);
    white-space: nowrap;
}
@media (max-width: 600px) {
    .sinclasif-contador { display: none; }
    .cmds-barra.activo { flex-direction: column; align-items: flex-start; }
    .cmds-barra-der { width: 100%; }
}

/* Botón PDF por canción en la lista */
.btn-pdf {
    font-size: 0.9rem;
    padding: 1px 6px;
    border-radius: 5px;
    border: 1px solid var(--gris-borde);
    background: var(--card);
    color: var(--texto);
    text-decoration: none;
    opacity: 0.65;
    transition: opacity .15s;
    flex-shrink: 0;
    margin-left: 4px;
}
.btn-pdf:hover { opacity: 1; background: var(--color-principal); color: #fff; }

/* ================================================================
   ADMIN — PDF Propuestas
   ================================================================ */
.prop-tabla { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
.prop-tabla th {
    text-align: left; padding: 8px 12px;
    border-bottom: 2px solid var(--gris-borde);
    color: var(--texto-suave); font-size: 0.8rem;
    text-transform: uppercase; letter-spacing: 0.04em;
}
.prop-tabla td { padding: 8px 12px; border-bottom: 1px solid var(--gris-borde); }
.prop-fila:hover { background: var(--card); }
.prop-cfg {
    font-size: 0.78rem; color: var(--texto-suave);
    background: var(--gris-fondo);
    border-radius: 4px; padding: 2px 6px;
    display: inline-block;
}

/* ================================================================
   HOME — Pantalla de inicio con tiles
   ================================================================ */

.home-saludo { padding: 10px 0 14px; }
.home-saludo h2 {
    font-size: 1.45rem; font-weight: 800;
    letter-spacing: -0.02em; margin: 0 0 3px; line-height: 1.1;
}
.home-saludo p { font-size: 0.82rem; color: var(--texto-suave); margin: 0; }

.home-busqueda {
    display: flex; align-items: center; gap: 10px;
    background: var(--card); border: 1px solid var(--gris-borde);
    border-radius: 16px; padding: 12px 16px; margin-bottom: 22px;
    text-decoration: none; color: var(--texto-suave);
    transition: border-color .15s, box-shadow .15s;
}
.home-busqueda:hover { border-color: var(--color-principal); }
.home-busqueda-icon { font-size: 1rem; }
.home-busqueda-placeholder { flex: 1; font-size: 0.9rem; }
.home-busqueda-kbd {
    font-size: 0.72rem; background: var(--gris-fondo);
    border-radius: 6px; padding: 2px 8px;
    color: var(--color-principal); font-weight: 600; flex-shrink: 0;
}

.home-seccion-titulo {
    font-size: 0.7rem; font-weight: 700;
    text-transform: uppercase; letter-spacing: 0.1em;
    color: var(--texto-suave); margin: 6px 0 10px;
}

.home-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 20px; }
.home-grid-2 { grid-template-columns: 1fr 1fr; }
.home-grid-3 { grid-template-columns: 1fr 1fr 1fr; }

.home-tile {
    border-radius: 18px; padding: 16px 15px;
    display: flex; flex-direction: column; gap: 8px;
    cursor: pointer; position: relative; overflow: hidden;
    min-height: 120px; text-decoration: none; color: #fff;
    border: none; text-align: left; font-family: inherit;
    transition: transform .18s cubic-bezier(.34,1.56,.64,1), filter .15s;
}
.home-tile::before {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(255,255,255,.1) 0%, transparent 60%);
    pointer-events: none;
}
.home-tile:hover, .home-tile:focus {
    transform: scale(1.03) translateY(-2px); filter: brightness(1.08); outline: none;
}
.home-tile:active { transform: scale(0.97); filter: brightness(0.95); }

.home-tile-hero {
    grid-column: 1 / -1; flex-direction: row; align-items: center;
    gap: 16px; min-height: 130px; padding: 18px 20px;
}
.home-tile-hero .home-tile-icon { font-size: 3rem; }
.home-tile-hero .home-tile-titulo { font-size: 1.25rem; }
.home-tile-hero .home-tile-sub { font-size: 0.8rem; opacity: .8; }
.home-tile-hero .home-tile-body { flex: 1; }

.home-tile-sm {
    min-height: 80px; padding: 12px 11px; gap: 6px; border-radius: 14px;
}
.home-tile-sm .home-tile-icon { font-size: 1.4rem; }
.home-tile-sm .home-tile-titulo { font-size: 0.78rem; font-weight: 700; }

.home-tile-icon  { font-size: 2rem; line-height: 1; }
.home-tile-body  { flex: 1; }
.home-tile-titulo {
    font-size: 0.95rem; font-weight: 800;
    letter-spacing: -0.01em; line-height: 1.1;
}
.home-tile-sub   { font-size: 0.75rem; opacity: .78; line-height: 1.3; margin-top: 3px; }
.home-tile-badge {
    position: absolute; top: 12px; right: 12px;
    background: rgba(255,255,255,.22); border-radius: 20px;
    font-size: 0.7rem; font-weight: 700; padding: 2px 8px;
    border: 1px solid rgba(255,255,255,.2);
}
.home-tile-arrow {
    position: absolute; bottom: 12px; right: 14px;
    font-size: 0.85rem; opacity: .5;
}

/* Colores de tiles */
.c-canciones   { background: linear-gradient(145deg, #6c63ff, #4e46e5); box-shadow: 0 6px 22px rgba(108,99,255,.4); }
.c-listas      { background: linear-gradient(145deg, #0ea5e9, #0369a1); box-shadow: 0 6px 22px rgba(14,165,233,.35); }
.c-nueva       { background: linear-gradient(145deg, #f43f5e, #be123c); box-shadow: 0 6px 22px rgba(244,63,94,.35); }
.c-buscar      { background: linear-gradient(145deg, #10b981, #059669); box-shadow: 0 6px 22px rgba(16,185,129,.3); }
.c-presentar   { background: linear-gradient(145deg, #8b5cf6, #6d28d9); box-shadow: 0 6px 22px rgba(139,92,246,.35); }
.c-pdf         { background: linear-gradient(145deg, #f59e0b, #d97706); box-shadow: 0 6px 22px rgba(245,158,11,.35); }
.c-conocidas   { background: linear-gradient(145deg, #ec4899, #be185d); box-shadow: 0 6px 22px rgba(236,72,153,.3); }
.c-sugerencias { background: linear-gradient(145deg, #14b8a6, #0f766e); box-shadow: 0 6px 22px rgba(20,184,166,.3); }
.c-repertorio  { background: linear-gradient(145deg, #f97316, #c2410c); box-shadow: 0 6px 22px rgba(249,115,22,.35); }
.c-revisar     { background: linear-gradient(145deg, #6366f1, #4338ca); box-shadow: 0 6px 18px rgba(99,102,241,.35); }
.c-admin       { background: linear-gradient(145deg, #64748b, #334155); box-shadow: 0 6px 18px rgba(100,116,139,.25); }
.c-futuras     { background: linear-gradient(145deg, #7c3aed, #4c1d95); box-shadow: 0 6px 18px rgba(124,58,237,.35); }

/* Listas recientes */
.home-recientes { margin-bottom: 20px; }
.home-reciente {
    display: flex; align-items: center; gap: 12px;
    background: var(--card); border: 1px solid var(--gris-borde);
    border-radius: 14px; padding: 13px 15px; margin-bottom: 8px;
    text-decoration: none; color: var(--texto);
    transition: border-color .15s, background .15s;
}
.home-reciente:hover { border-color: var(--color-principal); }
.home-reciente-icon {
    width: 36px; height: 36px; border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    font-size: 1rem; flex-shrink: 0;
}
.home-reciente-texto { flex: 1; min-width: 0; }
.home-reciente-texto strong {
    display: block; font-size: 0.85rem;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.home-reciente-texto span { font-size: 0.72rem; color: var(--texto-suave); }
.home-reciente-flecha { font-size: 1.3rem; color: var(--texto-suave); flex-shrink: 0; }
.home-ver-todas {
    display: block; text-align: center;
    font-size: 0.82rem; color: var(--color-principal);
    padding: 8px; text-decoration: none; font-weight: 600;
}
.home-ver-todas:hover { text-decoration: underline; }

/* ================================================================
   PANEL PRÓXIMA LISTA — Panel deslizable a la derecha (snap)
   ================================================================ */

.panel-proxima-der {
    flex: 0 0 92vw;          /* casi full-width en móvil */
    max-width: 480px;        /* en tablet/desktop no se agranda demasiado */
    min-width: 92vw;
    scroll-snap-align: start;
    box-sizing: border-box;
    background: var(--card);
    border-left: 2px solid var(--gris-borde);
    padding: 0 0 80px;       /* espacio para el bottom-nav */
    display: flex;
    flex-direction: column;
}
.panel-prox-cab {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 16px 10px;
    border-bottom: 1px solid var(--gris-borde);
    position: sticky;
    top: 0;
    background: var(--card);
    z-index: 10;
}
.panel-prox-titulo {
    font-size: 1rem;
    font-weight: 700;
    color: var(--texto);
}
.panel-prox-cuerpo {
    padding: 14px 16px;
    flex: 1;
    overflow-y: auto;
}
.panel-prox-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 14px;
}
.panel-prox-nombre {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--texto);
}
.panel-prox-fecha {
    font-size: 0.85rem;
    color: var(--color-principal);
    font-weight: 600;
}
.panel-prox-canciones {
    margin: 0 0 16px;
    padding-left: 22px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.panel-prox-canciones li {
    font-size: 0.93rem;
    color: var(--texto);
    line-height: 1.4;
}
.panel-prox-acciones {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.panel-prox-vacio, .panel-prox-cargando {
    font-size: 0.9rem;
    color: var(--texto-suave);
    padding: 8px 0;
    line-height: 1.5;
}

/* ================================================================
   BOTTOM NAV — Barra de navegación inferior (solo movil)
   ================================================================ */

.bottom-nav {
    display: none;
    position: fixed;
    bottom: 0; left: 0; right: 0;
    height: 60px;
    background: var(--card);
    border-top: 1px solid var(--gris-borde);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    z-index: 90;
    align-items: center;
    justify-content: space-around;
    padding: 0 4px;
    padding-bottom: env(safe-area-inset-bottom, 0);
}
.bnav-item {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    padding: 6px 10px; border-radius: 12px; cursor: pointer;
    text-decoration: none; color: var(--texto-suave);
    background: none; border: none; font-family: inherit;
    min-width: 52px; transition: background .12s, color .12s;
}
.bnav-item:hover { background: var(--gris-fondo); }
.bnav-item.activo { color: var(--color-principal); }
.bnav-item.activo .bnav-icon { filter: drop-shadow(0 0 4px currentColor); }
.bnav-icon  { font-size: 1.25rem; line-height: 1; }
.bnav-label { font-size: 0.58rem; font-weight: 600; letter-spacing: 0.03em; white-space: nowrap; }
.bnav-badge {
    display: inline-block; background: var(--color-principal); color: #fff;
    border-radius: 10px; font-size: 0.58rem; padding: 0 4px;
    min-width: 14px; text-align: center; margin-left: 2px;
}

@media (max-width: 680px) {
    .bottom-nav { display: flex; }
    main { padding-bottom: calc(70px + env(safe-area-inset-bottom, 0)); }
    .rep-toggle { display: none; }
}

/* ── Botón papelera en la fila de canción ────────────────── */
.btn-papelera-cancion {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 1rem;
    opacity: 0.35;
    padding: 2px 4px;
    border-radius: 5px;
    transition: opacity 0.15s;
    flex-shrink: 0;
}
.btn-papelera-cancion:hover { opacity: 0.85; background: var(--gris-borde); }

/* ── Modal papelera ──────────────────────────────────────── */
.modal-pap-overlay {
    position: fixed; inset: 0; z-index: 2000;
    background: rgba(0,0,0,0.65);
    display: flex; align-items: center; justify-content: center;
    padding: 16px;
}
.modal-pap-caja {
    background: var(--card);
    border: 1px solid var(--gris-borde);
    border-radius: 12px;
    padding: 22px 24px;
    max-width: 420px; width: 100%;
    display: flex; flex-direction: column; gap: 12px;
}
.modal-pap-pregunta {
    font-weight: bold; font-size: 1rem; margin: 0;
    color: var(--texto);
}
.modal-pap-label { font-size: 0.88rem; color: var(--texto-suave); }
.modal-pap-opcional { font-size: 0.8rem; opacity: 0.65; }
.modal-pap-textarea {
    width: 100%; box-sizing: border-box;
    background: var(--gris-fondo); color: var(--texto);
    border: 1px solid var(--gris-borde); border-radius: 8px;
    padding: 8px 10px; font-size: 0.95rem; resize: vertical;
}
.modal-pap-btns { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
