<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Monthly Newsletters Archives - Atomic Guardian</title>
	<atom:link href="https://atomicguardian.com/category/monthlynewsletteres/feed/" rel="self" type="application/rss+xml" />
	<link>https://atomicguardian.com/category/monthlynewsletteres/</link>
	<description>Protecting businesses in a digital world.</description>
	<lastBuildDate>Mon, 25 May 2026 14:34:10 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://atomicguardian.com/wp-content/uploads/2024/12/Atomic-Guardian-Graphic-150x150.webp</url>
	<title>Monthly Newsletters Archives - Atomic Guardian</title>
	<link>https://atomicguardian.com/category/monthlynewsletteres/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>June 2026</title>
		<link>https://atomicguardian.com/june-2026/</link>
		
		<dc:creator><![CDATA[Vittorio Romani]]></dc:creator>
		<pubDate>Mon, 01 Jun 2026 12:00:00 +0000</pubDate>
				<category><![CDATA[Monthly Newsletters]]></category>
		<guid isPermaLink="false">https://atomicguardian.com/?p=23861</guid>

					<description><![CDATA[<p>The post <a href="https://atomicguardian.com/june-2026/">June 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="23861" class="elementor elementor-23861" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-59f84dec e-flex e-con-boxed e-con e-parent" data-id="59f84dec" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2d59f2 elementor-widget elementor-widget-shortcode" data-id="f2d59f2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"><style>
.flipbook-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}
#flipbook_6a21becf495f6-container {
    width: 400px;
    height: 456px;
    transition: none;
    position: relative;
    overflow: visible;
}
.flipbook-stage { width: 100%; height: 100%; position: relative; }
.flipbook-cover img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    cursor: pointer;
}
.flipbook-wrapper {
    display: none;
    width: 100%;
    height: 100%;
}
#flipbook {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}
.pdf-page {
    width: 100%;
    height: 100%;
    min-height: 100px;
}
.pdf-page canvas {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain;
    display: block;
    transition: none !important;
}
#flipbook_6a21becf495f6-prev,
#flipbook_6a21becf495f6-next {
    color: #FFF;
}
.flipbook-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 30px;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 20;
}
.flipbook-prev {
    left: -15px;
}
.flipbook-next {
    right: -15px;
}
.flipbook-download {
    margin-top: 10px;
    display: none;
}

#flipbook_6a21becf495f6-download a {
    padding: 8px 16px;
    background: #F983E7 !important;
    color: #000 !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    text-decoration: none;
    display: inline-block;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}

#flipbook_6a21becf495f6-download a:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf495f6-download .flipbook-fullscreen-btn:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf495f6-download .flipbook-fullscreen-btn {
    padding: 8px 16px;
    background: #F983E7;
    color: #000;
    font-size: 16px !important;
    font-weight: 600 !important;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    cursor: pointer;
    margin-left: 10px;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flipbook-fullscreen-btn {
    all: unset;
}
.flipbook-page-indicator {
    margin-top: 10px;
    font-size: 13px;
    font-weight: normal;
    color: #444;
    display: none;
}
.flipbook-thumbnails {
    display: flex;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 40px;
    gap: 15px;
    scroll-behavior: smooth;
    width: 100%;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    white-space: nowrap;
}
.flipbook-thumbnail {
    opacity: 0;
    transition: opacity 0.3s;
    text-align: center;
    flex: 0 0 auto;
	cursor: pointer;
}
.flipbook-thumbnail.visible {
    opacity: 1;
}
.flipbook-thumbnail canvas {
    width: 60px !important;
    height: auto !important;
    max-width: 100%;
    box-shadow: 0 0 4px rgba(0,0,0,0.3);
    cursor: pointer;
    display: block;
    border: 4px solid transparent;
    box-sizing: border-box;
    transition: border-color 0.3s ease;
}
.flipbook-thumbnail span {
    font-size: 12px;
    color: #444;
}
.fullscreen-mode {
    display: flex;
    justify-content: center;
    align-items: center; /* Center vertically */
    height: 100vh !important;
    width: 100vw !important;
    padding: 0 !important;
    box-sizing: border-box;
    overflow: hidden;
}
	/*
.fullscreen-mode canvas {
    max-height: calc(100vh - 50px);
    object-fit: contain;
}*/
.fullscreen-mode canvas {
    max-height: 100vh !important;
    max-width: 100vw !important;
    width: auto !important;
    height: 100% !important;
    object-fit: contain;
}
.fullscreen-mode .flipbook-stage,
.fullscreen-mode .flipbook-wrapper,
.fullscreen-mode #flipbook,
.fullscreen-mode .pdf-page {
    height: 100vh !important;
    width: 100vw !important;
    display: flex;
    justify-content: center;
    align-items: center;
}
.fullscreen-mode + .flipbook-thumbnails,
.fullscreen-mode + .flipbook-download,
.fullscreen-mode + .flipbook-page-indicator {
    display: none !important;
}
.flipbook-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
}
.flipbook-container-wrapper,
.flipbook-container-wrapper * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.flipbook-container-wrapper canvas {
    pointer-events: none;
}

body, html {
    -webkit-touch-callout: none;
}
@media (max-width: 500px) {
    html, body {
        min-height: 100vh;
    }
    #flipbook_6a21becf495f6-container {
        width: 370px;
        height: 523px;
    }
    #flipbook_6a21becf495f6-wrapper {
        width: 330px;
        height: 432px;
    }
    .flipbook-stage,
    .flipbook-container,
    #flipbook,
    .flipbook-wrapper,
    .pdf-page {
        min-height: 432px !important;
    }
    .flipbook-cover img {
        max-width: 100%;
        height: auto;
    }
    .flipbook-thumbnails {
        margin-top: 100px !important;
        max-width: 330px;
    }
    .flipbook-download,
    .flipbook-download .flipbook-fullscreen-btn,
    .flipbook-download a {
        display: none !important;
    }
}
</style>

 <div class="flipbook-item">
  <div class="flipbook-container-wrapper">
        <div class="flipbook-container" id="flipbook_6a21becf495f6-container">
            <div class="flipbook-stage">
                <div class="flipbook-cover" id="flipbook_6a21becf495f6-cover" style="display:none;">
                                    </div>
                <div class="flipbook-wrapper" id="flipbook_6a21becf495f6-wrapper">
                    <div id="flipbook_6a21becf495f6"></div>
                    <span class="flipbook-arrow flipbook-prev" id="flipbook_6a21becf495f6-prev">‹</span>
					<span class="flipbook-arrow flipbook-next" id="flipbook_6a21becf495f6-next">›</span>
                </div>
            </div>
        </div>
        <div class="flipbook-thumbnails" id="flipbook_6a21becf495f6-thumbnails"></div>        <div class="flipbook-page-indicator" id="flipbook_6a21becf495f6-page-indicator">1 / ?</div>
         <div class="flipbook-download" id="flipbook_6a21becf495f6-download">
          <a href="https://atomicguardian.com/wp-content/uploads/2026/05/AG-Newsletter-June-2026.pdf" download type="application/pdf" target="_blank">Download PDF</a>
    
          <button type="button" class="flipbook-fullscreen-btn" id="flipbook_6a21becf495f6-fs-btn">View Full Screen</button>
      </div>
</div> <!-- end .flipbook-container-wrapper -->
</div> <!-- end .flipbook-item -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script>
<script>
    jQuery(document).ready(function () {
        const uid = "flipbook_6a21becf495f6";
        const url = "https:\/\/atomicguardian.com\/wp-content\/uploads\/2026\/05\/AG-Newsletter-June-2026.pdf";
        const flipbook = jQuery('#' + uid);
        const wrapper = jQuery('#' + uid + '-wrapper');
        const cover = jQuery('#' + uid + '-cover');
        const container = jQuery('#' + uid + '-container');
        const thumbs = jQuery('#' + uid + '-thumbnails');
        const pageIndicator = jQuery('#' + uid + '-page-indicator');
        const downloadBtn = jQuery('#' + uid + '-download');
        const nextArrow = jQuery('#' + uid + '-next');
		const prevArrow = jQuery('#' + uid + '-prev');
        let currentPage = 1;
        let thumbnailCache = new Map();
        let isNavigating = false;

        cover.on('click', function () {
            const isMobile = window.innerWidth <= 500;
            container.css({
                width: isMobile ? 330 : 742,
                height: isMobile ? 432 : 1044            });
            wrapper.show();
            cover.hide();
            if (downloadBtn.length) downloadBtn.fadeIn();
            if (pageIndicator.length) pageIndicator.fadeIn();
            initFlipbook();
        });

        const coverUrl = "";
        if (!coverUrl || coverUrl === '') {
            setTimeout(() => cover.trigger('click'), 50);
        }

			function initFlipbook() {
				pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.worker.min.js';
				pdfjsLib.getDocument(url).promise.then(function (pdf) {
					function renderPage(i) {
						return pdf.getPage(i).then(function (page) {
							const isFullscreen = container.hasClass('fullscreen-mode');
							const rawViewport = page.getViewport({ scale: 1 });

							const scale = isFullscreen
								? Math.min(window.innerWidth / rawViewport.width, window.innerHeight / rawViewport.height)
								: flipbook.width() / rawViewport.width;

							const outputScale = window.devicePixelRatio || 1;
							const viewport = page.getViewport({ scale });

							const wrapper = jQuery('<div class="pdf-page" data-page="' + i + '"><canvas></canvas></div>');
							const canvas = wrapper.find('canvas')[0];
							const context = canvas.getContext('2d');

							canvas.width = viewport.width * outputScale;
							canvas.height = viewport.height * outputScale;
							canvas.style.width = viewport.width + 'px';
							canvas.style.height = viewport.height + 'px';

							context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

							return page.render({ canvasContext: context, viewport }).promise.then(() => wrapper);
						});
					}

                function goToPage(i) {
                    if (i < 1 || i > pdf.numPages || i === currentPage || isNavigating) return;
                    isNavigating = true;
                    renderPage(i).then(newWrapper => {
                        flipbook.find('.pdf-page').remove();
                        newWrapper.addClass('active');
                        flipbook.append(newWrapper);
                        currentPage = i;
                        updateArrows();
                        updateThumbnails();
                        if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                        isNavigating = false;
                    });
                }

                function updateArrows() {
                    prevArrow.toggle(currentPage > 1);
                    nextArrow.toggle(currentPage < pdf.numPages);
                }

                function updateThumbnails() {
                    if (!thumbs.length) return;
                    thumbs.find('.flipbook-thumbnail').each(function () {
                        const page = parseInt(jQuery(this).attr('data-thumb-page'));
                        const canvas = jQuery(this).find('canvas');
                        canvas.css('border-color', page === currentPage ? '#000' : 'transparent');
                        jQuery(this).toggleClass('active', page === currentPage);
                    });

                    const activeThumb = thumbs.find('.flipbook-thumbnail.active');
                    if (activeThumb.length) {
                        const scrollLeft = activeThumb.position().left + thumbs.scrollLeft() - (thumbs.width() / 2) + (activeThumb.outerWidth() / 2);
                        thumbs.animate({ scrollLeft }, 300);
                    }
                }

                function renderAllThumbnails(pdf) {
                    if (!thumbs.length) return;
                    const totalPages = pdf.numPages;
                    const batchSize = 10;
                    let currentBatchStart = 1;

                    function renderBatch(startPage) {
                        const endPage = Math.min(startPage + batchSize - 1, totalPages);
                        const promises = [];

                        for (let i = startPage; i <= endPage; i++) {
                            promises.push(new Promise((resolve) => {
                                if (thumbnailCache.has(i)) {
                                    resolve({ i, thumb: thumbnailCache.get(i) });
                                } else {
                                    pdf.getPage(i).then(page => {
                                        const scale = 0.2;
                                        const viewport = page.getViewport({ scale });
                                        const outputScale = window.devicePixelRatio || 1;
                                        const canvas = document.createElement('canvas');
                                        const context = canvas.getContext('2d');
                                        canvas.width = viewport.width * outputScale;
                                        canvas.height = viewport.height * outputScale;
                                        canvas.style.width = viewport.width + 'px';
                                        canvas.style.height = viewport.height + 'px';
                                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);
                                        page.render({ canvasContext: context, viewport }).promise.then(() => {
                                            const thumb = jQuery('<div class="flipbook-thumbnail" data-thumb-page="' + i + '"><canvas></canvas><span>' + i + '</span></div>');
                                            thumb.find('canvas').replaceWith(canvas);
                                            thumb.addClass('visible');
                                            thumb.on('click', () => goToPage(i));
                                            thumbnailCache.set(i, thumb);
                                            resolve({ i, thumb });
                                        });
                                    });
                                }
                            }));
                        }

                        Promise.all(promises).then(results => {
                            results.sort((a, b) => a.i - b.i).forEach(({ thumb }) => thumbs.append(thumb));
                            updateThumbnails();
                            if (endPage < totalPages) {
                                setTimeout(() => renderBatch(endPage + 1), 150);
                            }
                        });
                    }

                    renderBatch(currentBatchStart);
                }

                renderPage(currentPage).then(wrapper => {
                    wrapper.addClass('active');
                    flipbook.append(wrapper);
                    updateArrows();
                    if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                });

                if (thumbs.length) renderAllThumbnails(pdf);

                nextArrow.on('click', () => goToPage(currentPage + 1));
                prevArrow.on('click', () => goToPage(currentPage - 1));
                jQuery(document).on('keydown', function (e) {
                    if (e.key === 'ArrowRight') goToPage(currentPage + 1);
                    if (e.key === 'ArrowLeft') goToPage(currentPage - 1);
                });

// Fullscreen button logic (desktop only)
// Fullscreen button logic (desktop only)
jQuery('#' + uid + '-fs-btn').on('click', function () {
    const elem = document.getElementById('flipbook_6a21becf495f6-container');
    const requestFS = elem.requestFullscreen || elem.webkitRequestFullscreen || elem.msRequestFullscreen;

    if (requestFS) {
        elem.classList.add('fullscreen-mode');

        requestFS.call(elem).then(() => {
            // Immediately re-render the current page with adjusted dimensions
            const pdfPage = flipbook.find('.pdf-page.active');
            if (pdfPage.length) {
                const canvas = pdfPage.find('canvas')[0];
                const context = canvas.getContext('2d');
                const pageNum = currentPage;

                // Re-fetch the PDF page and render it
                pdfjsLib.getDocument(url).promise.then(pdf => {
                    pdf.getPage(pageNum).then(page => {
                        const viewport = page.getViewport({ scale: 1 });
                        const scale = Math.min(
                            (window.innerHeight) / viewport.height,
                            (window.innerWidth) / viewport.width
                        );
                        const scaledViewport = page.getViewport({ scale });
                        const outputScale = window.devicePixelRatio || 1;

                        // Adjust canvas dimensions
                        canvas.width = scaledViewport.width * outputScale;
                        canvas.height = scaledViewport.height * outputScale;
                        canvas.style.width = scaledViewport.width + 'px';
                        canvas.style.height = scaledViewport.height + 'px';
                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

                        // Render the page
                        page.render({ canvasContext: context, viewport: scaledViewport }).promise.then(() => {
                            // Ensure arrows are updated
                            updateArrows();
                        });
                    });
                });
            }
        }).catch(() => {
            elem.classList.remove('fullscreen-mode');
        });
    }
});

// Listen for exit from fullscreen to clean up
document.addEventListener('fullscreenchange', () => {
    const container = document.getElementById('flipbook_6a21becf495f6-container');
    if (document.fullscreenElement !== container) {
        container.classList.remove('fullscreen-mode');
        // Re-render the page with original dimensions
        goToPage(currentPage);
    }
});
            }); // end of getDocument
        } // end of initFlipbook
    }); // end of jQuery(document).ready

	// Disable right-click inside flipbook
