/* rankwired-php/assets/css/style.css */
html, body {
    font-family: 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
    scroll-behavior: smooth;
}

/* Animaciones personalizadas */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.animate-fade-in-up {
    animation: fadeInUp 0.5s ease-out forwards;
}

.logo-glow {
    text-shadow: 0 0 20px rgba(99, 102, 241, 0.2);
}

/* Keep all country flags visually consistent across reports and analytics views. */
img[src*="/assets/img/flags/"] {
    width: 22px;
    height: 14px;
    object-fit: cover;
    border-radius: 0.25rem;
}

/* Aquí irá el archivo compilado de Tailwind o los estilos en crudo extraídos de React.
Por ahora usamos el CDN de Tailwind insertado en el header para asegurar 1:1 temporalmente */

/* ─── Shimmer / Skeleton Loading System ─── */
@keyframes rw-shimmer {
    0%   { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

.rw-skeleton {
    background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%) !important;
    background-size: 200% 100% !important;
    animation: rw-shimmer 1.5s ease-in-out infinite;
    border-radius: 0.5rem;
    color: transparent !important;
    pointer-events: none;
    user-select: none;
    border-color: transparent !important;
    box-shadow: none !important;
}
.rw-skeleton > *,
.rw-skeleton::before,
.rw-skeleton::after { visibility: hidden !important; }
.rw-skeleton svg { display: none !important; }

/* Skeleton size helpers */
.rw-skeleton-text   { height: 0.875rem; border-radius: 0.25rem; }
.rw-skeleton-title  { height: 1.5rem;   width: 55%;  border-radius: 0.375rem; }
.rw-skeleton-circle { border-radius: 9999px !important; }
.rw-skeleton-card   { min-height: 120px; }
.rw-skeleton-row    { height: 3.25rem; }
.rw-skeleton-chart  { min-height: 320px; }
.rw-skeleton-bar    { height: 2rem; width: 100%; }
.rw-skeleton-avatar { width: 2.5rem; height: 2.5rem; border-radius: 9999px !important; }

/* Fade transition from skeleton → real content */
.rw-skeleton-fade {
    transition: opacity 0.3s ease;
}

/* Dark-variant skeleton (for dark backgrounds) */
.rw-skeleton-dark {
    background: linear-gradient(90deg, #334155 25%, #475569 50%, #334155 75%) !important;
    background-size: 200% 100% !important;
    animation: rw-shimmer 1.5s ease-in-out infinite;
}

/* ─── Browser Log Overlay ─── */
#rw-log-panel {
    position: fixed;
    bottom: 0;
    right: 0;
    width: 420px;
    max-height: 320px;
    background: #0f172a;
    color: #e2e8f0;
    font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace;
    font-size: 11px;
    line-height: 1.5;
    z-index: 99999;
    border-top-left-radius: 12px;
    box-shadow: -4px -4px 20px rgba(0,0,0,0.4);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    transition: transform 0.3s ease;
}
#rw-log-panel.rw-log-collapsed { transform: translateY(calc(100% - 32px)); }
#rw-log-panel .rw-log-bar {
    display: flex; align-items: center; justify-content: space-between;
    padding: 6px 12px; background: #1e293b; cursor: pointer; user-select: none;
    border-bottom: 1px solid #334155; flex-shrink: 0;
}
#rw-log-panel .rw-log-bar .rw-badge {
    background: #ef4444; color: white; font-size: 10px; font-weight: 700;
    border-radius: 9999px; min-width: 18px; height: 18px;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 0 5px; margin-left: 6px;
}
#rw-log-panel .rw-log-body {
    overflow-y: auto; flex: 1; padding: 8px 12px;
}
#rw-log-panel .rw-log-entry { padding: 3px 0; border-bottom: 1px solid #1e293b; word-break: break-all; }
#rw-log-panel .rw-log-entry.rw-err  { color: #fca5a5; }
#rw-log-panel .rw-log-entry.rw-warn { color: #fde68a; }
#rw-log-panel .rw-log-entry.rw-info { color: #93c5fd; }
#rw-log-panel .rw-log-entry .rw-ts  { color: #64748b; margin-right: 6px; }