LIBRISTO
LIBROAMANTO
mandatory
Become part of a community of book lovers from all over the world and get access to a whole bunch of benefits. Create an account for free
0
Free delivery for purchases over 69.99 €
DPD courier 5.99 Bpost point 7.99 Bpost 7.49 DPD point 3.49 GLS courier 4.49

Free delivery for orders over 69.99 euro.
Language GermanGerman
Book Paperback
Book Minerva. Johann Wilhelm von Archenholz
Libristo code: 11981483
Publishers Nabu Press, January 2012
This is a reproduction of a book published before 1923. This book may have occasional imperfections... Full description
? points 74 b
30.78
In stock at our supplier Shipping in 9-15 days

30-day return policy


Customers also purchased


Life of Rear-Admiral John Paul Jones John Paul Jones / Book Paperback
common.buy 26.83
Firebeat The Fireballs Audio Audio CD
common.buy 13.26
Modern Romance August Books 5-8 Abby Green / Book Paperback
common.buy 19.13
Digital Technology and Democratic Theory Lucy Bernholz / Book Paperback
common.buy 37.46
Once Upon A Broken Heart Stephanie Garber / E-book Adobe ePub DRM
common.buy 6.07
Comet Carl Sagan / Audiobook MP3
common.buy 15.08
La sorcière du château aux chardons - Tome 2 John Tarachine / Book Paperback
common.buy 11.94
Napiš a smaž Aktivity se zvířátky Kirsteen Robson / Book Paperback
common.buy 8.19
Oxford Playscripts: A View from the Bridge Arthur Miller / Book Paperback
common.buy 19.74
Reflections on the First Ten Years Rev Mark Ward / Book Paperback
common.buy 10.32
de la Syphilis Maligne Horteloup-P / Book Paperback
common.buy 12.75
Las hijas del frío Camilla Läckberg / Book Paperback
common.buy 15.69
Charles County, Maryland, Wills 1818-1825 Michael R Marshall / Book Paperback
common.buy 15.79
Metaphilosophy Henri Lefebvre / Book Paperback
common.buy 33.11