document.addEventListener('contextmenu', function (e) {
    if (e.target.closest('.flipbook-container-wrapper')) {
        e.preventDefault();
    }
});
    </script>
    </div>
						</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://atomicguardian.com/june-2026/">June 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>May 2026</title>
		<link>https://atomicguardian.com/february-2026-3/</link>
		
		<dc:creator><![CDATA[Vittorio Romani]]></dc:creator>
		<pubDate>Fri, 01 May 2026 11:00:00 +0000</pubDate>
				<category><![CDATA[Monthly Newsletters]]></category>
		<guid isPermaLink="false">https://atomicguardian.com/?p=21467</guid>

					<description><![CDATA[<p>The post <a href="https://atomicguardian.com/february-2026-3/">May 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="21467" class="elementor elementor-21467" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-59f84dec e-flex e-con-boxed e-con e-parent" data-id="59f84dec" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2d59f2 elementor-widget elementor-widget-shortcode" data-id="f2d59f2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"><style>
.flipbook-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}
#flipbook_6a21becf4ac45-container {
    width: 400px;
    height: 456px;
    transition: none;
    position: relative;
    overflow: visible;
}
.flipbook-stage { width: 100%; height: 100%; position: relative; }
.flipbook-cover img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    cursor: pointer;
}
.flipbook-wrapper {
    display: none;
    width: 100%;
    height: 100%;
}
#flipbook {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}
.pdf-page {
    width: 100%;
    height: 100%;
    min-height: 100px;
}
.pdf-page canvas {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain;
    display: block;
    transition: none !important;
}
#flipbook_6a21becf4ac45-prev,
#flipbook_6a21becf4ac45-next {
    color: #FFF;
}
.flipbook-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 30px;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 20;
}
.flipbook-prev {
    left: -15px;
}
.flipbook-next {
    right: -15px;
}
.flipbook-download {
    margin-top: 10px;
    display: none;
}

#flipbook_6a21becf4ac45-download a {
    padding: 8px 16px;
    background: #F983E7 !important;
    color: #000 !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    text-decoration: none;
    display: inline-block;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}

#flipbook_6a21becf4ac45-download a:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4ac45-download .flipbook-fullscreen-btn:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4ac45-download .flipbook-fullscreen-btn {
    padding: 8px 16px;
    background: #F983E7;
    color: #000;
    font-size: 16px !important;
    font-weight: 600 !important;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    cursor: pointer;
    margin-left: 10px;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flipbook-fullscreen-btn {
    all: unset;
}
.flipbook-page-indicator {
    margin-top: 10px;
    font-size: 13px;
    font-weight: normal;
    color: #444;
    display: none;
}
.flipbook-thumbnails {
    display: flex;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 40px;
    gap: 15px;
    scroll-behavior: smooth;
    width: 100%;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    white-space: nowrap;
}
.flipbook-thumbnail {
    opacity: 0;
    transition: opacity 0.3s;
    text-align: center;
    flex: 0 0 auto;
	cursor: pointer;
}
.flipbook-thumbnail.visible {
    opacity: 1;
}
.flipbook-thumbnail canvas {
    width: 60px !important;
    height: auto !important;
    max-width: 100%;
    box-shadow: 0 0 4px rgba(0,0,0,0.3);
    cursor: pointer;
    display: block;
    border: 4px solid transparent;
    box-sizing: border-box;
    transition: border-color 0.3s ease;
}
.flipbook-thumbnail span {
    font-size: 12px;
    color: #444;
}
.fullscreen-mode {
    display: flex;
    justify-content: center;
    align-items: center; /* Center vertically */
    height: 100vh !important;
    width: 100vw !important;
    padding: 0 !important;
    box-sizing: border-box;
    overflow: hidden;
}
	/*
.fullscreen-mode canvas {
    max-height: calc(100vh - 50px);
    object-fit: contain;
}*/
.fullscreen-mode canvas {
    max-height: 100vh !important;
    max-width: 100vw !important;
    width: auto !important;
    height: 100% !important;
    object-fit: contain;
}
.fullscreen-mode .flipbook-stage,
.fullscreen-mode .flipbook-wrapper,
.fullscreen-mode #flipbook,
.fullscreen-mode .pdf-page {
    height: 100vh !important;
    width: 100vw !important;
    display: flex;
    justify-content: center;
    align-items: center;
}
.fullscreen-mode + .flipbook-thumbnails,
.fullscreen-mode + .flipbook-download,
.fullscreen-mode + .flipbook-page-indicator {
    display: none !important;
}
.flipbook-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
}
.flipbook-container-wrapper,
.flipbook-container-wrapper * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.flipbook-container-wrapper canvas {
    pointer-events: none;
}

body, html {
    -webkit-touch-callout: none;
}
@media (max-width: 500px) {
    html, body {
        min-height: 100vh;
    }
    #flipbook_6a21becf4ac45-container {
        width: 370px;
        height: 523px;
    }
    #flipbook_6a21becf4ac45-wrapper {
        width: 330px;
        height: 432px;
    }
    .flipbook-stage,
    .flipbook-container,
    #flipbook,
    .flipbook-wrapper,
    .pdf-page {
        min-height: 432px !important;
    }
    .flipbook-cover img {
        max-width: 100%;
        height: auto;
    }
    .flipbook-thumbnails {
        margin-top: 100px !important;
        max-width: 330px;
    }
    .flipbook-download,
    .flipbook-download .flipbook-fullscreen-btn,
    .flipbook-download a {
        display: none !important;
    }
}
</style>

 <div class="flipbook-item">
  <div class="flipbook-container-wrapper">
        <div class="flipbook-container" id="flipbook_6a21becf4ac45-container">
            <div class="flipbook-stage">
                <div class="flipbook-cover" id="flipbook_6a21becf4ac45-cover" style="display:none;">
                                    </div>
                <div class="flipbook-wrapper" id="flipbook_6a21becf4ac45-wrapper">
                    <div id="flipbook_6a21becf4ac45"></div>
                    <span class="flipbook-arrow flipbook-prev" id="flipbook_6a21becf4ac45-prev">‹</span>
					<span class="flipbook-arrow flipbook-next" id="flipbook_6a21becf4ac45-next">›</span>
                </div>
            </div>
        </div>
        <div class="flipbook-thumbnails" id="flipbook_6a21becf4ac45-thumbnails"></div>        <div class="flipbook-page-indicator" id="flipbook_6a21becf4ac45-page-indicator">1 / ?</div>
         <div class="flipbook-download" id="flipbook_6a21becf4ac45-download">
          <a href="https://atomicguardian.com/wp-content/uploads/2026/04/AG-Newsletter-May-2026.pdf" download type="application/pdf" target="_blank">Download PDF</a>
    
          <button type="button" class="flipbook-fullscreen-btn" id="flipbook_6a21becf4ac45-fs-btn">View Full Screen</button>
      </div>
</div> <!-- end .flipbook-container-wrapper -->
</div> <!-- end .flipbook-item -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script>
<script>
    jQuery(document).ready(function () {
        const uid = "flipbook_6a21becf4ac45";
        const url = "https:\/\/atomicguardian.com\/wp-content\/uploads\/2026\/04\/AG-Newsletter-May-2026.pdf";
        const flipbook = jQuery('#' + uid);
        const wrapper = jQuery('#' + uid + '-wrapper');
        const cover = jQuery('#' + uid + '-cover');
        const container = jQuery('#' + uid + '-container');
        const thumbs = jQuery('#' + uid + '-thumbnails');
        const pageIndicator = jQuery('#' + uid + '-page-indicator');
        const downloadBtn = jQuery('#' + uid + '-download');
        const nextArrow = jQuery('#' + uid + '-next');
		const prevArrow = jQuery('#' + uid + '-prev');
        let currentPage = 1;
        let thumbnailCache = new Map();
        let isNavigating = false;

        cover.on('click', function () {
            const isMobile = window.innerWidth <= 500;
            container.css({
                width: isMobile ? 330 : 742,
                height: isMobile ? 432 : 1044            });
            wrapper.show();
            cover.hide();
            if (downloadBtn.length) downloadBtn.fadeIn();
            if (pageIndicator.length) pageIndicator.fadeIn();
            initFlipbook();
        });

        const coverUrl = "";
        if (!coverUrl || coverUrl === '') {
            setTimeout(() => cover.trigger('click'), 50);
        }

			function initFlipbook() {
				pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.worker.min.js';
				pdfjsLib.getDocument(url).promise.then(function (pdf) {
					function renderPage(i) {
						return pdf.getPage(i).then(function (page) {
							const isFullscreen = container.hasClass('fullscreen-mode');
							const rawViewport = page.getViewport({ scale: 1 });

							const scale = isFullscreen
								? Math.min(window.innerWidth / rawViewport.width, window.innerHeight / rawViewport.height)
								: flipbook.width() / rawViewport.width;

							const outputScale = window.devicePixelRatio || 1;
							const viewport = page.getViewport({ scale });

							const wrapper = jQuery('<div class="pdf-page" data-page="' + i + '"><canvas></canvas></div>');
							const canvas = wrapper.find('canvas')[0];
							const context = canvas.getContext('2d');

							canvas.width = viewport.width * outputScale;
							canvas.height = viewport.height * outputScale;
							canvas.style.width = viewport.width + 'px';
							canvas.style.height = viewport.height + 'px';

							context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

							return page.render({ canvasContext: context, viewport }).promise.then(() => wrapper);
						});
					}

                function goToPage(i) {
                    if (i < 1 || i > pdf.numPages || i === currentPage || isNavigating) return;
                    isNavigating = true;
                    renderPage(i).then(newWrapper => {
                        flipbook.find('.pdf-page').remove();
                        newWrapper.addClass('active');
                        flipbook.append(newWrapper);
                        currentPage = i;
                        updateArrows();
                        updateThumbnails();
                        if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                        isNavigating = false;
                    });
                }

                function updateArrows() {
                    prevArrow.toggle(currentPage > 1);
                    nextArrow.toggle(currentPage < pdf.numPages);
                }

                function updateThumbnails() {
                    if (!thumbs.length) return;
                    thumbs.find('.flipbook-thumbnail').each(function () {
                        const page = parseInt(jQuery(this).attr('data-thumb-page'));
                        const canvas = jQuery(this).find('canvas');
                        canvas.css('border-color', page === currentPage ? '#000' : 'transparent');
                        jQuery(this).toggleClass('active', page === currentPage);
                    });

                    const activeThumb = thumbs.find('.flipbook-thumbnail.active');
                    if (activeThumb.length) {
                        const scrollLeft = activeThumb.position().left + thumbs.scrollLeft() - (thumbs.width() / 2) + (activeThumb.outerWidth() / 2);
                        thumbs.animate({ scrollLeft }, 300);
                    }
                }

                function renderAllThumbnails(pdf) {
                    if (!thumbs.length) return;
                    const totalPages = pdf.numPages;
                    const batchSize = 10;
                    let currentBatchStart = 1;

                    function renderBatch(startPage) {
                        const endPage = Math.min(startPage + batchSize - 1, totalPages);
                        const promises = [];

                        for (let i = startPage; i <= endPage; i++) {
                            promises.push(new Promise((resolve) => {
                                if (thumbnailCache.has(i)) {
                                    resolve({ i, thumb: thumbnailCache.get(i) });
                                } else {
                                    pdf.getPage(i).then(page => {
                                        const scale = 0.2;
                                        const viewport = page.getViewport({ scale });
                                        const outputScale = window.devicePixelRatio || 1;
                                        const canvas = document.createElement('canvas');
                                        const context = canvas.getContext('2d');
                                        canvas.width = viewport.width * outputScale;
                                        canvas.height = viewport.height * outputScale;
                                        canvas.style.width = viewport.width + 'px';
                                        canvas.style.height = viewport.height + 'px';
                                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);
                                        page.render({ canvasContext: context, viewport }).promise.then(() => {
                                            const thumb = jQuery('<div class="flipbook-thumbnail" data-thumb-page="' + i + '"><canvas></canvas><span>' + i + '</span></div>');
                                            thumb.find('canvas').replaceWith(canvas);
                                            thumb.addClass('visible');
                                            thumb.on('click', () => goToPage(i));
                                            thumbnailCache.set(i, thumb);
                                            resolve({ i, thumb });
                                        });
                                    });
                                }
                            }));
                        }

                        Promise.all(promises).then(results => {
                            results.sort((a, b) => a.i - b.i).forEach(({ thumb }) => thumbs.append(thumb));
                            updateThumbnails();
                            if (endPage < totalPages) {
                                setTimeout(() => renderBatch(endPage + 1), 150);
                            }
                        });
                    }

                    renderBatch(currentBatchStart);
                }

                renderPage(currentPage).then(wrapper => {
                    wrapper.addClass('active');
                    flipbook.append(wrapper);
                    updateArrows();
                    if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                });

                if (thumbs.length) renderAllThumbnails(pdf);

                nextArrow.on('click', () => goToPage(currentPage + 1));
                prevArrow.on('click', () => goToPage(currentPage - 1));
                jQuery(document).on('keydown', function (e) {
                    if (e.key === 'ArrowRight') goToPage(currentPage + 1);
                    if (e.key === 'ArrowLeft') goToPage(currentPage - 1);
                });

// Fullscreen button logic (desktop only)
// Fullscreen button logic (desktop only)
jQuery('#' + uid + '-fs-btn').on('click', function () {
    const elem = document.getElementById('flipbook_6a21becf4ac45-container');
    const requestFS = elem.requestFullscreen || elem.webkitRequestFullscreen || elem.msRequestFullscreen;

    if (requestFS) {
        elem.classList.add('fullscreen-mode');

        requestFS.call(elem).then(() => {
            // Immediately re-render the current page with adjusted dimensions
            const pdfPage = flipbook.find('.pdf-page.active');
            if (pdfPage.length) {
                const canvas = pdfPage.find('canvas')[0];
                const context = canvas.getContext('2d');
                const pageNum = currentPage;

                // Re-fetch the PDF page and render it
                pdfjsLib.getDocument(url).promise.then(pdf => {
                    pdf.getPage(pageNum).then(page => {
                        const viewport = page.getViewport({ scale: 1 });
                        const scale = Math.min(
                            (window.innerHeight) / viewport.height,
                            (window.innerWidth) / viewport.width
                        );
                        const scaledViewport = page.getViewport({ scale });
                        const outputScale = window.devicePixelRatio || 1;

                        // Adjust canvas dimensions
                        canvas.width = scaledViewport.width * outputScale;
                        canvas.height = scaledViewport.height * outputScale;
                        canvas.style.width = scaledViewport.width + 'px';
                        canvas.style.height = scaledViewport.height + 'px';
                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

                        // Render the page
                        page.render({ canvasContext: context, viewport: scaledViewport }).promise.then(() => {
                            // Ensure arrows are updated
                            updateArrows();
                        });
                    });
                });
            }
        }).catch(() => {
            elem.classList.remove('fullscreen-mode');
        });
    }
});

// Listen for exit from fullscreen to clean up
document.addEventListener('fullscreenchange', () => {
    const container = document.getElementById('flipbook_6a21becf4ac45-container');
    if (document.fullscreenElement !== container) {
        container.classList.remove('fullscreen-mode');
        // Re-render the page with original dimensions
        goToPage(currentPage);
    }
});
            }); // end of getDocument
        } // end of initFlipbook
    }); // end of jQuery(document).ready

	// Disable right-click inside flipbook
