:root {
    --neon-red-start: #ff0066; /* Un rojo neón vibrante */
    --neon-red-end: #ff66b2;   /* Un rosa neón para el degradado */
    --neon-blue: #00ffff;      /* Nuevo: Un azul cian neón para el ecualizador */
    --border-thickness: 5px;
    --parchment-color-light: #fdf8e3; /* Color claro para el pergamino */
    --parchment-color-dark: #e0d8c1;  /* Color oscuro para el pergamino */
}

body {
    margin: 0;
    overflow: hidden; /* Oculta el scroll si el contenido es más grande que la ventana */
    font-family: 'Arial', sans-serif;
    color: #e0e0e0; /* Color de texto claro para contraste con el fondo oscuro */
    background-color: #000; /* Fondo negro principal */
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    position: relative; /* Necesario para posicionar elementos dentro del body */
}

/* Estilos para el efecto de borde dinámico */
body::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    border: var(--border-thickness) solid transparent;
    background: linear-gradient(45deg, var(--neon-red-start), var(--neon-red-end)) border-box;
    -webkit-mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none; /* Asegura que no interfiera con interacciones */
    transition: transform 0.1s ease-out; /* Transición suave para el movimiento */
}

/* Estilos para el overlay de ingreso de fecha */
.overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.9); /* Fondo oscuro semitransparente */
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000; /* Asegura que esté por encima de todo */
    transition: opacity 0.5s ease-in-out;
}

.overlay.hidden {
    opacity: 0;
    pointer-events: none; /* Deshabilita interacciones cuando está oculto */
}

.overlay-content {
    background-color: #1a1a1a; /* Fondo ligeramente más claro para el cuadro */
    padding: 40px;
    border-radius: 10px;
    text-align: center;
    box-shadow: 0 0 20px rgba(255, 0, 102, 0.7); /* Sombra neón */
    border: 2px solid var(--neon-red-start);
    position: relative; 
    overflow: hidden; 
}

.overlay-content h1 {
    color: var(--neon-red-end);
    margin-bottom: 20px;
    text-shadow: 0 0 10px rgba(255, 0, 102, 0.5);
    position: relative; 
    z-index: 2;
}

.overlay-content input[type="date"] {
    padding: 10px;
    margin-bottom: 20px;
    border: 2px solid var(--neon-red-start);
    border-radius: 5px;
    background-color: #0d0d0d;
    color: #e0e0e0;
    font-size: 1em;
    outline: none;
    position: relative; 
    z-index: 2;
}

.overlay-content button {
    padding: 10px 25px;
    background: linear-gradient(45deg, var(--neon-red-start), var(--neon-red-end));
    color: white;
    border: none;
    border-radius: 5px;
    font-size: 1.1em;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    position: relative; 
    z-index: 2;
}

.overlay-content button:hover {
    transform: translateY(-2px);
    box-shadow: 0 0 15px rgba(255, 0, 102, 0.8);
}

.error-text {
    color: var(--neon-red-start);
    margin-top: 10px;
    font-size: 0.9em;
    position: relative; 
    z-index: 2;
}

/* Estilos para el contenido principal */
#main-content {
    width: 80%;
    max-width: 900px;
    padding: 20px;
    text-align: center;
    position: relative; 
    z-index: 10;
}

#main-content.hidden {
    display: none; 
}

header h1 {
    color: var(--neon-red-end);
    text-shadow: 0 0 15px rgba(255, 0, 102, 0.7);
    font-size: 2.5em;
    margin-bottom: 20px;
}

main p {
    line-height: 1.6;
    font-size: 1.1em;
}

/* --- Estilos para el nuevo botón "Toca aquí" --- */
.action-button {
    margin-top: 30px;
    padding: 12px 30px;
    background: linear-gradient(45deg, var(--neon-red-start), var(--neon-red-end));
    color: white;
    border: none;
    border-radius: 8px;
    font-size: 1.2em;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
    text-transform: uppercase;
    letter-spacing: 1px;
    box-shadow: 0 0 10px rgba(255, 0, 102, 0.5);
}

.action-button:hover {
    transform: translateY(-3px);
    box-shadow: 0 0 20px rgba(255, 0, 102, 0.9);
}

/* --- Estilos para los corazones de fondo (ahora emojis) --- */
#heart-container {
    position: fixed; 
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none; 
    z-index: 1; 
}

