PageSourceSearch

https://quelibroleo.com/buscador-avanzado

html quelibroleo.com collected 2026-09-24 09:29:44 UTC 57,634 bytes, 1,242 lines download raw bytes

1<!doctype html>
2<html lang="es" prefix="og: http://ogp.me/ns#">
3
4<head>
5    <!-- ============================================================ 1. PRECONEXIONES — siempre lo primero, ganan ms gratis ============================================================ -->
6    <link rel="dns-prefetch" href="https://www.googletagmanager.com">
7    <link rel="preconnect" href="https://fonts.googleapis.com" crossorigin>
8    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9    <link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin>
10    <link rel="preconnect" href="https://pagead2.googlesyndication.com" crossorigin>
11
12    <!-- ============================================================ 1.b. GOOGLE ADSENSE — script global en <head> (obligatorio para Auto Ads: barras laterales, ancla, viñeta) ============================================================ -->
13    <meta name="google-adsense-account" content="ca-pub-9372321778320530">
14    
15
16    <!-- ============================================================ 2. CÁLCULO DE VARIABLES PHP (debe ir ANTES del 
16<script> que las usa, ese era el bug de "autoplay is not defined") ============================================================ -->
17    
18            
19        <style>
20            /* Los iframes de los anuncios respetan el ancho del contenedor
21               (evita scroll horizontal en móvil por creativos demasiado anchos).
22               NO limitamos la altura — dejamos que el anuncio crezca lo que necesite. */
23            div[id^="qll-"] iframe {
24                max-width: 100% !important;
25            }
26            .publicidad iframe {
27                max-width: 100% !important;
28            }
29            .publicidad {
30                max-width: 100%;
31            }
32
33            /* ============================================================
34               CABECERA RESPONSIVE (mobile)
35               El input del buscador tiene width:350px inline, que en pantallas
36               <=767px empuja el link "Búsqueda avanzada" fuera del viewport y
37               queda tapado por el banner superior. Fix: input al 100% y el
38               link "Búsqueda avanzada" a una línea propia debajo, centrado.
39               ============================================================ */
40            /* ============================================================
41               CARRUSEL DE PORTADAS (mobile) — tamaño uniforme
42               En desktop ya se ve bien. En mobile las portadas tienen alturas
43               distintas porque cada libro tiene aspect ratio diferente. Este CSS
44               fuerza un contenedor 2:3 (proporción libro) y usa object-fit:contain
45               para que la portada quepa entera SIN recortar. Si no es 2:3, quedan
46               márgenes discretos con fondo gris muy claro.
47               ============================================================ */
48            @media (max-width: 991px) {
49                /* Contenedor con ancho y altura fijos → TODAS las tarjetas del
50                   mismo tamaño. La portada se ESTIRA para llenar el contenedor
51                   (object-fit: fill). En imágenes pequeñas la deformación es
52                   imperceptible y el resultado visual queda simétrico. */
53                .carousel .item .preview {
54                    position: relative;
55                    width: 100%;
56                    max-width: 160px;
57                    margin: 0 auto;
58                    aspect-ratio: 2 / 3;
59                    background: transparent !important;
60                    border: 0 !important;
61                    box-shadow: none !important;
62                    overflow: hidden;
63                }
64                .carousel .item .preview a {
65                    display: block;
66                    width: 100%;
67                    height: 100%;
68                    background: transparent;
69                }
70                .carousel .item .preview img {
71                    display: block;
72                    width: 100% !important;
73                    height: 100% !important;
74                    max-width: 100%;
75                    max-height: 100%;
76                    object-fit: fill;     /* se estira para cubrir el 100% del contenedor */
77                    border: 0 !important;
78                    box-shadow: none !important;
79                }
80            }
81
82            @media (max-width: 767px) {
83                /* .widgets como grid flex con wrap: input + hamburguesa arriba,
84                   "Búsqueda avanzada" abajo como enlace discreto. */
85                header .widgets {
86                    display: flex !important;
87                    flex-wrap: wrap;
88                    align-items: center;
89                    gap: 8px;
90                    width: 100%;
91                }
92                /* Input: ocupa TODO el espacio disponible en la primera línea. */
93                header .widgets #buscador_superior {
94                    order: 1;
95                    flex: 1 1 auto;
96                    min-width: 0;               /* clave para que flex-shrink funcione */
97                    width: auto;
98                }
99                header .widgets #buscador_superior form { display: block; width: 100%; }
100                header .widgets #buscador_superior input[type="search"] {
101                    width: 100% !important;
102                    max-width: 100%;
103                    box-sizing: border-box;
104                }
105                /* Botón hamburguesa al lado del input, tamaño automático. */
106                header .widgets #openmenu {
107                    order: 2;
108                    flex: 0 0 auto;
109                }
110                /* "Búsqueda avanzada" a línea propia, alineado a la derecha,
111                   texto pequeño para no dominar. */
112                header .widgets .links {
113                    order: 3;
114                    flex: 1 1 100%;
115                    display: block;
116                    width: 100%;
117                    text-align: right;
118                    margin: 4px 0 0;
119                    font-size: 13px;
120                }
121                header .widgets .links a {
122                    display: inline-block;
123                    padding: 2px 4px;
124                    color: #666;
125                    text-decoration: none;
126                }
127                /* Ocultamos el resultado dropdown mientras esté colocado en absoluto
128                   (por si aparece en el flow) */
129                header .widgets #resultado_buscador_superior {
130                    order: 4;
131                    flex: 1 1 100%;
132                }
133                /* Un poco de aire entre el header y el banner superior */
134                .banner-superior { margin-top: 8px; }
135            }
136
137            /* ============================================================
138               BANNER SUPERIOR (qll_top) — TAMAÑO FIJO estilo leaderboard
139               Nunca crece más de 100px de alto para no romper la cabecera.
140               ============================================================ */
141            .banner-superior.banner-top-fixed {
142                max-height: 100px;
143                overflow: hidden;
144                text-align: center;
145            }
146            .banner-superior.banner-top-fixed #qll-top {
147                display: inline-block;
148                max-width: 100%;
149                max-height: 100px;
150                overflow: hidden;
151                line-height: 0;
152            }
153            .banner-superior.banner-top-fixed #qll-top iframe {
154                max-width: 100% !important;
155                max-height: 100px !important;
156                display: block;
157                margin: 0 auto;
158            }
159
160            /* Slots FLEXIBLES: se centran y el creativo se escala si es más ancho.
161               Se aplica a cualquier contenedor con clase .qll-flex (in-read, home, in-feed).
162
163               ANCHO: garantizado por JS (fitSlotToContainer) — nunca se sale
164                      del contenedor. Si el creativo es 970px y el hueco es 800px,
165                      se aplica transform:scale(0.82) y el anuncio se ve entero.
166               ALTO:  libre — el iframe crece a la altura del creativo servido
167                      (o al alto escalado si se ha reducido). Se ve completo. */
168            .qll-flex {
169                display: block;
170                margin: 20px auto;
171                padding: 0;
172                width: 100%;
173                max-width: 100%;
174                overflow: hidden;        /* red de seguridad — evita scroll horizontal */
175                text-align: center;
176                box-sizing: border-box;
177            }
178            .qll-flex > .container,
179            .qll-flex > .wrapper,
180            .qll-flex > .container > .wrapper {
181                width: 100%;
182                max-width: 100%;
183                text-align: center;
184                box-sizing: border-box;
185                /* No overflow:hidden aquí — dejamos que el iframe muestre su alto real */
186            }
187            .qll-flex div[id^="qll-"] {
188                display: block;
189                width: auto;             /* JS ajusta a containerW cuando escale */
190                max-width: 100%;
191                margin: 0 auto;
192                text-align: center;
193                line-height: 0;
194                box-sizing: border-box;
195                /* JS puede añadir overflow:hidden + width/height si aplica scale */
196            }
197            .qll-flex div[id^="qll-"] iframe {
198                display: block;
199                max-width: 100% !important;   /* fallback si JS no aplicara scale */
200                margin: 0 auto;
201                border: 0;
202                box-sizing: border-box;
203                /* JS aplica transform:scale(N) cuando el iframe excede el ancho */
204            }
205
206            /* ============================================================
207               RED DE SEGURIDAD PARA AUTO ADS DE ADSENSE
208               Estos formatos deberían estar desactivados en AdSense,
209               pero por si Google los aplica igualmente, los limitamos aquí.
210               ============================================================ */
211
212            /* 1. SIDE RAILS (barras laterales fijas) — SIEMPRE OCULTOS.
213                  El usuario NO quiere que aparezcan estos anuncios verticales
214                  flotantes en los laterales de la pantalla ("Noticias hace 13 min", etc.). */
215            body > ins.google-auto-placed[data-google-container-id][style*="position: fixed"][style*="left"]:not([style*="bottom: 0"]),
216            body > ins.google-auto-placed[data-google-container-id][style*="position: fixed"][style*="right"]:not([style*="bottom: 0"]),
217            body > div[id^="google_ads_iframe_"][style*="position: fixed"][style*="left"]:not([style*="bottom: 0"]),
218            body > div[id^="google_ads_iframe_"][style*="position: fixed"][style*="right"]:not([style*="bottom: 0"]),
219            /* Selectores adicionales para side rails que Google renombra */
220            body > div.side-rail-container,
221            body > div[class*="side-rail"],
222            body > div[class*="sidebar-ad"] {
223                display: none !important;
224                visibility: hidden !important;
225            }
226
227            /* 2. VIGNETTE (anuncios pantalla completa que aparecen entre navegación) —
228                  SIEMPRE OCULTOS. El usuario no quiere ese formato que interrumpe. */
229            body > ins.google-auto-placed[data-vignette-loaded],
230            body > div[class*="vignette"][style*="position: fixed"],
231            body > div[id*="vignette"],
232            body > ins[data-vignette],
233            /* La "Plataforma virtual 360" que aparece flotante en la parte central */
234            body > div[id^="google_ads_iframe_"][style*="position: fixed"][style*="transform"]:not([style*="bottom: 0"]) {
235                display: none !important;
236                visibility: hidden !important;
237            }
238
239            /* 3. OVERLAYS / VÍDEO OUT-STREAM en posición flotante:
240                  los OCULTAMOS por completo. El único formato flotante aceptable
241                  es el ANCLA DEL PIE (bottom:0), que se salva por :not([style*="bottom: 0"]). */
242            body > ins.adsbygoogle[data-anchor-shown]:not([data-anchor-status="displayed"]),
243            body > ins.google-auto-placed[data-google-container-id][style*="position: fixed"][style*="top:"]:not([style*="bottom: 0"]),
244            body > ins.google-auto-placed[data-vignette-loaded],
245            body > div[id*="google_esf"][style*="position: fixed"],
246            body > div[id^="google_ads_iframe_"][style*="position: fixed"][style*="top:"]:not([style*="bottom: 0"]),
247            /* Nuevo: iframes de vídeo out-stream flotantes en la esquina */
248            body > iframe[id^="google_ads_iframe_"][style*="position: fixed"]:not([style*="bottom: 0"]),
249            body > iframe[src*="doubleclick"][style*="position: fixed"]:not([style*="bottom: 0"]) {
250                display: none !important;
251                visibility: hidden !important;
252            }
253
254            /* 4. Botón de cerrar SIEMPRE por encima y clickable. */
255            body > ins[data-google-container-id] button[aria-label*="errar"],
256            body > ins[data-google-container-id] button[aria-label*="lose"],
257            body > div[id^="google_ads_iframe_"] button[aria-label*="errar"],
258            body > div[id^="google_ads_iframe_"] button[aria-label*="lose"] {
259                z-index: 2147483647 !important;
260                pointer-events: auto !important;
261            }
262
263            /* 5. Todo el body respeta el overflow — evitamos scroll horizontal
264                  aunque un anuncio flotante intente estirarse fuera. */
265            body { overflow-x: hidden; }
266        </style>
267
268        
269        
269<script>
270            (function () {
271                var w = window, n = navigator, blocked = false;
272                try {
273                    // Huellas típicas de headless / automatización
274                    if (n.webdriver === true) blocked = true;
275                    if (w._phantom || w.callPhantom) blocked = true;
276                    if (w.__nightmare || w.Buffer) blocked = true;
277                    if (w.domAutomation || w.domAutomationController) blocked = true;
278                    // Selenium / WebDriver globals
279                    if (w.document && w.document.$cdc_asdjflasutopfhvcZLmcfl_) blocked = true;
280                    if (w.document && w.document.__webdriver_evaluate) blocked = true;
281                    // Puppeteer / Playwright pattern
282                    if (/HeadlessChrome/i.test(n.userAgent)) blocked = true;
283                    // Chrome real siempre tiene idiomas y plugins definidos
284                    if (n.languages && n.languages.length === 0) blocked = true;
285                    // Timezone extraña combinada con navegador (opcional, comentado)
286                    // if (Intl.DateTimeFormat().resolvedOptions().timeZone === 'UTC') blocked = true;
287                } catch (e) { /* ignora */ }
288                w.__adsBlocked = blocked;
289            })();
290        </script>
290
291        
291<script>
292            // Solo cargamos AdSense + GAM + APS si el filtro cliente lo permite.
293            if (!window.__adsBlocked) {
294                // Stub de QLLAds — permite que los blades hijos registren slots
295                // aunque qll-ads.js aún no haya cargado (patrón googletag.cmd.push).
296                window.QLLAds = window.QLLAds || {
297                    _pending: [],
298                    slot: function (cfg) { this._pending.push(cfg); }
299                };
300
301                // 1) AdSense (para Auto Ads: barras laterales, ancla, viñeta)
302                var ads = document.createElement('script');
303                ads.async = true;
304                ads.crossOrigin = 'anonymous';
305                ads.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9372321778320530';
306                document.head.appendChild(ads);
307
308                // 2) Wrapper QLLAds — orquesta GAM + Amazon TAM (+ Prebid en fase 3)
309                var qll = document.createElement('script');
310                qll.async = true;
311                qll.src = 'https://quelibroleo.com/js/ads/qll-ads.js?v=5';
312                document.head.appendChild(qll);
313            }
314        </script>
314
315    
316    
317    <!-- ============================================================ 3. META TAGS BÁSICOS ============================================================ -->
318    <meta charset="UTF-8">
319    <meta name="viewport" content="width=device-width, initial-scale=1">
320    <meta name="csrf-token" content="d4fHaNKW3MMbbYJdb3jiZh7Aqjt5tDAMnJNvu9CD">
321    <meta name="referrer" content="no-referrer-when-downgrade">
322    <meta name="google-site-verification" content="ku07Z9Chq2WxboXEtforOBJgwLhB8N2cFPLvoRTP2k4" />
323
324            <title>Quelibroleo - Descubre tu próxima lectura - Red social de libros</title>
325        <meta name="title" content="Quelibroleo - Descubre tu próxima lectura - Red social de libros">
326        <meta name="description" content="Únete a nuestra comunidad de lectores en Quelibroleo. Descubre, califica y comparte tus lecturas favoritas con otros apasionados de los libros.">
327    
328    <!-- OG / Twitter -->
329    <meta property="og:title"       content="Quelibroleo - Descubre tu próxima lectura - Red social de libros">
330    <meta property="og:description" content="Quelibroleo es una comunidad de libros y lectores donde puedes votar y comentar los libros leídos.">
331    <meta property="og:image"       content="https://quelibroleo.com/images/logo.jpg">
332    <meta property="og:url"         content="https://quelibroleo.com/buscador-avanzado">
333    <meta name="twitter:card"        content="summary_large_image">
334    <meta name="twitter:title"       content="Quelibroleo - Descubre tu próxima lectura - Red social de libros">
335    <meta name="twitter:description" content="Quelibroleo es una comunidad de libros y lectores.">
336    <meta name="twitter:image"       content="https://quelibroleo.com/images/twitter-card.jpg">
337
338            
339    <!-- ============================================================ 4. CANONICAL + FAVICON ============================================================ -->
340    <link rel="canonical" href="https://quelibroleo.com/buscador-avanzado" />
341    <link rel="shortcut icon" href="https://quelibroleo.com/favicon.ico" />
342    	<link rel="stylesheet" href="https://quelibroleo.com/css/jquery.tagsinput.min.css">
343
344    <!-- ============================================================ 5. CSS CRÍTICO — bloquea el render pero es imprescindible (bootstrap + tus estilos propios, no los de terceros) ============================================================ -->
345    <link rel="stylesheet" href="https://quelibroleo.com/css/normalize.min.css">
346    <link rel="stylesheet" href="https://quelibroleo.com/css/bootstrap.min.css">
347    
348    <link rel="stylesheet" href="https://quelibroleo.com/css/style.css?v=1782993719">
349    <link rel="stylesheet" href="https://quelibroleo.com/css/style_max.css?v=1727427582">
350
351    <!-- ============================================================ 6. CSS DIFERIDO — no bloquean el render Técnica: media="print" + onload="this.media='all'" El navegador los descarga en paralelo sin bloquear el LCP ============================================================ -->
352    
353
354    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"
355          media="print" onload="this.media='all'">
356    <noscript><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"></noscript>
357
358    <link rel="stylesheet" href="https://quelibroleo.com/css/magnific-popup.min.css"
359          media="print" onload="this.media='all'">
360    <noscript><link rel="stylesheet" href="https://quelibroleo.com/css/magnific-popup.min.css"></noscript>
361
362    <link rel="stylesheet" href="https://quelibroleo.com/css/flag.min.css"
363          media="print" onload="this.media='all'">
364    <noscript><link rel="stylesheet" href="https://quelibroleo.com/css/flag.min.css"></noscript>
365
366    <!-- Google Fonts diferido -->
367    <link rel="stylesheet"
368          href="https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin&display=swap"
369          media="print" onload="this.media='all'">
370    <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin&display=swap"></noscript>
371
372    <link rel="stylesheet"
373          href="https://fonts.googleapis.com/css?family=Lato:400,700|PT+Serif:400,700&display=swap"
374          media="print" onload="this.media='all'">
375    <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lato:400,700|PT+Serif:400,700&display=swap"></noscript>
376
377    <link rel="stylesheet"
378          href="https://fonts.googleapis.com/icon?family=Material+Icons"
379          media="print" onload="this.media='all'">
380    <noscript><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"></noscript>
381
382    <!-- ============================================================ 7. ESTILOS INLINE CRÍTICOS — evitan CLS y saltos visuales ============================================================ -->
383    <style>
384        /* Reserva espacio para los banners flotantes antes de que cargue el CSS completo */
385        .publicidad_flotante_derecha,
386        .publicidad_flotante_izquierda {
387            contain: strict;
388            width: 120px;
389            height: 600px;
390        }
391        @media  only screen and (max-width: 1440px) {
392            .publicidad_flotante_derecha,
393            .publicidad_flotante_izquierda { display: none; }
394        }
395
396        /*
397         * FIX ADBLOCKER FALSO POSITIVO
398         * La regla body>
398div:not(...) la dejamos aquí en lugar de en un CSS externo
399         * para que no haya un flash donde el div desaparece antes de que cargue el CSS.
400         * ADEMÁS eliminamos el <amp-consent> del body — eso era lo que disparaba
401         * los adblockers porque amp-consent inyecta iframes de doubleclick.
402         */
403        body > div:not([class*="phpdebugbar"]):not([class*="S_ACCOUNT_LIST"]):not([class*="popover"]):not([class*="iyp"]):not([id*="iyp"]):not([class*="mfp"]):not(.tooltip):not([data-tether-id]):not([class*="publicidad"]) {
404            display: block;
405        }
406
407        /*
408         * FIX: las posiciones se calculaban con un ancho de .container distinto para
409         * cada banner (1100px y 1250px) cuando el .container real de Bootstrap mide
410         * 1170px a partir de 1200px de viewport. Con la formula anterior el banner
411         * derecho solo se veia a partir de ~2320px de viewport (practicamente nadie)
412         * y el izquierdo a partir de ~1510px. Formula corregida: mismo ancho de
413         * .container (1170px) y mismo hueco (15px) para ambos lados -> simetricos y
414         * visibles ya desde ~1440px, que es el breakpoint que usa el media query de arriba.
415         */
416        .publicidad_flotante_derecha {
417            display: block;
418            z-index: 99999;
419            position: fixed;
420            right: calc((100vw - 1170px) / 2 - 135px);
421            top: 100px;
422            height: 600px;
423            width: 120px;
424            transition: all 0.3s ease-in-out;
425        }
426
427        .publicidad_flotante_izquierda {
428            display: block;
429            position: fixed;
430            top: 180px;
431            height: 600px;
432            width: 120px;
433            z-index: 9999;
434            transition: all 0.3s ease-in-out;
435            left: calc((100vw - 1170px) / 2 - 135px);
436            border-radius: 6px;
437            box-shadow: 0 2px 8px rgba(0,0,0,0.2);
438        }
439    </style>
440
441    <!-- ============================================================ 8. GOOGLE TAG — solo si NO es Lighthouse/PageSpeed
442         IMPORTANTE: este bloque define window.gtag() como función global. Es NECESARIO
443         aunque GTM también cargue GA4, porque hay scripts en common.header / vistas hijas
444         que llaman a gtag('event', 'click', { event_callback: ... }) para trackear menús.
445         Si gtag no está definida, los enlaces del menú dejan de navegar.
446         Para evitar el duplicado de page_view, GTM lo dispara solo (send_page_view:false aquí).
447         ============================================================ -->
vendor: 72 bytes, lines 447-448
447
448        <script async src="https://www.googletagmanager.com/gtag/js?id=
448G-4Z814EG21L
vendor: 16 bytes, lines 448-449
448"></script>
449    
449<script>
450        window.dataLayer = window.dataLayer || [];
451        function gtag(){ dataLayer.push(arguments); }
452        gtag('js', new Date());
453        gtag('config', 'G-4Z814EG21L', {
454            'allow_enhanced_conversions': true,
455            'linker': { 'accept_incoming': false }
456        });
457    </script>
457
458    
459    <!-- Limpia _gl y _ga de la URL (no espera a jQuery) -->
460    
460<script>
461        (function(){
462            if(window.location.search.indexOf('_gl=')>-1||window.location.search.indexOf('_ga=')>-1){
463                var u=new URL(window.location.href);
464                u.searchParams.delete('_gl');u.searchParams.delete('_ga');
465                window.history.replaceState({},'',u.pathname+u.search);
466            }
467        })();
468    </script>
468
469
470    <!-- 9. VARIABLES JS GLOBALES -->
471    
471<script>
472        var base     = "https://quelibroleo.com";
473        var csrf     = "d4fHaNKW3MMbbYJdb3jiZh7Aqjt5tDAMnJNvu9CD";
474
475        var time                     = 10000;
476        var autoplay                 = true;
477
478        var time_novedades           = 12000;
479        var autoplay_novedades       = true;
480
481        var time_recomendaciones     = 11000;
482        var autoplay_recomendaciones = true;
483    </script>
483
484
485    	<style>
486		.ba-section { padding: 30px 0 60px; }
487
488		.ba-card {
489			background: #fff;
490			border-radius: 14px;
491			box-shadow: 0 2px 20px rgba(0,0,0,0.06);
492			border: 1px solid #eee;
493			padding: 36px 40px;
494			max-width: 820px;
495			margin: 0 auto;
496		}
497
498		.ba-head { margin-bottom: 28px; }
499		.ba-title {
500			font-size: 28px;
501			font-weight: 700;
502			color: #222;
503			margin: 0 0 6px;
504		}
505		.ba-subtitle {
506			font-size: 15px;
507			color: #6a7280;
508			margin: 0;
509		}
510
511		.ba-alert {
512			background: #fff4f4;
513			border-left: 4px solid #e5484d;
514			padding: 12px 16px;
515			border-radius: 6px;
516			margin-bottom: 20px;
517			color: #7f1d1d;
518			font-size: 14px;
519		}
520		.ba-alert a { color: inherit; font-weight: 700; text-decoration: underline; }
521
522		.ba-form { display: block; }
523		.ba-field { margin-bottom: 20px; }
524		.ba-field-full { grid-column: 1 / -1; }
525
526		.ba-grid-2 {
527			display: grid;
528			grid-template-columns: 1fr 1fr;
529			gap: 20px;
530			margin-bottom: 20px;
531		}
532		@media (max-width: 640px) {
533			.ba-grid-2 { grid-template-columns: 1fr; gap: 0; }
534			.ba-card { padding: 24px 20px; border-radius: 10px; }
535		}
536
537		.ba-field label {
538			display: block;
539			font-size: 13px;
540			font-weight: 700;
541			text-transform: uppercase;
542			letter-spacing: 0.4px;
543			color: #4a5568;
544			margin-bottom: 6px;
545		}
546
547		.ba-input-wrap { position: relative; }
548		.ba-input-wrap input,
549		.ba-input-wrap select,
550		#tags,
551		.ba-field input[type="text"] {
552			width: 100%;
553			height: 46px;
554			padding: 10px 14px 10px 42px;
555			font-size: 15px;
556			color: #111;
557			background: #f8f9fb;
558			border: 1.5px solid #e3e6ec;
559			border-radius: 10px;
560			outline: none;
561			transition: border-color .15s, background .15s, box-shadow .15s;
562			-webkit-appearance: none;
563			appearance: none;
564		}
565		#tags { padding-left: 14px; }
566		.ba-input-wrap input:focus,
567		.ba-input-wrap select:focus,
568		#tags:focus {
569			border-color: #7cc142;
570			background: #fff;
571			box-shadow: 0 0 0 3px rgba(124,193,66,0.15);
572		}
573		.ba-input-wrap input::placeholder { color: #9aa2b1; }
574
575		.ba-input-icon {
576			position: absolute;
577			left: 14px;
578			top: 50%;
579			transform: translateY(-50%);
580			color: #9aa2b1;
581			font-size: 15px;
582			pointer-events: none;
583		}
584		.ba-input-wrap input:focus ~ .ba-input-icon,
585		.ba-input-wrap select:focus ~ .ba-input-icon { color: #7cc142; }
586
587		.ba-select { cursor: pointer; padding-right: 40px; }
588		.ba-select-arrow {
589			position: absolute;
590			right: 16px;
591			top: 50%;
592			transform: translateY(-50%);
593			color: #9aa2b1;
594			font-size: 12px;
595			pointer-events: none;
596		}
597
598		.ba-hint {
599			display: block;
600			margin-top: 6px;
601			font-size: 12px;
602			color: #7a8598;
603		}
604
605		.ba-actions {
606			display: flex;
607			justify-content: flex-end;
608			margin-top: 8px;
609			padding-top: 20px;
610			border-top: 1px solid #f0f2f5;
611		}
612		.ba-btn {
613			display: inline-flex;
614			align-items: center;
615			gap: 8px;
616			background: #7cc142;
617			color: #fff;
618			font-weight: 700;
619			font-size: 15px;
620			padding: 12px 28px;
621			border: none;
622			border-radius: 10px;
623			cursor: pointer;
624			transition: background .15s, transform .05s;
625		}
626		.ba-btn:hover { background: #6bab35; }
627		.ba-btn:active { transform: translateY(1px); }
628		.ba-btn i { font-size: 14px; }
629
630		.tagsinput {
631			width: 100% !important;
632			border: 1.5px solid #e3e6ec !important;
633			background: #f8f9fb !important;
634			border-radius: 10px !important;
635			padding: 8px 10px !important;
636			min-height: 46px;
637		}
638		.tagsinput span.tag {
639			background: #7cc142 !important;
640			border: none !important;
641			color: #fff !important;
642			border-radius: 6px !important;
643			padding: 3px 8px !important;
644		}
645		.tagsinput span.tag a { color: #fff !important; }
646	</style>
647</head>
648
649<body ontouchstart="">
650
651    <!-- GTM noscript — solo si no es bot ni país sospechoso -->
vendor: 85 bytes, lines 651-653
651
652        <noscript>
653        <iframe src="https://www.googletagmanager.com/ns.html?id=
653GTM-WQ22VZH
vendor: 113 bytes, lines 653-657
653"
654                height="0" width="0" style="display:none;visibility:hidden"></iframe>
655    </noscript>
656    
657    
657<div id="fb-root"></div>
658    <header>
659    
660    
661    <div class="top">
662        <div class="container">
663            <div class="flex">
664                <div class="user">
665                                        <a href="#login" class="openLogin">
666                        <i class="fa fa-user"></i>Iniciar sesión
667                    </a>
668                    <a href="https://quelibroleo.com/registro">Crear cuenta</a>
669                                    </div>
670                <div class="links">
671                                        <div class="facebook counter">
672                        <a href="//facebook.com/quelibroleo" target="_blank" rel="noopener noreferrer">
673                            <i class="fab fa-facebook"></i>
674                            1.3M
675                            <i class="fa fa-thumbs-up"></i>
676                        </a>
677                    </div>
678                                        <div class="twitter counter">
679                        <a href="//twitter.com/quelibroleo" target="_blank" rel="noopener noreferrer">
680                            <i class="fab fa-twitter"></i>
681                            146k
682                            <i class="fa fa-thumbs-up"></i>
683                        </a>
684                    </div>
685                                        <div class="pinterest counter">
686                        <a href="//pinterest.com/quelibroleo" target="_blank" rel="noopener noreferrer">
687                            <i class="fab fa-pinterest"></i>
688                            125.6K
689                            <i class="fa fa-thumbs-up"></i>
690                        </a>
691                    </div>
692                                    </div>
693            </div>
694        </div>
695    </div>
696
697    <div class="container">
698        <div class="flex">
699            <div class="logo">
700                <a href="https://quelibroleo.com">
701                    
702                    <img src="https://quelibroleo.com/images/logo.jpg"
703                         alt="Logo Quelibroleo"
704                         width="438" height="auto"
705                         fetchpriority="high"
706                         decoding="sync">
707                </a>
708            </div>
709            <div class="widgets">
710                <div id="buscador_superior">
711                    <form id="form_buscar_simple" method="post" action="https://quelibroleo.com/busqueda-simple"
712                        autocomplete="off" role="search" style="display:inline;">
713                        <input type="hidden" name="_token" value="d4fHaNKW3MMbbYJdb3jiZh7Aqjt5tDAMnJNvu9CD">                        <input id="busqueda_superior" type="search" name="busqueda_superior"
714                            placeholder="Buscar por palabra clave (mínimo 4 caracteres)" autocomplete="off"
715                            autocorrect="off" spellcheck="false" inputmode="search" style="width:350px;">
716                        <input type="hidden" id="busqueda_superior_simple" name="busqueda_superior_simple" value="">
717                        <i id="lupa_buscador_superior" class="fa fa-search" style="display:none;"></i>
718                    </form>
719                </div>
720                <div id="resultado_buscador_superior"></div>
721                <div class="links">
722                    <a href="https://quelibroleo.com/buscador-avanzado">
723                        <i class="fa fa-search"></i> Búsqueda avanzada
724                    </a>
725                </div>
726                <button id="openmenu" class="btn btn-primary" aria-label="Abrir menú">
727                    <i class="fa fa-navicon"></i>
728                </button>
729            </div>
730        </div>
731    </div>
732
733    <div class="menu">
734        <div class="container">
735            <div class="row">
736                <nav>
737                    <ul>
738                                                <li class="">
739                            <a href="https://quelibroleo.com">Inicio</a>
740                        </li>
741                        <li id="libros" >
742                            <a href="https://quelibroleo.com/novedades">Libros</a>
743                            <ul class="submenu">
744                                <li><a href="https://quelibroleo.com/novedades">Novedades</a></li>
745                                <li><a href="https://quelibroleo.com/premios-literarios">Premios literarios</a></li>
746                                <li><a href="https://quelibroleo.com/opiniones-quelibroleo">Opiniones quelibroleo</a></li>
747                                <li><a href="https://quelibroleo.com/ultimas-opiniones">Últimas opiniones</a></li>
748                                <li><a href="https://quelibroleo.com/editoriales">Editoriales</a></li>
749                            </ul>
750                        </li>
751                        <li id="losmejores" >
752                            <a href="https://quelibroleo.com/mejores-quelibroleo">Los mejores</a>
753                            <ul class="submenu">
754                                <li><a href="https://quelibroleo.com/mejores-quelibroleo">Mejores Quelibroleo</a></li>
755                                <li><a href="https://quelibroleo.com/mejores-genero">Mejores por género</a></li>
756                                <li><a href="https://quelibroleo.com/mejores-best-sellers">Mejores best-sellers</a></li>
757                                <li><a href="https://quelibroleo.com/mejores-semana">Mejores de la semana</a></li>
758                                <li><a href="https://quelibroleo.com/mejores-mes">Mejores del mes</a></li>
759                                <li><a href="https://quelibroleo.com/libros-mas-votados">Los más votados</a></li>
760                                <li><a href="https://quelibroleo.com/libros-mas-criticados">Los más criticados</a></li>
761                            </ul>
762                        </li>
763                        <li class="">
764                            <a href="https://quelibroleo.com/best-sellers">Best-Sellers</a>
765                        </li>
766                        <li class="">
767                            <a href="https://quelibroleo.com/lectores">Lectores</a>
768                        </li>
769                        <li><a href="https://www.facebook.com/ClubLecturaQuelibroleo" target="_blank">Club de lectura</a></li>
770                        <li><a href="https://quelibroleo.com/noticias">Blog</a></li>
771                        <li class="">
772                            <a href="https://quelibroleo.com/librero-virtual">El librero virtual</a>
773                        </li>
774                    </ul>
775                </nav>
776            </div>
777        </div>
778    </div>
779
780    <div class="white-popup mfp-hide" id="login">
781    <div class="login">
782        <h3>Iniciar sesión</h3>
783        
784                
785        
786        <form action="https://quelibroleo.com/login" method="post" id="login-form">
787            <input type="hidden" name="_token" value="d4fHaNKW3MMbbYJdb3jiZh7Aqjt5tDAMnJNvu9CD">            
788            <input type="hidden" name="recaptcha_token" id="recaptcha_token_login">
789
790            <div class="form-group">
791                <div class="input-group">
792                    <div class="input-group-addon"><i class="fa fa-user fa-fw"></i></div>
793                    <input type="text" class="form-control" name="user" placeholder="Usuario o correo electrónico" value="" required>
794                </div>
795            </div>
796            <div class="form-group">
797                <div class="input-group">
798                    <div class="input-group-addon"><i class="fa fa-lock fa-fw"></i></div>
799                    <input type="password" class="form-control" name="password" placeholder="Contraseña" required>
800                </div>
801            </div>
802            <div class="form-group" style="text-align: left">
803                <div class="checkbox">
804                    <label>
805                        <input type="checkbox" name="remember" > Mantener sesión activa
806                    </label>
807                </div>
808            </div>
809            <div class="form-group submit">
810                <a href="https://quelibroleo.com/nueva-contrasena">Olvidé mi contraseña</a>
811                <button type="submit" class="btn btn-secondary">Iniciar sesión</button>
812            </div>
813        </form>
814        <hr>
815        
816        <div class="social-login">
817            <a href="https://quelibroleo.com/login/facebook" class="btn facebook btn-block"><i class="fab fa-facebook"></i> Iniciar sesión con Facebook</a>
818            <a href="https://quelibroleo.com/login/google" class="btn google btn-block mt-2"><i class="fab fa-google"></i> Iniciar sesión con Google</a>
819        </div>
820
821        
822        <p class="login-register-link">
823            ¿No tienes cuenta? <a href="https://quelibroleo.com/registro">Regístrate gratis</a>
824        </p>
825    </div>
826</div>
827
828
829
830
831</header>
832
833    
834            <!-- Banner superior TAMAÑO FIJO (leaderboard) — GAM (qll_top) + Amazon TAM en subasta.
835             NO usa qll-flex ni fluid: es un banner-header, tiene altura acotada para no
836             romper la barra superior. Se colapsa si no hay demanda. -->
837        <div class="banner-superior banner-top-fixed" data-qll-wrap="collapse-if-empty">
838            <div class="container" style="text-align:center;">
839                
840                <div id="qll-top" data-adsense-fallback="6415838494"></div>
841            </div>
842        </div>
843        
843<script>
844            if (window.QLLAds) {
845                QLLAds.slot({
846                    id:   'qll-top',
847                    unit: 'qll_top',
848                    // Solo tamaños "de banner" — NO 970x250/280 (rompen la cabecera) NI fluid.
849                    sizes: [
850                        [728,90],[970,90],[468,60],
851                        [320,50],[320,100]
852                    ],
853                    sizeMapping: [
854                        { viewport: [1200,0], sizes: [[970,90],[728,90],[468,60]] },
855                        { viewport: [980,0],  sizes: [[728,90],[468,60]] },
856                        { viewport: [0,0],    sizes: [[320,100],[320,50]] }
857                    ]
858                });
859            }
860        </script>
860
861    
862<!-- UI scripts: buscador y alerta de exito -->
863<script>
864    document.addEventListener('click', function(event) {
865        var buscador = document.getElementById('buscador_superior');
866        var resultados = document.getElementById('resultado_buscador_superior');
867        if (buscador && resultados && !buscador.contains(event.target)) {
868            resultados.style.display = 'none';
869        }
870    });
871
872    var inputBuscador = document.getElementById('busqueda_superior');
873    if (inputBuscador) {
874        inputBuscador.addEventListener('input', function() {
875            var resultados = document.getElementById('resultado_buscador_superior');
876            if (resultados) {
877                resultados.style.display = this.value.length >= 4 ? 'block' : 'none';
878            }
879        });
880    }
881
882    setTimeout(function() {
883        var alerta = document.querySelector('.alert-success');
884        if (alerta) {
885            alerta.style.transition = 'opacity 0.5s ease';
886            alerta.style.opacity = '0';
887            setTimeout(function() { alerta.remove(); }, 500);
888        }
889    }, 5000);
890</script>
890    
891    <main role="main">
892        	<section class="ba-section">
893		<div class="container">
894			<div class="ba-card">
895				<div class="ba-head">
896					<h1 class="ba-title">Buscador Avanzado</h1>
897					<p class="ba-subtitle">Filtra por título, autor, editorial, género o temática de la sinopsis.</p>
898				</div>
899
900				
901				<form action="https://quelibroleo.com/buscador-avanzado/buscar" method="post" class="ba-form">
902					<input type="hidden" name="_token" value="d4fHaNKW3MMbbYJdb3jiZh7Aqjt5tDAMnJNvu9CD">
903
904					<div class="ba-field ba-field-full">
905						<label for="ba-titulo">Título</label>
906						<div class="ba-input-wrap">
907							<i class="fa fa-book ba-input-icon" aria-hidden="true"></i>
908							<input id="ba-titulo" type="text" name="titulo" minlength="2" placeholder="p. ej. Patria">
909						</div>
910					</div>
911
912					<div class="ba-grid-2">
913						<div class="ba-field">
914							<label for="ba-autor">Autor</label>
915							<div class="ba-input-wrap">
916								<i class="fa fa-user ba-input-icon" aria-hidden="true"></i>
917								<input id="ba-autor" type="text" name="autor" list="ba-autor-list" placeholder="p. ej. Aramburu" autocomplete="off">
918								<datalist id="ba-autor-list"></datalist>
919							</div>
920						</div>
921
922						<div class="ba-field">
923							<label for="ba-editorial">Editorial</label>
924							<div class="ba-input-wrap">
925								<i class="fa fa-building ba-input-icon" aria-hidden="true"></i>
926								<input id="ba-editorial" type="text" name="editorial" list="ba-editorial-list" placeholder="p. ej. Tusquets" autocomplete="off">
927								<datalist id="ba-editorial-list"></datalist>
928							</div>
929						</div>
930					</div>
931
932					<div class="ba-field ba-field-full">
933						<label for="ba-genero">Género</label>
934						<div class="ba-input-wrap">
935							<i class="fa fa-tags ba-input-icon" aria-hidden="true"></i>
936							<select id="ba-genero" name="genero" class="ba-select">
937								<option value="">— Todos los géneros —</option>
938																									<option value="Biografías, Memorias">Biografías, Memorias</option>
939																	<option value="Clásicos de la literatura">Clásicos de la literatura</option>
940																	<option value="Cómics, Novela Gráfica">Cómics, Novela Gráfica</option>
941																	<option value="Economía, Empresa, Marketing">Economía, Empresa, Marketing</option>
942																	<option value="Ensayo">Ensayo</option>
943																	<option value="Fantástica, ciencia ficción">Fantástica, ciencia ficción</option>
944																	<option value="Ficción literaria">Ficción literaria</option>
945																	<option value="Histórica y aventuras">Histórica y aventuras</option>
946																	<option value="Humor">Humor</option>
947																	<option value="Infantil y juvenil">Infantil y juvenil</option>
948																	<option value="Lecturas complementarias">Lecturas complementarias</option>
949																	<option value="Literatura contemporánea">Literatura contemporánea</option>
950																	<option value="Narrativa">Narrativa</option>
951																	<option value="No Ficción">No Ficción</option>
952																	<option value="Novela negra, intriga, terror">Novela negra, intriga, terror</option>
953																	<option value="Poesía">Poesía</option>
954																	<option value="Poesía, Teatro">Poesía, Teatro</option>
955																	<option value="Romántica, erótica">Romántica, erótica</option>
956																	<option value="varios">varios</option>
957																	<option value="Varios, otros géneros">Varios, otros géneros</option>
958															</select>
959							<i class="fa fa-chevron-down ba-select-arrow" aria-hidden="true"></i>
960						</div>
961					</div>
962
963					<div class="ba-field ba-field-full">
964						<label for="tags">Temática</label>
965						<input id="tags" name="tags" value="" placeholder="p. ej. distopía, viajes, guerra">
966						<small class="ba-hint">Palabras clave separadas por coma. Buscamos coincidencias dentro de la sinopsis de cada libro.</small>
967					</div>
968
969					<div class="ba-actions">
970						<button type="submit" class="ba-btn">
971							<i class="fa fa-search"></i> Buscar libros
972						</button>
973					</div>
974				</form>
975			</div>
976		</div>
977	</section>
978    </main>
979
980    <footer>
981    <div class="container">
982        <div class="wrapper">
983            <div class="row">
984                <div class="col-lg-4 col-sm-6 col-xs-12">
985                    <h4>Menú general</h4>
986                    <nav>
987                        <ul>
988                            <li><a href="https://quelibroleo.com/quienes-somos">¿Quiénes Somos?</a></li>
989                            <li><a href="https://quelibroleo.com/informacion">Información</a></li>
990                            <li><a href="https://quelibroleo.com/faq-preguntas-frecuentes">FAQ</a></li>
991                            <li>
991<a href="https://quelibroleo.com/recomiendanos">Recomiéndanos</a></li>
992                            <li><a href="https://quelibroleo.com/publicidad">Publicidad</a></li>
993                            <li><a href="https://quelibroleo.com/contacto">Contacto</a></li>
994                        </ul>
995                    </nav>
996                </div>
997
998                <div class="col-lg-4 col-sm-6 col-xs-12">
999                    <h4>Síguenos</h4>
1000                    <div class="social_links">
1001                        <a href="//www.facebook.com/quelibroleopuntocom" target="_blank" title="Facebook">
1002                            <i class="fab fa-facebook" aria-hidden="true"></i>
1003                        </a>
1004                        <a target="_blank" href="//x.com/quelibroleo"><i class="fa fa-times"
1005                            aria-hidden="true"></i></a>
1006                        <a target="_blank" href="//pinterest.com/quelibroleo"><i class="fab fa-pinterest"
1007                              aria-hidden="true"></i></a>
1008                        <a target="_blank" href="//www.linkedin.com/company/2300423"><i class="fab fa-linkedin"
1009                                     aria-hidden="true"></i></a>
1010                        <a target="_blank" href="//www.youtube.com/user/quelibroleo"><i class="fab fa-youtube"
1011                                     aria-hidden="true"></i></a>
1012                        <a target="_blank" href="https://quelibroleo.com/noticias/feed"><i class="fa fa-rss"
1013                                      aria-hidden="true"></i></a>
1014                        <a target="_blank" href="https://quelibroleo.com/opiniones-quelibroleo-rss.xml"><i class="fa fa-comments"
1015+						                                                                 aria-hidden="true"></i></a>
1016                        <a target="_blank" href="//tiktok.com/@quelibroleo"><svg xmlns="http://www.w3.org/2000/svg" height="20" width="18" viewBox="0 0 448 512"><!--!Font Awesome Free 6.5.1 by @fontawesome  - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.--><path fill="#86bb50" d="M448 209.9a210.1 210.1 0 0 1 -122.8-39.3V349.4A162.6 162.6 0 1 1 185 188.3V278.2a74.6 74.6 0 1 0 52.2 71.2V0l88 0a121.2 121.2 0 0 0 1.9 22.2h0A122.2 122.2 0 0 0 381 102.4a121.4 121.4 0 0 0 67 20.1z"/></svg>
1017                        <a target="_blank" href="//es.foursquare.com/quelibroleo"><i class="fab fa-foursquare"
1018                                  aria-hidden="true"></i></a>
1019                        <a target="_blank" href="//www.instagram.com/quelibroleo/"><i class="fab fa-instagram"
1020                                  aria-hidden="true"></i></a>
1021                    </div>
1022                </div>
1023
1024                <div class="col-4">
1025                    <img src="https://quelibroleo.com/images/Logo-PRTR-kit-digital.png" alt="Logo PRTR Kit Digital" height="40" loading="lazy">
1026                    <img src="https://quelibroleo.com/images/UE_negro.png" alt="Logo UE Negro" height="40" loading="lazy">
1027                    <div style="margin-top:10px;display:flex;align-items:center;gap:10px;">
1028                        <img src="https://quelibroleo.com/images/logo-comunidad-madrid.svg" alt="Logo Comunidad de Madrid" height="40" loading="lazy" style="filter:invert(1);">
1029                        <span style="color:#333;font-size:11px;line-height:1.3;max-width:200px;">Este proyecto/actividad ha recibido una subvención de la Consejería de Cultura, Turismo y Deporte de la Comunidad de Madrid</span>
1030                    </div>
1031                </div>
1032                
1033                <div class="col-lg-4 col-sm-6 col-xs-12">
1034				</div>
1035            </div>
1036        </div>
1037
1038        <div class="copyright">
1039            <ul>
1040                <li><a>Copyright © 2008-2026 QueLibroLeo</a></li>
1041                <li><a href="https://quelibroleo.com/politica-de-privacidad-y-uso-de-datos">Política de privacidad y uso de datos</a></li>
1042            </ul>
1043        </div>
1044    </div>
1045
1046	
1046<script src="https://quelibroleo.com/js/jquery-3.2.1.min.js"></script>
1046
1047	
1047<script src="https://quelibroleo.com/js/tether.min.js"></script>
1047
1048	
1048<script src="https://quelibroleo.com/js/numeral/numeral.min.js"></script>
1048
1049	
1049<script src="https://quelibroleo.com/js/numeral/locales.min.js"></script>
1049
1050	
1050<script src="https://quelibroleo.com/js/bootstrap.min.js"></script>
1050
1051    
1051<script src="https://quelibroleo.com/js/bootstrap-patch.js"></script>
1051
1052	
1052<script src="https://quelibroleo.com/js/handlebars.min.js"></script>
1052
1053	
1053<script src="https://quelibroleo.com/js/typeahead.bundle.min.js"></script>
1053
1054	
1054<script src="https://quelibroleo.com/js/jquery.magnific-popup.min.js"></script>
1054
1055	
1055<script src="//cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.2.10/semantic.min.js"></script>
1055
1056	
1056<script src="https://quelibroleo.com/js/functions.js"></script>
1056
1057
1058
1059<script>
1060    // Función debounce para evitar llamadas excesivas al servidor
1061    function debounce(func, delay) {
1062        let timeout;
1063        return function (...args) {
1064            clearTimeout(timeout);
1065            timeout = setTimeout(() => func.apply(this, args), delay);
1066        };
1067    }
1068
1069    $(document).ready(function () {
1070        const csrfToken = $('meta[name="csrf-token"]').attr('content');
1071
1072        $('#busqueda_superior').on('input', debounce(function () {
1073            const value = $(this).val().trim();
1074            const lupa = $('#lupa_buscador_superior');
1075            const resultado = $('#resultado_buscador_superior');
1076
1077            if (value.length < 4) {
1078                lupa.hide();
1079                resultado.html('');
1080                return;
1081            }
1082
1083            lupa.show();
1084            $.ajax({
1085                url: "https://quelibroleo.com/busqueda-superior",
1086                type: 'POST',
1087                headers: {
1088                    'X-CSRF-TOKEN': csrfToken,
1089                },
1090                data: { valor: value },
1091                success: function (response) {
1092                    resultado.html(response).fadeIn('slow');
1093                },
1094                error: function (xhr) {
1095                    console.error(xhr.responseText);
1096                },
1097            });
1098        }, 300));
1099
1100        // Búsqueda al hacer clic en la lupa
1101        $('#lupa_buscador_superior').on('click', function (e) {
1102            e.preventDefault();
1103            buscar();
1104        });
1105
1106        // Búsqueda al presionar ENTER en el input
1107        $('#busqueda_superior').on('keydown', function (e) {
1108            if (e.keyCode === 13) { // Código de tecla ENTER
1109                e.preventDefault(); // Evita el envío automático del formulario
1110                buscar();
1111            }
1112        });
1113
1114        // Función para ejecutar la búsqueda
1115        function buscar() {
1116            const valor_buscado = $('#busqueda_superior').val().trim();
1117            if (valor_buscado.length >= 4) {
1118                $('#busqueda_superior_simple').val(valor_buscado);
1119                $('#form_buscar_simple').submit();
1120            }
1121        }
1122    });
1123    
1124</script>
1124
1125
1126
1127
1128		
1128<script src="https://quelibroleo.com/js/jquery.tagsinput.min.js"></script>
1128
1129	
1129<script>
1130		$(function () {
1131			$('#tags').tagsInput({ defaultText: '' });
1132
1133			function attachAutocomplete(inputSel, listSel, url, field) {
1134				var $input = $(inputSel), $list = $(listSel), timer;
1135				$input.on('input', function () {
1136					var q = $input.val();
1137					if (q.length < 2) return;
1138					clearTimeout(timer);
1139					timer = setTimeout(function () {
1140						$.getJSON(base + url + encodeURIComponent(q), function (data) {
1141							$list.empty();
1142							$.each(data, function (i, item) {
1143								$list.append($('<option>').val(item[field]));
1144							});
1145						});
1146					}, 200);
1147				});
1148			}
1149			attachAutocomplete('#ba-autor',     '#ba-autor-list',     '/ajax/search_autor?autor=',         'autor');
1150			attachAutocomplete('#ba-editorial', '#ba-editorial-list', '/ajax/search_editorial?editorial=', 'editorial');
1151		});
1152	</script>
1152
1153	
1154	
1154<script src="https://quelibroleo.com/js/main.js?v=1782973518"></script>
1154
1155
1156</footer>
1157
1158        
1159    <div id="qll-footer-sticky-wrap" class="d-lg-none" data-qll-wrap="collapse-if-empty"
1160         style="position:fixed; left:0; right:0; bottom:0; z-index:9999; background:#fff; border-top:1px solid #ddd; box-shadow:0 -2px 8px rgba(0,0,0,.08); text-align:center; padding:4px 0;">
1161        <button type="button" onclick="document.getElementById('qll-footer-sticky-wrap').style.display='none';"
1162                aria-label="Cerrar"
1163                style="position:absolute; top:-14px; right:6px; width:24px; height:24px; border-radius:50%; border:1px solid #ccc; background:#fff; font-size:14px; line-height:22px; cursor:pointer; padding:0;">&times;</button>
1164        <div id="qll-footer-sticky"></div>
1165    </div>
1166    
1166<script>
1167        if (window.QLLAds) {
1168            QLLAds.slot({
1169                id:   'qll-footer-sticky',
1170                unit: 'qll_footer_sticky',
1171                sizes: [[320,50],[728,90]],
1172                sizeMapping: [
1173                    { viewport: [980,0], sizes: [] },
1174                    { viewport: [0,0],   sizes: [[320,50]] }
1175                ]
1176            });
1177        }
1178    </script>
1178
1179    
1180    <!-- amp-consent eliminado: causaba iframe bloqueado de doubleclick (CORS). Para GDPR usar Funding Choices via GTM. -->
1181
1182    <input type="hidden" name="recaptcha-response" id="recaptcha-response">
1183
1184    <!-- ============================================================ JAVASCRIPT — al final del body para no bloquear el render GTM + Facebook solo si no es Lighthouse ============================================================ -->
1185            
1185<script>
1186    // Espera a que el SDK de Facebook esté cargado
1187    window.fbAsyncInit = function () {
1188        FB.init({
1189            appId: '385015188232719', // Tu App ID de Facebook
1190            cookie: true, // Habilita cookies para permitir que el servidor acceda a la sesión
1191            xfbml: true, // Procesa los plugins sociales en la página
1192            version: 'v22.0' // Actualizado 2026-09-24 desde v20.0 (Meta deprecation)
1193        });
1194
1195        FB.AppEvents.logPageView();
1196    };
1197
1198    // Cargar el SDK de Facebook de forma asíncrona
1199    (function (d, s, id) {
1200        var js, fjs = d.getElementsByTagName(s)[0];
1201        if (d.getElementById(id)) return;
1202        js = d.createElement(s); js.id = id;
1203        js.src = "https://connect.facebook.net/es_LA/sdk.js";
1204        fjs.parentNode.insertBefore(js, fjs);
1205    }(document, 'script', 'facebook-jssdk'));
1206
1207
1208	function shareFB() {
1209        if (typeof FB !== 'undefined') {
1210            FB.ui({
1211                method: 'share',
1212                href: 'https://quelibroleo.com/buscador-avanzado', // URL actual de la página
1213            }, function(response) {
1214                if (response && !response.error_message) {
1215                    console.log('Compartido correctamente');
1216                } else {
1217                    console.error('Error al compartir: ', response.error_message);
1218                }
1219            });
1220        } else {
1221            console.error('El SDK de Facebook no se ha cargado correctamente.');
1222        }
1223	}
1224</script>
1224
1225
1226        <!-- GTM -->
1227        
1227<script>
vendor: 417 bytes, lines 1227-1233
1227
1228            (function(w,d,s,l,i){
1229                w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});
1230                var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
1231                j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
1232                f.parentNode.insertBefore(j,f);
1233            })(window,document,'script','dataLayer','
1233GTM-WQ22VZH
vendor: 12 bytes, lines 1233-1234
1233');
1234        
1234</script>
1234
1235    
1236    <!-- Scripts de página específica -->
1237    
1238    <!-- ============================================================ reCAPTCHA — solo en rutas que lo necesitan y fuera de bots ============================================================ -->
1239    
1240    
1241</body>
1242</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.