document.addEventListener('contextmenu', function (e) {
    if (e.target.closest('.flipbook-container-wrapper')) {
        e.preventDefault();
    }
});
    </script>
    </div>
						</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://atomicguardian.com/february-2026-3/">May 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>April 2026</title>
		<link>https://atomicguardian.com/february-2026-2/</link>
		
		<dc:creator><![CDATA[Vittorio Romani]]></dc:creator>
		<pubDate>Wed, 01 Apr 2026 16:10:39 +0000</pubDate>
				<category><![CDATA[Monthly Newsletters]]></category>
		<guid isPermaLink="false">https://atomicguardian.com/?p=21461</guid>

					<description><![CDATA[<p>The post <a href="https://atomicguardian.com/february-2026-2/">April 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="21461" class="elementor elementor-21461" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-59f84dec e-flex e-con-boxed e-con e-parent" data-id="59f84dec" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2d59f2 elementor-widget elementor-widget-shortcode" data-id="f2d59f2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"><style>
.flipbook-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}
#flipbook_6a21becf4bf23-container {
    width: 400px;
    height: 456px;
    transition: none;
    position: relative;
    overflow: visible;
}
.flipbook-stage { width: 100%; height: 100%; position: relative; }
.flipbook-cover img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    cursor: pointer;
}
.flipbook-wrapper {
    display: none;
    width: 100%;
    height: 100%;
}
#flipbook {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}
.pdf-page {
    width: 100%;
    height: 100%;
    min-height: 100px;
}
.pdf-page canvas {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain;
    display: block;
    transition: none !important;
}
#flipbook_6a21becf4bf23-prev,
#flipbook_6a21becf4bf23-next {
    color: #FFF;
}
.flipbook-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 30px;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 20;
}
.flipbook-prev {
    left: -15px;
}
.flipbook-next {
    right: -15px;
}
.flipbook-download {
    margin-top: 10px;
    display: none;
}

#flipbook_6a21becf4bf23-download a {
    padding: 8px 16px;
    background: #F983E7 !important;
    color: #000 !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    text-decoration: none;
    display: inline-block;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}

#flipbook_6a21becf4bf23-download a:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4bf23-download .flipbook-fullscreen-btn:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4bf23-download .flipbook-fullscreen-btn {
    padding: 8px 16px;
    background: #F983E7;
    color: #000;
    font-size: 16px !important;
    font-weight: 600 !important;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    cursor: pointer;
    margin-left: 10px;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flipbook-fullscreen-btn {
    all: unset;
}
.flipbook-page-indicator {
    margin-top: 10px;
    font-size: 13px;
    font-weight: normal;
    color: #444;
    display: none;
}
.flipbook-thumbnails {
    display: flex;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 40px;
    gap: 15px;
    scroll-behavior: smooth;
    width: 100%;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    white-space: nowrap;
}
.flipbook-thumbnail {
    opacity: 0;
    transition: opacity 0.3s;
    text-align: center;
    flex: 0 0 auto;
	cursor: pointer;
}
.flipbook-thumbnail.visible {
    opacity: 1;
}
.flipbook-thumbnail canvas {
    width: 60px !important;
    height: auto !important;
    max-width: 100%;
    box-shadow: 0 0 4px rgba(0,0,0,0.3);
    cursor: pointer;
    display: block;
    border: 4px solid transparent;
    box-sizing: border-box;
    transition: border-color 0.3s ease;
}
.flipbook-thumbnail span {
    font-size: 12px;
    color: #444;
}
.fullscreen-mode {
    display: flex;
    justify-content: center;
    align-items: center; /* Center vertically */
    height: 100vh !important;
    width: 100vw !important;
    padding: 0 !important;
    box-sizing: border-box;
    overflow: hidden;
}
	/*
.fullscreen-mode canvas {
    max-height: calc(100vh - 50px);
    object-fit: contain;
}*/
.fullscreen-mode canvas {
    max-height: 100vh !important;
    max-width: 100vw !important;
    width: auto !important;
    height: 100% !important;
    object-fit: contain;
}
.fullscreen-mode .flipbook-stage,
.fullscreen-mode .flipbook-wrapper,
.fullscreen-mode #flipbook,
.fullscreen-mode .pdf-page {
    height: 100vh !important;
    width: 100vw !important;
    display: flex;
    justify-content: center;
    align-items: center;
}
.fullscreen-mode + .flipbook-thumbnails,
.fullscreen-mode + .flipbook-download,
.fullscreen-mode + .flipbook-page-indicator {
    display: none !important;
}
.flipbook-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
}
.flipbook-container-wrapper,
.flipbook-container-wrapper * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.flipbook-container-wrapper canvas {
    pointer-events: none;
}

body, html {
    -webkit-touch-callout: none;
}
@media (max-width: 500px) {
    html, body {
        min-height: 100vh;
    }
    #flipbook_6a21becf4bf23-container {
        width: 370px;
        height: 523px;
    }
    #flipbook_6a21becf4bf23-wrapper {
        width: 330px;
        height: 432px;
    }
    .flipbook-stage,
    .flipbook-container,
    #flipbook,
    .flipbook-wrapper,
    .pdf-page {
        min-height: 432px !important;
    }
    .flipbook-cover img {
        max-width: 100%;
        height: auto;
    }
    .flipbook-thumbnails {
        margin-top: 100px !important;
        max-width: 330px;
    }
    .flipbook-download,
    .flipbook-download .flipbook-fullscreen-btn,
    .flipbook-download a {
        display: none !important;
    }
}
</style>

 <div class="flipbook-item">
  <div class="flipbook-container-wrapper">
        <div class="flipbook-container" id="flipbook_6a21becf4bf23-container">
            <div class="flipbook-stage">
                <div class="flipbook-cover" id="flipbook_6a21becf4bf23-cover" style="display:none;">
                                    </div>
                <div class="flipbook-wrapper" id="flipbook_6a21becf4bf23-wrapper">
                    <div id="flipbook_6a21becf4bf23"></div>
                    <span class="flipbook-arrow flipbook-prev" id="flipbook_6a21becf4bf23-prev">‹</span>
					<span class="flipbook-arrow flipbook-next" id="flipbook_6a21becf4bf23-next">›</span>
                </div>
            </div>
        </div>
        <div class="flipbook-thumbnails" id="flipbook_6a21becf4bf23-thumbnails"></div>        <div class="flipbook-page-indicator" id="flipbook_6a21becf4bf23-page-indicator">1 / ?</div>
         <div class="flipbook-download" id="flipbook_6a21becf4bf23-download">
          <a href="https://atomicguardian.com/wp-content/uploads/2026/04/AG-Newsletter-Apr-2026.pdf" download type="application/pdf" target="_blank">Download PDF</a>
    
          <button type="button" class="flipbook-fullscreen-btn" id="flipbook_6a21becf4bf23-fs-btn">View Full Screen</button>
      </div>