.heart {
    position: absolute;
    pointer-events: auto; 
    display: flex; 
    justify-content: center;
    align-items: center;
    color: var(--neon-red-start); 
    text-shadow: 0 0 5px var(--neon-red-start), 0 0 10px var(--neon-red-end); 
    transition: transform 0.05s ease-out; 
    line-height: 1; 
}

/* Clases para diferentes opacidades y tamaños */
.heart.opacity-low { opacity: 0.3; }
.heart.opacity-medium { opacity: 0.6; }
.heart.opacity-high { opacity: 0.9; }

/* Animación de caída */
@keyframes fall {
    0% { transform: translateY(-100vh); } 
    100% { transform: translateY(100vh); } 
}

/* --- Estilos para el Modal de la Carta y Modal general --- */
.modal {
    position: fixed; 
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(0, 0, 0, 0.8); 
    display: flex; 
    justify-content: center;
    align-items: center;
    z-index: 1001; 
    opacity: 1; 
    transition: opacity 0.5s ease-in-out;
}

.modal.hidden {
    opacity: 0;
    pointer-events: none;
}

/* Contenido del modal para la CARTA */
.modal-content {
    background-color: #1a1a1a; 
    padding: 30px;
    border-radius: 10px;
    box-shadow: 0 0 30px rgba(255, 0, 102, 0.9);
    width: 90%;
    max-width: 600px;
    position: relative;
    max-height: 80vh; 
    overflow-y: auto; 
    border: 2px solid var(--neon-red-start);
}

/* Estilo de Pergamino/Carta */
.parchment-style {
    background: linear-gradient(180deg, var(--parchment-color-light), var(--parchment-color-dark));
    border: 5px solid #8B4513; 
    border-radius: 15px;
    padding: 40px;
    font-family: 'Georgia', serif; 
    color: #4a2d0f; 
    line-height: 1.8;
    text-align: left;
    position: relative;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); 
    z-index: 1; 
}

.parchment-style h2 {
    color: #6a3a16;
    text-align: center;
    margin-bottom: 25px;
    font-size: 1.8em;
    text-shadow: 1px 1px 2px rgba(0,0,0,0.1);
}

.parchment-style .letter-text p {
    margin-bottom: 15px;
    font-size: 1.1em;
}

.close-button {
    position: absolute;
    top: 15px;
    right: 25px;
    color: #6a3a16; 
    font-size: 35px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.3s ease;
}

.close-button:hover,
.close-button:focus {
    color: var(--neon-red-start); 
}

/* Contenedor para los corazones dentro de la carta */
.letter-hearts-container {
    position: absolute; 
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none; 
    overflow: hidden; 
    z-index: 0; 
}

/* Estilos para los corazones dentro de la carta (inicialmente son los mismos que los de fondo) */
.letter-heart {
    position: absolute;
    pointer-events: auto; 
    color: var(--neon-red-start);
    text-shadow: 0 0 5px var(--neon-red-start), 0 0 10px var(--neon-red-end);
    line-height: 1;
    font-size: 40px; 
}

/* --- Estilos para la funcionalidad de música --- */

/* Contenedor principal del reproductor (incluye icono, controles, visualizador y barra) */
#music-player-full-container {
    position: fixed;
    top: 15px; /* Ligeramente más abajo para dar espacio */
    right: 15px; /* Ligeramente más hacia adentro */
    display: flex;
    flex-direction: column; /* Icono/controles arriba, barra abajo */
    align-items: flex-end; /* Alinea los elementos a la derecha */
    gap: 5px; /* Espacio entre los elementos */
    z-index: 1001;
}

/* Contenedor para el icono, botones de adelantar/retroceder y visualizador */
#music-player-controls {
    display: flex;
    align-items: center;
    gap: 10px; /* Espacio entre los elementos de control */
    color: var(--neon-red-start);
    text-shadow: 0 0 8px var(--neon-red-start), 0 0 15px var(--neon-red-end);
}

/* Estilos para el icono principal de música/pausa */
#music-icon {
    font-size: 3em; /* Tamaño del icono agrandado */
    cursor: pointer;
    transition: transform 0.2s ease;
}

#music-icon:hover {
    transform: scale(1.1);
}