This is a reproduction of a book published before 1923. This book may have occasional imperfections such as missing or blurred pages, poor pictures, errant marks, etc. that were either part of the original artifact, or were introduced by the scanning process. We believe this work is culturally important, and despite the imperfections, have elected to bring it back into print as part of our continuing commitment to the preservation of printed works worldwide. We appreciate your understanding of the imperfections in the preservation process, and hope you enjoy this valuable book. br/br/ ++++br/ The below data was compiled from various identification fields in the bibliographic record of this title. This data is provided as an additional tool in helping to ensure edition identification: br/++++ br/br/ Minerva, Volume 60br/br/<author> Johann Wilhelm von Archenholzbr/br/<publisher> B.G. Hoffmann, 1806br/br/<subjects> History; Europe; General; Europe; History / Europe / General; History / General</p></div> <div :class="open ? '' : 'bg-gradient-to-t'" class="flex justify-end items-end absolute bottom-0 left-0 right-0 h-24 from-white via-white lg:hidden"> <button @click="open = !open" class="flex items-center font-montserrat text-lgreen2 font-bold"> Full description <svg :class="open ? 'rotate-180' : ''" class="ml-2 transform transition-all" height="10" viewBox="0 0 17 10" width="17" xmlns="http://www.w3.org/2000/svg"><path d="m15.7 2-6.9 6.8-6.9-6.8" fill="none" stroke="#00bf9c" stroke-linecap="round" stroke-linejoin="round"/></svg> </button> </div> </div> </div> </div> </div> </div> </section> <!-- end:l-content --> <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": ["Product", "Book"], "name": "Minerva.", "id": "11981483", "sku": "11981483", "gtin": "9781275047587", "isbn": "9781275047587", "numberOfPages": 572, "author": { "@type": "Person", "name": "Johann Wilhelm von Archenholz" }, "bookFormat": "https://schema.org/Paperback", "description": "This is a reproduction of a book published before 1923. This book may have occasional imperfections such as missing or blurred pages, poor pictures, errant marks, etc. that were either part of the original artifact, or were introduced by the scanning process. We believe this work is culturally important, and despite the imperfections, have elected to bring it back into print as part of our continuing commitment to the preservation of printed works worldwide. We appreciate your understanding of the imperfections in the preservation process, and hope you enjoy this valuable book. br/br/ ++++br/ The below data was compiled from various identification fields in the bibliographic record of this title. This data is provided as an additional tool in helping to ensure edition identification: br/++++ br/br/ Minerva, Volume 60br/br/ Johann Wilhelm von Archenholzbr/br/ B.G. Hoffmann, 1806br/br/ History; Europe; General; Europe; History / Europe / General; History / General", "image": "https://libris.to/media/jacket/11981483_minerva.jpg", "url": "https://www.libristo.be/en/book/minerva_11981483", "itemCondition": "https://schema.org/NewCondition", "brand": "Nabu Press", "offers": { "@type": "Offer", "availability": "http://schema.org/InStock", "price": 30.78, "priceCurrency": "EUR" } } </script> <section class="bg-primary-700" x-data="{ videoModalOpen: false, closeVideoModal() { this.videoModalOpen = false; // Clear the iframe src to stop the video this.$nextTick(() => { if (this.$refs.videoIframe) { this.$refs.videoIframe.src = ''; } }); } }"> <div class="c-container"> <div class="flex flex-col lg:flex-row w-full"> <div class="flex items-center flex-1 gap-6 lg:gap-0 lg:mb-0 px-4 lg:px-0 lg:h-[289px] pt-12 pb-48 lg:pt-0 lg:pb-0 relative flex-col lg:flex-row"> <div class="relative z-10 flex flex-col gap-4 text-center lg:text-left"> <div class="flex items-center gap-2 text-white font-heading text-[23px] justify-center lg:justify-start"> <span class="font-bold">Actress</span> & <span class="font-bold">Polyglot</span> </div> <span class="text-yell font-[900] text-7xl">EWA KASP</span> <span class="flex items-end justify-end gap-2 text-right text-white font-heading"> <span class="">for</span> <svg class="text-white w-24 h-8 grow-0 shrink-0" width="248" height="80" viewBox="0 0 248 80" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M0.904297 78.9921H25.403L26.226 74.4975L6.9182 76.5865V34.3626H0.904297V78.9921ZM33.3161 78.9921H39.33V34.3626H33.3161V78.9921ZM50.2183 78.9921H60.7901C70.0325 78.9921 75.3501 73.8011 75.3501 66.711C75.3501 59.6843 69.0196 55.6328 62.8791 55.6328V55.5062C69.716 54.8098 73.8941 50.1886 73.8941 44.7445C73.8941 39.237 69.8426 34.3626 61.4864 34.3626H50.2183V78.9921ZM56.2322 76.0168V56.709H59.8405C66.1077 57.0888 69.2096 61.71 69.2096 67.3441C69.2096 73.2947 65.5379 76.5865 60.347 76.5865C59.0176 76.5865 57.5616 76.3966 56.2322 76.0168ZM56.2322 54.6199V36.6415L58.9543 36.7048C65.0948 36.958 68.0068 40.9462 68.0068 45.7573C68.0068 50.6951 64.9049 54.43 59.2075 54.6199H56.2322ZM83.7062 78.9921H89.7201V57.5319L106.053 78.9921H113.839L95.7973 57.1521C96.6836 57.2787 97.7598 57.2787 99.2791 57.0888C104.66 56.3291 109.471 51.9611 109.471 46.0105C109.471 39.0471 103.964 34.3626 96.0506 34.3626H83.7062V78.9921ZM89.7201 54.1135V36.8314L92.822 36.8947C99.8488 37.2746 103.394 42.0857 103.394 47.7831C103.394 53.4804 99.7855 55.886 95.924 55.886C93.4551 55.886 91.2394 55.1264 89.7201 54.1135ZM119.916 78.9921H125.93V34.3626H119.916V78.9921ZM147.074 80.0049C153.974 80.0049 160.304 74.7507 160.304 67.5973C160.304 60.8237 155.683 57.2787 150.745 54.2401L145.491 51.1382C142.326 49.1758 139.73 46.9601 139.73 43.0986C139.73 38.7939 142.959 36.3883 146.821 36.3883C150.619 36.3883 153.341 38.4773 154.417 42.5288L159.291 40.7563C157.646 36.7681 153.847 33.3497 147.454 33.3497C140.997 33.3497 134.919 37.9076 134.919 44.6812C134.919 50.8217 138.718 54.3034 143.972 57.4686L149.036 60.5705C152.581 62.7229 155.303 65.1917 155.303 69.4331C155.303 74.0543 151.822 76.9663 147.517 76.9663C143.276 76.9663 139.224 74.1176 138.718 68.7368L133.653 69.4964C134.54 75.6369 140.11 80.0049 147.074 80.0049ZM197.084 34.3626H164.039L163.596 38.9205L177.523 36.8314V78.9921H183.537V36.8314L197.527 38.9205L197.084 34.3626ZM223.988 80.0049C237.346 80.0049 247.094 68.5469 247.094 56.0126C247.094 43.1619 237.409 33.3497 224.178 33.3497C210.758 33.3497 201.072 44.8078 201.072 57.2787C201.072 70.1295 210.695 80.0049 223.988 80.0049ZM207.149 53.6704C207.149 44.8078 212.72 36.6415 222.153 36.6415C232.851 36.6415 241.017 47.2766 241.017 59.6843C241.017 68.5469 235.446 76.7131 225.951 76.7131C215.252 76.7131 207.149 66.078 207.149 53.6704Z" fill="currentColor"/> <path d="M123.499 19.4591L112.018 9.87149V12.5473L123.499 23.7192L134.981 12.6429V10.0694L123.499 19.4591Z" fill="currentColor"/> <path d="M123.499 9.59257L112.018 0.00494385V2.68073L123.499 13.8527L134.981 2.77635V0.202905L123.499 9.59257Z" fill="currentColor"/> </svg> </span> </div> <div @click="videoModalOpen = true" class="lg:absolute lg:bottom-0 lg:top-0 lg:right-18 h-full z-10 flex flex-col items-center justify-center gap-1 cursor-pointer"> <button class="flex items-center justify-center mt-11 hover:scale-105 transition-transform cursor-pointer"> <svg class="text-primary w-[71px] h-[71px]" xmlns="http://www.w3.org/2000/svg" width="26.455" height="26.455" viewBox="0 0 26.455 26.455"> <g id="Group_1509" data-name="Group 1509" transform="translate(-1062.25 -398.931)" opacity="0.5"> <g id="g835" transform="translate(1063 399.681)"> <path id="path837" d="M-617.711-308.855a12.477,12.477,0,0,1-12.477,12.477,12.477,12.477,0,0,1-12.477-12.477,12.477,12.477,0,0,1,12.477-12.477A12.477,12.477,0,0,1-617.711-308.855Z" transform="translate(642.665 321.333)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/> </g> <g id="g839" transform="translate(1071.853 405.428)"> <path id="path841" d="M0,0V13.461L9.319,6.73Z" fill="currentColor"/> </g> </g> </svg> </button> <span class="text-primary text-base/10 font-bold">Play video</span> </div> <img src="https://www.libristo.be/img/ewakasp2x.png" alt="Ewa Kasp" class="absolute bottom-0 top-0 right-0 h-full z-0 hidden lg:block"> <img src="https://www.libristo.be/img/ewakasp_mobile.png" alt="Ewa Kasp" class="absolute bottom-0 top-0 right-0 w-full h-full z-0 object-cover block lg:hidden"> </div> <div class="w-full lg:w-[360px] shrink-0 py-12 lg:py-0 px-4 lg:px-8 flex justify-center items-center gap-4 text-center bg-white/10"> <svg class="text-primary-200 w-18 h-18 opacity-30" width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M16.1138 9.1765L8.49805 0.177002H10.623L19.498 9.1765L10.7005 18.177H8.65606L16.1138 9.1765Z" fill="currentColor"/> <path d="M8.11384 9.1765L0.498047 0.177002H2.62299L11.498 9.1765L2.70047 18.177H0.656061L8.11384 9.1765Z" fill="currentColor"/> </svg> <span class="text-primary-200 font-heading text-lg/10 italic">Libristo has the largest selection of foreign-language books. That’s why I buy my books there.</span> <svg class="text-primary-200 w-18 h-18 rotate-180 opacity-30" width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M16.1138 9.1765L8.49805 0.177002H10.623L19.498 9.1765L10.7005 18.177H8.65606L16.1138 9.1765Z" fill="currentColor"/> <path d="M8.11384 9.1765L0.498047 0.177002H2.62299L11.498 9.1765L2.70047 18.177H0.656061L8.11384 9.1765Z" fill="currentColor"/> </svg> </div> </div> </div> <!-- Video Modal --> <div x-show="videoModalOpen" x-transition:enter="transition ease-out duration-300" x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0" class="fixed inset-0 z-50 flex items-center justify-center p-4 bg-black/75" x-cloak @click.self="closeVideoModal()" @keydown.escape.window="closeVideoModal()"> <div class="relative w-full max-w-5xl bg-white rounded-lg shadow-xl"> <!-- Close button --> <button @click="closeVideoModal()" class="absolute -top-12 right-4 z-10 p-2 text-white transition-colors"> <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path> </svg> </button> <!-- YouTube embed container --> <div class="relative w-full" style="padding-bottom: 56.25%;"> <iframe x-show="videoModalOpen" x-ref="videoIframe" class="absolute top-0 left-0 w-full h-full rounded-lg" :src="videoModalOpen ? 'https://www.youtube.com/embed/vBJjIhDIr90?autoplay=1&rel=0' : ''" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen> </iframe> </div> </div> </div> </section> <section class="bg-cream"> <div class="c-container"> <div class="flex flex-col lg:flex-row w-full"> <div class="flex-1 mb-16 lg:mb-0 lg:mr-8 px-4 lg:px-0 py-12"> <h2 class="font-heading font-bold text-2xl lg:text-4xl text-primary-700 mb-12">About the book</h2> <div class="grid gap-6 grid-cols-2 lg:grid-cols-3 font-merriweatherlight text-gray-600"> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Full name</span> <strong class="text-black">Minerva.</strong> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Author</span> <span class="text-black"> <a rel="nofollow" class="no-underline font-bold text-primary text-base" href="https://www.libristo.be/en/author/Johann%20Wilhelm%20von%20Archenholz">Johann Wilhelm von Archenholz</a> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Language</span> <span class="text-black"> <span class="flex items-center"> <img class="w-4 h-4 mr-2 transition-all duration-100" src="https://www.libristo.be/img/flag/lang/de.svg" alt=""><strong class="text-black">German</strong> </span> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Binding</span> <span class="text-black"> <span class="flex items-center"> <span class="flex items-center"><svg class="w-4 h-4" height="37" viewBox="0 0 38 37" width="38" xmlns="http://www.w3.org/2000/svg"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="m1.6 5.3 17.6 4.8 17.6-4.8v25.6l-17.6 4.8-17.6-4.8z"/><path d="m19.2 10.1v25.6"/><path d="m35.2 1.1-16 4.8-16-4.8"/></g></svg></span><span class="font-bold text-black ml-2"> Book - Paperback </span> </span> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Date of issue</span> <span class="text-black"> <strong class="text-black">2012</strong> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Number of pages</span> <span class="text-black"> <strong class="text-black">572</strong> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">EAN</span> <span class="text-black"> <strong class="text-black">9781275047587</strong> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">ISBN</span> <span class="text-black"> <strong class="text-black">1275047580</strong> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Libristo code</span> <span class="text-black"> <strong class="text-black">11981483</strong> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Publishers</span> <span class="text-black"> <a rel="nofollow" class="no-underline font-bold text-primary text-base" href="https://www.libristo.be/en/publisher/Nabu%20Press">Nabu Press</a> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Weight</span> <span class="text-black"> <strong class="text-black">1006</strong> </span> </div> <div class="flex flex-col gap-1.5"> <span class="text-gray text-sm">Dimensions</span> <span class="text-black"> <strong class="text-black">189 x 246 x 34</strong> </span> </div> </div> <div class="w-full mt-12 pt-8 border-0 border-solid border-t border-gray-200"> <div class="w-full"> <div class="flex flex-col gap-1"> <h4 class="text-sm text-gray font-normal mb-0">Categories</h4> <div class="mb-2"> <div class="mb-2"> <a rel="nofollow" class="font-bold no-underline leading-none text-primary text-base" href="https://www.libristo.be/en/books-in-german/history-archaeology">History & Archaeology</a> <span class="px-1 text-gray-300">></span> <a rel="nofollow" class="font-bold no-underline leading-none text-primary text-base" href="https://www.libristo.be/en/books-in-german/history">History</a> </div> </div> </div> </div> </div> </div> <div class="w-full lg:w-[360px] shrink-0 px-4 py-12 lg:px-8 flex flex-col justify-start text-center bg-pink"> <div><img class="mb-6 w-32" src="https://www.libristo.be/img/svg/gifts/gifte-white.svg" alt=""></div> <h5 class="text-2xl mb-9 font-heading text-white">Give this book today</h5> <div class="text-left font-merriweatherlight flex flex-col gap-6"> <h6 class="text-lg pb-4 font-heading text-primary-700 lg:text-2xl font-bold border-0 border-b border-solid border-gray-200">It's easy</h6> <span class="grid grid-cols-[auto_1fr] text-primary-700"> <span class="flex justify-center items-center bg-primary-700 text-white font-heading font-bold text-sm rounded-full w-7.5 h-7.5 mr-4">1</span> Add to cart and choose Deliver as present at the checkout </span> <span class="grid grid-cols-[auto_1fr] text-primary-700"> <span class="flex justify-center items-center bg-primary-700 text-white font-heading font-bold text-sm rounded-full w-7.5 h-7.5 mr-4">2</span> We'll send you a voucher </span> <span class="grid grid-cols-[auto_1fr] text-primary-700"> <span class="flex justify-center items-center bg-primary-700 text-white font-heading font-bold text-sm rounded-full w-7.5 h-7.5 mr-4">3</span> The book will arrive at the recipient's address </span> </div> </div> </div> </div> </section> <!-- end:l-content:params --> <section class="l-content has-margin"> <div class="c-container"> <div class="w-full mt-12 px-4 lg:px-0"> <div class="flex items-center gap-3 w-full justify-center mb-4 "> <hr class="border-b-gray-200 grow min-w-[2rem]" /> <h3 class="c-section-title "> You might also be interested in </h3> <hr class="border-b-gray-200 grow min-w-[2rem]" /> </div> <div x-data="{swiper: null}" x-init="swiper = new Swiper($refs.container, { loop: true, speed: 500, slidesPerView: 2, slidesPerGroup: 2, spaceBetween: 0, breakpoints: { 640: { slidesPerView: 2, slidesPerGroup: 2, spaceBetween: 0, }, 1024: { slidesPerView: 6, slidesPerGroup: 6, spaceBetween: 0, }, }, })" class="relative w-full flex" > <div class="absolute inset-y-0 left-0 z-10 flex items-center"> <button @click="swiper.slidePrev()" class="bg-lgreen2 text-white -ml-2 lg:-ml-8 flex justify-center items-center w-10 h-10 rounded-full shadow focus:outline-none"> <svg viewBox="0 0 20 20" fill="currentColor" class="chevron-left w-6 h-6"><path fill-rule="evenodd" d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd"></path></svg> </button> </div> <div class="swiper-container min-w-full" x-ref="container"> <div class="swiper-wrapper"> <div class="swiper-slide flex justify-center"> <div class="w-[170px] flex shrink-0 flex-col"> <a href="https://www.libristo.be/en/book/larven_19244444" class="relative h-[275px] flex items-end justify-center"> <div class="relative"> <img class="max-w-[150px] max-h-[275px] shrink-0 grow-0 shadow-upsell" loading="lazy" src="https://libris.to/media/jacket/19244444t.jpg"> </div> </a> <span class="h-[3px] w-full bg-black mb-5 z-10"></span> <a class="px-2.5 max-h-[3.7rem] overflow-y-hidden mb-3 inline-block leading-tight whitespace-normal no-underline font-bold text-base text-primary font-heading" href="https://www.libristo.be/en/book/larven_19244444"> Larven </a> <span class="px-2.5 mb-1.5 font-merriweatherlight text-xs"><i>Nora Wagener</i></span> <span class="flex items-center px-2.5 mb-5"> <img class="w-4 h-4 mr-2 transition-all duration-100" src="https://www.libristo.be/img/flag/lang/de.svg" alt=""> <span class="text-gray-300">/</span> <span class="ml-2 flex items-center"> <img class="w-4 h-4" src="https://www.libristo.be/img/bindings/B.svg" alt="Book"> </span><strong class="ml-2 font-light text-xs">Paperback</strong> </span> <div class="flex items-center px-2.5"> <a href="https://www.libristo.be/en/book/larven_19244444" class="w-8 h-8 flex justify-center items-center rounded-md bg-lgreen2"> <img src="https://www.libristo.be/img/svg/buy.svg" alt="common.buy"> </a> <span class="ml-4 text-sm font-bold text-black "> 15.89 <span class="text-gray font-normal">€</span> </span> </div> </div> </div> <div class="swiper-slide flex justify-center"> <div class="w-[170px] flex shrink-0 flex-col"> <a href="https://www.libristo.be/en/book/lesezug-1-klasse-leonie-und-das-mutmach-monster_16199090" class="relative h-[275px] flex items-end justify-center"> <div class="relative"> <img class="max-w-[150px] max-h-[275px] shrink-0 grow-0 shadow-upsell" loading="lazy" src="https://libris.to/media/jacket/16199090t.jpg"> </div> </a> <span class="h-[3px] w-full bg-black mb-5 z-10"></span> <a class="px-2.5 max-h-[3.7rem] overflow-y-hidden mb-3 inline-block leading-tight whitespace-normal no-underline font-bold text-base text-primary font-heading" href="https://www.libristo.be/en/book/lesezug-1-klasse-leonie-und-das-mutmach-monster_16199090"> LESEZUG/1. Klasse: Leonie und das Mutmach-Monster </a> <span class="px-2.5 mb-1.5 font-merriweatherlight text-xs"><i>Elfriede Wimmer</i></span> <span class="flex items-center px-2.5 mb-5"> <img class="w-4 h-4 mr-2 transition-all duration-100" src="https://www.libristo.be/img/flag/lang/de.svg" alt=""> <span class="text-gray-300">/</span> <span class="ml-2 flex items-center"> <img class="w-4 h-4" src="https://www.libristo.be/img/bindings/B.svg" alt="Book"> </span><strong class="ml-2 font-light text-xs">Hardback</strong> </span> <div class="flex items-center px-2.5"> <a href="https://www.libristo.be/en/book/lesezug-1-klasse-leonie-und-das-mutmach-monster_16199090" class="w-8 h-8 flex justify-center items-center rounded-md bg-lgreen2"> <img src="https://www.libristo.be/img/svg/buy.svg" alt="common.buy"> </a> <span class="ml-4 text-sm font-bold text-black "> 10.83 <span class="text-gray font-normal">€</span> </span> </div> </div> </div> <div class="swiper-slide flex justify-center"> <div class="w-[170px] flex shrink-0 flex-col"> <a href="https://www.libristo.be/en/book/44-kommunikative-spiele-spanische-aussprache-in-10-minuten_16167854" class="relative h-[275px] flex items-end justify-center"> <div class="relative"> <img class="max-w-[150px] max-h-[275px] shrink-0 grow-0 shadow-upsell" loading="lazy" src="https://libris.to/media/jacket/16167854t.jpg"> </div> </a> <span class="h-[3px] w-full bg-black mb-5 z-10"></span> <a class="px-2.5 max-h-[3.7rem] overflow-y-hidden mb-3 inline-block leading-tight whitespace-normal no-underline font-bold text-base text-primary font-heading" href="https://www.libristo.be/en/book/44-kommunikative-spiele-spanische-aussprache-in-10-minuten_16167854"> 44 kommunikative Spiele - Spanische Aussprache in 10 Minuten, m. Audio-CD </a> <span class="px-2.5 mb-1.5 font-merriweatherlight text-xs"></span> <span class="flex items-center px-2.5 mb-5"> <img class="w-4 h-4 mr-2 transition-all duration-100" src="https://www.libristo.be/img/flag/lang/de.svg" alt=""> <span class="text-gray-300">/</span> <span class="ml-2 flex items-center"> <img class="w-4 h-4" src="https://www.libristo.be/img/bindings/B.svg" alt="Book"> </span><strong class="ml-2 font-light text-xs">Paperback</strong> </span> <div class="flex items-center px-2.5"> <a href="https://www.libristo.be/en/book/44-kommunikative-spiele-spanische-aussprache-in-10-minuten_16167854" class="w-8 h-8 flex justify-center items-center rounded-md bg-lgreen2"> <img src="https://www.libristo.be/img/svg/buy.svg" alt="common.buy"> </a> <span class="ml-4 text-sm font-bold text-black "> 25.61 <span class="text-gray font-normal">€</span> </span> </div> </div> </div> </div> </div> <div class="absolute inset-y-0 right-0 z-10 flex items-center"> <button @click="swiper.slideNext()" class="bg-lgreen2 text-white -mr-2 lg:-mr-8 flex justify-center items-center w-10 h-10 rounded-full shadow focus:outline-none"> <svg viewBox="0 0 20 20" fill="currentColor" class="chevron-right w-6 h-6"><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg> </button> </div> </div> </div> </div> </section> <script> dataLayer.push({ 'event': 'page_view', 'dynx_itemid': '11981483', 'dynx_pagetype': 'product', 'dynx_totalvalue': '30.78' }); </script> </div> <footer class="border-t-primary w-full bg-primary-200 text-black"> <section class="flex lg:max-w-6xl w-full py-8 lg:py-16 mx-auto px-7"> <div class="grid sm:grid-cols-2 lg:grid-cols-4 w-full gap-y-8 text-sm"> <div class="grid grid-cols-[auto_1fr] items-center gap-4.5 leading-tight"> <img class="w-9" src="https://www.libristo.be/img/ico/heart.svg" alt=""> <span> <strong class="font-bold">24 million titles</strong> <br> in 150+ languages </span> </div> <div class="grid grid-cols-[auto_1fr] items-center gap-4 leading-tight"> <img class="w-9" src="https://www.libristo.be/img/ico/prices.svg" alt=""> <span> <strong class="font-bold">Great prices</strong> <br> always up-to-date </span> </div> <div class="grid grid-cols-[auto_1fr] items-center gap-4 leading-tight"> <img class="w-9" src="https://www.libristo.be/img/ico/libroamanto.svg" alt=""> <span> <strong class="font-bold">LIBROAMANTO club</strong> <br> full of gifts </span> </div> <div class="grid grid-cols-[auto_1fr] items-center gap-4 leading-tight"> <img class="w-9" src="https://www.libristo.be/img/ico/customers.svg" alt=""> <span> <strong class="font-bold">2 million customer</strong> <br> served every year </span> </div> </div> </section> <div class="relative w-full pb-10 lg:py-20 bg-primary-700"> <section class="max-w-6xl w-full mx-auto flex justify-around pb-12 hidden text-center lg:block"> <span class="text-5xl text-lgreen2">All the books in the world</span> </section> <div class="relative"> <div class="lg:hidden absolute right-0 top-0 bottom-0 w-32 bg-gradient-to-l from-primary-700 pointer-events-none"> <img class="absolute right-4 bottom-4 w-7 z-5 animate-[scroll_4s_ease-in_infinite]" src="https://www.libristo.be/img/svg/tap_scroll.svg" alt="scroll"> </div> <section class="max-w-full w-full snap-mandatory snap-x mx-auto flex flex-nowrap gap-12 pb-8 pt-8 lg:mb-8 overflow-x-auto lg:overflow-x-visible lg:grid lg:grid-cols-4 lg:max-w-6xl"> <div class="snap-center shrink-0 pl-8 lg:pl-0"> <h5 class="font-heading text-primary-200 font-bold">All about shopping</h5> <nav class="flex flex-col gap-1 mt-4 text-primary"> <a class="no-underline" href="https://www.libristo.be/en/frequently-asked-questions">All about shopping</a> <a class="no-underline" href="https://www.libristo.be/en/delivery-payment">Delivery and payment</a> <a class="no-underline" href="https://www.libristo.be/en/terms-and-conditions">Terms and conditions</a> </nav> </div> <div class="snap-center shrink-0"> <h5 class="font-heading text-primary-200 font-bold">About the shop</h5> <nav class="flex flex-col gap-1 mt-4 text-primary"> <a class="no-underline" href="https://www.libristo.be/en/about-us">Who we are</a> <a class="no-underline" href="https://www.libristo.be/en/contact">Contacts</a> <a class="no-underline" href="https://www.libristo.be/en/sustainability-of-books">Books sustainability</a> </nav> </div> <div class="snap-center shrink-0 pr-24 lg:pr-0"> <h5 class="font-heading text-primary-200 font-bold">For customers</h5> <nav class="flex flex-col gap-1 mt-4 text-primary"> <a class="no-underline" href="https://www.libristo.be/en/loyalty-programme">Loyalty programme</a> <a class="no-underline" href="https://www.libristo.be/en/user/orders">Order status</a> <span> <a class="no-underline" href="https://www.libristo.be/en/returning-goods">Returns</a> <span class="text-gray-300 text-xs px-1">/</span> <a class="no-underline" href="https://www.libristo.be/en/complaints">Complaints</a> </span> </nav> </div> <div class="hidden lg:block"> <div class="font-bold font-heading text-lg text-primary-200 -mt-1.5"> Let's stay together<span class="align-super leading-none"> <img class="inline h-4 -ml-2" src="https://www.libristo.be/img/ico/primary_light_heart.svg" alt="heart"> </span></div> <div class="flex items-center justify-between mt-4"> <div class="flex items-center"> <a target="_blank" href="https://www.instagram.com/libristo_official" class="no-underline mr-1.5 hover:opacity-75"> <img src="https://www.libristo.be/img/social/white_instagram.svg" alt="INSTAGRAM"> </a> <a target="_blank" href="https://www.facebook.com/Libristo.official" class="no-underline mr-1.5 hover:opacity-75"> <img src="https://www.libristo.be/img/social/white_facebook.svg" alt="FACEBOOK"> </a> <a target="_blank" href="https://www.youtube.com/channel/UCqs5xjQxjJ72zSPHr3WP5Vw/featured" class="no-underline mr-1.5 hover:opacity-75"> <img src="https://www.libristo.be/img/social/white_youtube.svg" alt="YOUTUBE"> </a> <a target="_blank" href="https://www.tiktok.com/@libristo" class="no-underline mr-1.5 hover:opacity-75"> <img src="https://www.libristo.be/img/social/white_tiktok.svg" alt="TIKTOK"> </a> </div> <span class="font-thin text-2xl text-white">#libristo</span> </div> <img src="https://www.libristo.be/img/logo-new-transparent.svg" alt="LIBRISTO" class="mt-10"> </div> </section> </div> <section class="max-w-6xl w-full mx-auto lg:hidden"> <div class="px-8 text-center"> <span class="font-bold font-heading text-lg text-primary-200">Let's stay together<span class="align-super"> <img class="inline h-4 -ml-2" src="https://www.libristo.be/img/ico/primary_light_heart.svg" alt="heart"> </span></span> <div class="flex items-center justify-center gap-4 mb-10 lg:mb-0 mt-4"> <div class="flex items-center"> <a target="_blank" href="https://www.instagram.com/libristo_official" class="no-underline mr-2 hover:opacity-75"> <img src="https://www.libristo.be/img/social/white_instagram.svg" alt="INSTAGRAM"> </a> <a target="_blank" href="https://www.facebook.com/Libristo.official" class="no-underline mr-2 hover:opacity-75"> <img src="https://www.libristo.be/img/social/white_facebook.svg" alt="FACEBOOK"> </a> <a target="_blank" href="https://www.youtube.com/channel/UCqs5xjQxjJ72zSPHr3WP5Vw/featured" class="no-underline mr-2 hover:opacity-75"> <img src="https://www.libristo.be/img/social/white_youtube.svg" alt="YOUTUBE"> </a> <a target="_blank" href="https://www.tiktok.com/@libristo" class="no-underline mr-2 hover:opacity-75"> <img src="https://www.libristo.be/img/social/white_tiktok.svg" alt="TIKTOK"> </a> </div> <span class="font-thin text-2xl text-white">#libristo</span> </div> <img src="https://www.libristo.be/img/logo-new-transparent.svg" alt="LIBRISTO" class="mt-4"> </div> </section> <section class="max-w-6xl px-4 w-full mx-auto flex flex-col gap-8 justify-between py-12 lg:py-0 lg:flex-row"> <div class="text-center lg:text-left font-light text-sm text-gray order-3 lg:order-1"> © 2008-2026 Libristo </div> <div class="text-center flex items-center flex-wrap lg:flex-nowrap gap-4 justify-center order-2 lg:order-2"> <img class="max-h-7" src="https://www.libristo.be/img/ico/botmenu_VISA.svg" alt="VISA"> <img class="max-h-7" src="https://www.libristo.be/img/ico/botmenu_MC.svg" alt="MC"> <img class="max-h-7" src="https://www.libristo.be/img/ico/botmenu_GPAY.svg" alt="GPAY"> <img class="max-h-7" src="https://www.libristo.be/img/ico/botmenu_APAY.svg" alt="APAY"> <img class="max-h-7" src="https://www.libristo.be/img/ico/botmenu_PPAL.svg" alt="PPAL"> <div class="max-h-7" style="transform: scale(0.5);transform-origin: left;margin-top: -26px;"> <div class="smdWrapperTag"></div> </div> </div> <nav class="text-center lg:text-right flex items-center justify-center lg:justify-end text-gray-300 order-1 lg:order-3"> <a class="text-sm text-gray no-underline ml-4 hover:text-primary-200" href="https://www.libristo.be/en/cookie">Cookies</a> <a class="text-sm text-gray no-underline ml-4 hover:text-primary-200" href="https://www.libristo.be/en/consent-to-the-processing-of-personal-data-and-information-about-the-processing-of-personal-data">Privacy</a> <a class="text-sm text-gray no-underline ml-4 hover:text-primary-200" href="https://www.libristo.be/en/accessibility">Accessibility</a> </nav> </section> </div> </footer> <div class="reveal" id="l-login" data-reveal data-animation-in="scale-in-up fast" data-animation-out="scale-out-down fast"> <div class="c-modal-content"> <p class="c-modal-heading c-heading-info is-left-aligned">Login</p> <p>Log in to your account. Don't have a Libristo account? <a href="https://www.libristo.be/en/registration">Create one now!</a></p> </div> <section class="l-divider-rotated">   </section> <!-- end:l-divider-rotated --> <div class="c-modal-content narrow"> <form action="https://www.libristo.be/en/auth/signin" method="post" class="main-form-wrap"> <input type="hidden" name="_token" value="RHiY1RdYrCojZTws1F85cWov0mUyYOjvC7i6mEbr" autocomplete="off"> <div class="row mail"> <label for="email">Your email</label><input type="email" name="email" id="email" class="is-required" placeholder="Enter your email address"> <span class="required-info">mandatory</span> </div> <div class="row pass"> <label for="password">Your password:</label><input type="password" name="password" class="is-required" id="password" placeholder="Enter your password"> <span class="required-info">mandatory <a href="#" class="show-pass"><i class="ico-eye"></i></a></span> </div> <div class="row forgot"> <a href="https://www.libristo.be/en/lost-password" class="c-forgot-password">Forgotten password</a> </div> <div class="row send"> <button class="c-btn">Login</button> </div> </form> </div> <div class="c-registration-cta"> <div class="c-modal-content"> <h4>Don’t have an account? Discover the benefits of having a Libristo account!</h4> <p> With a Libristo account, you'll have everything under control. </p> <a href="https://www.libristo.be/en/registration" class="c-btn">Create a Libristo account</a> </div> </div> <button class="close-button" data-close aria-label="Close modal" type="button"> <span aria-hidden="true"><i class="ico-close"></i></span> </button> </div> <style> [x-cloak] { display: none !important; } .chat-content ul { list-style-type: disc; padding-left: 1.25rem; margin: 0.5rem 0; } .chat-content ol { list-style-type: decimal; padding-left: 1.25rem; margin: 0.5rem 0; } .chat-content li { margin: 0.25rem 0; } .chat-content p { margin: 0.5rem 0; } .chat-content p:first-child { margin-top: 0; } .chat-content p:last-child { margin-bottom: 0; } </style> <div x-data="{ open: false, isWide: true, showDisclaimer: true, messages: [], quickActions: [{"text":"I need help with my order","key":"order"},{"text":"Recommend a book","key":"recommend"},{"text":"When will my shipment arrive","key":"shipment"}], typing: false, sending: false, historyLoaded: false, rateLimited: false, userInput: '', keyboardOpen: false, viewportOffset: 0, maxChatHeight: 600, minMessageHeight: 300, initialViewportHeight: 0, getCsrfToken() { const meta = document.querySelector('meta[name=csrf-token]'); return meta ? meta.getAttribute('content') : ''; }, async apiPost(url, data = {}) { const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-CSRF-TOKEN': this.getCsrfToken(), 'X-Requested-With': 'XMLHttpRequest' }, body: JSON.stringify(data) }); const json = await response.json(); return { ok: response.ok, status: response.status, data: json }; }, async loadHistory() { if (this.historyLoaded) return; this.typing = true; try { const response = await this.apiPost('/api/libroamiko/get-messages'); if (response.ok && response.data.success && response.data.messages) { this.messages = response.data.messages; } this.historyLoaded = true; } catch (error) { console.error('Failed to load chat history:', error); // Don't show error for initial load - just start fresh } finally { this.typing = false; this.$nextTick(() => { this.scrollToBottom(); }); } }, async sendMessage(quickActionText = null) { const messageText = quickActionText !== null ? quickActionText : this.userInput.trim(); if (messageText === '' || this.sending || this.rateLimited) return; this.userInput = ''; this.sending = true; this.typing = true; // Optimistically add user message this.messages.push({ role: 'user', text: messageText }); this.$nextTick(() => { this.scrollToBottom(); }); try { const response = await this.apiPost('/api/libroamiko/send-message', { message: messageText }); console.log(response.data); if (response.status === 429) { this.rateLimited = true; this.messages.push({ role: 'bot', text: 'You have reached the chat limit. Please try again later.' }); // Reset rate limit after 60 seconds setTimeout(() => { this.rateLimited = false; }, 60000); } else if (response.ok && response.data.success && response.data.message) { this.messages.push(response.data.message); } else { // Something went wrong but got a response this.messages.push({ role: 'bot', text: response.data.message || 'I\u0027m sorry, something went wrong. Please try again.' }); } } catch (error) { console.error('Failed to send message:', error); this.messages.push({ role: 'bot', text: 'I\u0027m sorry, something went wrong. Please try again.' }); } finally { this.sending = false; this.typing = false; this.$nextTick(() => { this.scrollToBottom(); }); } }, async resetChat() { this.typing = true; try { const response = await this.apiPost('/api/libroamiko/reset-chat'); if (response.ok && response.data.success && response.data.messages) { this.messages = response.data.messages; } else { this.messages = []; } this.rateLimited = false; } catch (error) { console.error('Failed to reset chat:', error); this.messages.push({ role: 'bot', text: 'Failed to reset chat. Please try again.' }); } finally { this.typing = false; this.$nextTick(() => { this.scrollToBottom(); }); } }, handleViewportResize() { if (window.visualViewport) { // Calculate how much the viewport has shrunk (keyboard height) const layoutHeight = this.initialViewportHeight || window.innerHeight; const visibleHeight = window.visualViewport.height; const offsetTop = window.visualViewport.offsetTop || 0; this.viewportOffset = Math.max(0, layoutHeight - (visibleHeight + offsetTop)); const heightDelta = layoutHeight - visibleHeight; this.keyboardOpen = this.viewportOffset > 100 || heightDelta > 100; // keyboard threshold // Keep chat window within visible viewport on iOS keyboard const maxHeight = Math.min(600, visibleHeight - 16); this.maxChatHeight = Math.max(320, maxHeight); this.minMessageHeight = this.keyboardOpen ? 120 : 300; } }, scrollToBottom() { const container = this.$refs.messageContainer; if (container) { container.scrollTop = container.scrollHeight; } }, init() { // Do not auto-open from UTM on mobile screens. if (this.open && window.matchMedia('(max-width: 767px)').matches) { this.open = false; } if (this.open) { this.isWide = false; // Load history immediately when chat starts open (e.g. utm_source=libroamiko) this.loadHistory(); } this.$watch('open', value => { if (value) { this.isWide = false; // Load history when chat opens for the first time this.loadHistory(); } }); // Auto-collapse wide button after 10 seconds setTimeout(() => { this.isWide = false; }, 10000); // Listen for viewport changes (keyboard open/close on mobile) if (window.visualViewport) { this.initialViewportHeight = window.innerHeight; window.visualViewport.addEventListener('resize', () => this.handleViewportResize()); window.visualViewport.addEventListener('scroll', () => this.handleViewportResize()); this.handleViewportResize(); } } }" class="fixed bottom-6 right-6 z-[100] font-sans flex flex-col items-end" :style="{ bottom: keyboardOpen ? (viewportOffset + 24) + 'px' : '' }"> <!-- Chat Window --> <div x-cloak x-show="open" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 translate-y-8" x-transition:enter-end="opacity-100 translate-y-0" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100 translate-y-0" x-transition:leave-end="opacity-0 translate-y-8" class="absolute bottom-0 right-0 w-[360px] max-w-[calc(100vw-3rem)] bg-white rounded-2xl shadow-xl overflow-hidden flex flex-col border border-gray-200" :style="{ maxHeight: maxChatHeight + 'px' }"> <!-- Header --> <div class="bg-navy text-white px-5 py-4 flex items-center justify-between"> <div class="flex items-center gap-3 cursor-pointer" @click="open = false"> <svg class="w-6 h-6 text-white" xmlns="http://www.w3.org/2000/svg" width="25.253" height="25" viewBox="0 0 25.253 25"> <g id="Group_1596" data-name="Group 1596" transform="translate(-1104.008 -564.5)"> <g id="Group_1579" data-name="Group 1579" transform="translate(1104.635 565)"> <path id="Path_1090" data-name="Path 1090" d="M10,395.1,20.537,398.4a1.472,1.472,0,0,0,2.927,0L34,395.1" transform="translate(-10 -375.707)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1091" data-name="Path 1091" d="M30.244,362.61l.467-2.064,10.381,3.294,10.381-3.294.467,2.064" transform="translate(-29.092 -343.115)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1092" data-name="Path 1092" d="M226,426.958a1.767,1.767,0,0,1,3.414,0" transform="translate(-215.708 -404.514)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <line id="Line_385" data-name="Line 385" x1="9" y1="6" transform="translate(2.865 14.715)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <line id="Line_386" data-name="Line 386" y1="5.82" x2="9.891" transform="translate(11.778 14.894)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <g id="g55" transform="translate(2.273)"> <path id="path57" d="M-150.921-261.521s-9.745-5.873-9.745-12.4a4.56,4.56,0,0,1,4.548-4.568c3.227,0,5.2,3.263,5.2,3.263s1.971-3.263,5.2-3.263a4.56,4.56,0,0,1,4.548,4.568C-141.176-267.394-150.921-261.521-150.921-261.521Z" transform="translate(160.666 278.489)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> <g id="Group_1553" data-name="Group 1553" transform="translate(6.138 5.534)"> <g id="Ellipse_101" data-name="Ellipse 101" transform="translate(0 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> <g id="Ellipse_102" data-name="Ellipse 102" transform="translate(4.466 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> <g id="Ellipse_103" data-name="Ellipse 103" transform="translate(8.933 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> </g> </g> </g> </svg> <span class="font-bold text-sm tracking-tight">Book advisor Libroamiko</span> </div> <div class="flex items-center gap-2"> <!-- Reset button --> <button @click="resetChat()" class="text-white hover:text-white/80 transition-colors p-1" title="Start new conversation" :disabled="typing || sending"> <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"/> </svg> </button> <!-- Close button --> <button @click="open = false" class="text-white/80 hover:text-white transition-colors"> <svg class="w-6 h-6 rotate-0" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M4.28223 8.07056L12.1411 15.9294L20 8.07056" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/> </svg> </button> </div> </div> <!-- Messages area --> <div x-ref="messageContainer" class="flex-1 overflow-y-auto p-4 space-y-4 bg-cream" :style="{ minHeight: minMessageHeight + 'px' }"> <!-- Initial disclaimer inside messages --> <template x-if="showDisclaimer"> <div class="flex justify-start"> <div class="mr-2 mt-1 shrink-0"> <div class="w-8 h-8 rounded-full bg-white border border-gray-100 flex items-center justify-center shadow-sm"> <svg class="w-5 h-5 text-navy" xmlns="http://www.w3.org/2000/svg" width="18.052" height="17.8" viewBox="0 0 18.052 17.8"> <g id="Group_1600" data-name="Group 1600" transform="translate(-1104.008 -564.5)"> <g id="Group_1579" data-name="Group 1579" transform="translate(1104.635 565)"> <path id="Path_1090" data-name="Path 1090" d="M10,395.1l7.375,2.305a1.031,1.031,0,0,0,2.049,0L26.8,395.1" transform="translate(-10 -381.527)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1091" data-name="Path 1091" d="M30.244,361.991l.327-1.445,7.266,2.306,7.266-2.306.327,1.445" transform="translate(-29.438 -348.345)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1092" data-name="Path 1092" d="M226,426.565a1.237,1.237,0,0,1,2.39,0" transform="translate(-218.796 -410.854)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <line id="Line_385" data-name="Line 385" x1="6.3" y1="4.2" transform="translate(2.006 10.3)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <line id="Line_386" data-name="Line 386" y1="4.074" x2="6.924" transform="translate(8.244 10.426)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <g id="g55" transform="translate(1.591)"> <path id="path57" d="M-153.845-266.612s-6.822-4.111-6.822-8.679a3.192,3.192,0,0,1,3.183-3.2c2.259,0,3.638,2.284,3.638,2.284s1.379-2.284,3.638-2.284a3.192,3.192,0,0,1,3.183,3.2C-147.023-270.723-153.845-266.612-153.845-266.612Z" transform="translate(160.666 278.489)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> <g id="Group_1553" data-name="Group 1553" transform="translate(4.296 3.873)"> <g id="Ellipse_101" data-name="Ellipse 101" transform="translate(0 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> <g id="Ellipse_102" data-name="Ellipse 102" transform="translate(3.126 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> <g id="Ellipse_103" data-name="Ellipse 103" transform="translate(6.253 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> </g> </g> </g> </svg> </div> </div> <div class="relative bg-white text-gray-800 rounded-2xl rounded-tl-none px-4 py-3 shadow-sm border border-gray-100 max-w-[85%] text-sm leading-relaxed"> <button @click="showDisclaimer = false" class="absolute top-2 right-2 text-gray-400 hover:text-gray-600 transition-colors" aria-label="Hide notice"> <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/> </svg> </button> By using this chat, you are communicating with generative artificial intelligence. By using it, you also agree to the <a href="https://www.libristo.be/en/consent-to-the-processing-of-personal-data-and-information-about-the-processing-of-personal-data" class="text-primary underline">processing of personal data</a>. </div> </div> </template> <!-- Empty state --> <template x-if="messages.length === 0 && !typing"> <div class="flex flex-col items-center justify-center text-center text-gray-500 py-8"> <svg class="w-12 h-12 text-navy/30 mb-3" xmlns="http://www.w3.org/2000/svg" width="18.052" height="17.8" viewBox="0 0 18.052 17.8"> <g id="Group_1600" data-name="Group 1600" transform="translate(-1104.008 -564.5)"> <g id="Group_1579" data-name="Group 1579" transform="translate(1104.635 565)"> <path id="Path_1090" data-name="Path 1090" d="M10,395.1l7.375,2.305a1.031,1.031,0,0,0,2.049,0L26.8,395.1" transform="translate(-10 -381.527)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1091" data-name="Path 1091" d="M30.244,361.991l.327-1.445,7.266,2.306,7.266-2.306.327,1.445" transform="translate(-29.438 -348.345)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1092" data-name="Path 1092" d="M226,426.565a1.237,1.237,0,0,1,2.39,0" transform="translate(-218.796 -410.854)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <line id="Line_385" data-name="Line 385" x1="6.3" y1="4.2" transform="translate(2.006 10.3)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <line id="Line_386" data-name="Line 386" y1="4.074" x2="6.924" transform="translate(8.244 10.426)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <g id="g55" transform="translate(1.591)"> <path id="path57" d="M-153.845-266.612s-6.822-4.111-6.822-8.679a3.192,3.192,0,0,1,3.183-3.2c2.259,0,3.638,2.284,3.638,2.284s1.379-2.284,3.638-2.284a3.192,3.192,0,0,1,3.183,3.2C-147.023-270.723-153.845-266.612-153.845-266.612Z" transform="translate(160.666 278.489)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> <g id="Group_1553" data-name="Group 1553" transform="translate(4.296 3.873)"> <g id="Ellipse_101" data-name="Ellipse 101" transform="translate(0 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> <g id="Ellipse_102" data-name="Ellipse 102" transform="translate(3.126 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> <g id="Ellipse_103" data-name="Ellipse 103" transform="translate(6.253 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> </g> </g> </g> </svg> <p class="text-sm">Hi! I'm Libroamiko, your book advisor.</p> <p class="text-sm">How can I help you?</p> </div> </template> <template x-for="(msg, index) in messages" :key="index"> <div :class="msg.role === 'bot' ? 'flex justify-start' : 'flex justify-end'"> <!-- Bot Avatar --> <div x-show="msg.role === 'bot'" class="mr-2 shrink-0"> <div class="w-9 h-9 rounded-full bg-white border border-gray-100 flex items-center justify-center shadow-sm rounded-tr-none"> <svg class="w-5 h-5 text-navy" xmlns="http://www.w3.org/2000/svg" width="18.052" height="17.8" viewBox="0 0 18.052 17.8"> <g id="Group_1600" data-name="Group 1600" transform="translate(-1104.008 -564.5)"> <g id="Group_1579" data-name="Group 1579" transform="translate(1104.635 565)"> <path id="Path_1090" data-name="Path 1090" d="M10,395.1l7.375,2.305a1.031,1.031,0,0,0,2.049,0L26.8,395.1" transform="translate(-10 -381.527)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1091" data-name="Path 1091" d="M30.244,361.991l.327-1.445,7.266,2.306,7.266-2.306.327,1.445" transform="translate(-29.438 -348.345)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1092" data-name="Path 1092" d="M226,426.565a1.237,1.237,0,0,1,2.39,0" transform="translate(-218.796 -410.854)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <line id="Line_385" data-name="Line 385" x1="6.3" y1="4.2" transform="translate(2.006 10.3)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <line id="Line_386" data-name="Line 386" y1="4.074" x2="6.924" transform="translate(8.244 10.426)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <g id="g55" transform="translate(1.591)"> <path id="path57" d="M-153.845-266.612s-6.822-4.111-6.822-8.679a3.192,3.192,0,0,1,3.183-3.2c2.259,0,3.638,2.284,3.638,2.284s1.379-2.284,3.638-2.284a3.192,3.192,0,0,1,3.183,3.2C-147.023-270.723-153.845-266.612-153.845-266.612Z" transform="translate(160.666 278.489)" fill="none" stroke="#033" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> <g id="Group_1553" data-name="Group 1553" transform="translate(4.296 3.873)"> <g id="Ellipse_101" data-name="Ellipse 101" transform="translate(0 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> <g id="Ellipse_102" data-name="Ellipse 102" transform="translate(3.126 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> <g id="Ellipse_103" data-name="Ellipse 103" transform="translate(6.253 0)" fill="none" stroke="#033" stroke-width="1"> <circle cx="0.977" cy="0.977" r="0.977" stroke="none"/> <circle cx="0.977" cy="0.977" r="0.477" fill="none"/> </g> </g> </g> </g> </svg> </div> </div> <div :class="msg.role === 'bot' ? 'bg-white text-gray-800 rounded-2xl rounded-tl-none px-4 py-3 shadow-sm border border-gray-100 max-w-[85%]' : 'bg-primary-200 text-navy rounded-2xl rounded-tr-none px-4 py-3 shadow-sm max-w-[85%]'" class="text-[15px] leading-relaxed"> <div x-html="msg.text" class="chat-content"></div> </div> <!-- User Avatar --> <div x-show="msg.role === 'user'" class="ml-2 shrink-0"> <div class="w-8 h-8 rounded-full bg-primary-200 flex items-center justify-center shadow-sm rounded-tl-none"> <svg xmlns="http://www.w3.org/2000/svg" width="13.327" height="15.548" viewBox="0 0 13.327 15.548" class="text-navy"> <g id="Group_1543" data-name="Group 1543" transform="translate(-890.028 -1014.081)"> <path id="Path_343" data-name="Path 343" d="M1384.31,96.646a6.121,6.121,0,0,0-12.23,0" transform="translate(-481.504 932.435)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <path id="Path_344" data-name="Path 344" d="M1383.068,83.423a3.882,3.882,0,1,1-3.882-3.881A3.882,3.882,0,0,1,1383.068,83.423Z" transform="translate(-482.494 935.039)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> </svg> </div> </div> </div> </template> <!-- Quick actions (shown only when exactly 1 message – initial welcome from API) --> <template x-if="messages.length === 1 && !typing"> <div class="flex flex-col gap-2 w-full max-w-[280px] py-4 pl-10"> <template x-for="action in quickActions" :key="action.key"> <button @click="sendMessage(action.text)" :disabled="sending || rateLimited" class="bg-primary-200 text-navy rounded-xl px-4 py-3 text-left text-sm font-medium cursor-pointer ring-1 ring-transparent hover:bg-primary-300 hover:shadow-md hover:ring-navy/20 hover:-translate-y-px active:translate-y-0 active:shadow-sm transition-all duration-150 ease-out disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:shadow-none disabled:hover:ring-transparent disabled:hover:translate-y-0 disabled:active:translate-y-0"> <span x-text="action.text"></span> </button> </template> </div> </template> <!-- Typing Indicator --> <div x-show="typing" class="flex justify-start items-center"> <div class="mr-2 shrink-0"> <div class="w-8 h-8 rounded-full bg-white border border-gray-100 flex items-center justify-center shadow-sm"> <svg class="w-5 h-5 text-navy" xmlns="http://www.w3.org/2000/svg" width="25.253" height="25" viewBox="0 0 25.253 25"> <g id="Group_1596" data-name="Group 1596" transform="translate(-1104.008 -564.5)"> <g id="Group_1579" data-name="Group 1579" transform="translate(1104.635 565)"> <path id="Path_1090" data-name="Path 1090" d="M10,395.1,20.537,398.4a1.472,1.472,0,0,0,2.927,0L34,395.1" transform="translate(-10 -375.707)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1091" data-name="Path 1091" d="M30.244,362.61l.467-2.064,10.381,3.294,10.381-3.294.467,2.064" transform="translate(-29.092 -343.115)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1092" data-name="Path 1092" d="M226,426.958a1.767,1.767,0,0,1,3.414,0" transform="translate(-215.708 -404.514)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <line id="Line_385" data-name="Line 385" x1="9" y1="6" transform="translate(2.865 14.715)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <line id="Line_386" data-name="Line 386" y1="5.82" x2="9.891" transform="translate(11.778 14.894)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <g id="g55" transform="translate(2.273)"> <path id="path57" d="M-150.921-261.521s-9.745-5.873-9.745-12.4a4.56,4.56,0,0,1,4.548-4.568c3.227,0,5.2,3.263,5.2,3.263s1.971-3.263,5.2-3.263a4.56,4.56,0,0,1,4.548,4.568C-141.176-267.394-150.921-261.521-150.921-261.521Z" transform="translate(160.666 278.489)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> <g id="Group_1553" data-name="Group 1553" transform="translate(6.138 5.534)"> <g id="Ellipse_101" data-name="Ellipse 101" transform="translate(0 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> <g id="Ellipse_102" data-name="Ellipse 102" transform="translate(4.466 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> <g id="Ellipse_103" data-name="Ellipse 103" transform="translate(8.933 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> </g> </g> </g> </svg> </div> </div> <div class="bg-white rounded-2xl rounded-tl-none px-4 py-3 shadow-sm border border-gray-100 flex gap-1"> <span class="w-2 h-2 bg-gray rounded-full animate-pulse" style="animation-delay: 0ms"></span> <span class="w-2 h-2 bg-gray rounded-full animate-pulse" style="animation-delay: 150ms"></span> <span class="w-2 h-2 bg-gray rounded-full animate-pulse" style="animation-delay: 300ms"></span> </div> </div> </div> <!-- Input Area --> <div class="border-t border-gray-100 bg-white"> <div class="flex items-center px-4 py-3"> <input type="text" x-ref="chatInput" x-model="userInput" @keydown.enter="sendMessage()" @focus="handleViewportResize(); $nextTick(() => { scrollToBottom(); })" placeholder="Type your reply .." :disabled="sending || rateLimited" class="w-full bg-transparent !border-none !ring-0 !outline-none !shadow-none text-base placeholder:text-gray-400 self-center mb-0 disabled:opacity-50"> <button @click="sendMessage()" class="shrink-0 p-2.5 bg-navy text-white rounded-full hover:bg-navy/90 transition-all disabled:opacity-30 disabled:cursor-not-allowed flex items-center justify-center" :disabled="!userInput.trim() || sending || rateLimited"> <svg xmlns="http://www.w3.org/2000/svg" width="19.241" height="19.241" viewBox="0 0 19.241 19.241" class=""> <g id="g291"> <g id="g293"> <g id="g295"> <g id="g301" transform="translate(9.017 0.564)"> <path id="path303" d="M0-333.094l9.661-9.661" transform="translate(0 342.755)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> <g id="g305" transform="translate(0.564 0.564)"> <path id="path307" d="M-291.457-333.095l-7.584-2.167a1.2,1.2,0,0,1-.869-1.152h0a1.219,1.219,0,0,1,.869-1.168l17.245-5.173-5.173,17.245a1.219,1.219,0,0,1-1.168.869h0a1.2,1.2,0,0,1-1.152-.869Z" transform="translate(299.91 342.755)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> </g> </g> </g> </svg> </button> </div> </div> </div> <!-- Transitioning Floating Button --> <div x-show="!open" x-transition:enter="transition ease-out duration-200" x-transition:enter-start="opacity-0 scale-90" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-90" class="h-12 px-3 bg-navy rounded-xl shadow-xl flex items-center justify-center text-white group overflow-hidden relative cursor-pointer sm:h-16 sm:px-4 sm:rounded-2xl" @click="open = true" @keydown.enter.prevent="open = true" @keydown.space.prevent="open = true" role="button" tabindex="0"> <div class="absolute inset-0 bg-white/10 opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none"></div> <div class="flex items-center gap-3 whitespace-nowrap overflow-hidden h-full sm:gap-6"> <!-- Icon always visible - clicking opens chat --> <div class="shrink-0 flex items-center justify-center cursor-pointer" @click="open = true"> <svg class="w-6 h-6 text-primary-200 transition-all duration-300 sm:w-8 sm:h-8" xmlns="http://www.w3.org/2000/svg" width="25.253" height="25" viewBox="0 0 25.253 25"> <g id="Group_1596" data-name="Group 1596" transform="translate(-1104.008 -564.5)"> <g id="Group_1579" data-name="Group 1579" transform="translate(1104.635 565)"> <path id="Path_1090" data-name="Path 1090" d="M10,395.1,20.537,398.4a1.472,1.472,0,0,0,2.927,0L34,395.1" transform="translate(-10 -375.707)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1091" data-name="Path 1091" d="M30.244,362.61l.467-2.064,10.381,3.294,10.381-3.294.467,2.064" transform="translate(-29.092 -343.115)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <path id="Path_1092" data-name="Path 1092" d="M226,426.958a1.767,1.767,0,0,1,3.414,0" transform="translate(-215.708 -404.514)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" fill-rule="evenodd"/> <line id="Line_385" data-name="Line 385" x1="9" y1="6" transform="translate(2.865 14.715)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <line id="Line_386" data-name="Line 386" y1="5.82" x2="9.891" transform="translate(11.778 14.894)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> <g id="g55" transform="translate(2.273)"> <path id="path57" d="M-150.921-261.521s-9.745-5.873-9.745-12.4a4.56,4.56,0,0,1,4.548-4.568c3.227,0,5.2,3.263,5.2,3.263s1.971-3.263,5.2-3.263a4.56,4.56,0,0,1,4.548,4.568C-141.176-267.394-150.921-261.521-150.921-261.521Z" transform="translate(160.666 278.489)" fill="none" stroke="#cbffcb" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/> </g> <g id="Group_1553" data-name="Group 1553" transform="translate(6.138 5.534)"> <g id="Ellipse_101" data-name="Ellipse 101" transform="translate(0 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> <g id="Ellipse_102" data-name="Ellipse 102" transform="translate(4.466 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> <g id="Ellipse_103" data-name="Ellipse 103" transform="translate(8.933 0)" fill="none" stroke="#cbffcb" stroke-width="1"> <circle cx="1.396" cy="1.396" r="1.396" stroke="none"/> <circle cx="1.396" cy="1.396" r="0.896" fill="none"/> </g> </g> </g> </g> </svg> </div> <div x-show="isWide && !open" class="flex items-center justify-center" x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"> <!-- Text visible only when wide - clicking opens chat --> <span class="font-normal text-xs text-white inline-block cursor-pointer truncate max-w-[w-screen-42px] sm:text-sm sm:max-w-none" @click="open = true"> Hi, I'm Libroamiko, can I help? </span> <!-- Close icon for wide variant - only collapses --> <div class="ml-2 flex items-center justify-center w-7 h-7 hover:bg-white/10 rounded-full transition-colors cursor-pointer sm:w-8 sm:h-8" @click.stop="isWide = false"> <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="w-6 h-6 sm:w-8 sm:h-8" stroke="currentColor" stroke-width="1"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" /> </svg> </div> </div> </div> </div> </div> </div> <script> var appSessionId = 'M219nx4xdOdce7oUF7LUb2Xby9cVT30u'; var site = { country: 'be', locale: 'en', preferred_language: ["en","de","es","fr","it","uk"], cur: 'EUR', convertor: 24.165, tld: 'be', priceSet: 'be' }; var trans = { back: 'Back', allLangs: 'All languages', moreLanguages: 'Other languages' } </script> <!-- Scripts --> <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"></script> <script src="https://www.libristo.be/js/utils.js?v1"></script> <script src="https://www.libristo.be/js/app.js?v6"></script> <script src="https://www.libristo.be/js/ga4.js?v5220"></script> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/tippy.js@6.3.7/dist/tippy.umd.min.js"></script> <script> tippy('[data-tippy-content]', { placement: 'bottom', theme: "light", }); tippy('[data-tippy-green]', { content(reference) { return reference.getAttribute('data-tippy-green-content'); }, placement: "right", theme: "darkgreen", trigger: "mouseenter click", }) </script> <script> const data = { product: { id: "11981483", marketing_video: "https://www.youtube.com/watch?v=vBJjIhDIr90" } } </script> <script> setTimeout(() => { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ event: "view_item", ecommerce: { currency: 'EUR', value: 0, items: [{ item_id: "11981483", item_name: "Minerva.", currency: "EUR", item_variant: "Book", price: 30.780053796814, item_category: "f:B", item_category2: "c:NH", item_category3: "a:instock_s:high_d:new_l:en_v:kwb_x:200", quantity: 1 }] } }); }, 500); setTimeout(() => { dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object. dataLayer.push({ event: "view_item_list", ecommerce: { items: [ { item_id: "09267821", item_name: "Political Censorship of the Visual Arts in Nineteenth-Century Europe", currency: "EUR", item_variant: "Book", price: 58.531346989448 } , { item_id: "22117247", item_name: "Life of Rear-Admiral John Paul Jones", currency: "EUR", item_variant: "Book", price: 26.829712393958 } , { item_id: "48728534", item_name: "Firebeat", currency: "EUR", item_variant: "Audio", price: 13.258017794331 } , { item_id: "22146063", item_name: "Modern Romance August Books 5-8", currency: "EUR", item_variant: "Book", price: 19.132216014898 } , { item_id: "25346724", item_name: "Vogue and the Metropolitan Museum of Art Costume Institute", currency: "EUR", item_variant: "Book", price: 52.049244775502 } , { item_id: "28383686", item_name: "Digital Technology and Democratic Theory", currency: "EUR", item_variant: "Book", price: 37.464514794124 } , { item_id: "28731912", item_name: "The Babar-Nama: The Material Now Available For A Definitive Text Of The Book (1908)", currency: "EUR", item_variant: "Book", price: 23.082557417753 } , { item_id: "40542535", item_name: "Once Upon A Broken Heart", currency: "EUR", item_variant: "E-book", price: 6.0670391061453 } , { item_id: "40545669", item_name: "Comet", currency: "EUR", item_variant: "Audiobook", price: 15.080902131181 } , { item_id: "41535900", item_name: "La sorcière du château aux chardons - Tome 2", currency: "EUR", item_variant: "Book", price: 11.941237326712 } , { item_id: "44652446", item_name: "Napiš a smaž Aktivity se zvířátky", currency: "EUR", item_variant: "Book", price: 8.1936685288641 } , { item_id: "44688075", item_name: "Handbook of Research on Entrepreneurship and Conflict", currency: "EUR", item_variant: "Book", price: 278.21394578936 } , { item_id: "46877686", item_name: "SEDUCED BY THE DEMON KING A SENSUAL V02", currency: "EUR", item_variant: "Book", price: 12.852886405959 } , { item_id: "20268126", item_name: "Oxford Playscripts: A View from the Bridge", currency: "EUR", item_variant: "Book", price: 19.740120008276 } , { item_id: "17955393", item_name: "Reflections on the First Ten Years", currency: "EUR", item_variant: "Book", price: 10.320711773226 } , { item_id: "16087439", item_name: "Violence of Petro-Dollar Regimes: Algeria, Iraq, Libya", currency: "EUR", item_variant: "Book", price: 59.645354852059 } , { item_id: "14089868", item_name: "de la Syphilis Maligne", currency: "EUR", item_variant: "Book", price: 12.751500103455 } , { item_id: "12963384", item_name: "Las hijas del frío", currency: "EUR", item_variant: "Book", price: 15.68880612456 } , { item_id: "11476919", item_name: "The Testosterone Advantage Plan: Lose Weight, Gain Muscle, Boost Energy", currency: "EUR", item_variant: "Book", price: 18.018208152286 } , { item_id: "07902982", item_name: "Memoir of a Map of Hindoostan; Or the Mogul Empire", currency: "EUR", item_variant: "Book", price: 29.564659631699 } , { item_id: "06440848", item_name: "Trade Barriers to the European Union as Perceived by U.S. Small & Medium-Sized Enterprises", currency: "EUR", item_variant: "Book", price: 328.85536933582 } , { item_id: "03198880", item_name: "Charles County, Maryland, Wills 1818-1825", currency: "EUR", item_variant: "Book", price: 15.790192427064 } , { item_id: "02831101", item_name: "Metaphilosophy", currency: "EUR", item_variant: "Book", price: 33.10945582454 } ] } }); }, 750); </script> <script> const infobarBtns = document.querySelectorAll('[data-close-infobar]'); infobarBtns.forEach(infobarBtn => { infobarBtn.addEventListener('click', () => { document.querySelector("[data-infobar]").remove(); // add cookie named infobar to 1 document.cookie = "infobar_1818=1; path=/; expires=Fri, 31 Dec 9999 23:59:59 GMT"; }); }) </script> </body> </html>