</div> <!-- end .flipbook-container-wrapper -->
</div> <!-- end .flipbook-item -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script>
<script>
    jQuery(document).ready(function () {
        const uid = "flipbook_6a21becf4bf23";
        const url = "https:\/\/atomicguardian.com\/wp-content\/uploads\/2026\/04\/AG-Newsletter-Apr-2026.pdf";
        const flipbook = jQuery('#' + uid);
        const wrapper = jQuery('#' + uid + '-wrapper');
        const cover = jQuery('#' + uid + '-cover');
        const container = jQuery('#' + uid + '-container');
        const thumbs = jQuery('#' + uid + '-thumbnails');
        const pageIndicator = jQuery('#' + uid + '-page-indicator');
        const downloadBtn = jQuery('#' + uid + '-download');
        const nextArrow = jQuery('#' + uid + '-next');
		const prevArrow = jQuery('#' + uid + '-prev');
        let currentPage = 1;
        let thumbnailCache = new Map();
        let isNavigating = false;

        cover.on('click', function () {
            const isMobile = window.innerWidth <= 500;
            container.css({
                width: isMobile ? 330 : 742,
                height: isMobile ? 432 : 1044            });
            wrapper.show();
            cover.hide();
            if (downloadBtn.length) downloadBtn.fadeIn();
            if (pageIndicator.length) pageIndicator.fadeIn();
            initFlipbook();
        });

        const coverUrl = "";
        if (!coverUrl || coverUrl === '') {
            setTimeout(() => cover.trigger('click'), 50);
        }

			function initFlipbook() {
				pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.worker.min.js';
				pdfjsLib.getDocument(url).promise.then(function (pdf) {
					function renderPage(i) {
						return pdf.getPage(i).then(function (page) {
							const isFullscreen = container.hasClass('fullscreen-mode');
							const rawViewport = page.getViewport({ scale: 1 });

							const scale = isFullscreen
								? Math.min(window.innerWidth / rawViewport.width, window.innerHeight / rawViewport.height)
								: flipbook.width() / rawViewport.width;

							const outputScale = window.devicePixelRatio || 1;
							const viewport = page.getViewport({ scale });

							const wrapper = jQuery('<div class="pdf-page" data-page="' + i + '"><canvas></canvas></div>');
							const canvas = wrapper.find('canvas')[0];
							const context = canvas.getContext('2d');

							canvas.width = viewport.width * outputScale;
							canvas.height = viewport.height * outputScale;
							canvas.style.width = viewport.width + 'px';
							canvas.style.height = viewport.height + 'px';

							context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

							return page.render({ canvasContext: context, viewport }).promise.then(() => wrapper);
						});
					}

                function goToPage(i) {
                    if (i < 1 || i > pdf.numPages || i === currentPage || isNavigating) return;
                    isNavigating = true;
                    renderPage(i).then(newWrapper => {
                        flipbook.find('.pdf-page').remove();
                        newWrapper.addClass('active');
                        flipbook.append(newWrapper);
                        currentPage = i;
                        updateArrows();
                        updateThumbnails();
                        if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                        isNavigating = false;
                    });
                }

                function updateArrows() {
                    prevArrow.toggle(currentPage > 1);
                    nextArrow.toggle(currentPage < pdf.numPages);
                }

                function updateThumbnails() {
                    if (!thumbs.length) return;
                    thumbs.find('.flipbook-thumbnail').each(function () {
                        const page = parseInt(jQuery(this).attr('data-thumb-page'));
                        const canvas = jQuery(this).find('canvas');
                        canvas.css('border-color', page === currentPage ? '#000' : 'transparent');
                        jQuery(this).toggleClass('active', page === currentPage);
                    });

                    const activeThumb = thumbs.find('.flipbook-thumbnail.active');
                    if (activeThumb.length) {
                        const scrollLeft = activeThumb.position().left + thumbs.scrollLeft() - (thumbs.width() / 2) + (activeThumb.outerWidth() / 2);
                        thumbs.animate({ scrollLeft }, 300);
                    }
                }

                function renderAllThumbnails(pdf) {
                    if (!thumbs.length) return;
                    const totalPages = pdf.numPages;
                    const batchSize = 10;
                    let currentBatchStart = 1;

                    function renderBatch(startPage) {
                        const endPage = Math.min(startPage + batchSize - 1, totalPages);
                        const promises = [];

                        for (let i = startPage; i <= endPage; i++) {
                            promises.push(new Promise((resolve) => {
                                if (thumbnailCache.has(i)) {
                                    resolve({ i, thumb: thumbnailCache.get(i) });
                                } else {
                                    pdf.getPage(i).then(page => {
                                        const scale = 0.2;
                                        const viewport = page.getViewport({ scale });
                                        const outputScale = window.devicePixelRatio || 1;
                                        const canvas = document.createElement('canvas');
                                        const context = canvas.getContext('2d');
                                        canvas.width = viewport.width * outputScale;
                                        canvas.height = viewport.height * outputScale;
                                        canvas.style.width = viewport.width + 'px';
                                        canvas.style.height = viewport.height + 'px';
                                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);
                                        page.render({ canvasContext: context, viewport }).promise.then(() => {
                                            const thumb = jQuery('<div class="flipbook-thumbnail" data-thumb-page="' + i + '"><canvas></canvas><span>' + i + '</span></div>');
                                            thumb.find('canvas').replaceWith(canvas);
                                            thumb.addClass('visible');
                                            thumb.on('click', () => goToPage(i));
                                            thumbnailCache.set(i, thumb);
                                            resolve({ i, thumb });
                                        });
                                    });
                                }
                            }));
                        }

                        Promise.all(promises).then(results => {
                            results.sort((a, b) => a.i - b.i).forEach(({ thumb }) => thumbs.append(thumb));
                            updateThumbnails();
                            if (endPage < totalPages) {
                                setTimeout(() => renderBatch(endPage + 1), 150);
                            }
                        });
                    }

                    renderBatch(currentBatchStart);
                }

                renderPage(currentPage).then(wrapper => {
                    wrapper.addClass('active');
                    flipbook.append(wrapper);
                    updateArrows();
                    if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                });

                if (thumbs.length) renderAllThumbnails(pdf);

                nextArrow.on('click', () => goToPage(currentPage + 1));
                prevArrow.on('click', () => goToPage(currentPage - 1));
                jQuery(document).on('keydown', function (e) {
                    if (e.key === 'ArrowRight') goToPage(currentPage + 1);
                    if (e.key === 'ArrowLeft') goToPage(currentPage - 1);
                });

// Fullscreen button logic (desktop only)
// Fullscreen button logic (desktop only)
jQuery('#' + uid + '-fs-btn').on('click', function () {
    const elem = document.getElementById('flipbook_6a21becf4bf23-container');
    const requestFS = elem.requestFullscreen || elem.webkitRequestFullscreen || elem.msRequestFullscreen;

    if (requestFS) {
        elem.classList.add('fullscreen-mode');

        requestFS.call(elem).then(() => {
            // Immediately re-render the current page with adjusted dimensions
            const pdfPage = flipbook.find('.pdf-page.active');
            if (pdfPage.length) {
                const canvas = pdfPage.find('canvas')[0];
                const context = canvas.getContext('2d');
                const pageNum = currentPage;

                // Re-fetch the PDF page and render it
                pdfjsLib.getDocument(url).promise.then(pdf => {
                    pdf.getPage(pageNum).then(page => {
                        const viewport = page.getViewport({ scale: 1 });
                        const scale = Math.min(
                            (window.innerHeight) / viewport.height,
                            (window.innerWidth) / viewport.width
                        );
                        const scaledViewport = page.getViewport({ scale });
                        const outputScale = window.devicePixelRatio || 1;

                        // Adjust canvas dimensions
                        canvas.width = scaledViewport.width * outputScale;
                        canvas.height = scaledViewport.height * outputScale;
                        canvas.style.width = scaledViewport.width + 'px';
                        canvas.style.height = scaledViewport.height + 'px';
                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

                        // Render the page
                        page.render({ canvasContext: context, viewport: scaledViewport }).promise.then(() => {
                            // Ensure arrows are updated
                            updateArrows();
                        });
                    });
                });
            }
        }).catch(() => {
            elem.classList.remove('fullscreen-mode');
        });
    }
});

// Listen for exit from fullscreen to clean up
document.addEventListener('fullscreenchange', () => {
    const container = document.getElementById('flipbook_6a21becf4bf23-container');
    if (document.fullscreenElement !== container) {
        container.classList.remove('fullscreen-mode');
        // Re-render the page with original dimensions
        goToPage(currentPage);
    }
});
            }); // end of getDocument
        } // end of initFlipbook
    }); // end of jQuery(document).ready

	// Disable right-click inside flipbook
document.addEventListener('contextmenu', function (e) {
    if (e.target.closest('.flipbook-container-wrapper')) {
        e.preventDefault();
    }
});
    </script>
    </div>
						</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://atomicguardian.com/february-2026-2/">April 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>March 2026</title>
		<link>https://atomicguardian.com/march-2026/</link>
		
		<dc:creator><![CDATA[Vittorio Romani]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 16:07:00 +0000</pubDate>
				<category><![CDATA[Monthly Newsletters]]></category>
		<guid isPermaLink="false">https://atomicguardian.com/?p=21456</guid>

					<description><![CDATA[<p>The post <a href="https://atomicguardian.com/march-2026/">March 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="21456" class="elementor elementor-21456" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-59f84dec e-flex e-con-boxed e-con e-parent" data-id="59f84dec" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2d59f2 elementor-widget elementor-widget-shortcode" data-id="f2d59f2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"><style>
.flipbook-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}
#flipbook_6a21becf4d1d6-container {
    width: 400px;
    height: 456px;
    transition: none;
    position: relative;
    overflow: visible;
}
.flipbook-stage { width: 100%; height: 100%; position: relative; }
.flipbook-cover img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    cursor: pointer;
}
.flipbook-wrapper {
    display: none;
    width: 100%;
    height: 100%;
}
#flipbook {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}
.pdf-page {
    width: 100%;
    height: 100%;
    min-height: 100px;
}
.pdf-page canvas {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain;
    display: block;
    transition: none !important;
}
#flipbook_6a21becf4d1d6-prev,
#flipbook_6a21becf4d1d6-next {
    color: #FFF;
}
.flipbook-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 30px;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 20;
}
.flipbook-prev {
    left: -15px;
}
.flipbook-next {
    right: -15px;
}
.flipbook-download {
    margin-top: 10px;
    display: none;
}

#flipbook_6a21becf4d1d6-download a {
    padding: 8px 16px;
    background: #F983E7 !important;
    color: #000 !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    text-decoration: none;
    display: inline-block;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}

#flipbook_6a21becf4d1d6-download a:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4d1d6-download .flipbook-fullscreen-btn:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4d1d6-download .flipbook-fullscreen-btn {
    padding: 8px 16px;
    background: #F983E7;
    color: #000;
    font-size: 16px !important;
    font-weight: 600 !important;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    cursor: pointer;
    margin-left: 10px;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flipbook-fullscreen-btn {
    all: unset;
}
.flipbook-page-indicator {
    margin-top: 10px;
    font-size: 13px;
    font-weight: normal;
    color: #444;
    display: none;
}
.flipbook-thumbnails {
    display: flex;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 40px;
    gap: 15px;
    scroll-behavior: smooth;
    width: 100%;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    white-space: nowrap;
}
.flipbook-thumbnail {
    opacity: 0;
    transition: opacity 0.3s;
    text-align: center;
    flex: 0 0 auto;
	cursor: pointer;
}
.flipbook-thumbnail.visible {
    opacity: 1;
}
.flipbook-thumbnail canvas {
    width: 60px !important;
    height: auto !important;
    max-width: 100%;
    box-shadow: 0 0 4px rgba(0,0,0,0.3);
    cursor: pointer;
    display: block;
    border: 4px solid transparent;
    box-sizing: border-box;
    transition: border-color 0.3s ease;
}
.flipbook-thumbnail span {
    font-size: 12px;
    color: #444;
}
.fullscreen-mode {
    display: flex;
    justify-content: center;
    align-items: center; /* Center vertically */
    height: 100vh !important;
    width: 100vw !important;
    padding: 0 !important;
    box-sizing: border-box;
    overflow: hidden;
}
	/*
.fullscreen-mode canvas {
    max-height: calc(100vh - 50px);
    object-fit: contain;
}*/
.fullscreen-mode canvas {
    max-height: 100vh !important;
    max-width: 100vw !important;
    width: auto !important;
    height: 100% !important;
    object-fit: contain;
}
.fullscreen-mode .flipbook-stage,
.fullscreen-mode .flipbook-wrapper,
.fullscreen-mode #flipbook,
.fullscreen-mode .pdf-page {
    height: 100vh !important;
    width: 100vw !important;
    display: flex;
    justify-content: center;
    align-items: center;
}
.fullscreen-mode + .flipbook-thumbnails,
.fullscreen-mode + .flipbook-download,
.fullscreen-mode + .flipbook-page-indicator {
    display: none !important;
}
.flipbook-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
}
.flipbook-container-wrapper,
.flipbook-container-wrapper * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.flipbook-container-wrapper canvas {
    pointer-events: none;
}

body, html {
    -webkit-touch-callout: none;
}
@media (max-width: 500px) {
    html, body {
        min-height: 100vh;
    }
    #flipbook_6a21becf4d1d6-container {
        width: 370px;
        height: 523px;
    }
    #flipbook_6a21becf4d1d6-wrapper {
        width: 330px;
        height: 432px;
    }
    .flipbook-stage,
    .flipbook-container,
    #flipbook,
    .flipbook-wrapper,
    .pdf-page {
        min-height: 432px !important;
    }
    .flipbook-cover img {
        max-width: 100%;
        height: auto;
    }
    .flipbook-thumbnails {
        margin-top: 100px !important;
        max-width: 330px;
    }
    .flipbook-download,
    .flipbook-download .flipbook-fullscreen-btn,
    .flipbook-download a {
        display: none !important;
    }
}
</style>

 <div class="flipbook-item">
  <div class="flipbook-container-wrapper">
        <div class="flipbook-container" id="flipbook_6a21becf4d1d6-container">
            <div class="flipbook-stage">
                <div class="flipbook-cover" id="flipbook_6a21becf4d1d6-cover" style="display:none;">
                                    </div>
                <div class="flipbook-wrapper" id="flipbook_6a21becf4d1d6-wrapper">
                    <div id="flipbook_6a21becf4d1d6"></div>
                    <span class="flipbook-arrow flipbook-prev" id="flipbook_6a21becf4d1d6-prev">‹</span>
					<span class="flipbook-arrow flipbook-next" id="flipbook_6a21becf4d1d6-next">›</span>
                </div>
            </div>
        </div>
        <div class="flipbook-thumbnails" id="flipbook_6a21becf4d1d6-thumbnails"></div>        <div class="flipbook-page-indicator" id="flipbook_6a21becf4d1d6-page-indicator">1 / ?</div>
         <div class="flipbook-download" id="flipbook_6a21becf4d1d6-download">
          <a href="https://atomicguardian.com/wp-content/uploads/2026/04/AG-Newsletter-Mar-2026.pdf" download type="application/pdf" target="_blank">Download PDF</a>
    
          <button type="button" class="flipbook-fullscreen-btn" id="flipbook_6a21becf4d1d6-fs-btn">View Full Screen</button>
      </div>
