
/* 1. ESTRUCTURA BASE Y V-CLOAK */
[v-cloak] { display: none; }

/* 2. SCROLLBAR INVISIBLE (Consolidado) */
.scrollbar-hide, .hide-scrollbar {
    -ms-overflow-style: none;  /* IE/Edge */
    scrollbar-width: none;     /* Firefox */
    -webkit-overflow-scrolling: touch; /* Scroll suave iOS */
}
.scrollbar-hide::-webkit-scrollbar, .hide-scrollbar::-webkit-scrollbar {
    display: none;             /* Chrome/Safari */
}

/* 3. ANIMACIONES DE CARGA (SKELETONS/GHOST) */
@keyframes pulse-ghost {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.4; }
}
.animate-ghost {
    animation: pulse-ghost 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* 4. TRANSICIONES DE PANELES Y MODALES */
/* Paneles generales */
.panel-switch-enter-active, .panel-switch-leave-active,
.modal-fade-enter-active, .modal-fade-leave-active {
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.panel-switch-enter {
    opacity: 0;
    transform: translateY(20px);
}
.panel-switch-leave-to {
    opacity: 0;
    transform: translateY(-20px);
}

/* Específico para Modales */
.modal-fade-enter-from, .modal-fade-leave-to {
    opacity: 0;
    transform: scale(0.95);
}

/* 5. ANIMACIONES DE ENTRADA (FADE UP) */
.animate-fade-up {
    animation: fadeUp 0.6s ease-out forwards;
}
@keyframes fadeUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

/* 6. MATERIAL SYMBOLS (Corregido para evitar desaparición) */
.material-symbols-outlined {
    font-family: 'Material Symbols Outlined';
    font-weight: normal;
    font-style: normal;
    font-size: 24px;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    display: inline-block;
    white-space: nowrap;
    word-wrap: normal;
    direction: ltr;
    -webkit-font-feature-settings: 'liga';
    -webkit-font-smoothing: antialiased;
    font-display: block; 
    width: 1em;
    overflow: hidden;
    vertical-align: middle;
}

/* 7. UTILIDADES EXTRA */
.active-tab p { color: white !important; }
.story-shadow {
    background: linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, rgba(0,0,0,0) 20%, rgba(0,0,0,0) 70%, rgba(0,0,0,0.8) 100%);
}
.scrollbar-hide::-webkit-scrollbar {
    display: none;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Ocultar flechas en Firefox */
input[type=number] {
  -moz-appearance: textfield;
}
@keyframes fade-in {
    from { opacity: 0; transform: translateX(10px); }
    to { opacity: 1; transform: translateX(0); }
}
.animate-fade-in {
    animation: fade-in 0.4s ease-out forwards;
}
@keyframes fade-in-up {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}
.animate-fade-in-up {
    animation: fade-in-up 0.6s ease-out forwards;
}
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.3s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
@keyframes bounce-short {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.15); }
}

.animate-bounce-short {
    animation: bounce-short 0.4s ease-in-out;
}

/* Efecto extra para el corazón */
.group:active ion-icon[name="heart-outline"] {
    color: #ef4444 !important; /* red-500 */
}
@keyframes shimmer {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(100%); }
}
.fade-enter-active, .fade-leave-active {
    transition: opacity .4s, transform .4s;
}
.fade-enter, .fade-leave-to {
    opacity: 0;
    transform: translate(-50%, 20px);
}

@keyframes bounce-subtle {
    0%, 100% { transform: translate(-50%, 0); }
    50% { transform: translate(-50%, -5px); }
}
.animate-bounce-subtle {
    animation: bounce-subtle 2s infinite;
}