/* Contenedor para los botones de adelantar/retroceder */
#seek-controls {
    display: flex;
    gap: 5px; /* Espacio entre los botones */
    font-size: 1.5em; /* Tamaño de los iconos de los botones */
}

#seek-controls i {
    cursor: pointer;
    transition: color 0.2s ease;
}

#seek-controls i:hover {
    color: var(--neon-blue); /* Cambia de color al pasar el mouse */
    text-shadow: 0 0 8px var(--neon-blue);
}


/* Estilos para la animación de las barras del ecualizador */
#music-visualizer {
    display: flex;
    height: 30px;
    align-items: flex-end; /* Alinea las barras a la base */
    gap: 2px; /* Espacio entre barras */
    margin-left: 10px; /* Separación de los controles */
}

.bar {
    width: 4px; /* Ancho de cada barra */
    background-color: var(--neon-blue); /* Color neón para las barras */
    border-radius: 2px;
    box-shadow: 0 0 5px var(--neon-blue); /* Brillo neón para las barras */
    animation: none; /* Por defecto sin animación */
}

/* Animación cuando la música está sonando */
.bar.playing {
    animation: equalize 0.8s ease-in-out infinite alternate;
}

/* Retrasos para que las barras se muevan de forma asíncrona */
.bar:nth-child(1) { animation-delay: 0s; }
.bar:nth-child(2) { animation-delay: 0.1s; }
.bar:nth-child(3) { animation-delay: 0.2s; }
.bar:nth-child(4) { animation-delay: 0.3s; }
.bar:nth-child(5) { animation-delay: 0.4s; }

@keyframes equalize {
    0% { height: 10%; }
    25% { height: 60%; }
    50% { height: 30%; }
    75% { height: 80%; }
    100% { height: 10%; }
}

/* Estilos para la barra de progreso */
#progress-bar {
    width: 180px; /* Ancho de la barra de progreso */
    height: 5px; /* Altura de la barra */
    -webkit-appearance: none; /* Elimina estilos por defecto del navegador */
    appearance: none;
    background: rgba(255, 255, 255, 0.2); /* Fondo de la barra (gris semitransparente) */
    border-radius: 5px;
    cursor: pointer;
    outline: none;
    margin-top: 5px; /* Espacio entre la barra y los controles */
    box-shadow: 0 0 5px rgba(255, 0, 102, 0.3); /* Sombra suave */
}

/* Estilo del "pulgar" (controlador) de la barra de progreso */
#progress-bar::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 15px; /* Ancho del pulgar */
    height: 15px; /* Altura del pulgar */
    background: var(--neon-red-start); /* Color neón del pulgar */
    border-radius: 50%; /* Forma circular */
    cursor: pointer;
    box-shadow: 0 0 10px var(--neon-red-end); /* Brillo neón del pulgar */
    transition: background 0.2s ease, box-shadow 0.2s ease;
}

#progress-bar::-webkit-slider-thumb:hover {
    background: var(--neon-red-end);
    box-shadow: 0 0 15px var(--neon-red-start);
}

/* Estilos para la visualización del tiempo (0:00 / 0:00) */
#time-display {
    font-size: 0.8em;
    color: #ccc;
    margin-top: 2px;
    text-shadow: 0 0 5px rgba(255, 0, 102, 0.2);
}

/* Estilos para el botón de corazón que aparece al finalizar la canción */
#ending-heart-button { 
    position: fixed;
    top: 20px;
    right: 20px;
    background: linear-gradient(45deg, var(--neon-red-start), var(--neon-red-end)); /* Degradado neón */
    color: white;
    border: none;
    border-radius: 50%; /* Para que sea un círculo perfecto */
    padding: 12px 18px; /* Ajusta el padding para el texto "Tócame" y el corazón */
    font-size: 1.1em;
    cursor: pointer;
    box-shadow: 0 0 15px var(--neon-red-start), 0 0 25px var(--neon-red-end); /* Efecto neón fuerte */
    transition: all 0.3s ease;
    z-index: 1002; /* Más alto que el reproductor de música para superponerlo si se muestran a la vez */
    font-weight: bold;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

#ending-heart-button:hover {
    transform: scale(1.1);
    box-shadow: 0 0 20px var(--neon-red-start), 0 0 35px var(--neon-red-end);
}

