Products tagged with books

/* === MailerLite Universal (load once site-wide) === */ (function(w,d,e,u,f,l,n){ w[f]=w[f]||function(){(w[f].q=w[f].q||[]).push(arguments);}; l=d.createElement(e); l.async=1; l.src=u; n=d.getElementsByTagName(e)[0]; n.parentNode.insertBefore(l,n); })(window,document,'script','https://assets.mailerlite.com/js/universal.js','ml'); ml('account','1759895'); /* === Amazon links → open in new tab (safe everywhere) === */ document.addEventListener('DOMContentLoaded', function () { function retarget(scope) { (scope || document).querySelectorAll('a[href*="amazon."]').forEach(function (a) { a.target = '_blank'; a.rel = (a.rel ? a.rel + ' ' : '') + 'noopener noreferrer'; }); } retarget(); new MutationObserver(function (muts) { muts.forEach(function (m) { m.addedNodes && m.addedNodes.forEach(function (n) { if (n.nodeType === 1) retarget(n); }); }); }).observe(document.documentElement, { childList: true, subtree: true }); }); /* === TBW full-bleed hero CSS (only matters on pages that use it) === */ document.addEventListener('DOMContentLoaded', function () { var css = ` .tbw-fullbleed{position:relative;width:100vw;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw;overflow:hidden;margin-bottom:16px;background:#0e1411} .tbw-fullbleed a{display:block;position:relative} .tbw-hero-img{display:block;width:100%;height:auto;transform:scale(1.02) translateZ(0);will-change:transform;animation:tbwKen 24s ease-in-out infinite alternate} @keyframes tbwKen{0%{transform:scale(1.02) translate3d(0,0,0)}100%{transform:scale(1.07) translate3d(-1.5%,-1%,0)}} .tbw-left-fill{position:absolute;left:0;top:0;bottom:0;width:min(36%,520px);pointer-events:none;z-index:1;background-repeat:no-repeat;background-size:cover;background-position:right center;transform:scaleX(-1);filter:blur(1.5px) brightness(.95) saturate(.98);opacity:.95} .tbw-left-feather{position:absolute;left:0;top:0;bottom:0;width:min(40%,560px);pointer-events:none;z-index:2;background:linear-gradient(90deg, rgba(14,20,17,.9) 0%, rgba(14,20,17,.5) 35%, rgba(14,20,17,0) 85%);mix-blend-mode:multiply} .tbw-seam{position:absolute;inset:0;pointer-events:none;z-index:2;background: linear-gradient(90deg,#0e1411 0%,rgba(14,20,17,0) 35%), radial-gradient(ellipse at 50% 50%, rgba(14,20,17,.22), rgba(14,20,17,0) 45%), linear-gradient(90deg, rgba(14,20,17,0) 65%, rgba(14,20,17,.15) 100%);mix-blend-mode:multiply;opacity:.9} .tbw-lamp{position:absolute;right:3.2%;top:7%;width:160px;height:300px;pointer-events:none;z-index:3;background:radial-gradient(circle at 50% 30%,rgba(255,210,130,.7),rgba(255,210,130,.25) 35%,rgba(255,210,130,0) 70%);filter:blur(6px);mix-blend-mode:screen;opacity:.65;animation:tbwPulse 3.6s ease-in-out infinite} @keyframes tbwPulse{0%,100%{opacity:.55;filter:blur(6px)}50%{opacity:.82;filter:blur(8px)}} @media (prefers-reduced-motion: reduce){.tbw-hero-img{animation:none;transform:none}.tbw-lamp{animation:none}} `; var s = document.createElement('style'); s.appendChild(document.createTextNode(css)); document.head.appendChild(s); }); /* === iOS/Safari autoplay nudge (only applies if #tbw-hero exists) === */ (function(){ function nudge(){ var v = document.getElementById('tbw-hero'); if(!v) return; try{ v.muted = true; v.defaultMuted = true; v.setAttribute('playsinline',''); v.setAttribute('webkit-playsinline',''); var p = v.play(); if (p && p.catch) p.catch(function(){}); }catch(e){} } document.addEventListener('DOMContentLoaded', nudge); window.addEventListener('pageshow', nudge); document.addEventListener('visibilitychange', function(){ if(!document.hidden) nudge(); }); })();