</div> <!-- end .flipbook-container-wrapper -->
</div> <!-- end .flipbook-item -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script>
<script>
    jQuery(document).ready(function () {
        const uid = "flipbook_6a21becf4d1d6";
        const url = "https:\/\/atomicguardian.com\/wp-content\/uploads\/2026\/04\/AG-Newsletter-Mar-2026.pdf";
        const flipbook = jQuery('#' + uid);
        const wrapper = jQuery('#' + uid + '-wrapper');
        const cover = jQuery('#' + uid + '-cover');
        const container = jQuery('#' + uid + '-container');
        const thumbs = jQuery('#' + uid + '-thumbnails');
        const pageIndicator = jQuery('#' + uid + '-page-indicator');
        const downloadBtn = jQuery('#' + uid + '-download');
        const nextArrow = jQuery('#' + uid + '-next');
		const prevArrow = jQuery('#' + uid + '-prev');
        let currentPage = 1;
        let thumbnailCache = new Map();
        let isNavigating = false;

        cover.on('click', function () {
            const isMobile = window.innerWidth <= 500;
            container.css({
                width: isMobile ? 330 : 742,
                height: isMobile ? 432 : 1044            });
            wrapper.show();
            cover.hide();
            if (downloadBtn.length) downloadBtn.fadeIn();
            if (pageIndicator.length) pageIndicator.fadeIn();
            initFlipbook();
        });

        const coverUrl = "";
        if (!coverUrl || coverUrl === '') {
            setTimeout(() => cover.trigger('click'), 50);
        }

			function initFlipbook() {
				pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.worker.min.js';
				pdfjsLib.getDocument(url).promise.then(function (pdf) {
					function renderPage(i) {
						return pdf.getPage(i).then(function (page) {
							const isFullscreen = container.hasClass('fullscreen-mode');
							const rawViewport = page.getViewport({ scale: 1 });

							const scale = isFullscreen
								? Math.min(window.innerWidth / rawViewport.width, window.innerHeight / rawViewport.height)
								: flipbook.width() / rawViewport.width;

							const outputScale = window.devicePixelRatio || 1;
							const viewport = page.getViewport({ scale });

							const wrapper = jQuery('<div class="pdf-page" data-page="' + i + '"><canvas></canvas></div>');
							const canvas = wrapper.find('canvas')[0];
							const context = canvas.getContext('2d');

							canvas.width = viewport.width * outputScale;
							canvas.height = viewport.height * outputScale;
							canvas.style.width = viewport.width + 'px';
							canvas.style.height = viewport.height + 'px';

							context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

							return page.render({ canvasContext: context, viewport }).promise.then(() => wrapper);
						});
					}

                function goToPage(i) {
                    if (i < 1 || i > pdf.numPages || i === currentPage || isNavigating) return;
                    isNavigating = true;
                    renderPage(i).then(newWrapper => {
                        flipbook.find('.pdf-page').remove();
                        newWrapper.addClass('active');
                        flipbook.append(newWrapper);
                        currentPage = i;
                        updateArrows();
                        updateThumbnails();
                        if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                        isNavigating = false;
                    });
                }

                function updateArrows() {
                    prevArrow.toggle(currentPage > 1);
                    nextArrow.toggle(currentPage < pdf.numPages);
                }

                function updateThumbnails() {
                    if (!thumbs.length) return;
                    thumbs.find('.flipbook-thumbnail').each(function () {
                        const page = parseInt(jQuery(this).attr('data-thumb-page'));
                        const canvas = jQuery(this).find('canvas');
                        canvas.css('border-color', page === currentPage ? '#000' : 'transparent');
                        jQuery(this).toggleClass('active', page === currentPage);
                    });

                    const activeThumb = thumbs.find('.flipbook-thumbnail.active');
                    if (activeThumb.length) {
                        const scrollLeft = activeThumb.position().left + thumbs.scrollLeft() - (thumbs.width() / 2) + (activeThumb.outerWidth() / 2);
                        thumbs.animate({ scrollLeft }, 300);
                    }
                }

                function renderAllThumbnails(pdf) {
                    if (!thumbs.length) return;
                    const totalPages = pdf.numPages;
                    const batchSize = 10;
                    let currentBatchStart = 1;

                    function renderBatch(startPage) {
                        const endPage = Math.min(startPage + batchSize - 1, totalPages);
                        const promises = [];

                        for (let i = startPage; i <= endPage; i++) {
                            promises.push(new Promise((resolve) => {
                                if (thumbnailCache.has(i)) {
                                    resolve({ i, thumb: thumbnailCache.get(i) });
                                } else {
                                    pdf.getPage(i).then(page => {
                                        const scale = 0.2;
                                        const viewport = page.getViewport({ scale });
                                        const outputScale = window.devicePixelRatio || 1;
                                        const canvas = document.createElement('canvas');
                                        const context = canvas.getContext('2d');
                                        canvas.width = viewport.width * outputScale;
                                        canvas.height = viewport.height * outputScale;
                                        canvas.style.width = viewport.width + 'px';
                                        canvas.style.height = viewport.height + 'px';
                                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);
                                        page.render({ canvasContext: context, viewport }).promise.then(() => {
                                            const thumb = jQuery('<div class="flipbook-thumbnail" data-thumb-page="' + i + '"><canvas></canvas><span>' + i + '</span></div>');
                                            thumb.find('canvas').replaceWith(canvas);
                                            thumb.addClass('visible');
                                            thumb.on('click', () => goToPage(i));
                                            thumbnailCache.set(i, thumb);
                                            resolve({ i, thumb });
                                        });
                                    });
                                }
                            }));
                        }

                        Promise.all(promises).then(results => {
                            results.sort((a, b) => a.i - b.i).forEach(({ thumb }) => thumbs.append(thumb));
                            updateThumbnails();
                            if (endPage < totalPages) {
                                setTimeout(() => renderBatch(endPage + 1), 150);
                            }
                        });
                    }

                    renderBatch(currentBatchStart);
                }

                renderPage(currentPage).then(wrapper => {
                    wrapper.addClass('active');
                    flipbook.append(wrapper);
                    updateArrows();
                    if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                });

                if (thumbs.length) renderAllThumbnails(pdf);

                nextArrow.on('click', () => goToPage(currentPage + 1));
                prevArrow.on('click', () => goToPage(currentPage - 1));
                jQuery(document).on('keydown', function (e) {
                    if (e.key === 'ArrowRight') goToPage(currentPage + 1);
                    if (e.key === 'ArrowLeft') goToPage(currentPage - 1);
                });

// Fullscreen button logic (desktop only)
// Fullscreen button logic (desktop only)
jQuery('#' + uid + '-fs-btn').on('click', function () {
    const elem = document.getElementById('flipbook_6a21becf4d1d6-container');
    const requestFS = elem.requestFullscreen || elem.webkitRequestFullscreen || elem.msRequestFullscreen;

    if (requestFS) {
        elem.classList.add('fullscreen-mode');

        requestFS.call(elem).then(() => {
            // Immediately re-render the current page with adjusted dimensions
            const pdfPage = flipbook.find('.pdf-page.active');
            if (pdfPage.length) {
                const canvas = pdfPage.find('canvas')[0];
                const context = canvas.getContext('2d');
                const pageNum = currentPage;

                // Re-fetch the PDF page and render it
                pdfjsLib.getDocument(url).promise.then(pdf => {
                    pdf.getPage(pageNum).then(page => {
                        const viewport = page.getViewport({ scale: 1 });
                        const scale = Math.min(
                            (window.innerHeight) / viewport.height,
                            (window.innerWidth) / viewport.width
                        );
                        const scaledViewport = page.getViewport({ scale });
                        const outputScale = window.devicePixelRatio || 1;

                        // Adjust canvas dimensions
                        canvas.width = scaledViewport.width * outputScale;
                        canvas.height = scaledViewport.height * outputScale;
                        canvas.style.width = scaledViewport.width + 'px';
                        canvas.style.height = scaledViewport.height + 'px';
                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

                        // Render the page
                        page.render({ canvasContext: context, viewport: scaledViewport }).promise.then(() => {
                            // Ensure arrows are updated
                            updateArrows();
                        });
                    });
                });
            }
        }).catch(() => {
            elem.classList.remove('fullscreen-mode');
        });
    }
});

// Listen for exit from fullscreen to clean up
document.addEventListener('fullscreenchange', () => {
    const container = document.getElementById('flipbook_6a21becf4d1d6-container');
    if (document.fullscreenElement !== container) {
        container.classList.remove('fullscreen-mode');
        // Re-render the page with original dimensions
        goToPage(currentPage);
    }
});
            }); // end of getDocument
        } // end of initFlipbook
    }); // end of jQuery(document).ready

	// Disable right-click inside flipbook
document.addEventListener('contextmenu', function (e) {
    if (e.target.closest('.flipbook-container-wrapper')) {
        e.preventDefault();
    }
});
    </script>
    </div>
						</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://atomicguardian.com/march-2026/">March 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>February 2026</title>
		<link>https://atomicguardian.com/february-2026/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Sun, 01 Feb 2026 12:54:00 +0000</pubDate>
				<category><![CDATA[Monthly Newsletters]]></category>
		<guid isPermaLink="false">https://atomicguardian.com/?p=21288</guid>

					<description><![CDATA[<p>The post <a href="https://atomicguardian.com/february-2026/">February 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="21288" class="elementor elementor-21288" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-59f84dec e-flex e-con-boxed e-con e-parent" data-id="59f84dec" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2d59f2 elementor-widget elementor-widget-shortcode" data-id="f2d59f2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"><style>
.flipbook-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}
#flipbook_6a21becf4e3ed-container {
    width: 400px;
    height: 456px;
    transition: none;
    position: relative;
    overflow: visible;
}
.flipbook-stage { width: 100%; height: 100%; position: relative; }
.flipbook-cover img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    cursor: pointer;
}
.flipbook-wrapper {
    display: none;
    width: 100%;
    height: 100%;
}
#flipbook {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}
.pdf-page {
    width: 100%;
    height: 100%;
    min-height: 100px;
}
.pdf-page canvas {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain;
    display: block;
    transition: none !important;
}
#flipbook_6a21becf4e3ed-prev,
#flipbook_6a21becf4e3ed-next {
    color: #FFF;
}
.flipbook-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 30px;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 20;
}
.flipbook-prev {
    left: -15px;
}
.flipbook-next {
    right: -15px;
}
.flipbook-download {
    margin-top: 10px;
    display: none;
}

#flipbook_6a21becf4e3ed-download a {
    padding: 8px 16px;
    background: #F983E7 !important;
    color: #000 !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    text-decoration: none;
    display: inline-block;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}

#flipbook_6a21becf4e3ed-download a:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4e3ed-download .flipbook-fullscreen-btn:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4e3ed-download .flipbook-fullscreen-btn {
    padding: 8px 16px;
    background: #F983E7;
    color: #000;
    font-size: 16px !important;
    font-weight: 600 !important;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    cursor: pointer;
    margin-left: 10px;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flipbook-fullscreen-btn {
    all: unset;
}
.flipbook-page-indicator {
    margin-top: 10px;
    font-size: 13px;
    font-weight: normal;
    color: #444;
    display: none;
}
.flipbook-thumbnails {
    display: flex;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 40px;
    gap: 15px;
    scroll-behavior: smooth;
    width: 100%;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    white-space: nowrap;
}
.flipbook-thumbnail {
    opacity: 0;
    transition: opacity 0.3s;
    text-align: center;
    flex: 0 0 auto;
	cursor: pointer;
}
.flipbook-thumbnail.visible {
    opacity: 1;
}
.flipbook-thumbnail canvas {
    width: 60px !important;
    height: auto !important;
    max-width: 100%;
    box-shadow: 0 0 4px rgba(0,0,0,0.3);
    cursor: pointer;
    display: block;
    border: 4px solid transparent;
    box-sizing: border-box;
    transition: border-color 0.3s ease;
}
.flipbook-thumbnail span {
    font-size: 12px;
    color: #444;
}
.fullscreen-mode {
    display: flex;
    justify-content: center;
    align-items: center; /* Center vertically */
    height: 100vh !important;
    width: 100vw !important;
    padding: 0 !important;
    box-sizing: border-box;
    overflow: hidden;
}
	/*
.fullscreen-mode canvas {
    max-height: calc(100vh - 50px);
    object-fit: contain;
}*/
.fullscreen-mode canvas {
    max-height: 100vh !important;
    max-width: 100vw !important;
    width: auto !important;
    height: 100% !important;
    object-fit: contain;
}
.fullscreen-mode .flipbook-stage,
.fullscreen-mode .flipbook-wrapper,
.fullscreen-mode #flipbook,
.fullscreen-mode .pdf-page {
    height: 100vh !important;
    width: 100vw !important;
    display: flex;
    justify-content: center;
    align-items: center;
}
.fullscreen-mode + .flipbook-thumbnails,
.fullscreen-mode + .flipbook-download,
.fullscreen-mode + .flipbook-page-indicator {
    display: none !important;
}
.flipbook-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
}
.flipbook-container-wrapper,
.flipbook-container-wrapper * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.flipbook-container-wrapper canvas {
    pointer-events: none;
}

body, html {
    -webkit-touch-callout: none;
}
@media (max-width: 500px) {
    html, body {
        min-height: 100vh;
    }
    #flipbook_6a21becf4e3ed-container {
        width: 370px;
        height: 523px;
    }
    #flipbook_6a21becf4e3ed-wrapper {
        width: 330px;
        height: 432px;
    }
    .flipbook-stage,
    .flipbook-container,
    #flipbook,
    .flipbook-wrapper,
    .pdf-page {
        min-height: 432px !important;
    }
    .flipbook-cover img {
        max-width: 100%;
        height: auto;
    }
    .flipbook-thumbnails {
        margin-top: 100px !important;
        max-width: 330px;
    }
    .flipbook-download,
    .flipbook-download .flipbook-fullscreen-btn,
    .flipbook-download a {
        display: none !important;
    }
}
</style>

 <div class="flipbook-item">
  <div class="flipbook-container-wrapper">
        <div class="flipbook-container" id="flipbook_6a21becf4e3ed-container">
            <div class="flipbook-stage">
                <div class="flipbook-cover" id="flipbook_6a21becf4e3ed-cover" style="display:none;">
                                    </div>
                <div class="flipbook-wrapper" id="flipbook_6a21becf4e3ed-wrapper">
                    <div id="flipbook_6a21becf4e3ed"></div>
                    <span class="flipbook-arrow flipbook-prev" id="flipbook_6a21becf4e3ed-prev">‹</span>
					<span class="flipbook-arrow flipbook-next" id="flipbook_6a21becf4e3ed-next">›</span>
                </div>
            </div>
        </div>
        <div class="flipbook-thumbnails" id="flipbook_6a21becf4e3ed-thumbnails"></div>        <div class="flipbook-page-indicator" id="flipbook_6a21becf4e3ed-page-indicator">1 / ?</div>
         <div class="flipbook-download" id="flipbook_6a21becf4e3ed-download">
          <a href="https://atomicguardian.com/wp-content/uploads/2026/01/AG-Newsletter-Feb-2026.pdf" download type="application/pdf" target="_blank">Download PDF</a>
    
          <button type="button" class="flipbook-fullscreen-btn" id="flipbook_6a21becf4e3ed-fs-btn">View Full Screen</button>
      </div>