/* --- NUEVOS ESTILOS Y AJUSTES PARA EL MODAL DE MENSAJE FINAL --- */
#final-message-modal {
    position: fixed;
    width: 100vw; 
    height: 100vh;
    top: 0;
    left: 0;
    background-color: rgba(0, 0, 0, 0.8);
    z-index: 1003; 
    transition: opacity 0.5s ease-in-out;
}

#final-message-modal.hidden {
    opacity: 0;
    pointer-events: none;
}

.modal-content.final-message-style {
    background: #0d0d0d; /* Negro muy oscuro */
    color: white;
    padding: 50px;
    border-radius: 15px;
    text-align: center;
    box-shadow: 0 0 30px rgba(255, 0, 102, 0.9), 0 0 60px rgba(255, 0, 102, 0.6); /* Sombra neón doble */
    border: 3px solid var(--neon-red-start); /* Borde rojo neón */
    font-family: 'Dancing Script', cursive; /* Fuente cursiva */
    font-size: 2em; /* Tamaño de letra grande */
    line-height: 1.5;
    text-shadow: 0 0 10px rgba(255, 0, 102, 0.7); /* Sombra de texto neón */
    position: absolute; /* Para poder moverlo con top/left en JS */
    cursor: grab; /* Indica que se puede arrastrar */
    overflow: hidden; /* Evita que el texto se salga si se encoge */
    max-width: 500px; /* Tamaño máximo inicial */
    min-width: 80px; /* Tamaño mínimo al minimizar */
    min-height: 40px; /* Altura mínima al minimizar */
    
    /* Animación de entrada inicial */
    transform: scale(0.8); /* Empieza más pequeño */
    opacity: 0; /* Empieza transparente */
    /* AJUSTES CLAVE AQUÍ: Duración de transición muy corta para el transform (tamaño) y otras propiedades */
    transition: transform 0.1s ease-out, /* Transición rápida para escalar */
                opacity 0.8s ease-out, /* Transición de opacidad */
                top 0s linear, left 0s linear, /* Sin transición para el arrastre, ¡es clave para la fluidez! */
                width 0.1s ease-out, height 0.1s ease-out, padding 0.1s ease-out, font-size 0.1s ease-out,
                border-radius 0.1s ease-out; /* Transiciones rápidas para el tamaño y forma */
}

/* Animación para cuando el modal aparece */
#final-message-modal:not(.hidden) .final-message-style {
    transform: scale(1); /* Vuelve a tamaño normal */
    opacity: 1; /* Se vuelve visible */
}

/* Estado Minimizado */
.final-message-style.minimized {
    width: 80px; /* Ancho muy pequeño */
    height: 40px; /* Alto muy pequeño */
    font-size: 0.1em; /* Texto casi invisible */
    padding: 5px; /* Padding reducido */
    border-radius: 50%; /* Se vuelve casi un círculo */
    cursor: grabbing; /* Cambia a grabbing al estar minimizado y arrastrando */
    box-shadow: 0 0 10px rgba(255, 0, 102, 0.7); /* Sombra más sutil */
    transform: scale(1); /* Asegura que no haya escala residual, el tamaño es por width/height */
    
    /* Importante para que el contenido se colapse correctamente */
    display: flex;
    justify-content: center;
    align-items: center;
}

/* Animación de "latido" para el mensaje cuando está normal */
.modal-content.final-message-style:not(.minimized) #final-message-text {
    animation: heartBeatMessage 4s infinite ease-in-out; /* Animación de latido */
    display: inline-block; /* Necesario para que la transformación funcione */
    white-space: normal; /* Permite que el texto se ajuste */
}

/* Quita la animación de latido cuando está minimizado */
.final-message-style.minimized #final-message-text {
    animation: none;
    white-space: nowrap; /* Intenta mantener el texto en una línea (se recortará) */
    overflow: hidden; /* Oculta el texto desbordado */
    text-indent: -9999px; /* Mueve el texto fuera de la vista */
    display: block; /* Para que text-indent funcione */
}

@keyframes heartBeatMessage {
    0% { transform: scale(1); }
    15% { transform: scale(1.05); }
    30% { transform: scale(1); }
    45% { transform: scale(1.05); }
    60% { transform: scale(1); }
    100% { transform: scale(1); }
}

/* Clase de utilidad para ocultar/mostrar elementos */
.hidden {
    display: none;
}