{"id":393,"date":"2026-08-07T10:34:14","date_gmt":"2026-08-07T10:34:14","guid":{"rendered":"https:\/\/lalinnspa.com\/en\/?st-import=bb749f765d9e11654e267ebf19d3d7dd"},"modified":"2026-09-24T11:42:28","modified_gmt":"2026-09-24T11:42:28","slug":"blog","status":"publish","type":"page","link":"https:\/\/lalinnspa.com\/en\/blog\/","title":{"rendered":"Blog"},"content":{"rendered":"\n<div class=\"wp-block-uagb-container uagb-block-6836e398 alignfull uagb-is-root-container\">\n<style data-wp-block-html=\"css\">\n\/* Lalinn Spa \u2014 Blog sayfas\u0131\n   Fontlar site-header\/header.html \u00fczerinden global y\u00fcklenir.\n\n   Astra ba\u015fl\u0131klar\u0131 \"h2, .entry-content :where(h2)\" gibi kurallarla bi\u00e7imlendiriyor.\n   :where() s\u0131f\u0131r \u00f6zg\u00fcll\u00fck ta\u015f\u0131d\u0131\u011f\u0131 i\u00e7in tek s\u0131n\u0131fl\u0131 se\u00e7iciler Astra ile berabere\n   kal\u0131p kaybediyor; bu y\u00fczden t\u00fcm i\u00e7 se\u00e7iciler .lalinn-blog-page ile kapsand\u0131. *\/\n\n.lalinn-blog-page {\n    font-family: \"Outfit\", system-ui, sans-serif;\n    color: #1C0E12;\n    background: #F7F1EA;\n}\n\n.lalinn-blog-page .lalinn-blog-page-hero {\n    position: relative;\n    overflow: hidden;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    min-height: 340px;\n    padding: clamp(56px, 7vw, 80px) 24px;\n    text-align: center;\n}\n\n.lalinn-blog-page .lalinn-blog-page-hero-bg {\n    position: absolute;\n    inset: 0;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    object-position: center;\n    display: block;\n}\n\n.lalinn-blog-page .lalinn-blog-page-hero-overlay {\n    position: absolute;\n    inset: 0;\n    background: radial-gradient(ellipse 75% 90% at 50% 50%, rgba(12, 6, 8, 0.74), rgba(12, 6, 8, 0.48));\n}\n\n.lalinn-blog-page .lalinn-blog-page-hero-inner {\n    position: relative;\n    z-index: 1;\n    max-width: 680px;\n    padding: 24px 32px;\n    background: rgba(12, 6, 8, 0.4);\n    border-radius: 16px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-eyebrow,\n.lalinn-blog-page .lalinn-blog-page-subtitle {\n    display: inline-block;\n    color: #C9A27A;\n    font-size: 11px;\n    font-weight: 500;\n    letter-spacing: 2.4px;\n    line-height: 1.4;\n    text-transform: uppercase;\n    margin-bottom: 12px;\n    padding-bottom: 8px;\n    border-bottom: 1px solid rgba(201, 162, 122, 0.45);\n}\n\n.lalinn-blog-page .lalinn-blog-page-title {\n    font-family: \"Cormorant Garamond\", Georgia, serif;\n    font-size: clamp(1.9rem, 4vw, 2.6rem);\n    font-weight: 600;\n    line-height: 1.12;\n    color: #FFFaf4;\n    margin: 0 0 10px;\n    text-shadow: 0 2px 16px rgba(0, 0, 0, 0.65);\n}\n\n.lalinn-blog-page .lalinn-blog-page-intro {\n    max-width: 540px;\n    margin: 0 auto;\n    color: #F3D7B3;\n    font-size: 0.95rem;\n    font-weight: 300;\n    line-height: 1.7;\n}\n\n.lalinn-blog-page .lalinn-blog-page-content {\n    padding: clamp(52px, 7vw, 76px) 24px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-container {\n    max-width: 1200px;\n    margin: 0 auto;\n}\n\n.lalinn-blog-page .lalinn-blog-page-toolbar {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) minmax(300px, 400px);\n    align-items: end;\n    gap: 40px;\n    margin-bottom: 36px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-heading {\n    font-family: \"Cormorant Garamond\", Georgia, serif;\n    font-size: clamp(1.6rem, 2.6vw, 2.05rem);\n    font-weight: 600;\n    line-height: 1.18;\n    color: #1C0E12;\n    margin: 0;\n}\n\n.lalinn-blog-page .lalinn-blog-page-heading span {\n    color: #C9A27A;\n    font-style: italic;\n    font-weight: 500;\n}\n\n.lalinn-blog-page .lalinn-blog-page-result {\n    margin: 8px 0 0;\n    color: #6B5348;\n    font-size: 0.85rem;\n    font-weight: 300;\n    line-height: 1.5;\n}\n\n.lalinn-blog-page .lalinn-blog-page-result:empty {\n    display: none;\n}\n\n.lalinn-blog-page .lalinn-blog-page-search label {\n    display: block;\n    margin-bottom: 8px;\n    color: #6B5348;\n    font-size: 0.8rem;\n    font-weight: 500;\n    line-height: 1.4;\n}\n\n.lalinn-blog-page .lalinn-blog-page-search-row {\n    display: flex;\n    gap: 8px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-search input {\n    min-width: 0;\n    flex: 1;\n    height: 46px;\n    padding: 0 15px;\n    color: #1C0E12;\n    background: #FFFaf4;\n    border: 1px solid rgba(201, 162, 122, 0.42);\n    border-radius: 7px;\n    font-family: inherit;\n    font-size: 0.88rem;\n    font-weight: 400;\n    outline: none;\n}\n\n.lalinn-blog-page .lalinn-blog-page-search input:focus {\n    border-color: #C9A27A;\n    box-shadow: 0 0 0 3px rgba(201, 162, 122, 0.16);\n}\n\n.lalinn-blog-page .lalinn-blog-page-search button,\n.lalinn-blog-page .lalinn-blog-page-status button {\n    border: 0;\n    border-radius: 7px;\n    background: #C9A27A;\n    color: #1C0E12;\n    font-family: inherit;\n    font-size: 0.82rem;\n    font-weight: 600;\n    letter-spacing: 0.2px;\n    cursor: pointer;\n    transition: background 0.25s ease, transform 0.25s ease;\n}\n\n.lalinn-blog-page .lalinn-blog-page-search button {\n    min-width: 76px;\n    padding: 0 18px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-search button:hover,\n.lalinn-blog-page .lalinn-blog-page-status button:hover {\n    background: #D4B48C;\n    transform: translateY(-1px);\n}\n\n.lalinn-blog-page .lalinn-blog-page-grid {\n    display: grid;\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n    gap: 24px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card {\n    min-width: 0;\n    overflow: hidden;\n    display: flex;\n    flex-direction: column;\n    background: #FFFaf4;\n    border: 1px solid rgba(201, 162, 122, 0.24);\n    border-radius: 12px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-image,\n.lalinn-blog-page .lalinn-blog-page-card-placeholder {\n    display: block;\n    aspect-ratio: 4 \/ 3;\n    overflow: hidden;\n    background: #EDE1D5;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-image img {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    display: block;\n    transition: transform 0.4s ease;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card:hover .lalinn-blog-page-card-image img {\n    transform: scale(1.04);\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-placeholder {\n    display: grid;\n    place-items: center;\n    color: #A8845C;\n    font-family: \"Cormorant Garamond\", Georgia, serif;\n    font-size: 1.15rem;\n    letter-spacing: 1px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-body {\n    display: flex;\n    flex-direction: column;\n    flex: 1;\n    padding: 20px 20px 22px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-meta {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 7px;\n    margin-bottom: 10px;\n    color: #A8845C;\n    font-size: 0.68rem;\n    font-weight: 500;\n    letter-spacing: 1px;\n    line-height: 1.4;\n    text-transform: uppercase;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-meta span + span::before {\n    content: \"\u2022\";\n    margin-right: 7px;\n    color: rgba(107, 83, 72, 0.55);\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-title {\n    font-family: \"Cormorant Garamond\", Georgia, serif;\n    font-size: 1.32rem;\n    font-weight: 600;\n    line-height: 1.3;\n    letter-spacing: 0;\n    margin: 0 0 10px;\n    overflow-wrap: break-word;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-title a {\n    color: #1C0E12;\n    font-size: inherit;\n    font-family: inherit;\n    text-decoration: none;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-title a:hover {\n    color: #6B5348;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-excerpt {\n    display: -webkit-box;\n    overflow: hidden;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 3;\n    margin: 0 0 16px;\n    color: #6B5348;\n    font-size: 0.88rem;\n    font-weight: 300;\n    line-height: 1.65;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-link {\n    margin-top: auto;\n    color: #A8845C;\n    font-size: 0.78rem;\n    font-weight: 600;\n    letter-spacing: 0.3px;\n    text-decoration: none;\n}\n\n.lalinn-blog-page .lalinn-blog-page-card-link:hover {\n    color: #6B5348;\n}\n\n.lalinn-blog-page .lalinn-blog-page-skeleton {\n    min-height: 340px;\n    border-radius: 12px;\n    border: 1px solid rgba(201, 162, 122, 0.18);\n    background: linear-gradient(90deg, #EDE1D5 25%, #F7F1EA 50%, #EDE1D5 75%);\n    background-size: 200% 100%;\n    animation: lalinnBlogPulse 1.4s ease-in-out infinite;\n}\n\n@keyframes lalinnBlogPulse {\n    to { background-position: -200% 0; }\n}\n\n.lalinn-blog-page .lalinn-blog-page-status {\n    padding: 42px 24px;\n    text-align: center;\n    background: #FFFaf4;\n    border: 1px solid rgba(201, 162, 122, 0.25);\n    border-radius: 12px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-status h3 {\n    margin: 0 0 8px;\n    color: #1C0E12;\n    font-family: \"Cormorant Garamond\", Georgia, serif;\n    font-size: 1.4rem;\n    font-weight: 600;\n    line-height: 1.25;\n}\n\n.lalinn-blog-page .lalinn-blog-page-status p {\n    margin: 0 0 20px;\n    color: #6B5348;\n    font-size: 0.88rem;\n    font-weight: 300;\n    line-height: 1.6;\n}\n\n.lalinn-blog-page .lalinn-blog-page-status button {\n    padding: 11px 20px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-pagination {\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    flex-wrap: wrap;\n    gap: 7px;\n    margin-top: 40px;\n}\n\n.lalinn-blog-page .lalinn-blog-page-pagination button {\n    min-width: 40px;\n    height: 40px;\n    padding: 0 12px;\n    border: 1px solid rgba(201, 162, 122, 0.4);\n    border-radius: 7px;\n    background: #FFFaf4;\n    color: #6B5348;\n    font-family: inherit;\n    font-size: 0.8rem;\n    font-weight: 500;\n    cursor: pointer;\n}\n\n.lalinn-blog-page .lalinn-blog-page-pagination button:hover:not(:disabled),\n.lalinn-blog-page .lalinn-blog-page-pagination button[aria-current=\"page\"] {\n    background: #C9A27A;\n    border-color: #C9A27A;\n    color: #1C0E12;\n}\n\n.lalinn-blog-page .lalinn-blog-page-pagination button:disabled {\n    opacity: 0.42;\n    cursor: default;\n}\n\n.lalinn-blog-page .lalinn-blog-page-pagination span {\n    color: #6B5348;\n    padding: 0 2px;\n}\n\n@media (max-width: 900px) {\n    .lalinn-blog-page .lalinn-blog-page-toolbar {\n        grid-template-columns: 1fr;\n        align-items: stretch;\n        gap: 24px;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-grid {\n        grid-template-columns: repeat(2, minmax(0, 1fr));\n    }\n}\n\n@media (max-width: 640px) {\n    .lalinn-blog-page .lalinn-blog-page-hero {\n        min-height: 280px;\n        padding: 48px 16px;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-hero-inner {\n        padding: 20px 16px;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-content {\n        padding: 48px 16px;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-toolbar {\n        margin-bottom: 28px;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-search-row {\n        flex-direction: column;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-search button {\n        min-height: 44px;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-grid {\n        grid-template-columns: 1fr;\n        max-width: 420px;\n        margin: 0 auto;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-card-title {\n        font-size: 1.24rem;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-pagination {\n        margin-top: 30px;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-pagination button {\n        min-width: 38px;\n        height: 38px;\n        padding: 0 10px;\n    }\n}\n\n@media (prefers-reduced-motion: reduce) {\n    .lalinn-blog-page .lalinn-blog-page-skeleton {\n        animation: none;\n    }\n\n    .lalinn-blog-page .lalinn-blog-page-card-image img,\n    .lalinn-blog-page .lalinn-blog-page-search button,\n    .lalinn-blog-page .lalinn-blog-page-status button {\n        transition: none;\n    }\n}\n\n<\/style>\n\n<script data-wp-block-html=\"js\">\n\/* Lalinn Spa \u2014 Blog sayfas\u0131: REST API, canl\u0131 arama ve pagination\n   blog.html i\u00e7indeki script ile ayn\u0131d\u0131r. \u0130kisi birden eklenirse\n   data-ready bayra\u011f\u0131 sayesinde yaln\u0131zca biri \u00e7al\u0131\u015f\u0131r.\n\n   \u00d6NEML\u0130: Bu dosyada ampersan karakteri kullan\u0131lmaz. WordPress, \u00f6zel HTML\n   blo\u011fundaki script i\u00e7inde ge\u00e7en ampersan\u0131 HTML varl\u0131\u011f\u0131na \u00e7evirip kodu bozuyor.\n   Bu y\u00fczden mant\u0131ksal VE yerine i\u00e7 i\u00e7e if ve ?. kullan\u0131ld\u0131, sorgu dizeleri de\n   URLSearchParams ile \u00e7al\u0131\u015fma an\u0131nda \u00fcretiliyor. *\/\n(function () {\n    \"use strict\";\n\n    var ROOT_ID = \"lalinn-blog-page\";\n    var WAIT_LIMIT = 8000;\n\n    function onReady(callback) {\n        if (document.readyState === \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", callback);\n        } else {\n            callback();\n        }\n    }\n\n    function waitForRoot() {\n        var startedAt = Date.now();\n\n        (function attempt() {\n            var root = document.getElementById(ROOT_ID);\n\n            if (root) {\n                init(root);\n                return;\n            }\n\n            if (Date.now() - startedAt < WAIT_LIMIT) {\n                window.setTimeout(attempt, 120);\n            }\n        })();\n    }\n\n    function init(root) {\n        if (root.getAttribute(\"data-ready\") === \"1\") return;\n        root.setAttribute(\"data-ready\", \"1\");\n\n        var grid = document.getElementById(\"lalinn-blog-page-grid\");\n        var pagination = document.getElementById(\"lalinn-blog-pagination\");\n        var result = document.getElementById(\"lalinn-blog-result\");\n        var statusBox = document.getElementById(\"lalinn-blog-page-status\");\n        var statusTitle = document.getElementById(\"lalinn-blog-page-status-title\");\n        var statusText = document.getElementById(\"lalinn-blog-page-status-text\");\n        var clearButton = document.getElementById(\"lalinn-blog-clear-search\");\n        var searchForm = document.getElementById(\"lalinn-blog-search-form\");\n        var searchInput = document.getElementById(\"lalinn-blog-search-input\");\n\n        if (!grid || !pagination || !result || !statusBox || !searchInput) return;\n\n        var perPage = 9;\n        var activeRequest = null;\n        var debounceTimer = null;\n\n        var state = {\n            page: 1,\n            pages: 1,\n            total: 0,\n            search: \"\"\n        };\n\n        function readUrl() {\n            var params = new URLSearchParams(window.location.search);\n            var requestedPage = parseInt(params.get(\"blog_page\"), 10);\n            state.page = requestedPage > 0 ? requestedPage : 1;\n            state.search = (params.get(\"blog_search\") || \"\").trim();\n            searchInput.value = state.search;\n        }\n\n        function updateUrl() {\n            var url = new URL(window.location.href);\n\n            if (state.search) url.searchParams.set(\"blog_search\", state.search);\n            else url.searchParams.delete(\"blog_search\");\n\n            if (state.page > 1) url.searchParams.set(\"blog_page\", String(state.page));\n            else url.searchParams.delete(\"blog_page\");\n\n            window.history.replaceState({}, \"\", url.pathname + url.search + url.hash);\n        }\n\n        function toPath(url) {\n            if (!url) return \"\";\n            var anchor = document.createElement(\"a\");\n            anchor.href = url;\n            return anchor.pathname + anchor.search + anchor.hash;\n        }\n\n        function decodeText(html) {\n            var element = document.createElement(\"textarea\");\n            element.innerHTML = html || \"\";\n            return element.value;\n        }\n\n        function stripHtml(html) {\n            var element = document.createElement(\"div\");\n            element.innerHTML = html || \"\";\n            return (element.textContent || \"\").replace(\/\\s+\/g, \" \").trim();\n        }\n\n        function formatDate(value) {\n            var date = new Date(value);\n            if (isNaN(date.getTime())) return \"\";\n            return date.toLocaleDateString(\"en-GB\", {\n                day: \"numeric\",\n                month: \"long\",\n                year: \"numeric\"\n            });\n        }\n\n        function getImage(post) {\n            var media = post._embedded?.[\"wp:featuredmedia\"]?.[0];\n            var sizes;\n            var selected;\n            var fallback;\n\n            if (media) {\n                if (!media.code) {\n                    sizes = media.media_details?.sizes;\n                    selected = sizes?.medium_large || sizes?.large || sizes?.medium;\n                    return {\n                        src: toPath(selected?.source_url || media.source_url || \"\"),\n                        alt: media.alt_text || decodeText(post.title?.rendered)\n                    };\n                }\n            }\n\n            fallback = post.uagb_featured_image_src;\n\n            if (fallback) {\n                selected = fallback.medium_large?.[0] || fallback.large?.[0] || fallback.full?.[0];\n                return {\n                    src: toPath(selected || \"\"),\n                    alt: decodeText(post.title?.rendered)\n                };\n            }\n\n            return { src: \"\", alt: \"\" };\n        }\n\n        function getCategory(post) {\n            var terms = post._embedded?.[\"wp:term\"];\n            var category = terms?.[0]?.[0];\n            if (!category) return \"\";\n            if (category.slug === \"uncategorized\" || category.slug === \"genel\") return \"\";\n            return category.name || \"\";\n        }\n\n        function appendText(parent, tag, className, text) {\n            if (!text) return null;\n            var element = document.createElement(tag);\n            element.className = className;\n            element.textContent = text;\n            parent.appendChild(element);\n            return element;\n        }\n\n        function createCard(post) {\n            var title = decodeText(post.title?.rendered) || \"Untitled post\";\n            var excerpt = stripHtml(post.excerpt?.rendered);\n            var href = toPath(post.link) || \"\/en\/blog\/\";\n            var image = getImage(post);\n            var category = getCategory(post);\n            var date = formatDate(post.date);\n            var article = document.createElement(\"article\");\n            var imageLink;\n            var img;\n            var placeholder;\n            var body;\n            var meta;\n            var heading;\n            var headingLink;\n            var readMore;\n\n            article.className = \"lalinn-blog-page-card\";\n\n            if (image.src) {\n                imageLink = document.createElement(\"a\");\n                imageLink.className = \"lalinn-blog-page-card-image\";\n                imageLink.href = href;\n                imageLink.setAttribute(\"aria-label\", title);\n\n                img = document.createElement(\"img\");\n                img.src = image.src;\n                img.alt = image.alt || title;\n                img.width = 800;\n                img.height = 600;\n                img.loading = \"lazy\";\n                img.decoding = \"async\";\n                imageLink.appendChild(img);\n                article.appendChild(imageLink);\n            } else {\n                placeholder = document.createElement(\"div\");\n                placeholder.className = \"lalinn-blog-page-card-placeholder\";\n                placeholder.textContent = \"Lalinn Spa\";\n                article.appendChild(placeholder);\n            }\n\n            body = document.createElement(\"div\");\n            body.className = \"lalinn-blog-page-card-body\";\n\n            if (category || date) {\n                meta = document.createElement(\"div\");\n                meta.className = \"lalinn-blog-page-card-meta\";\n                appendText(meta, \"span\", \"\", category);\n                appendText(meta, \"span\", \"\", date);\n                body.appendChild(meta);\n            }\n\n            heading = document.createElement(\"h2\");\n            heading.className = \"lalinn-blog-page-card-title\";\n            headingLink = document.createElement(\"a\");\n            headingLink.href = href;\n            headingLink.textContent = title;\n            heading.appendChild(headingLink);\n            body.appendChild(heading);\n\n            if (excerpt) appendText(body, \"p\", \"lalinn-blog-page-card-excerpt\", excerpt);\n\n            readMore = document.createElement(\"a\");\n            readMore.className = \"lalinn-blog-page-card-link\";\n            readMore.href = href;\n            readMore.textContent = \"Read more\";\n            body.appendChild(readMore);\n\n            article.appendChild(body);\n            return article;\n        }\n\n        function showSkeletons() {\n            var fragment = document.createDocumentFragment();\n            var skeleton;\n            var i;\n\n            grid.innerHTML = \"\";\n            grid.hidden = false;\n            grid.setAttribute(\"aria-busy\", \"true\");\n            statusBox.hidden = true;\n            pagination.hidden = true;\n\n            for (i = 0; i < 6; i += 1) {\n                skeleton = document.createElement(\"div\");\n                skeleton.className = \"lalinn-blog-page-skeleton\";\n                skeleton.setAttribute(\"aria-hidden\", \"true\");\n                fragment.appendChild(skeleton);\n            }\n\n            grid.appendChild(fragment);\n            result.textContent = \"Loading posts\u2026\";\n        }\n\n        function showStatus(title, text, allowClear) {\n            grid.innerHTML = \"\";\n            grid.hidden = true;\n            grid.setAttribute(\"aria-busy\", \"false\");\n            pagination.hidden = true;\n            if (statusTitle) statusTitle.textContent = title;\n            if (statusText) statusText.textContent = text;\n            if (clearButton) clearButton.hidden = !allowClear;\n            statusBox.hidden = false;\n        }\n\n        function paginationSequence(current, total) {\n            var values = [];\n            var start;\n            var end;\n            var i;\n\n            if (total <= 7) {\n                for (i = 1; i <= total; i += 1) values.push(i);\n                return values;\n            }\n\n            values.push(1);\n            start = Math.max(2, current - 1);\n            end = Math.min(total - 1, current + 1);\n\n            if (start > 2) values.push(\"ellipsis\");\n            for (i = start; i <= end; i += 1) values.push(i);\n            if (end < total - 1) values.push(\"ellipsis\");\n            values.push(total);\n            return values;\n        }\n\n        function addPageButton(label, page, disabled, current, ariaLabel) {\n            var button = document.createElement(\"button\");\n            button.type = \"button\";\n            button.textContent = label;\n            button.disabled = disabled;\n            button.setAttribute(\"aria-label\", ariaLabel || (\"Page \" + page));\n            if (current) button.setAttribute(\"aria-current\", \"page\");\n            button.addEventListener(\"click\", function () {\n                if (disabled) return;\n                if (state.page === page) return;\n                state.page = page;\n                updateUrl();\n                loadPosts(true);\n            });\n            pagination.appendChild(button);\n        }\n\n        function renderPagination() {\n            var sequence;\n\n            pagination.innerHTML = \"\";\n\n            if (state.pages <= 1) {\n                pagination.hidden = true;\n                return;\n            }\n\n            addPageButton(\"Previous\", state.page - 1, state.page === 1, false, \"Previous sayfa\");\n            sequence = paginationSequence(state.page, state.pages);\n\n            sequence.forEach(function (item) {\n                var ellipsis;\n\n                if (item === \"ellipsis\") {\n                    ellipsis = document.createElement(\"span\");\n                    ellipsis.textContent = \"\u2026\";\n                    ellipsis.setAttribute(\"aria-hidden\", \"true\");\n                    pagination.appendChild(ellipsis);\n                } else {\n                    addPageButton(String(item), item, false, item === state.page);\n                }\n            });\n\n            addPageButton(\"Next\", state.page + 1, state.page === state.pages, false, \"Next sayfa\");\n            pagination.hidden = false;\n        }\n\n        function renderPosts(posts) {\n            var fragment = document.createDocumentFragment();\n\n            posts.forEach(function (post) {\n                fragment.appendChild(createCard(post));\n            });\n\n            grid.innerHTML = \"\";\n            grid.appendChild(fragment);\n            grid.hidden = false;\n            grid.setAttribute(\"aria-busy\", \"false\");\n            statusBox.hidden = true;\n\n            if (state.search) {\n                result.textContent = \"\u201c\" + state.search + \"\u201d for \" + state.total + \" posts found.\";\n            } else {\n                result.textContent = \"\";\n            }\n\n            renderPagination();\n        }\n\n        function buildParams() {\n            var params = new URLSearchParams();\n            params.set(\"per_page\", String(perPage));\n            params.set(\"page\", String(state.page));\n            params.set(\"_embed\", \"1\");\n            params.set(\"orderby\", \"date\");\n            params.set(\"order\", \"desc\");\n            if (state.search) params.set(\"search\", state.search);\n            return params;\n        }\n\n        \/\/ \u0130ngilizce yaz\u0131lar \/en\/ \u00f6nekli REST yolundan gelir; ?lang=en ana domainde TR d\u00f6nd\u00fcr\u00fcr.\n        function endpointList() {\n            var params = buildParams();\n            var fallback = new URLSearchParams(params);\n            fallback.set(\"rest_route\", \"\/wp\/v2\/posts\");\n            return [\n                \"\/en\/wp-json\/wp\/v2\/posts?\" + params.toString(),\n                \"\/en\/?\" + fallback.toString()\n            ];\n        }\n\n        function requestPosts(signal) {\n            var urls = endpointList();\n\n            function attempt(index) {\n                var hasFallback = index + 1 < urls.length;\n\n                return fetch(urls[index], { signal: signal, credentials: \"same-origin\" }).then(\n                    function (response) {\n                        var error;\n\n                        if (response.ok) return response;\n\n                        if (response.status === 404) {\n                            if (hasFallback) return attempt(index + 1);\n                        }\n\n                        error = new Error(\"REST request failed\");\n                        error.status = response.status;\n                        throw error;\n                    },\n                    function (error) {\n                        if (error.name === \"AbortError\") throw error;\n                        if (hasFallback) return attempt(index + 1);\n                        throw error;\n                    }\n                );\n            }\n\n            return attempt(0);\n        }\n\n        function loadPosts(scrollToList) {\n            var controller = window.AbortController ? new AbortController() : null;\n            var content;\n\n            if (activeRequest) activeRequest.abort();\n            activeRequest = controller;\n            showSkeletons();\n\n            requestPosts(controller ? controller.signal : undefined)\n                .then(function (response) {\n                    state.total = parseInt(response.headers.get(\"X-WP-Total\"), 10) || 0;\n                    state.pages = parseInt(response.headers.get(\"X-WP-TotalPages\"), 10) || 1;\n                    return response.json();\n                })\n                .then(function (posts) {\n                    activeRequest = null;\n\n                    if (!Array.isArray(posts)) throw new Error(\"Unexpected response\");\n\n                    if (!posts.length) {\n                        result.textContent = state.search ? \"No posts match your search.\" : \"No posts yet.\";\n                        showStatus(\n                            state.search ? \"No results found\" : \"No posts available yet\",\n                            state.search ? \"Try searching with a different word.\" : \"New posts will appear here when published.\",\n                            Boolean(state.search)\n                        );\n                        return;\n                    }\n\n                    if (!state.total) state.total = posts.length;\n                    renderPosts(posts);\n\n                    if (scrollToList) {\n                        content = root.querySelector(\".lalinn-blog-page-content\");\n                        if (content) content.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n                    }\n                })\n                .catch(function (error) {\n                    if (error.name === \"AbortError\") return;\n                    activeRequest = null;\n\n                    \/\/ Ge\u00e7ersiz sayfa numaras\u0131: ilk sayfaya d\u00f6n.\n                    if (error.status === 400) {\n                        if (state.page > 1) {\n                            state.page = 1;\n                            updateUrl();\n                            loadPosts(false);\n                            return;\n                        }\n                    }\n\n                    result.textContent = \"Posts could not be loaded.\";\n                    showStatus(\"Something went wrong\", \"Posts cannot be loaded right now. Please refresh and try again.\", false);\n                });\n        }\n\n        function runSearch(value) {\n            var normalized = value.trim();\n\n            if (state.page === 1) {\n                if (state.search === normalized) return;\n            }\n\n            state.search = normalized;\n            state.page = 1;\n            updateUrl();\n            loadPosts(false);\n        }\n\n        searchInput.addEventListener(\"input\", function () {\n            window.clearTimeout(debounceTimer);\n            debounceTimer = window.setTimeout(function () {\n                runSearch(searchInput.value);\n            }, 350);\n        });\n\n        if (searchForm) {\n            searchForm.addEventListener(\"submit\", function (event) {\n                event.preventDefault();\n                window.clearTimeout(debounceTimer);\n                runSearch(searchInput.value);\n            });\n        }\n\n        if (clearButton) {\n            clearButton.addEventListener(\"click\", function () {\n                searchInput.value = \"\";\n                runSearch(\"\");\n                searchInput.focus();\n            });\n        }\n\n        readUrl();\n        loadPosts(false);\n    }\n\n    onReady(waitForRoot);\n})();\n\n<\/script>\n\n<main class=\"lalinn-blog-page\" id=\"lalinn-blog-page\" lang=\"en\">\n    <section class=\"lalinn-blog-page-hero\">\n        <img\n            class=\"lalinn-blog-page-hero-bg\"\n            src=\"\/wp-content\/uploads\/2026\/08\/PHOTO-2026-08-13-12-07-18-4.webp\"\n            alt=\"Lalinn Spa\"\n            width=\"1600\"\n            height=\"900\"\n            fetchpriority=\"high\"\n            decoding=\"async\"\n        >\n        <div class=\"lalinn-blog-page-hero-overlay\" aria-hidden=\"true\"><\/div>\n        <div class=\"lalinn-blog-page-hero-inner\">\n            <span class=\"lalinn-blog-page-eyebrow\">Lalinn Spa<\/span>\n            <h1 class=\"lalinn-blog-page-title\">Blog<\/h1>\n            <p class=\"lalinn-blog-page-intro\">Notes on hamam culture, massage, spa rituals and well-being.<\/p>\n        <\/div>\n    <\/section>\n\n    <section class=\"lalinn-blog-page-content\" aria-labelledby=\"lalinn-blog-list-title\">\n        <div class=\"lalinn-blog-page-container\">\n            <div class=\"lalinn-blog-page-toolbar\">\n                <div class=\"lalinn-blog-page-toolbar-copy\">\n                    <span class=\"lalinn-blog-page-subtitle\">Posts<\/span>\n                    <h2 class=\"lalinn-blog-page-heading\" id=\"lalinn-blog-list-title\">Latest notes <span>from the blog<\/span><\/h2>\n                    <p class=\"lalinn-blog-page-result\" id=\"lalinn-blog-result\" aria-live=\"polite\">Loading posts\u2026<\/p>\n                <\/div>\n\n                <form class=\"lalinn-blog-page-search\" id=\"lalinn-blog-search-form\" role=\"search\">\n                    <label for=\"lalinn-blog-search-input\">Search blog posts<\/label>\n                    <div class=\"lalinn-blog-page-search-row\">\n                        <input\n                            type=\"search\"\n                            id=\"lalinn-blog-search-input\"\n                            placeholder=\"e.g. hamam, massage, spa\u2026\"\n                            autocomplete=\"off\"\n                        >\n                        <button type=\"submit\">Search<\/button>\n                    <\/div>\n                <\/form>\n            <\/div>\n\n            <div class=\"lalinn-blog-page-grid\" id=\"lalinn-blog-page-grid\" aria-live=\"polite\" aria-busy=\"true\">\n                <div class=\"lalinn-blog-page-skeleton\" aria-hidden=\"true\"><\/div>\n                <div class=\"lalinn-blog-page-skeleton\" aria-hidden=\"true\"><\/div>\n                <div class=\"lalinn-blog-page-skeleton\" aria-hidden=\"true\"><\/div>\n                <div class=\"lalinn-blog-page-skeleton\" aria-hidden=\"true\"><\/div>\n                <div class=\"lalinn-blog-page-skeleton\" aria-hidden=\"true\"><\/div>\n                <div class=\"lalinn-blog-page-skeleton\" aria-hidden=\"true\"><\/div>\n            <\/div>\n\n            <div class=\"lalinn-blog-page-status\" id=\"lalinn-blog-page-status\" hidden>\n                <h3 id=\"lalinn-blog-page-status-title\">No posts found<\/h3>\n                <p id=\"lalinn-blog-page-status-text\">Try a different search term.<\/p>\n                <button type=\"button\" id=\"lalinn-blog-clear-search\">Clear Search<\/button>\n            <\/div>\n\n            <nav class=\"lalinn-blog-page-pagination\" id=\"lalinn-blog-pagination\" aria-label=\"Blog pages\" hidden><\/nav>\n        <\/div>\n    <\/section>\n<\/main>\n\n<script>\n\/* \u00d6NEML\u0130: Bu script i\u00e7inde ampersan karakteri kullan\u0131lmaz. WordPress, \u00f6zel HTML\n   blo\u011fundaki script i\u00e7inde ge\u00e7en ampersan\u0131 HTML varl\u0131\u011f\u0131na \u00e7evirip kodu bozuyor.\n   Bu y\u00fczden mant\u0131ksal VE yerine i\u00e7 i\u00e7e if ve ?. kullan\u0131ld\u0131, sorgu dizeleri de\n   URLSearchParams ile \u00e7al\u0131\u015fma an\u0131nda \u00fcretiliyor. *\/\n(function () {\n    \"use strict\";\n\n    var ROOT_ID = \"lalinn-blog-page\";\n    var WAIT_LIMIT = 8000;\n\n    function onReady(callback) {\n        if (document.readyState === \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", callback);\n        } else {\n            callback();\n        }\n    }\n\n    function waitForRoot() {\n        var startedAt = Date.now();\n\n        (function attempt() {\n            var root = document.getElementById(ROOT_ID);\n\n            if (root) {\n                init(root);\n                return;\n            }\n\n            if (Date.now() - startedAt < WAIT_LIMIT) {\n                window.setTimeout(attempt, 120);\n            }\n        })();\n    }\n\n    function init(root) {\n        if (root.getAttribute(\"data-ready\") === \"1\") return;\n        root.setAttribute(\"data-ready\", \"1\");\n\n        var grid = document.getElementById(\"lalinn-blog-page-grid\");\n        var pagination = document.getElementById(\"lalinn-blog-pagination\");\n        var result = document.getElementById(\"lalinn-blog-result\");\n        var statusBox = document.getElementById(\"lalinn-blog-page-status\");\n        var statusTitle = document.getElementById(\"lalinn-blog-page-status-title\");\n        var statusText = document.getElementById(\"lalinn-blog-page-status-text\");\n        var clearButton = document.getElementById(\"lalinn-blog-clear-search\");\n        var searchForm = document.getElementById(\"lalinn-blog-search-form\");\n        var searchInput = document.getElementById(\"lalinn-blog-search-input\");\n\n        if (!grid || !pagination || !result || !statusBox || !searchInput) return;\n\n        var perPage = 9;\n        var activeRequest = null;\n        var debounceTimer = null;\n\n        var state = {\n            page: 1,\n            pages: 1,\n            total: 0,\n            search: \"\"\n        };\n\n        function readUrl() {\n            var params = new URLSearchParams(window.location.search);\n            var requestedPage = parseInt(params.get(\"blog_page\"), 10);\n            state.page = requestedPage > 0 ? requestedPage : 1;\n            state.search = (params.get(\"blog_search\") || \"\").trim();\n            searchInput.value = state.search;\n        }\n\n        function updateUrl() {\n            var url = new URL(window.location.href);\n\n            if (state.search) url.searchParams.set(\"blog_search\", state.search);\n            else url.searchParams.delete(\"blog_search\");\n\n            if (state.page > 1) url.searchParams.set(\"blog_page\", String(state.page));\n            else url.searchParams.delete(\"blog_page\");\n\n            window.history.replaceState({}, \"\", url.pathname + url.search + url.hash);\n        }\n\n        function toPath(url) {\n            if (!url) return \"\";\n            var anchor = document.createElement(\"a\");\n            anchor.href = url;\n            return anchor.pathname + anchor.search + anchor.hash;\n        }\n\n        function decodeText(html) {\n            var element = document.createElement(\"textarea\");\n            element.innerHTML = html || \"\";\n            return element.value;\n        }\n\n        function stripHtml(html) {\n            var element = document.createElement(\"div\");\n            element.innerHTML = html || \"\";\n            return (element.textContent || \"\").replace(\/\\s+\/g, \" \").trim();\n        }\n\n        function formatDate(value) {\n            var date = new Date(value);\n            if (isNaN(date.getTime())) return \"\";\n            return date.toLocaleDateString(\"en-GB\", {\n                day: \"numeric\",\n                month: \"long\",\n                year: \"numeric\"\n            });\n        }\n\n        function getImage(post) {\n            var media = post._embedded?.[\"wp:featuredmedia\"]?.[0];\n            var sizes;\n            var selected;\n            var fallback;\n\n            if (media) {\n                if (!media.code) {\n                    sizes = media.media_details?.sizes;\n                    selected = sizes?.medium_large || sizes?.large || sizes?.medium;\n                    return {\n                        src: toPath(selected?.source_url || media.source_url || \"\"),\n                        alt: media.alt_text || decodeText(post.title?.rendered)\n                    };\n                }\n            }\n\n            fallback = post.uagb_featured_image_src;\n\n            if (fallback) {\n                selected = fallback.medium_large?.[0] || fallback.large?.[0] || fallback.full?.[0];\n                return {\n                    src: toPath(selected || \"\"),\n                    alt: decodeText(post.title?.rendered)\n                };\n            }\n\n            return { src: \"\", alt: \"\" };\n        }\n\n        function getCategory(post) {\n            var terms = post._embedded?.[\"wp:term\"];\n            var category = terms?.[0]?.[0];\n            if (!category) return \"\";\n            if (category.slug === \"uncategorized\" || category.slug === \"genel\") return \"\";\n            return category.name || \"\";\n        }\n\n        function appendText(parent, tag, className, text) {\n            if (!text) return null;\n            var element = document.createElement(tag);\n            element.className = className;\n            element.textContent = text;\n            parent.appendChild(element);\n            return element;\n        }\n\n        function createCard(post) {\n            var title = decodeText(post.title?.rendered) || \"Untitled post\";\n            var excerpt = stripHtml(post.excerpt?.rendered);\n            var href = toPath(post.link) || \"\/en\/blog\/\";\n            var image = getImage(post);\n            var category = getCategory(post);\n            var date = formatDate(post.date);\n            var article = document.createElement(\"article\");\n            var imageLink;\n            var img;\n            var placeholder;\n            var body;\n            var meta;\n            var heading;\n            var headingLink;\n            var readMore;\n\n            article.className = \"lalinn-blog-page-card\";\n\n            if (image.src) {\n                imageLink = document.createElement(\"a\");\n                imageLink.className = \"lalinn-blog-page-card-image\";\n                imageLink.href = href;\n                imageLink.setAttribute(\"aria-label\", title);\n\n                img = document.createElement(\"img\");\n                img.src = image.src;\n                img.alt = image.alt || title;\n                img.width = 800;\n                img.height = 600;\n                img.loading = \"lazy\";\n                img.decoding = \"async\";\n                imageLink.appendChild(img);\n                article.appendChild(imageLink);\n            } else {\n                placeholder = document.createElement(\"div\");\n                placeholder.className = \"lalinn-blog-page-card-placeholder\";\n                placeholder.textContent = \"Lalinn Spa\";\n                article.appendChild(placeholder);\n            }\n\n            body = document.createElement(\"div\");\n            body.className = \"lalinn-blog-page-card-body\";\n\n            if (category || date) {\n                meta = document.createElement(\"div\");\n                meta.className = \"lalinn-blog-page-card-meta\";\n                appendText(meta, \"span\", \"\", category);\n                appendText(meta, \"span\", \"\", date);\n                body.appendChild(meta);\n            }\n\n            heading = document.createElement(\"h2\");\n            heading.className = \"lalinn-blog-page-card-title\";\n            headingLink = document.createElement(\"a\");\n            headingLink.href = href;\n            headingLink.textContent = title;\n            heading.appendChild(headingLink);\n            body.appendChild(heading);\n\n            if (excerpt) appendText(body, \"p\", \"lalinn-blog-page-card-excerpt\", excerpt);\n\n            readMore = document.createElement(\"a\");\n            readMore.className = \"lalinn-blog-page-card-link\";\n            readMore.href = href;\n            readMore.textContent = \"Read more\";\n            body.appendChild(readMore);\n\n            article.appendChild(body);\n            return article;\n        }\n\n        function showSkeletons() {\n            var fragment = document.createDocumentFragment();\n            var skeleton;\n            var i;\n\n            grid.innerHTML = \"\";\n            grid.hidden = false;\n            grid.setAttribute(\"aria-busy\", \"true\");\n            statusBox.hidden = true;\n            pagination.hidden = true;\n\n            for (i = 0; i < 6; i += 1) {\n                skeleton = document.createElement(\"div\");\n                skeleton.className = \"lalinn-blog-page-skeleton\";\n                skeleton.setAttribute(\"aria-hidden\", \"true\");\n                fragment.appendChild(skeleton);\n            }\n\n            grid.appendChild(fragment);\n            result.textContent = \"Loading posts\u2026\";\n        }\n\n        function showStatus(title, text, allowClear) {\n            grid.innerHTML = \"\";\n            grid.hidden = true;\n            grid.setAttribute(\"aria-busy\", \"false\");\n            pagination.hidden = true;\n            if (statusTitle) statusTitle.textContent = title;\n            if (statusText) statusText.textContent = text;\n            if (clearButton) clearButton.hidden = !allowClear;\n            statusBox.hidden = false;\n        }\n\n        function paginationSequence(current, total) {\n            var values = [];\n            var start;\n            var end;\n            var i;\n\n            if (total <= 7) {\n                for (i = 1; i <= total; i += 1) values.push(i);\n                return values;\n            }\n\n            values.push(1);\n            start = Math.max(2, current - 1);\n            end = Math.min(total - 1, current + 1);\n\n            if (start > 2) values.push(\"ellipsis\");\n            for (i = start; i <= end; i += 1) values.push(i);\n            if (end < total - 1) values.push(\"ellipsis\");\n            values.push(total);\n            return values;\n        }\n\n        function addPageButton(label, page, disabled, current, ariaLabel) {\n            var button = document.createElement(\"button\");\n            button.type = \"button\";\n            button.textContent = label;\n            button.disabled = disabled;\n            button.setAttribute(\"aria-label\", ariaLabel || (\"Page \" + page));\n            if (current) button.setAttribute(\"aria-current\", \"page\");\n            button.addEventListener(\"click\", function () {\n                if (disabled) return;\n                if (state.page === page) return;\n                state.page = page;\n                updateUrl();\n                loadPosts(true);\n            });\n            pagination.appendChild(button);\n        }\n\n        function renderPagination() {\n            var sequence;\n\n            pagination.innerHTML = \"\";\n\n            if (state.pages <= 1) {\n                pagination.hidden = true;\n                return;\n            }\n\n            addPageButton(\"Previous\", state.page - 1, state.page === 1, false, \"Previous sayfa\");\n            sequence = paginationSequence(state.page, state.pages);\n\n            sequence.forEach(function (item) {\n                var ellipsis;\n\n                if (item === \"ellipsis\") {\n                    ellipsis = document.createElement(\"span\");\n                    ellipsis.textContent = \"\u2026\";\n                    ellipsis.setAttribute(\"aria-hidden\", \"true\");\n                    pagination.appendChild(ellipsis);\n                } else {\n                    addPageButton(String(item), item, false, item === state.page);\n                }\n            });\n\n            addPageButton(\"Next\", state.page + 1, state.page === state.pages, false, \"Next sayfa\");\n            pagination.hidden = false;\n        }\n\n        function renderPosts(posts) {\n            var fragment = document.createDocumentFragment();\n\n            posts.forEach(function (post) {\n                fragment.appendChild(createCard(post));\n            });\n\n            grid.innerHTML = \"\";\n            grid.appendChild(fragment);\n            grid.hidden = false;\n            grid.setAttribute(\"aria-busy\", \"false\");\n            statusBox.hidden = true;\n\n            if (state.search) {\n                result.textContent = \"\u201c\" + state.search + \"\u201d for \" + state.total + \" posts found.\";\n            } else {\n                result.textContent = \"\";\n            }\n\n            renderPagination();\n        }\n\n        function buildParams() {\n            var params = new URLSearchParams();\n            params.set(\"per_page\", String(perPage));\n            params.set(\"page\", String(state.page));\n            params.set(\"_embed\", \"1\");\n            params.set(\"orderby\", \"date\");\n            params.set(\"order\", \"desc\");\n            if (state.search) params.set(\"search\", state.search);\n            return params;\n        }\n\n        function endpointList() {\n            var params = buildParams();\n            var fallback = new URLSearchParams(params);\n            fallback.set(\"rest_route\", \"\/wp\/v2\/posts\");\n            return [\n                \"\/en\/wp-json\/wp\/v2\/posts?\" + params.toString(),\n                \"\/en\/?\" + fallback.toString()\n            ];\n        }\n\n        function requestPosts(signal) {\n            var urls = endpointList();\n\n            function attempt(index) {\n                var hasFallback = index + 1 < urls.length;\n\n                return fetch(urls[index], { signal: signal, credentials: \"same-origin\" }).then(\n                    function (response) {\n                        var error;\n\n                        if (response.ok) return response;\n\n                        if (response.status === 404) {\n                            if (hasFallback) return attempt(index + 1);\n                        }\n\n                        error = new Error(\"REST request failed\");\n                        error.status = response.status;\n                        throw error;\n                    },\n                    function (error) {\n                        if (error.name === \"AbortError\") throw error;\n                        if (hasFallback) return attempt(index + 1);\n                        throw error;\n                    }\n                );\n            }\n\n            return attempt(0);\n        }\n\n        function loadPosts(scrollToList) {\n            var controller = window.AbortController ? new AbortController() : null;\n            var content;\n\n            if (activeRequest) activeRequest.abort();\n            activeRequest = controller;\n            showSkeletons();\n\n            requestPosts(controller ? controller.signal : undefined)\n                .then(function (response) {\n                    state.total = parseInt(response.headers.get(\"X-WP-Total\"), 10) || 0;\n                    state.pages = parseInt(response.headers.get(\"X-WP-TotalPages\"), 10) || 1;\n                    return response.json();\n                })\n                .then(function (posts) {\n                    activeRequest = null;\n\n                    if (!Array.isArray(posts)) throw new Error(\"Unexpected response\");\n\n                    if (!posts.length) {\n                        result.textContent = state.search ? \"No posts match your search.\" : \"No posts yet.\";\n                        showStatus(\n                            state.search ? \"No results found\" : \"No posts available yet\",\n                            state.search ? \"Try searching with a different word.\" : \"New posts will appear here when published.\",\n                            Boolean(state.search)\n                        );\n                        return;\n                    }\n\n                    if (!state.total) state.total = posts.length;\n                    renderPosts(posts);\n\n                    if (scrollToList) {\n                        content = root.querySelector(\".lalinn-blog-page-content\");\n                        if (content) content.scrollIntoView({ behavior: \"smooth\", block: \"start\" });\n                    }\n                })\n                .catch(function (error) {\n                    if (error.name === \"AbortError\") return;\n                    activeRequest = null;\n\n                    if (error.status === 400) {\n                        if (state.page > 1) {\n                            state.page = 1;\n                            updateUrl();\n                            loadPosts(false);\n                            return;\n                        }\n                    }\n\n                    result.textContent = \"Posts could not be loaded.\";\n                    showStatus(\"Something went wrong\", \"Posts cannot be loaded right now. Please refresh and try again.\", false);\n                });\n        }\n\n        function runSearch(value) {\n            var normalized = value.trim();\n\n            if (state.page === 1) {\n                if (state.search === normalized) return;\n            }\n\n            state.search = normalized;\n            state.page = 1;\n            updateUrl();\n            loadPosts(false);\n        }\n\n        searchInput.addEventListener(\"input\", function () {\n            window.clearTimeout(debounceTimer);\n            debounceTimer = window.setTimeout(function () {\n                runSearch(searchInput.value);\n            }, 350);\n        });\n\n        if (searchForm) {\n            searchForm.addEventListener(\"submit\", function (event) {\n                event.preventDefault();\n                window.clearTimeout(debounceTimer);\n                runSearch(searchInput.value);\n            });\n        }\n\n        if (clearButton) {\n            clearButton.addEventListener(\"click\", function () {\n                searchInput.value = \"\";\n                runSearch(\"\");\n                searchInput.focus();\n            });\n        }\n\n        readUrl();\n        loadPosts(false);\n    }\n\n    onReady(waitForRoot);\n})();\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Lalinn Spa Blog Notes on hamam culture, massage, spa rituals and well-being. Posts Latest notes from the blog Loading posts\u2026 Search blog posts Search No posts found Try a different search term. Clear Search<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"no-sidebar","site-content-layout":"plain-container","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-393","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"picksoso","author_link":"https:\/\/lalinnspa.com\/en\/author\/picksoso\/"},"uagb_comment_info":0,"uagb_excerpt":"Lalinn Spa Blog Notes on hamam culture, massage, spa rituals and well-being. Posts Latest notes from the blog Loading posts\u2026 Search blog posts Search No posts found Try a different search term. Clear Search","_links":{"self":[{"href":"https:\/\/lalinnspa.com\/en\/wp-json\/wp\/v2\/pages\/393","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lalinnspa.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lalinnspa.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lalinnspa.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lalinnspa.com\/en\/wp-json\/wp\/v2\/comments?post=393"}],"version-history":[{"count":17,"href":"https:\/\/lalinnspa.com\/en\/wp-json\/wp\/v2\/pages\/393\/revisions"}],"predecessor-version":[{"id":3013,"href":"https:\/\/lalinnspa.com\/en\/wp-json\/wp\/v2\/pages\/393\/revisions\/3013"}],"wp:attachment":[{"href":"https:\/\/lalinnspa.com\/en\/wp-json\/wp\/v2\/media?parent=393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}