</div> <!-- end .flipbook-container-wrapper -->
</div> <!-- end .flipbook-item -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script>
<script>
    jQuery(document).ready(function () {
        const uid = "flipbook_6a21becf4e3ed";
        const url = "https:\/\/atomicguardian.com\/wp-content\/uploads\/2026\/01\/AG-Newsletter-Feb-2026.pdf";
        const flipbook = jQuery('#' + uid);
        const wrapper = jQuery('#' + uid + '-wrapper');
        const cover = jQuery('#' + uid + '-cover');
        const container = jQuery('#' + uid + '-container');
        const thumbs = jQuery('#' + uid + '-thumbnails');
        const pageIndicator = jQuery('#' + uid + '-page-indicator');
        const downloadBtn = jQuery('#' + uid + '-download');
        const nextArrow = jQuery('#' + uid + '-next');
		const prevArrow = jQuery('#' + uid + '-prev');
        let currentPage = 1;
        let thumbnailCache = new Map();
        let isNavigating = false;

        cover.on('click', function () {
            const isMobile = window.innerWidth <= 500;
            container.css({
                width: isMobile ? 330 : 742,
                height: isMobile ? 432 : 1044            });
            wrapper.show();
            cover.hide();
            if (downloadBtn.length) downloadBtn.fadeIn();
            if (pageIndicator.length) pageIndicator.fadeIn();
            initFlipbook();
        });

        const coverUrl = "";
        if (!coverUrl || coverUrl === '') {
            setTimeout(() => cover.trigger('click'), 50);
        }

			function initFlipbook() {
				pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.worker.min.js';
				pdfjsLib.getDocument(url).promise.then(function (pdf) {
					function renderPage(i) {
						return pdf.getPage(i).then(function (page) {
							const isFullscreen = container.hasClass('fullscreen-mode');
							const rawViewport = page.getViewport({ scale: 1 });

							const scale = isFullscreen
								? Math.min(window.innerWidth / rawViewport.width, window.innerHeight / rawViewport.height)
								: flipbook.width() / rawViewport.width;

							const outputScale = window.devicePixelRatio || 1;
							const viewport = page.getViewport({ scale });

							const wrapper = jQuery('<div class="pdf-page" data-page="' + i + '"><canvas></canvas></div>');
							const canvas = wrapper.find('canvas')[0];
							const context = canvas.getContext('2d');

							canvas.width = viewport.width * outputScale;
							canvas.height = viewport.height * outputScale;
							canvas.style.width = viewport.width + 'px';
							canvas.style.height = viewport.height + 'px';

							context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

							return page.render({ canvasContext: context, viewport }).promise.then(() => wrapper);
						});
					}

                function goToPage(i) {
                    if (i < 1 || i > pdf.numPages || i === currentPage || isNavigating) return;
                    isNavigating = true;
                    renderPage(i).then(newWrapper => {
                        flipbook.find('.pdf-page').remove();
                        newWrapper.addClass('active');
                        flipbook.append(newWrapper);
                        currentPage = i;
                        updateArrows();
                        updateThumbnails();
                        if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                        isNavigating = false;
                    });
                }

                function updateArrows() {
                    prevArrow.toggle(currentPage > 1);
                    nextArrow.toggle(currentPage < pdf.numPages);
                }

                function updateThumbnails() {
                    if (!thumbs.length) return;
                    thumbs.find('.flipbook-thumbnail').each(function () {
                        const page = parseInt(jQuery(this).attr('data-thumb-page'));
                        const canvas = jQuery(this).find('canvas');
                        canvas.css('border-color', page === currentPage ? '#000' : 'transparent');
                        jQuery(this).toggleClass('active', page === currentPage);
                    });

                    const activeThumb = thumbs.find('.flipbook-thumbnail.active');
                    if (activeThumb.length) {
                        const scrollLeft = activeThumb.position().left + thumbs.scrollLeft() - (thumbs.width() / 2) + (activeThumb.outerWidth() / 2);
                        thumbs.animate({ scrollLeft }, 300);
                    }
                }

                function renderAllThumbnails(pdf) {
                    if (!thumbs.length) return;
                    const totalPages = pdf.numPages;
                    const batchSize = 10;
                    let currentBatchStart = 1;

                    function renderBatch(startPage) {
                        const endPage = Math.min(startPage + batchSize - 1, totalPages);
                        const promises = [];

                        for (let i = startPage; i <= endPage; i++) {
                            promises.push(new Promise((resolve) => {
                                if (thumbnailCache.has(i)) {
                                    resolve({ i, thumb: thumbnailCache.get(i) });
                                } else {
                                    pdf.getPage(i).then(page => {
                                        const scale = 0.2;
                                        const viewport = page.getViewport({ scale });
                                        const outputScale = window.devicePixelRatio || 1;
                                        const canvas = document.createElement('canvas');
                                        const context = canvas.getContext('2d');
                                        canvas.width = viewport.width * outputScale;
                                        canvas.height = viewport.height * outputScale;
                                        canvas.style.width = viewport.width + 'px';
                                        canvas.style.height = viewport.height + 'px';
                                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);
                                        page.render({ canvasContext: context, viewport }).promise.then(() => {
                                            const thumb = jQuery('<div class="flipbook-thumbnail" data-thumb-page="' + i + '"><canvas></canvas><span>' + i + '</span></div>');
                                            thumb.find('canvas').replaceWith(canvas);
                                            thumb.addClass('visible');
                                            thumb.on('click', () => goToPage(i));
                                            thumbnailCache.set(i, thumb);
                                            resolve({ i, thumb });
                                        });
                                    });
                                }
                            }));
                        }

                        Promise.all(promises).then(results => {
                            results.sort((a, b) => a.i - b.i).forEach(({ thumb }) => thumbs.append(thumb));
                            updateThumbnails();
                            if (endPage < totalPages) {
                                setTimeout(() => renderBatch(endPage + 1), 150);
                            }
                        });
                    }

                    renderBatch(currentBatchStart);
                }

                renderPage(currentPage).then(wrapper => {
                    wrapper.addClass('active');
                    flipbook.append(wrapper);
                    updateArrows();
                    if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                });

                if (thumbs.length) renderAllThumbnails(pdf);

                nextArrow.on('click', () => goToPage(currentPage + 1));
                prevArrow.on('click', () => goToPage(currentPage - 1));
                jQuery(document).on('keydown', function (e) {
                    if (e.key === 'ArrowRight') goToPage(currentPage + 1);
                    if (e.key === 'ArrowLeft') goToPage(currentPage - 1);
                });

// Fullscreen button logic (desktop only)
// Fullscreen button logic (desktop only)
jQuery('#' + uid + '-fs-btn').on('click', function () {
    const elem = document.getElementById('flipbook_6a21becf4e3ed-container');
    const requestFS = elem.requestFullscreen || elem.webkitRequestFullscreen || elem.msRequestFullscreen;

    if (requestFS) {
        elem.classList.add('fullscreen-mode');

        requestFS.call(elem).then(() => {
            // Immediately re-render the current page with adjusted dimensions
            const pdfPage = flipbook.find('.pdf-page.active');
            if (pdfPage.length) {
                const canvas = pdfPage.find('canvas')[0];
                const context = canvas.getContext('2d');
                const pageNum = currentPage;

                // Re-fetch the PDF page and render it
                pdfjsLib.getDocument(url).promise.then(pdf => {
                    pdf.getPage(pageNum).then(page => {
                        const viewport = page.getViewport({ scale: 1 });
                        const scale = Math.min(
                            (window.innerHeight) / viewport.height,
                            (window.innerWidth) / viewport.width
                        );
                        const scaledViewport = page.getViewport({ scale });
                        const outputScale = window.devicePixelRatio || 1;

                        // Adjust canvas dimensions
                        canvas.width = scaledViewport.width * outputScale;
                        canvas.height = scaledViewport.height * outputScale;
                        canvas.style.width = scaledViewport.width + 'px';
                        canvas.style.height = scaledViewport.height + 'px';
                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

                        // Render the page
                        page.render({ canvasContext: context, viewport: scaledViewport }).promise.then(() => {
                            // Ensure arrows are updated
                            updateArrows();
                        });
                    });
                });
            }
        }).catch(() => {
            elem.classList.remove('fullscreen-mode');
        });
    }
});

// Listen for exit from fullscreen to clean up
document.addEventListener('fullscreenchange', () => {
    const container = document.getElementById('flipbook_6a21becf4e3ed-container');
    if (document.fullscreenElement !== container) {
        container.classList.remove('fullscreen-mode');
        // Re-render the page with original dimensions
        goToPage(currentPage);
    }
});
            }); // end of getDocument
        } // end of initFlipbook
    }); // end of jQuery(document).ready

	// Disable right-click inside flipbook
document.addEventListener('contextmenu', function (e) {
    if (e.target.closest('.flipbook-container-wrapper')) {
        e.preventDefault();
    }
});
    </script>
    </div>
						</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://atomicguardian.com/february-2026/">February 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>January 2026</title>
		<link>https://atomicguardian.com/january-2026/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 01 Jan 2026 19:44:00 +0000</pubDate>
				<category><![CDATA[Monthly Newsletters]]></category>
		<guid isPermaLink="false">https://atomicguardian.com/?p=21269</guid>

					<description><![CDATA[<p>The post <a href="https://atomicguardian.com/january-2026/">January 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="21269" class="elementor elementor-21269" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-59f84dec e-flex e-con-boxed e-con e-parent" data-id="59f84dec" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2d59f2 elementor-widget elementor-widget-shortcode" data-id="f2d59f2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"><style>
.flipbook-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}
#flipbook_6a21becf4f5fd-container {
    width: 400px;
    height: 456px;
    transition: none;
    position: relative;
    overflow: visible;
}
.flipbook-stage { width: 100%; height: 100%; position: relative; }
.flipbook-cover img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    cursor: pointer;
}
.flipbook-wrapper {
    display: none;
    width: 100%;
    height: 100%;
}
#flipbook {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}
.pdf-page {
    width: 100%;
    height: 100%;
    min-height: 100px;
}
.pdf-page canvas {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain;
    display: block;
    transition: none !important;
}
#flipbook_6a21becf4f5fd-prev,
#flipbook_6a21becf4f5fd-next {
    color: #FFF;
}
.flipbook-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 30px;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 20;
}
.flipbook-prev {
    left: -15px;
}
.flipbook-next {
    right: -15px;
}
.flipbook-download {
    margin-top: 10px;
    display: none;
}

#flipbook_6a21becf4f5fd-download a {
    padding: 8px 16px;
    background: #F983E7 !important;
    color: #000 !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    text-decoration: none;
    display: inline-block;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}

#flipbook_6a21becf4f5fd-download a:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4f5fd-download .flipbook-fullscreen-btn:hover {
    background: #5CE1E6 !important;
    color: #000 !important;
    border-color: #F983E7;
}

#flipbook_6a21becf4f5fd-download .flipbook-fullscreen-btn {
    padding: 8px 16px;
    background: #F983E7;
    color: #000;
    font-size: 16px !important;
    font-weight: 600 !important;
    border-radius: 50px;
    border: 1px solid #5CE1E6;
    cursor: pointer;
    margin-left: 10px;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flipbook-fullscreen-btn {
    all: unset;
}
.flipbook-page-indicator {
    margin-top: 10px;
    font-size: 13px;
    font-weight: normal;
    color: #444;
    display: none;
}
.flipbook-thumbnails {
    display: flex;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 40px;
    gap: 15px;
    scroll-behavior: smooth;
    width: 100%;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    white-space: nowrap;
}
.flipbook-thumbnail {
    opacity: 0;
    transition: opacity 0.3s;
    text-align: center;
    flex: 0 0 auto;
	cursor: pointer;
}
.flipbook-thumbnail.visible {
    opacity: 1;
}
.flipbook-thumbnail canvas {
    width: 60px !important;
    height: auto !important;
    max-width: 100%;
    box-shadow: 0 0 4px rgba(0,0,0,0.3);
    cursor: pointer;
    display: block;
    border: 4px solid transparent;
    box-sizing: border-box;
    transition: border-color 0.3s ease;
}
.flipbook-thumbnail span {
    font-size: 12px;
    color: #444;
}
.fullscreen-mode {
    display: flex;
    justify-content: center;
    align-items: center; /* Center vertically */
    height: 100vh !important;
    width: 100vw !important;
    padding: 0 !important;
    box-sizing: border-box;
    overflow: hidden;
}
	/*
.fullscreen-mode canvas {
    max-height: calc(100vh - 50px);
    object-fit: contain;
}*/
.fullscreen-mode canvas {
    max-height: 100vh !important;
    max-width: 100vw !important;
    width: auto !important;
    height: 100% !important;
    object-fit: contain;
}
.fullscreen-mode .flipbook-stage,
.fullscreen-mode .flipbook-wrapper,
.fullscreen-mode #flipbook,
.fullscreen-mode .pdf-page {
    height: 100vh !important;
    width: 100vw !important;
    display: flex;
    justify-content: center;
    align-items: center;
}
.fullscreen-mode + .flipbook-thumbnails,
.fullscreen-mode + .flipbook-download,
.fullscreen-mode + .flipbook-page-indicator {
    display: none !important;
}
.flipbook-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
}
.flipbook-container-wrapper,
.flipbook-container-wrapper * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.flipbook-container-wrapper canvas {
    pointer-events: none;
}

body, html {
    -webkit-touch-callout: none;
}
@media (max-width: 500px) {
    html, body {
        min-height: 100vh;
    }
    #flipbook_6a21becf4f5fd-container {
        width: 370px;
        height: 523px;
    }
    #flipbook_6a21becf4f5fd-wrapper {
        width: 330px;
        height: 432px;
    }
    .flipbook-stage,
    .flipbook-container,
    #flipbook,
    .flipbook-wrapper,
    .pdf-page {
        min-height: 432px !important;
    }
    .flipbook-cover img {
        max-width: 100%;
        height: auto;
    }
    .flipbook-thumbnails {
        margin-top: 100px !important;
        max-width: 330px;
    }
    .flipbook-download,
    .flipbook-download .flipbook-fullscreen-btn,
    .flipbook-download a {
        display: none !important;
    }
}
</style>

 <div class="flipbook-item">
  <div class="flipbook-container-wrapper">
        <div class="flipbook-container" id="flipbook_6a21becf4f5fd-container">
            <div class="flipbook-stage">
                <div class="flipbook-cover" id="flipbook_6a21becf4f5fd-cover" style="display:none;">
                                    </div>
                <div class="flipbook-wrapper" id="flipbook_6a21becf4f5fd-wrapper">
                    <div id="flipbook_6a21becf4f5fd"></div>
                    <span class="flipbook-arrow flipbook-prev" id="flipbook_6a21becf4f5fd-prev">‹</span>
					<span class="flipbook-arrow flipbook-next" id="flipbook_6a21becf4f5fd-next">›</span>
                </div>
            </div>
        </div>
        <div class="flipbook-thumbnails" id="flipbook_6a21becf4f5fd-thumbnails"></div>        <div class="flipbook-page-indicator" id="flipbook_6a21becf4f5fd-page-indicator">1 / ?</div>
         <div class="flipbook-download" id="flipbook_6a21becf4f5fd-download">
          <a href="https://atomicguardian.com/wp-content/uploads/2026/01/AG-Newsletter-Jan-2026.pdf" download type="application/pdf" target="_blank">Download PDF</a>
    
          <button type="button" class="flipbook-fullscreen-btn" id="flipbook_6a21becf4f5fd-fs-btn">View Full Screen</button>
      </div>
</div> <!-- end .flipbook-container-wrapper -->
</div> <!-- end .flipbook-item -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script>
<script>
    jQuery(document).ready(function () {
        const uid = "flipbook_6a21becf4f5fd";
        const url = "https:\/\/atomicguardian.com\/wp-content\/uploads\/2026\/01\/AG-Newsletter-Jan-2026.pdf";
        const flipbook = jQuery('#' + uid);
        const wrapper = jQuery('#' + uid + '-wrapper');
        const cover = jQuery('#' + uid + '-cover');
        const container = jQuery('#' + uid + '-container');
        const thumbs = jQuery('#' + uid + '-thumbnails');
        const pageIndicator = jQuery('#' + uid + '-page-indicator');
        const downloadBtn = jQuery('#' + uid + '-download');
        const nextArrow = jQuery('#' + uid + '-next');
		const prevArrow = jQuery('#' + uid + '-prev');
        let currentPage = 1;
        let thumbnailCache = new Map();
        let isNavigating = false;

        cover.on('click', function () {
            const isMobile = window.innerWidth <= 500;
            container.css({
                width: isMobile ? 330 : 742,
                height: isMobile ? 432 : 1044            });
            wrapper.show();
            cover.hide();
            if (downloadBtn.length) downloadBtn.fadeIn();
            if (pageIndicator.length) pageIndicator.fadeIn();
            initFlipbook();
        });

        const coverUrl = "";
        if (!coverUrl || coverUrl === '') {
            setTimeout(() => cover.trigger('click'), 50);
        }

			function initFlipbook() {
				pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.worker.min.js';
				pdfjsLib.getDocument(url).promise.then(function (pdf) {
					function renderPage(i) {
						return pdf.getPage(i).then(function (page) {
							const isFullscreen = container.hasClass('fullscreen-mode');
							const rawViewport = page.getViewport({ scale: 1 });

							const scale = isFullscreen
								? Math.min(window.innerWidth / rawViewport.width, window.innerHeight / rawViewport.height)
								: flipbook.width() / rawViewport.width;

							const outputScale = window.devicePixelRatio || 1;
							const viewport = page.getViewport({ scale });

							const wrapper = jQuery('<div class="pdf-page" data-page="' + i + '"><canvas></canvas></div>');
							const canvas = wrapper.find('canvas')[0];
							const context = canvas.getContext('2d');

							canvas.width = viewport.width * outputScale;
							canvas.height = viewport.height * outputScale;
							canvas.style.width = viewport.width + 'px';
							canvas.style.height = viewport.height + 'px';

							context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

							return page.render({ canvasContext: context, viewport }).promise.then(() => wrapper);
						});
					}

                function goToPage(i) {
                    if (i < 1 || i > pdf.numPages || i === currentPage || isNavigating) return;
                    isNavigating = true;
                    renderPage(i).then(newWrapper => {
                        flipbook.find('.pdf-page').remove();
                        newWrapper.addClass('active');
                        flipbook.append(newWrapper);
                        currentPage = i;
                        updateArrows();
                        updateThumbnails();
                        if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                        isNavigating = false;
                    });
                }

                function updateArrows() {
                    prevArrow.toggle(currentPage > 1);
                    nextArrow.toggle(currentPage < pdf.numPages);
                }

                function updateThumbnails() {
                    if (!thumbs.length) return;
                    thumbs.find('.flipbook-thumbnail').each(function () {
                        const page = parseInt(jQuery(this).attr('data-thumb-page'));
                        const canvas = jQuery(this).find('canvas');
                        canvas.css('border-color', page === currentPage ? '#000' : 'transparent');
                        jQuery(this).toggleClass('active', page === currentPage);
                    });

                    const activeThumb = thumbs.find('.flipbook-thumbnail.active');
                    if (activeThumb.length) {
                        const scrollLeft = activeThumb.position().left + thumbs.scrollLeft() - (thumbs.width() / 2) + (activeThumb.outerWidth() / 2);
                        thumbs.animate({ scrollLeft }, 300);
                    }
                }

                function renderAllThumbnails(pdf) {
                    if (!thumbs.length) return;
                    const totalPages = pdf.numPages;
                    const batchSize = 10;
                    let currentBatchStart = 1;

                    function renderBatch(startPage) {
                        const endPage = Math.min(startPage + batchSize - 1, totalPages);
                        const promises = [];

                        for (let i = startPage; i <= endPage; i++) {
                            promises.push(new Promise((resolve) => {
                                if (thumbnailCache.has(i)) {
                                    resolve({ i, thumb: thumbnailCache.get(i) });
                                } else {
                                    pdf.getPage(i).then(page => {
                                        const scale = 0.2;
                                        const viewport = page.getViewport({ scale });
                                        const outputScale = window.devicePixelRatio || 1;
                                        const canvas = document.createElement('canvas');
                                        const context = canvas.getContext('2d');
                                        canvas.width = viewport.width * outputScale;
                                        canvas.height = viewport.height * outputScale;
                                        canvas.style.width = viewport.width + 'px';
                                        canvas.style.height = viewport.height + 'px';
                                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);
                                        page.render({ canvasContext: context, viewport }).promise.then(() => {
                                            const thumb = jQuery('<div class="flipbook-thumbnail" data-thumb-page="' + i + '"><canvas></canvas><span>' + i + '</span></div>');
                                            thumb.find('canvas').replaceWith(canvas);
                                            thumb.addClass('visible');
                                            thumb.on('click', () => goToPage(i));
                                            thumbnailCache.set(i, thumb);
                                            resolve({ i, thumb });
                                        });
                                    });
                                }
                            }));
                        }

                        Promise.all(promises).then(results => {
                            results.sort((a, b) => a.i - b.i).forEach(({ thumb }) => thumbs.append(thumb));
                            updateThumbnails();
                            if (endPage < totalPages) {
                                setTimeout(() => renderBatch(endPage + 1), 150);
                            }
                        });
                    }

                    renderBatch(currentBatchStart);
                }

                renderPage(currentPage).then(wrapper => {
                    wrapper.addClass('active');
                    flipbook.append(wrapper);
                    updateArrows();
                    if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                });

                if (thumbs.length) renderAllThumbnails(pdf);

                nextArrow.on('click', () => goToPage(currentPage + 1));
                prevArrow.on('click', () => goToPage(currentPage - 1));
                jQuery(document).on('keydown', function (e) {
                    if (e.key === 'ArrowRight') goToPage(currentPage + 1);
                    if (e.key === 'ArrowLeft') goToPage(currentPage - 1);
                });

// Fullscreen button logic (desktop only)
// Fullscreen button logic (desktop only)
jQuery('#' + uid + '-fs-btn').on('click', function () {
    const elem = document.getElementById('flipbook_6a21becf4f5fd-container');
    const requestFS = elem.requestFullscreen || elem.webkitRequestFullscreen || elem.msRequestFullscreen;

    if (requestFS) {
        elem.classList.add('fullscreen-mode');

        requestFS.call(elem).then(() => {
            // Immediately re-render the current page with adjusted dimensions
            const pdfPage = flipbook.find('.pdf-page.active');
            if (pdfPage.length) {
                const canvas = pdfPage.find('canvas')[0];
                const context = canvas.getContext('2d');
                const pageNum = currentPage;

                // Re-fetch the PDF page and render it
                pdfjsLib.getDocument(url).promise.then(pdf => {
                    pdf.getPage(pageNum).then(page => {
                        const viewport = page.getViewport({ scale: 1 });
                        const scale = Math.min(
                            (window.innerHeight) / viewport.height,
                            (window.innerWidth) / viewport.width
                        );
                        const scaledViewport = page.getViewport({ scale });
                        const outputScale = window.devicePixelRatio || 1;

                        // Adjust canvas dimensions
                        canvas.width = scaledViewport.width * outputScale;
                        canvas.height = scaledViewport.height * outputScale;
                        canvas.style.width = scaledViewport.width + 'px';
                        canvas.style.height = scaledViewport.height + 'px';
                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

                        // Render the page
                        page.render({ canvasContext: context, viewport: scaledViewport }).promise.then(() => {
                            // Ensure arrows are updated
                            updateArrows();
                        });
                    });
                });
            }
        }).catch(() => {
            elem.classList.remove('fullscreen-mode');
        });
    }
});

// Listen for exit from fullscreen to clean up
document.addEventListener('fullscreenchange', () => {
    const container = document.getElementById('flipbook_6a21becf4f5fd-container');
    if (document.fullscreenElement !== container) {
        container.classList.remove('fullscreen-mode');
        // Re-render the page with original dimensions
        goToPage(currentPage);
    }
});
            }); // end of getDocument
        } // end of initFlipbook
    }); // end of jQuery(document).ready

	// Disable right-click inside flipbook
document.addEventListener('contextmenu', function (e) {
    if (e.target.closest('.flipbook-container-wrapper')) {
        e.preventDefault();
    }
});
    </script>
    </div>
						</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://atomicguardian.com/january-2026/">January 2026</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>May 2025</title>
		<link>https://atomicguardian.com/newsletters/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 01 May 2025 15:22:06 +0000</pubDate>
				<category><![CDATA[Monthly Newsletters]]></category>
		<guid isPermaLink="false">https://atomicguardian.com/?p=21085</guid>

					<description><![CDATA[<p>The post <a href="https://atomicguardian.com/newsletters/">May 2025</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="21085" class="elementor elementor-21085" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-59f84dec e-flex e-con-boxed e-con e-parent" data-id="59f84dec" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-f2d59f2 elementor-widget elementor-widget-shortcode" data-id="f2d59f2" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
				<div class="elementor-widget-container">
							<div class="elementor-shortcode"><style>
.flipbook-container-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
}
#flipbook_6a21becf50892-container {
    width: 400px;
    height: 456px;
    transition: none;
    position: relative;
    overflow: visible;
}
.flipbook-stage { width: 100%; height: 100%; position: relative; }
.flipbook-cover img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    cursor: pointer;
}
.flipbook-wrapper {
    display: none;
    width: 100%;
    height: 100%;
}
#flipbook {
    width: 100%;
    height: 100%;
    overflow: hidden;
    position: relative;
}
.pdf-page {
    width: 100%;
    height: 100%;
    min-height: 100px;
}
.pdf-page canvas {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain;
    display: block;
    transition: none !important;
}
#flipbook_6a21becf50892-prev,
#flipbook_6a21becf50892-next {
    color: #000;
}
.flipbook-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 30px;
    background: none;
    border: none;
    cursor: pointer;
    z-index: 20;
}
.flipbook-prev {
    left: -15px;
}
.flipbook-next {
    right: -15px;
}
.flipbook-download {
    margin-top: 10px;
    display: none;
}

#flipbook_6a21becf50892-download a {
    padding: 8px 16px;
    background: #FF0050 !important;
    color: #fff !important;
    font-size: 16px !important;
    font-weight: 600 !important;
    text-decoration: none;
    display: inline-block;
    border-radius: 50px;
    border: 1px solid #fff;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}

#flipbook_6a21becf50892-download a:hover {
    background: #f4f4f4 !important;
    color: #000 !important;
    border-color: #000;
}

#flipbook_6a21becf50892-download .flipbook-fullscreen-btn:hover {
    background: #f4f4f4 !important;
    color: #000 !important;
    border-color: #000;
}

#flipbook_6a21becf50892-download .flipbook-fullscreen-btn {
    padding: 8px 16px;
    background: #000;
    color: #fff;
    font-size: 16px !important;
    font-weight: 600 !important;
    border-radius: 50px;
    border: 1px solid #fff;
    cursor: pointer;
    margin-left: 10px;
    transition: background 0.3s, color 0.3s, border-color 0.3s;
}
.flipbook-fullscreen-btn {
    all: unset;
}
.flipbook-page-indicator {
    margin-top: 10px;
    font-size: 13px;
    font-weight: normal;
    color: #444;
    display: none;
}
.flipbook-thumbnails {
    display: flex;
    justify-content: flex-start;
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 40px;
    gap: 15px;
    scroll-behavior: smooth;
    width: 100%;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
    white-space: nowrap;
}
.flipbook-thumbnail {
    opacity: 0;
    transition: opacity 0.3s;
    text-align: center;
    flex: 0 0 auto;
	cursor: pointer;
}
.flipbook-thumbnail.visible {
    opacity: 1;
}
.flipbook-thumbnail canvas {
    width: 60px !important;
    height: auto !important;
    max-width: 100%;
    box-shadow: 0 0 4px rgba(0,0,0,0.3);
    cursor: pointer;
    display: block;
    border: 4px solid transparent;
    box-sizing: border-box;
    transition: border-color 0.3s ease;
}
.flipbook-thumbnail span {
    font-size: 12px;
    color: #444;
}
.fullscreen-mode {
    display: flex;
    justify-content: center;
    align-items: center; /* Center vertically */
    height: 100vh !important;
    width: 100vw !important;
    padding: 0 !important;
    box-sizing: border-box;
    overflow: hidden;
}
	/*
.fullscreen-mode canvas {
    max-height: calc(100vh - 50px);
    object-fit: contain;
}*/
.fullscreen-mode canvas {
    max-height: 100vh !important;
    max-width: 100vw !important;
    width: auto !important;
    height: 100% !important;
    object-fit: contain;
}
.fullscreen-mode .flipbook-stage,
.fullscreen-mode .flipbook-wrapper,
.fullscreen-mode #flipbook,
.fullscreen-mode .pdf-page {
    height: 100vh !important;
    width: 100vw !important;
    display: flex;
    justify-content: center;
    align-items: center;
}
.fullscreen-mode + .flipbook-thumbnails,
.fullscreen-mode + .flipbook-download,
.fullscreen-mode + .flipbook-page-indicator {
    display: none !important;
}
.flipbook-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    box-sizing: border-box;
}
.flipbook-container-wrapper,
.flipbook-container-wrapper * {
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.flipbook-container-wrapper canvas {
    pointer-events: none;
}

body, html {
    -webkit-touch-callout: none;
}
@media (max-width: 500px) {
    html, body {
        min-height: 100vh;
    }
    #flipbook_6a21becf50892-container {
        width: 370px;
        height: 523px;
    }
    #flipbook_6a21becf50892-wrapper {
        width: 330px;
        height: 432px;
    }
    .flipbook-stage,
    .flipbook-container,
    #flipbook,
    .flipbook-wrapper,
    .pdf-page {
        min-height: 432px !important;
    }
    .flipbook-cover img {
        max-width: 100%;
        height: auto;
    }
    .flipbook-thumbnails {
        margin-top: 100px !important;
        max-width: 330px;
    }
    .flipbook-download,
    .flipbook-download .flipbook-fullscreen-btn,
    .flipbook-download a {
        display: none !important;
    }
}
</style>

 <div class="flipbook-item">
  <div class="flipbook-container-wrapper">
        <div class="flipbook-container" id="flipbook_6a21becf50892-container">
            <div class="flipbook-stage">
                <div class="flipbook-cover" id="flipbook_6a21becf50892-cover" style="display:none;">
                                    </div>
                <div class="flipbook-wrapper" id="flipbook_6a21becf50892-wrapper">
                    <div id="flipbook_6a21becf50892"></div>
                    <span class="flipbook-arrow flipbook-prev" id="flipbook_6a21becf50892-prev">‹</span>
					<span class="flipbook-arrow flipbook-next" id="flipbook_6a21becf50892-next">›</span>
                </div>
            </div>
        </div>
        <div class="flipbook-thumbnails" id="flipbook_6a21becf50892-thumbnails"></div>        <div class="flipbook-page-indicator" id="flipbook_6a21becf50892-page-indicator">1 / ?</div>
         <div class="flipbook-download" id="flipbook_6a21becf50892-download">
    
          <button type="button" class="flipbook-fullscreen-btn" id="flipbook_6a21becf50892-fs-btn">View Full Screen</button>
      </div>
</div> <!-- end .flipbook-container-wrapper -->
</div> <!-- end .flipbook-item -->

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.min.js"></script>
<script>
    jQuery(document).ready(function () {
        const uid = "flipbook_6a21becf50892";
        const url = "https:\/\/atomicguardian.com\/wp-content\/uploads\/2025\/05\/USMay25-Newsletter-4-page-digital.pdf";
        const flipbook = jQuery('#' + uid);
        const wrapper = jQuery('#' + uid + '-wrapper');
        const cover = jQuery('#' + uid + '-cover');
        const container = jQuery('#' + uid + '-container');
        const thumbs = jQuery('#' + uid + '-thumbnails');
        const pageIndicator = jQuery('#' + uid + '-page-indicator');
        const downloadBtn = jQuery('#' + uid + '-download');
        const nextArrow = jQuery('#' + uid + '-next');
		const prevArrow = jQuery('#' + uid + '-prev');
        let currentPage = 1;
        let thumbnailCache = new Map();
        let isNavigating = false;

        cover.on('click', function () {
            const isMobile = window.innerWidth <= 500;
            container.css({
                width: isMobile ? 330 : 371,
                height: isMobile ? 432 : 522            });
            wrapper.show();
            cover.hide();
            if (downloadBtn.length) downloadBtn.fadeIn();
            if (pageIndicator.length) pageIndicator.fadeIn();
            initFlipbook();
        });

        const coverUrl = "";
        if (!coverUrl || coverUrl === '') {
            setTimeout(() => cover.trigger('click'), 50);
        }

			function initFlipbook() {
				pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.4.120/pdf.worker.min.js';
				pdfjsLib.getDocument(url).promise.then(function (pdf) {
					function renderPage(i) {
						return pdf.getPage(i).then(function (page) {
							const isFullscreen = container.hasClass('fullscreen-mode');
							const rawViewport = page.getViewport({ scale: 1 });

							const scale = isFullscreen
								? Math.min(window.innerWidth / rawViewport.width, window.innerHeight / rawViewport.height)
								: flipbook.width() / rawViewport.width;

							const outputScale = window.devicePixelRatio || 1;
							const viewport = page.getViewport({ scale });

							const wrapper = jQuery('<div class="pdf-page" data-page="' + i + '"><canvas></canvas></div>');
							const canvas = wrapper.find('canvas')[0];
							const context = canvas.getContext('2d');

							canvas.width = viewport.width * outputScale;
							canvas.height = viewport.height * outputScale;
							canvas.style.width = viewport.width + 'px';
							canvas.style.height = viewport.height + 'px';

							context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

							return page.render({ canvasContext: context, viewport }).promise.then(() => wrapper);
						});
					}

                function goToPage(i) {
                    if (i < 1 || i > pdf.numPages || i === currentPage || isNavigating) return;
                    isNavigating = true;
                    renderPage(i).then(newWrapper => {
                        flipbook.find('.pdf-page').remove();
                        newWrapper.addClass('active');
                        flipbook.append(newWrapper);
                        currentPage = i;
                        updateArrows();
                        updateThumbnails();
                        if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                        isNavigating = false;
                    });
                }

                function updateArrows() {
                    prevArrow.toggle(currentPage > 1);
                    nextArrow.toggle(currentPage < pdf.numPages);
                }

                function updateThumbnails() {
                    if (!thumbs.length) return;
                    thumbs.find('.flipbook-thumbnail').each(function () {
                        const page = parseInt(jQuery(this).attr('data-thumb-page'));
                        const canvas = jQuery(this).find('canvas');
                        canvas.css('border-color', page === currentPage ? '#000' : 'transparent');
                        jQuery(this).toggleClass('active', page === currentPage);
                    });

                    const activeThumb = thumbs.find('.flipbook-thumbnail.active');
                    if (activeThumb.length) {
                        const scrollLeft = activeThumb.position().left + thumbs.scrollLeft() - (thumbs.width() / 2) + (activeThumb.outerWidth() / 2);
                        thumbs.animate({ scrollLeft }, 300);
                    }
                }

                function renderAllThumbnails(pdf) {
                    if (!thumbs.length) return;
                    const totalPages = pdf.numPages;
                    const batchSize = 10;
                    let currentBatchStart = 1;

                    function renderBatch(startPage) {
                        const endPage = Math.min(startPage + batchSize - 1, totalPages);
                        const promises = [];

                        for (let i = startPage; i <= endPage; i++) {
                            promises.push(new Promise((resolve) => {
                                if (thumbnailCache.has(i)) {
                                    resolve({ i, thumb: thumbnailCache.get(i) });
                                } else {
                                    pdf.getPage(i).then(page => {
                                        const scale = 0.2;
                                        const viewport = page.getViewport({ scale });
                                        const outputScale = window.devicePixelRatio || 1;
                                        const canvas = document.createElement('canvas');
                                        const context = canvas.getContext('2d');
                                        canvas.width = viewport.width * outputScale;
                                        canvas.height = viewport.height * outputScale;
                                        canvas.style.width = viewport.width + 'px';
                                        canvas.style.height = viewport.height + 'px';
                                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);
                                        page.render({ canvasContext: context, viewport }).promise.then(() => {
                                            const thumb = jQuery('<div class="flipbook-thumbnail" data-thumb-page="' + i + '"><canvas></canvas><span>' + i + '</span></div>');
                                            thumb.find('canvas').replaceWith(canvas);
                                            thumb.addClass('visible');
                                            thumb.on('click', () => goToPage(i));
                                            thumbnailCache.set(i, thumb);
                                            resolve({ i, thumb });
                                        });
                                    });
                                }
                            }));
                        }

                        Promise.all(promises).then(results => {
                            results.sort((a, b) => a.i - b.i).forEach(({ thumb }) => thumbs.append(thumb));
                            updateThumbnails();
                            if (endPage < totalPages) {
                                setTimeout(() => renderBatch(endPage + 1), 150);
                            }
                        });
                    }

                    renderBatch(currentBatchStart);
                }

                renderPage(currentPage).then(wrapper => {
                    wrapper.addClass('active');
                    flipbook.append(wrapper);
                    updateArrows();
                    if (pageIndicator.length) pageIndicator.text(`${currentPage} / ${pdf.numPages}`);
                });

                if (thumbs.length) renderAllThumbnails(pdf);

                nextArrow.on('click', () => goToPage(currentPage + 1));
                prevArrow.on('click', () => goToPage(currentPage - 1));
                jQuery(document).on('keydown', function (e) {
                    if (e.key === 'ArrowRight') goToPage(currentPage + 1);
                    if (e.key === 'ArrowLeft') goToPage(currentPage - 1);
                });

// Fullscreen button logic (desktop only)
// Fullscreen button logic (desktop only)
jQuery('#' + uid + '-fs-btn').on('click', function () {
    const elem = document.getElementById('flipbook_6a21becf50892-container');
    const requestFS = elem.requestFullscreen || elem.webkitRequestFullscreen || elem.msRequestFullscreen;

    if (requestFS) {
        elem.classList.add('fullscreen-mode');

        requestFS.call(elem).then(() => {
            // Immediately re-render the current page with adjusted dimensions
            const pdfPage = flipbook.find('.pdf-page.active');
            if (pdfPage.length) {
                const canvas = pdfPage.find('canvas')[0];
                const context = canvas.getContext('2d');
                const pageNum = currentPage;

                // Re-fetch the PDF page and render it
                pdfjsLib.getDocument(url).promise.then(pdf => {
                    pdf.getPage(pageNum).then(page => {
                        const viewport = page.getViewport({ scale: 1 });
                        const scale = Math.min(
                            (window.innerHeight) / viewport.height,
                            (window.innerWidth) / viewport.width
                        );
                        const scaledViewport = page.getViewport({ scale });
                        const outputScale = window.devicePixelRatio || 1;

                        // Adjust canvas dimensions
                        canvas.width = scaledViewport.width * outputScale;
                        canvas.height = scaledViewport.height * outputScale;
                        canvas.style.width = scaledViewport.width + 'px';
                        canvas.style.height = scaledViewport.height + 'px';
                        context.setTransform(outputScale, 0, 0, outputScale, 0, 0);

                        // Render the page
                        page.render({ canvasContext: context, viewport: scaledViewport }).promise.then(() => {
                            // Ensure arrows are updated
                            updateArrows();
                        });
                    });
                });
            }
        }).catch(() => {
            elem.classList.remove('fullscreen-mode');
        });
    }
});

// Listen for exit from fullscreen to clean up
document.addEventListener('fullscreenchange', () => {
    const container = document.getElementById('flipbook_6a21becf50892-container');
    if (document.fullscreenElement !== container) {
        container.classList.remove('fullscreen-mode');
        // Re-render the page with original dimensions
        goToPage(currentPage);
    }
});
            }); // end of getDocument
        } // end of initFlipbook
    }); // end of jQuery(document).ready

	// Disable right-click inside flipbook
document.addEventListener('contextmenu', function (e) {
    if (e.target.closest('.flipbook-container-wrapper')) {
        e.preventDefault();
    }
});
    </script>
    </div>
						</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://atomicguardian.com/newsletters/">May 2025</a> appeared first on <a href="https://atomicguardian.com">Atomic Guardian</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
