{"id":16607,"date":"2026-05-19T07:57:48","date_gmt":"2026-05-19T07:57:48","guid":{"rendered":"https:\/\/boreal-plus.ro\/?page_id=16607"},"modified":"2026-06-25T17:18:45","modified_gmt":"2026-06-25T17:18:45","slug":"blog","status":"publish","type":"page","link":"https:\/\/boreal-plus.ro\/en\/blog\/","title":{"rendered":"Blog"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"16607\" class=\"elementor elementor-16607\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d6818e9 e-con-full e-flex e-con e-parent\" data-id=\"d6818e9\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-32d3f12 elementor-widget elementor-widget-html\" data-id=\"32d3f12\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- BOREAL PLUS - Blog Listing (fragment Elementor) -->\n<!-- NU lipi <!DOCTYPE>, <html>, <head>, <body> \u2014 WordPress le adaug\u0103 singur. Fonturile + style.css se \u00eencarc\u0103 global din tem\u0103. -->\n<style>\n.blog-hero {\n    position: relative;\n    background-image: linear-gradient(180deg, rgba(0, 45, 61, 0.92) 0%, rgba(0, 45, 61, 0.72) 48%, rgba(0, 45, 61, 0.94) 100%), url('https:\/\/boreal-plus.ro\/wp-content\/uploads\/2025\/08\/noul-boreal-plus.jpg');\n    background-size: cover;\n    background-position: center;\n    min-height: 680px;\n    padding: clamp(100px, 14vw, 140px) var(--container-px) 80px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    color: #ffffff;\n}\n.blog-hero::before {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background: radial-gradient(circle at top right, rgba(180,144,121,0.22), transparent 30%);\n    pointer-events: none;\n    z-index: 0;\n}\n.blog-hero::after {\n    content: '';\n    position: absolute;\n    inset: 0;\n    background: linear-gradient(135deg, rgba(255,255,255,0.05) 0%, rgba(255,255,255,0.0) 60%);\n    pointer-events: none;\n    z-index: 0;\n}\n.blog-hero-inner {\n    position: relative;\n    z-index: 2;\n    max-width: 820px;\n    margin: 0 auto;\n    padding: 0 var(--container-px);\n    text-align: center;\n    color: #ffffff;\n    text-shadow: 0 18px 45px rgba(0, 0, 0, 0.22);\n}\n.blog-hero-inner .label {\n    display: inline-flex;\n    align-items: center;\n    color: var(--secondary);\n    font-family: 'Inter', sans-serif;\n    font-size: 0.82rem;\n    font-weight: 700;\n    letter-spacing: 1.8px;\n    text-transform: uppercase;\n    margin-bottom: 20px;\n    padding: 10px 20px;\n    border: 1px solid rgba(255, 255, 255, 0.24);\n    border-radius: 999px;\n    background: rgba(255, 255, 255, 0.08);\n    max-width: fit-content;\n}\n.blog-hero-inner h1 {\n    font-family: 'Outfit', sans-serif;\n    font-size: clamp(2.2rem, 3.6vw, 3.2rem);\n    color: #ffffff;\n    font-weight: 500;\n    margin: 0 auto 18px;\n    line-height: 1.1;\n    letter-spacing: -0.025em;\n    max-width: 100%;\n}\n.blog-hero-inner p {\n    color: rgba(255, 255, 255, 0.9);\n    font-size: 1.03rem;\n    line-height: 1.9;\n    max-width: 690px;\n    margin: 0 auto;\n}\n@media (max-width: 980px) {\n    .blog-hero {\n        min-height: auto;\n        padding: 80px 0 60px;\n    }\n    .blog-hero-inner {\n        padding: 0 24px;\n    }\n    .blog-hero-inner h1 {\n        font-size: clamp(1.9rem, 5.5vw, 2.6rem);\n    }\n}\n@media (max-width: 640px) {\n    .blog-hero-inner {\n        padding: 0 16px;\n    }\n    .blog-hero-inner .label {\n        margin-bottom: 16px;\n        padding: 9px 16px;\n    }\n    .blog-hero-inner h1 {\n        font-size: 1.85rem;\n    }\n    .blog-hero-inner p {\n        font-size: 0.98rem;\n        line-height: 1.75;\n    }\n}\n\n\/* Page title above the category filters *\/\n.blog-filters-title {\n    display: block;\n    font-family: 'Outfit', sans-serif;\n    font-size: var(--fs-h2);\n    color: var(--primary-dark);\n    margin: 0 0 48px;\n    font-weight: 500;\n    letter-spacing: 1px;\n    text-transform: uppercase;\n    text-align: center;\n    position: relative;\n}\n.blog-filters-title::after {\n    content: '';\n    position: absolute;\n    bottom: -18px;\n    left: 50%;\n    transform: translateX(-50%);\n    width: 50px;\n    height: 2px;\n    background: var(--secondary);\n}\n<\/style>\n\n<!-- BLOG HERO -->\n<section class=\"blog-hero\">\n    <div class=\"blog-hero-inner\">\n        <span class=\"label\">Articole & Nout\u0103\u021bi<\/span>\n        <h1>Blog & Stil de Via\u021b\u0103<\/h1>\n    <\/div>\n<\/section>\n\n<!-- CATEGORY FILTERS -->\n<section class=\"blog-filters-section\">\n    <div class=\"container\">\n        <h2 class=\"blog-filters-title\">Blog &amp; Nout\u0103\u021bi<\/h2>\n        <div class=\"blog-filters-row\" id=\"blog-filters-row\">\n            <button class=\"blog-filter-btn active\" data-filter=\"toate\">Toate articolele<\/button>\n            <!-- Restul filtrelor se genereaz\u0103 dinamic din categoriile WordPress -->\n        <\/div>\n    <\/div>\n<\/section>\n\n<!-- BLOG LISTING -->\n<section class=\"blog-list-section\">\n    <div class=\"container\">\n        <div class=\"blog-list-grid\" id=\"blog-listing-grid\">\n            \n            <!-- Articol 1 -->\n            <article class=\"blog-card-modern\" data-category=\"comunitate\">\n                <div class=\"blog-card-media\">\n                    <img decoding=\"async\" src=\"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2024\/08\/apartamente-finalizate.png\" alt=\"Evolu\u021bia lucr\u0103rilor \u00een complexul reziden\u021bial Boreal Plus\">\n                <\/div>\n                <div class=\"blog-card-body\">\n                    <div class=\"blog-card-meta\">\n                        <span class=\"blog-card-category\">Comunitate<\/span>\n                        <span class=\"blog-card-date\">15 Mai 2026<\/span>\n                    <\/div>\n                    <h3>Evolu\u021bia lucr\u0103rilor \u00een complexul reziden\u021bial Boreal Plus<\/h3>\n                    <p>Afl\u0103 stadiul actual al construc\u021biei, finisajele interioare realizate \u0219i ce urmeaz\u0103 \u00een urm\u0103toarele luni pentru noul t\u0103u acas\u0103 premium \u00een Constan\u021ba.<\/p>\n                    <a href=\"#\" class=\"blog-card-link\">Cite\u0219te mai mult <span>&rarr;<\/span><\/a>\n                <\/div>\n            <\/article>\n\n            <!-- Articol 2 -->\n            <article class=\"blog-card-modern\" data-category=\"design-interior\">\n                <div class=\"blog-card-media\">\n                    <img decoding=\"async\" src=\"..\/poze\/interior-2.jpg\" alt=\"Sfaturi practice pentru amenajarea unui living generos \u0219i luminos\">\n                <\/div>\n                <div class=\"blog-card-body\">\n                    <div class=\"blog-card-meta\">\n                        <span class=\"blog-card-category\">Design Interior<\/span>\n                        <span class=\"blog-card-date\">10 Mai 2026<\/span>\n                    <\/div>\n                    <h3>Sfaturi practice pentru amenajarea unui living generos \u0219i luminos<\/h3>\n                    <p>Descoper\u0103 cum s\u0103 profi\u021bi la maximum de suprafe\u021bele vitrate mari, s\u0103 alegi culorile calde potrivite \u0219i s\u0103 creezi un spa\u021biu elegant \u0219i aerisit.<\/p>\n                    <a href=\"#\" class=\"blog-card-link\">Cite\u0219te mai mult <span>&rarr;<\/span><\/a>\n                <\/div>\n            <\/article>\n\n            <!-- Articol 3 -->\n            <article class=\"blog-card-modern\" data-category=\"lifestyle\">\n                <div class=\"blog-card-media\">\n                    <img decoding=\"async\" src=\"..\/poze\/exterior-3.jpg\" alt=\"10 atrac\u021bii \u0219i locuri premium de vizitat \u00een apropierea casei tale\">\n                <\/div>\n                <div class=\"blog-card-body\">\n                    <div class=\"blog-card-meta\">\n                        <span class=\"blog-card-category\">Lifestyle<\/span>\n                        <span class=\"blog-card-date\">05 Mai 2026<\/span>\n                    <\/div>\n                    <h3>10 atrac\u021bii \u0219i locuri premium de vizitat \u00een apropierea casei tale<\/h3>\n                    <p>De la plimb\u0103ri relaxante pe malul lacului Siutghiol, la cele mai bune restaurante cu specific marin \u0219i plaje premium din nordul Constan\u021bei.<\/p>\n                    <a href=\"#\" class=\"blog-card-link\">Cite\u0219te mai mult <span>&rarr;<\/span><\/a>\n                <\/div>\n            <\/article>\n\n            <!-- Articol 4 -->\n            <article class=\"blog-card-modern\" data-category=\"evolutie-santier\">\n                <div class=\"blog-card-media\">\n                    <img decoding=\"async\" src=\"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2025\/08\/noul-boreal-plus.jpg\" alt=\"Sustenabilitatea \u00een Boreal Plus: Eficien\u021b\u0103 energetic\u0103 ridicat\u0103\">\n                <\/div>\n                <div class=\"blog-card-body\">\n                    <div class=\"blog-card-meta\">\n                        <span class=\"blog-card-category\">Evolu\u021bie \u0218antier<\/span>\n                        <span class=\"blog-card-date\">28 Aprilie 2026<\/span>\n                    <\/div>\n                    <h3>Sustenabilitatea \u00een Boreal Plus: Eficien\u021b\u0103 energetic\u0103 ridicat\u0103<\/h3>\n                    <p>Cum contribuie panourile solare, izola\u021bia acustic\u0103 \u0219i confortul termic la reducerea costurilor de \u00eentre\u021binere cu 15% \u00een noul t\u0103u apartament.<\/p>\n                    <a href=\"#\" class=\"blog-card-link\">Cite\u0219te mai mult <span>&rarr;<\/span><\/a>\n                <\/div>\n            <\/article>\n\n            <!-- Articol 5 -->\n            <article class=\"blog-card-modern\" data-category=\"design-interior\">\n                <div class=\"blog-card-media\">\n                    <img decoding=\"async\" src=\"..\/poze\/interior-2.jpg\" alt=\"Amenajarea terasei: O extensie a livingului t\u0103u pe tot parcursul anului\">\n                <\/div>\n                <div class=\"blog-card-body\">\n                    <div class=\"blog-card-meta\">\n                        <span class=\"blog-card-category\">Design Interior<\/span>\n                        <span class=\"blog-card-date\">20 Aprilie 2026<\/span>\n                    <\/div>\n                    <h3>Amenajarea terasei: O extensie a livingului t\u0103u pe tot parcursul anului<\/h3>\n                    <p>Ghid complet de design interior pentru mobilarea \u0219i decorarea teraselor mari din Boreal Plus, cre\u00e2nd o zon\u0103 perfect\u0103 de relaxare cu vedere panoramic\u0103.<\/p>\n                    <a href=\"#\" class=\"blog-card-link\">Cite\u0219te mai mult <span>&rarr;<\/span><\/a>\n                <\/div>\n            <\/article>\n\n            <!-- Articol 6 -->\n            <article class=\"blog-card-modern\" data-category=\"comunitate\">\n                <div class=\"blog-card-media\">\n                    <img decoding=\"async\" src=\"..\/poze\/exterior-1.jpg\" alt=\"Cum se construie\u0219te o comunitate vibrant\u0103 \u00een Constan\u021ba de Nord\">\n                <\/div>\n                <div class=\"blog-card-body\">\n                    <div class=\"blog-card-meta\">\n                        <span class=\"blog-card-category\">Comunitate<\/span>\n                        <span class=\"blog-card-date\">12 Aprilie 2026<\/span>\n                    <\/div>\n                    <h3>Cum se construie\u0219te o comunitate vibrant\u0103 \u00een Constan\u021ba de Nord<\/h3>\n                    <p>Spa\u021bii verzi ample, locuri de joac\u0103 pentru copii \u0219i o gr\u0103dini\u021b\u0103 privat\u0103 \u2014 descoper\u0103 cum Boreal Plus creeaz\u0103 premisele unui stil de via\u021b\u0103 unit.<\/p>\n                    <a href=\"#\" class=\"blog-card-link\">Cite\u0219te mai mult <span>&rarr;<\/span><\/a>\n                <\/div>\n            <\/article>\n\n        <\/div>\n        <!-- PAGINATION -->\n        <div class=\"blog-pagination\" id=\"blog-pagination\"><\/div>\n    <\/div>\n<\/section>\n\n<!-- CONTACT SECTION -->\n<section class=\"contact-section\" id=\"contact\" style=\"padding: var(--section-py) 0; background: var(--bg-cream);\">\n    <div class=\"container\">\n        <div class=\"contact-header text-center reveal\" style=\"margin-bottom: 80px;\">\n            <span class=\"section-label\">Contact<\/span>\n            <h2 class=\"section-title\">\u00cencepe povestea ta \u00een BOREAL Plus<\/h2>\n            <p class=\"section-desc mx-auto\">Suntem al\u0103turi de tine la fiecare pas. Un consultant dedicat te va ajuta s\u0103 alegi cea mai bun\u0103 op\u021biune pentru viitorul t\u0103u acas\u0103.<\/p>\n        <\/div>\n\n        <!-- Contact Info Cards -->\n        <div class=\"contact-info-row reveal\">\n            <div class=\"contact-card-modern\">\n                <div class=\"contact-card-icon\"><img decoding=\"async\" src=\"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2026\/05\/cerc1.png\" alt=\"Loca\u021bie\" style=\"width: 24px; height: 24px; object-fit: contain;\"><\/div>\n                <h4>Birou V\u00e2nz\u0103ri Constan\u021ba<\/h4>\n                <p>Strada Amsterdam, Nr. 5,<br>Bloc M1, Constan\u021ba<\/p>\n                <a href=\"https:\/\/maps.google.com\/?q=Strada+Amsterdam+Nr.+5,+Bloc+M1,+Constan%C8%9Ba\" target=\"_blank\" class=\"contact-map-link\">Ob\u021bine informa\u021bii &rarr;<\/a>\n            <\/div>\n            <div class=\"contact-card-modern\">\n                <div class=\"contact-card-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72c.127.96.361 1.903.7 2.81a2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0122 16.92z\"\/><\/svg><\/div>\n                <h4>Contact V\u00e2nz\u0103ri<\/h4>\n                <p style=\"margin: 0; line-height: 1.8;\">\n                    Tel: <a href=\"tel:+40735509700\" style=\"font-weight: 600;\">+40 735 509 700<\/a><br>\n                    Email: <a href=\"mailto:hello@boreal-plus.ro\" style=\"font-weight: 600;\">hello@boreal-plus.ro<\/a>\n                <\/p>\n            <\/div>\n            <div class=\"contact-card-modern\">\n                <div class=\"contact-card-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><polyline points=\"12 6 12 12 16 14\"\/><\/svg><\/div>\n                <h4>Program Birou V\u00e2nz\u0103ri<\/h4>\n                <p>L-V: 08:30 - 18:00<br>S-D: 10:00 - 15:30<\/p>\n            <\/div>\n            <div class=\"contact-card-modern\">\n                <div class=\"contact-card-icon\"><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0116 0z\"\/><circle cx=\"12\" cy=\"10\" r=\"3\"\/><\/svg><\/div>\n                <h4>Birou Sediu Central<\/h4>\n                <p>Greenfield B\u0103neasa, Drumul P\u0103durea Mogo\u0219oaia 31-41, Sector 1, Bucure\u0219ti<\/p>\n                <p style=\"margin-top: 8px;\"><a href=\"tel:+40212307570\" style=\"font-weight: 500;\">+40 21 230 75 70<\/a><\/p>\n                <a href=\"https:\/\/maps.google.com\/?q=Greenfield+Baneasa,+Drumul+Padurea+Mogosoaia+31-41,+Bucuresti\" target=\"_blank\" class=\"contact-map-link\">Ob\u021bine informa\u021bii &rarr;<\/a>\n            <\/div>\n        <\/div>\n\n        <!-- Consultants Row -->\n        <div class=\"consultants-container reveal\">\n            <h3 style=\"font-family: Georgia, 'Times New Roman', serif; font-size: clamp(1.8rem, 3.5vw, 2.5rem); color: var(--text-dark); margin: 60px 0 35px; text-align: center; font-weight: 500;\">Sun\u0103 un consultant!<\/h3>\n            <div class=\"consultants-grid\">\n                <div class=\"consultant-card\">\n                    <div class=\"consultant-img-wrapper\">\n                        <img decoding=\"async\" src=\"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2024\/08\/Elena-Neagu.png\" alt=\"Elena Neagu\">\n                    <\/div>\n                    <div class=\"consultant-info\">\n                        <h4>Elena Neagu<\/h4>\n                        <p class=\"consultant-role\">Consultant v\u00e2nz\u0103ri<\/p>\n                        <a href=\"tel:+40729100577\" class=\"consultant-phone\">0729 100 577<\/a>\n                    <\/div>\n                <\/div>\n                <div class=\"consultant-card\">\n                    <div class=\"consultant-img-wrapper\">\n                        <img decoding=\"async\" src=\"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2024\/08\/Filiz-Ismail.png\" alt=\"Filiz Ismail\">\n                    <\/div>\n                    <div class=\"consultant-info\">\n                        <h4>Filiz Ismail<\/h4>\n                        <p class=\"consultant-role\">Consultant v\u00e2nz\u0103ri<\/p>\n                        <a href=\"tel:+40747100341\" class=\"consultant-phone\">0747 100 341<\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- Dynamic Form \/ Elementor Shortcode Wrapper -->\n        <div class=\"contact-form-large reveal\" style=\"margin: 0 auto;\">\n            <div id=\"contact-form-component\">\n                <!-- Elementor shortcode template for WordPress insertion -->\n                \t\t<div data-elementor-type=\"container\" data-elementor-id=\"16282\" class=\"elementor elementor-16282\" data-elementor-post-type=\"elementor_library\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2363c9d e-flex e-con-boxed e-con e-parent\" data-id=\"2363c9d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b970a7d elementor-widget elementor-widget-html\" data-id=\"b970a7d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n.bp-form-container {\n    background: var(--white, #fff);\n    padding: 60px;\n    box-shadow: 0 30px 100px rgba(0,64,87,0.12);\n    border: 1px solid #e2e0dd;\n    border-radius: 8px;\n    position: relative;\n    overflow: hidden;\n}\n\n.bp-form-container::before {\n    content: '';\n    position: absolute;\n    top: 0; left: 0;\n    width: 100%; height: 4px;\n    background: linear-gradient(to right, var(--primary), var(--secondary));\n}\n\n.bp-form-title {\n    font-family: 'Outfit', sans-serif;\n    font-size: 2rem;\n    font-weight: 700;\n    color: var(--primary-dark, #1a2a33);\n    margin-bottom: 12px;\n    text-align: center;\n}\n\n.bp-form-subtitle {\n    font-size: 1.05rem;\n    color: #718096;\n    margin-bottom: 48px;\n    text-align: center;\n    max-width: 600px;\n    margin-left: auto;\n    margin-right: auto;\n}\n\n.bp-form-row {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 24px;\n    margin-bottom: 24px;\n}\n\n.bp-form-group {\n    display: flex;\n    flex-direction: column;\n    margin-bottom: 20px;\n    transition: transform 0.3s var(--ease);\n}\n\n.bp-form-group:focus-within {\n    transform: translateY(-2px);\n}\n\n.bp-form-group label {\n    font-size: 0.7rem;\n    font-weight: 700;\n    letter-spacing: 1.2px;\n    text-transform: uppercase;\n    color: var(--primary);\n    margin-bottom: 10px;\n    font-family: 'Inter', sans-serif;\n    transition: color 0.3s ease;\n}\n\n.bp-form-group:focus-within label {\n    color: var(--secondary);\n}\n\n.bp-form-group input,\n.bp-form-group select,\n.bp-form-group textarea {\n    padding: 16px 20px;\n    border: 1px solid #e2e0dd;\n    background: #FAFAFA;\n    font-family: 'Inter', sans-serif;\n    font-size: 0.95rem;\n    color: #1a2a33;\n    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\n    outline: none;\n    width: 100%;\n    border-radius: 4px;\n}\n\n.bp-form-group input:focus,\n.bp-form-group select:focus,\n.bp-form-group textarea:focus {\n    border-color: var(--secondary);\n    background: #fff;\n    box-shadow: 0 15px 30px rgba(180,144,121,0.08);\n}\n\n.bp-form-group textarea {\n    resize: vertical;\n    min-height: 120px;\n}\n\n.bp-form-group select {\n    appearance: none;\n    background-image: url(\"data:image\/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23B49079' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'\/%3E%3C\/svg%3E\");\n    background-repeat: no-repeat;\n    background-position: right 20px center;\n    padding-right: 45px;\n}\n\n.bp-form-gdpr {\n    display: flex;\n    align-items: flex-start;\n    gap: 14px;\n    margin-bottom: 32px;\n    margin-top: 10px;\n    transition: opacity 0.3s ease;\n}\n\n.bp-form-gdpr:hover {\n    opacity: 0.9;\n}\n\n.bp-form-gdpr input[type=\"checkbox\"] {\n    width: 20px; height: 20px;\n    margin-top: 2px;\n    accent-color: var(--secondary);\n    flex-shrink: 0;\n    cursor: pointer;\n    transition: transform 0.2s ease;\n}\n\n.bp-form-gdpr input[type=\"checkbox\"]:hover {\n    transform: scale(1.1);\n}\n\n.bp-form-gdpr label {\n    font-size: 0.85rem;\n    color: #718096;\n    line-height: 1.6;\n    cursor: pointer;\n}\n\n.bp-form-gdpr label a {\n    color: var(--primary);\n    text-decoration: underline;\n    font-weight: 600;\n    transition: color 0.3s ease;\n}\n\n.bp-form-gdpr label a:hover {\n    color: var(--secondary);\n}\n\n.bp-form-submit {\n    width: 100%;\n    padding: 18px 40px;\n    background: var(--primary-dark) !important;\n    color: #ffffff !important;\n    border: 1px solid var(--secondary) !important;\n    font-family: 'Inter', sans-serif;\n    font-size: 0.75rem;\n    font-weight: 700;\n    letter-spacing: 2px;\n    text-transform: uppercase;\n    cursor: pointer;\n    transition: all 0.4s var(--ease);\n    border-radius: 4px;\n}\n\n.bp-form-submit:hover {\n    background: var(--secondary) !important;\n    color: var(--primary-dark) !important;\n    border-color: var(--secondary) !important;\n    transform: translateY(-3px);\n    box-shadow: 0 15px 35px rgba(180,144,121,0.2);\n}\n\n.bp-form-note {\n    text-align: center;\n    font-size: 0.75rem;\n    color: #a0aec0;\n    margin-top: 20px;\n    font-style: italic;\n    opacity: 0.8;\n}\n\n.bp-form-alert {\n    display: none;\n    margin-bottom: 24px;\n    padding: 14px 18px;\n    border-radius: 6px;\n    font-size: 0.92rem;\n    line-height: 1.5;\n}\n\n.bp-form-alert.is-visible {\n    display: block;\n}\n\n.bp-form-alert--error {\n    background: #fff5f5;\n    border: 1px solid #f5b5b5;\n    color: #8b2e2e;\n}\n\n.bp-form-submit:disabled {\n    opacity: 0.7;\n    cursor: wait;\n    transform: none;\n}\n\n.bp-form-honeypot {\n    position: absolute;\n    left: -9999px;\n    width: 1px;\n    height: 1px;\n    overflow: hidden;\n}\n\n@media (max-width: 768px) {\n    .bp-form-container { padding: 40px 24px; }\n    .bp-form-row { grid-template-columns: 1fr; gap: 0; }\n    .bp-form-title { font-size: 1.6rem; }\n}\n<\/style>\n\n<div class=\"bp-form-container\" id=\"contact-form\">\n    <h3 class=\"bp-form-title\">Vino s\u0103 vizitezi BOREAL Plus<\/h3>\n    <p class=\"bp-form-subtitle\">Las\u0103-ne datele \u0219i un consultant dedicat te va contacta pentru a programa o vizionare personalizat\u0103.<\/p>\n\n    <div class=\"bp-form-alert bp-form-alert--error\" id=\"bp-form-error\" role=\"alert\" aria-live=\"assertive\"><\/div>\n\n    <form id=\"bp-lead-form\" novalidate>\n        <div class=\"bp-form-honeypot\" aria-hidden=\"true\">\n            <label for=\"bp-website\">Website<\/label>\n            <input type=\"text\" id=\"bp-website\" name=\"bp_website\" tabindex=\"-1\" autocomplete=\"off\">\n        <\/div>\n\n        <div class=\"bp-form-row\">\n            <div class=\"bp-form-group\">\n                <label for=\"bp-name\">Nume complet *<\/label>\n                <input type=\"text\" id=\"bp-name\" name=\"name\" placeholder=\"Numele t\u0103u\" required>\n            <\/div>\n            <div class=\"bp-form-group\">\n                <label for=\"bp-phone\">Telefon *<\/label>\n                <input type=\"tel\" id=\"bp-phone\" name=\"phone\" placeholder=\"+40 7XX XXX XXX\" required>\n            <\/div>\n        <\/div>\n\n        <div class=\"bp-form-row\">\n            <div class=\"bp-form-group\">\n                <label for=\"bp-email\">Email *<\/label>\n                <input type=\"email\" id=\"bp-email\" name=\"email\" placeholder=\"email@exemplu.ro\" required>\n            <\/div>\n            <div class=\"bp-form-group\">\n                <label for=\"bp-apt-type\">Interes<\/label>\n                <select id=\"bp-apt-type\" name=\"apartment_type\">\n                    <option value=\"\">Selecteaz\u0103 tipul<\/option>\n                    <option value=\"garsoniera\">Garsonier\u0103<\/option>\n                    <option value=\"2-camere\">2 Camere<\/option>\n                    <option value=\"3-camere\">3 Camere<\/option>\n                <\/select>\n            <\/div>\n        <\/div>\n\n        <div class=\"bp-form-group\">\n            <label for=\"bp-message\">Mesaj (op\u021bional)<\/label>\n            <textarea id=\"bp-message\" name=\"message\" placeholder=\"Spune-ne mai multe despre ce cau\u021bi...\"><\/textarea>\n        <\/div>\n\n        <div class=\"bp-form-gdpr\">\n            <input type=\"checkbox\" id=\"bp-gdpr\" name=\"gdpr\" value=\"1\" required>\n            <label for=\"bp-gdpr\">Sunt de acord cu <a href=\"https:\/\/boreal-plus.ro\/politica-de-protectie-a-datelor\/\" target=\"_blank\" rel=\"noopener noreferrer\">Politica de protec\u021bie a datelor<\/a> \u0219i cu <a href=\"https:\/\/boreal-plus.ro\/nota-de-informare\/\" target=\"_blank\" rel=\"noopener noreferrer\">Nota de informare<\/a>. *<\/label>\n        <\/div>\n\n        <button type=\"submit\" class=\"bp-form-submit\">Programeaz\u0103 o vizionare<\/button>\n        <p class=\"bp-form-note\">Garant\u0103m confiden\u021bialitatea datelor dumneavoastr\u0103. R\u0103spundem prompt \u00een maxim 24 de ore.<\/p>\n    <\/form>\n<\/div>\n\n<!-- Preselec\u021bie c\u00e2mp \"Interes\" dup\u0103 num\u0103rul de camere al apartamentului curent.\n     numar_camere: 1 = garsonier\u0103, 2 = 2 camere, 3 = 3 camere.\n     Carrier-ul Pods se completeaz\u0103 DOAR c\u00e2nd formularul e afi\u0219at pe pagina unui apartament;\n     pe alte pagini r\u0103m\u00e2ne gol \u0219i nu se preselecteaz\u0103 nimic. -->\n<div id=\"bp-cf-camere\" data-camere=\"&lt;div  class=&quot;pods-ui-notice pods-ui-notice-notice pods-ui-notice-notice-error pods-ui-notice-is-dismissible pods-ui-notice-front&quot;&gt;&lt;p&gt;&lt;strong&gt;Pods Embed Error:&lt;\/strong&gt; Pod not found.&lt;\/p&gt;&lt;\/div&gt;\" style=\"display:none\"><\/div>\n<script>\n(function () {\n    function readCamere() {\n        \/\/ Citim num\u0103rul de camere din carrier-ul propriu sau din cel al paginii de apartament.\n        var ids = ['bp-cf-camere', 'bp-apt-preselect'];\n        for (var i = 0; i < ids.length; i++) {\n            var el = document.getElementById(ids[i]);\n            if (!el) continue;\n            var v = (el.getAttribute('data-camere') || '').trim();\n            if (v && v.indexOf('[pods') === -1) return v; \/\/ ignor\u0103m shortcode-ul nerandat\n        }\n        return null;\n    }\n\n    function preselectInteres() {\n        var select = document.getElementById('bp-apt-type');\n        if (!select) return false; \/\/ formularul Elementor nu s-a randat \u00eenc\u0103 \u2192 mai \u00eencerc\u0103m\n\n        var raw = readCamere();\n        if (raw === null) return true; \/\/ nu suntem pe un apartament \u2192 nimic de preselectat\n\n        raw = raw.toLowerCase();\n        var rooms = 0;\n        if (\/garsonier|studio\/.test(raw)) {\n            rooms = 1;\n        } else {\n            var m = raw.match(\/\\d+\/);\n            if (m) rooms = parseInt(m[0], 10);\n        }\n\n        var value = '';\n        if (rooms === 1) value = 'garsoniera';\n        else if (rooms === 2) value = '2-camere';\n        else if (rooms === 3) value = '3-camere';\n\n        if (value && select.querySelector('option[value=\"' + value + '\"]')) {\n            select.value = value;\n        }\n        return true; \/\/ gata \u2014 oprim polling-ul\n    }\n\n    var tries = 0;\n    var timer = setInterval(function () {\n        if (preselectInteres() || ++tries > 20) clearInterval(timer);\n    }, 300);\n    if (document.readyState !== 'loading') preselectInteres();\n    else document.addEventListener('DOMContentLoaded', preselectInteres);\n})();\n<\/script>\n\n<script>\n(function () {\n    var FALLBACK = {\n        ajaxUrl: 'https:\/\/boreal-plus.ro\/wp-admin\/admin-ajax.php',\n        action: 'boreal_plus_lead_submit',\n        thankYouUrl: 'https:\/\/boreal-plus.ro\/thank-you-2026\/',\n        nonce: ''\n    };\n\n    var form = document.getElementById('bp-lead-form');\n    if (!form) {\n        return;\n    }\n\n    var submitBtn = form.querySelector('.bp-form-submit');\n    var errorAlert = document.getElementById('bp-form-error');\n\n    function getConfig() {\n        return window.borealPlusLeadForm || FALLBACK;\n    }\n\n    function hideError() {\n        if (errorAlert) {\n            errorAlert.classList.remove('is-visible');\n            errorAlert.textContent = '';\n        }\n    }\n\n    function showError(message) {\n        if (!errorAlert) {\n            return;\n        }\n        errorAlert.textContent = message;\n        errorAlert.classList.add('is-visible');\n    }\n\n    function getUtmSource() {\n        return new URLSearchParams(window.location.search).get('utm_source') || 'SiteBoreal';\n    }\n\n    \/\/ \u00centoarce un mesaj de eroare sau '' dac\u0103 formularul e valid.\n    function validateForm(formData) {\n        var name = (formData.get('name') || '').trim();\n        var email = (formData.get('email') || '').trim();\n        var phone = (formData.get('phone') || '').trim();\n        var gdprChecked = formData.get('gdpr') === '1';\n\n        if (!name || !email || !phone || !gdprChecked) {\n            return 'Completeaz\u0103 c\u00e2mpurile obligatorii \u0219i accept\u0103 politica de protec\u021bie a datelor.';\n        }\n\n        if (!\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email)) {\n            return 'Introdu o adres\u0103 de email valid\u0103.';\n        }\n\n        \/\/ Telefon: minim 10 cifre (ignor\u0103m spa\u021bii, paranteze, prefix +40 etc.)\n        if (phone.replace(\/\\D\/g, '').length < 10) {\n            return 'Introdu un num\u0103r de telefon valid (minim 10 cifre).';\n        }\n\n        return '';\n    }\n\n    form.addEventListener('submit', function (event) {\n        event.preventDefault();\n        hideError();\n\n        var config = getConfig();\n        var formData = new FormData(form);\n\n        var errorMsg = validateForm(formData);\n        if (errorMsg) {\n            showError(errorMsg);\n            return;\n        }\n\n        if (submitBtn) {\n            submitBtn.disabled = true;\n            submitBtn.textContent = 'Se trimite...';\n        }\n\n        var payload = new FormData();\n        payload.append('action', config.action || FALLBACK.action);\n        if (config.nonce) {\n            payload.append('nonce', config.nonce);\n        }\n        payload.append('name', (formData.get('name') || '').trim());\n        payload.append('email', (formData.get('email') || '').trim());\n        payload.append('phone', (formData.get('phone') || '').trim());\n        payload.append('apartment_type', (formData.get('apartment_type') || '').trim());\n        payload.append('message', (formData.get('message') || '').trim());\n        payload.append('gdpr', formData.get('gdpr') === '1' ? '1' : '');\n        payload.append('utm_source', getUtmSource());\n        payload.append('page_url', window.location.href);\n        payload.append('bp_website', (formData.get('bp_website') || '').trim());\n\n        fetch(config.ajaxUrl || FALLBACK.ajaxUrl, {\n            method: 'POST',\n            credentials: 'same-origin',\n            body: payload\n        })\n            .then(function (response) {\n                return response.json().then(function (data) {\n                    return { ok: response.ok, data: data };\n                });\n            })\n            .then(function (result) {\n                if (!result.ok || !result.data || !result.data.success) {\n                    var message = (result.data && result.data.data && result.data.data.message)\n                        ? result.data.data.message\n                        : 'Nu am putut trimite cererea. Te rug\u0103m s\u0103 \u00eencerci din nou.';\n                    throw new Error(message);\n                }\n\n                var redirectUrl = (result.data.data && result.data.data.redirect)\n                    ? result.data.data.redirect\n                    : (config.thankYouUrl || FALLBACK.thankYouUrl);\n\n                window.location.href = redirectUrl;\n            })\n            .catch(function (error) {\n                showError(error && error.message ? error.message : 'Nu am putut trimite cererea. Te rug\u0103m s\u0103 \u00eencerci din nou.');\n                if (submitBtn) {\n                    submitBtn.disabled = false;\n                    submitBtn.textContent = 'Programeaz\u0103 o vizionare';\n                }\n            });\n    });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\n\n            <\/div>\n        <\/div>\n    <\/div>\n<\/section>\n\n\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n\n    const POSTS_PER_PAGE = 18;\n    let allPosts = [];        \/\/ all fetched & processed posts\n    let filteredPosts = [];   \/\/ posts after category filter\n    let currentPage = 1;\n    let currentFilter = 'toate';\n    const categoriesMap = {};\n    let filtersBuilt = false;  \/\/ so the heavy posts fetch doesn't rebuild filters already shown\n\n    \/\/ Normalize WP \"uncategorized\" \u2192 \"Generale\"\n    function normalizeCategory(slug, name) {\n        slug = slug || '';\n        name = name || '';\n        if (slug === 'uncategorized' || slug === 'fara-categorie' ||\n            name.toLowerCase() === 'uncategorized' || name.toLowerCase() === 'f\u0103r\u0103 categorie') {\n            return { slug: 'generale', name: 'Generale' };\n        }\n        return { slug, name };\n    }\n\n    \/\/ --- Render cards for current page ---\n    function renderPage() {\n        const grid = document.getElementById('blog-listing-grid');\n        const start = (currentPage - 1) * POSTS_PER_PAGE;\n        const end = start + POSTS_PER_PAGE;\n        const pagePosts = filteredPosts.slice(start, end);\n\n        let html = '';\n        pagePosts.forEach((post, index) => {\n            html += `\n            <article class=\"blog-card-modern\" data-category=\"${post.categorySlug}\" onclick=\"window.location.href='${post.link}'\" style=\"cursor:pointer;\">\n                <div class=\"blog-card-media\">\n                    <img decoding=\"async\" src=\"${post.imgUrl}\" alt=\"${post.title}\" loading=\"lazy\">\n                <\/div>\n                <div class=\"blog-card-body\">\n                    <div class=\"blog-card-meta\">\n                        <span class=\"blog-card-category\">${post.categoryName}<\/span>\n                        <span class=\"blog-card-date\">${post.formattedDate}<\/span>\n                    <\/div>\n                    <h3>${post.title}<\/h3>\n                    <p>${post.excerpt}<\/p>\n                    <a href=\"${post.link}\" class=\"blog-card-link\">Cite\u0219te mai mult <span>&rarr;<\/span><\/a>\n                <\/div>\n            <\/article>\n            `;\n        });\n\n        grid.innerHTML = html;\n\n        \/\/ Animate cards\n        const cards = grid.querySelectorAll('.blog-card-modern');\n        cards.forEach((card, i) => {\n            card.style.animation = 'none';\n            card.offsetHeight;\n            card.style.animation = `luxFadeIn 0.4s ease both`;\n            card.style.animationDelay = `${i * 0.04}s`;\n        });\n\n        renderPagination();\n    }\n\n    \/\/ --- Render pagination buttons ---\n    function renderPagination() {\n        const container = document.getElementById('blog-pagination');\n        if (!container) return;\n\n        const totalPages = Math.ceil(filteredPosts.length \/ POSTS_PER_PAGE);\n        if (totalPages <= 1) {\n            container.innerHTML = '';\n            return;\n        }\n\n        let html = '';\n\n        \/\/ Prev button\n        html += `<button class=\"blog-page-btn blog-page-prev ${currentPage === 1 ? 'disabled' : ''}\" data-page=\"prev\">&larr; Anterior<\/button>`;\n\n        \/\/ Page numbers\n        for (let i = 1; i <= totalPages; i++) {\n            if (totalPages > 7) {\n                \/\/ Show: 1, ..., current-1, current, current+1, ..., last\n                if (i === 1 || i === totalPages || (i >= currentPage - 1 && i <= currentPage + 1)) {\n                    html += `<button class=\"blog-page-btn ${i === currentPage ? 'active' : ''}\" data-page=\"${i}\">${i}<\/button>`;\n                } else if (i === currentPage - 2 || i === currentPage + 2) {\n                    html += `<span class=\"blog-page-dots\">&hellip;<\/span>`;\n                }\n            } else {\n                html += `<button class=\"blog-page-btn ${i === currentPage ? 'active' : ''}\" data-page=\"${i}\">${i}<\/button>`;\n            }\n        }\n\n        \/\/ Next button\n        html += `<button class=\"blog-page-btn blog-page-next ${currentPage === totalPages ? 'disabled' : ''}\" data-page=\"next\">Urm\u0103tor &rarr;<\/button>`;\n\n        container.innerHTML = html;\n\n        \/\/ Bind pagination clicks\n        container.querySelectorAll('.blog-page-btn').forEach(btn => {\n            btn.addEventListener('click', function() {\n                if (this.classList.contains('disabled')) return;\n                const page = this.dataset.page;\n                if (page === 'prev') {\n                    currentPage = Math.max(1, currentPage - 1);\n                } else if (page === 'next') {\n                    currentPage = Math.min(totalPages, currentPage + 1);\n                } else {\n                    currentPage = parseInt(page);\n                }\n                renderPage();\n                \/\/ Scroll to top of blog grid\n                const gridSection = document.querySelector('.blog-list-section');\n                if (gridSection) {\n                    gridSection.scrollIntoView({ behavior: 'smooth', block: 'start' });\n                }\n            });\n        });\n    }\n\n    \/\/ --- Filter Logic ---\n    function applyFilter(category) {\n        currentFilter = category;\n        currentPage = 1;\n        if (category === 'toate') {\n            filteredPosts = [...allPosts];\n        } else {\n            filteredPosts = allPosts.filter(p => p.categorySlug === category);\n        }\n        renderPage();\n    }\n\n    \/\/ --- Bind filter buttons ---\n    function bindFilterButtons() {\n        const filterBtns = document.querySelectorAll('.blog-filter-btn');\n        filterBtns.forEach(btn => {\n            btn.addEventListener('click', function() {\n                filterBtns.forEach(b => b.classList.remove('active'));\n                this.classList.add('active');\n                applyFilter(this.dataset.filter);\n            });\n        });\n    }\n\n    \/\/ --- Build Dynamic Filter Buttons ---\n    function buildFilterButtons(categories) {\n        const filtersRow = document.getElementById('blog-filters-row');\n        if (!filtersRow) return;\n\n        filtersRow.innerHTML = '<button class=\"blog-filter-btn active\" data-filter=\"toate\">Toate articolele<\/button>';\n\n        const sorted = Object.entries(categories).sort((a, b) => a[1].localeCompare(b[1]));\n        sorted.forEach(([slug, name]) => {\n            const btn = document.createElement('button');\n            btn.className = 'blog-filter-btn';\n            btn.dataset.filter = slug;\n            btn.textContent = name;\n            filtersRow.appendChild(btn);\n        });\n\n        bindFilterButtons();\n        filtersBuilt = true;\n    }\n\n    \/\/ --- Fetch category list (lightweight) so filters show FAST, ---\n    \/\/ --- independent of the heavy posts fetch. ---\n    async function fetchCategories() {\n        try {\n            const res = await fetch('\/wp-json\/wp\/v2\/categories?per_page=100&hide_empty=true&orderby=name&order=asc');\n            if (!res.ok) return;\n            const cats = await res.json();\n            if (!Array.isArray(cats) || cats.length === 0) return;\n            cats.forEach(c => {\n                const norm = normalizeCategory(c.slug, c.name);\n                if (norm.slug && !categoriesMap[norm.slug]) categoriesMap[norm.slug] = norm.name;\n            });\n            if (Object.keys(categoriesMap).length > 0) {\n                buildFilterButtons(categoriesMap);\n            }\n        } catch (e) {\n            \/\/ keep the static \"Toate articolele\" fallback; posts fetch will still build filters\n            console.log('Blog: categories fetch failed, will build filters from posts instead:', e);\n        }\n    }\n\n    \/\/ --- Turn one WP REST post into our card model ---\n    function processPost(post) {\n        const title = post.title?.rendered || 'Articol Boreal Plus';\n        const link = post.link || '#';\n\n        \/\/ Excerpt\n        let excerpt = post.excerpt?.rendered || post.content?.rendered || '';\n        const tempEl = document.createElement('div');\n        tempEl.innerHTML = excerpt;\n        excerpt = tempEl.textContent || tempEl.innerText || '';\n        if (excerpt.length > 140) {\n            excerpt = excerpt.substring(0, 140).trim() + '...';\n        }\n\n        \/\/ Featured Image\n        let imgUrl = 'https:\/\/boreal-plus.ro\/wp-content\/uploads\/2025\/08\/noul-boreal-plus.jpg';\n        if (post._embedded && post._embedded['wp:featuredmedia'] && post._embedded['wp:featuredmedia'][0]) {\n            imgUrl = post._embedded['wp:featuredmedia'][0].source_url || imgUrl;\n        }\n\n        \/\/ Category\n        let categoryName = 'Generale';\n        let categorySlug = 'generale';\n        if (post._embedded && post._embedded['wp:term'] && post._embedded['wp:term'][0] && post._embedded['wp:term'][0][0]) {\n            const norm = normalizeCategory(post._embedded['wp:term'][0][0].slug, post._embedded['wp:term'][0][0].name);\n            categoryName = norm.name;\n            categorySlug = norm.slug;\n        }\n        if (!categoriesMap[categorySlug]) {\n            categoriesMap[categorySlug] = categoryName;\n        }\n\n        \/\/ Formatted Date\n        let formattedDate = '';\n        if (post.date) {\n            const dateObj = new Date(post.date);\n            const options = { day: 'numeric', month: 'long', year: 'numeric' };\n            formattedDate = dateObj.toLocaleDateString('ro-RO', options);\n        }\n\n        return { title, link, excerpt, imgUrl, categoryName, categorySlug, formattedDate };\n    }\n\n    \/\/ --- Fetch posts progressively ---\n    \/\/ We request only POSTS_PER_PAGE per call (light, fast) and render the FIRST\n    \/\/ batch as soon as it arrives, instead of waiting for one huge `_embed` request\n    \/\/ of 100 posts (which delayed all cards by several seconds).\n    async function fetchAllPosts() {\n        let page = 1;\n        let totalPages = 1;\n        let firstRendered = false;\n\n        while (page <= totalPages) {\n            let response;\n            try {\n                response = await fetch(`\/wp-json\/wp\/v2\/posts?per_page=${POSTS_PER_PAGE}&page=${page}&_embed`);\n                if (!response.ok) break;\n            } catch (netErr) {\n                console.log('Blog: posts page', page, 'request failed:', netErr);\n                break;\n            }\n\n            const wpTotalPages = response.headers.get('X-WP-TotalPages');\n            if (wpTotalPages) totalPages = parseInt(wpTotalPages);\n\n            let posts;\n            try {\n                posts = await response.json();\n            } catch (parseErr) {\n                break;\n            }\n            if (!Array.isArray(posts) || posts.length === 0) break;\n\n            posts.forEach(post => allPosts.push(processPost(post)));\n\n            \/\/ Only refresh the visible list while the user is still on page 1 and\n            \/\/ hasn't picked a category \u2014 so background loading never disrupts them.\n            if (currentFilter === 'toate') {\n                filteredPosts = [...allPosts];\n            }\n\n            if (!firstRendered) {\n                if (!filtersBuilt) buildFilterButtons(categoriesMap);\n                renderPage();        \/\/ show the first batch immediately\n                firstRendered = true;\n            } else if (currentPage === 1 && currentFilter === 'toate') {\n                renderPagination();  \/\/ grow the pager as more pages stream in\n            }\n\n            page++;\n        }\n\n        if (!firstRendered) {\n            \/\/ Nothing loaded from the API \u2192 keep the static fallback cards visible.\n            bindFilterButtons();\n        }\n    }\n\n    \/\/ Start\n    bindFilterButtons();\n    fetchCategories();  \/\/ fast: filters appear immediately\n    fetchAllPosts();    \/\/ heavier: fills in the article cards\n});\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Articole &#038; Nout\u0103\u021bi Blog &#038; Stil de Via\u021b\u0103 Blog &amp; Nout\u0103\u021bi Toate articolele Comunitate 15 Mai 2026 Evolu\u021bia lucr\u0103rilor \u00een complexul reziden\u021bial Boreal Plus Afl\u0103 stadiul actual al construc\u021biei, finisajele interioare realizate \u0219i ce urmeaz\u0103 \u00een urm\u0103toarele luni pentru noul t\u0103u acas\u0103 premium \u00een Constan\u021ba. Cite\u0219te mai mult &rarr; Design Interior 10 Mai 2026 Sfaturi [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-16607","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Blog - Boreal Plus<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/boreal-plus.ro\/en\/blog\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Blog - Boreal Plus\" \/>\n<meta property=\"og:description\" content=\"Articole &#038; Nout\u0103\u021bi Blog &#038; Stil de Via\u021b\u0103 Blog &amp; Nout\u0103\u021bi Toate articolele Comunitate 15 Mai 2026 Evolu\u021bia lucr\u0103rilor \u00een complexul reziden\u021bial Boreal Plus Afl\u0103 stadiul actual al construc\u021biei, finisajele interioare realizate \u0219i ce urmeaz\u0103 \u00een urm\u0103toarele luni pentru noul t\u0103u acas\u0103 premium \u00een Constan\u021ba. Cite\u0219te mai mult &rarr; Design Interior 10 Mai 2026 Sfaturi [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/boreal-plus.ro\/en\/blog\/\" \/>\n<meta property=\"og:site_name\" content=\"Boreal Plus\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-25T17:18:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2024\/08\/apartamente-finalizate.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/blog\\\/\",\"url\":\"https:\\\/\\\/boreal-plus.ro\\\/blog\\\/\",\"name\":\"Blog - Boreal Plus\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/blog\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/blog\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/boreal-plus.ro\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/apartamente-finalizate.png\",\"datePublished\":\"2026-05-19T07:57:48+00:00\",\"dateModified\":\"2026-06-25T17:18:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/blog\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/boreal-plus.ro\\\/blog\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/blog\\\/#primaryimage\",\"url\":\"https:\\\/\\\/boreal-plus.ro\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/apartamente-finalizate.png\",\"contentUrl\":\"https:\\\/\\\/boreal-plus.ro\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/apartamente-finalizate.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/blog\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/boreal-plus.ro\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/#website\",\"url\":\"https:\\\/\\\/boreal-plus.ro\\\/\",\"name\":\"Boreal Plus\",\"description\":\"Apartamente \u0219i case de v\u00e2nzare BOREAL Constan\u021ba\",\"publisher\":{\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/boreal-plus.ro\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/#organization\",\"name\":\"Boreal Plus\",\"url\":\"https:\\\/\\\/boreal-plus.ro\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Boreal Plus\"},\"image\":{\"@id\":\"https:\\\/\\\/boreal-plus.ro\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Blog - Boreal Plus","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/boreal-plus.ro\/en\/blog\/","og_locale":"en_US","og_type":"article","og_title":"Blog - Boreal Plus","og_description":"Articole &#038; Nout\u0103\u021bi Blog &#038; Stil de Via\u021b\u0103 Blog &amp; Nout\u0103\u021bi Toate articolele Comunitate 15 Mai 2026 Evolu\u021bia lucr\u0103rilor \u00een complexul reziden\u021bial Boreal Plus Afl\u0103 stadiul actual al construc\u021biei, finisajele interioare realizate \u0219i ce urmeaz\u0103 \u00een urm\u0103toarele luni pentru noul t\u0103u acas\u0103 premium \u00een Constan\u021ba. Cite\u0219te mai mult &rarr; Design Interior 10 Mai 2026 Sfaturi [&hellip;]","og_url":"https:\/\/boreal-plus.ro\/en\/blog\/","og_site_name":"Boreal Plus","article_modified_time":"2026-06-25T17:18:45+00:00","og_image":[{"url":"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2024\/08\/apartamente-finalizate.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/boreal-plus.ro\/blog\/","url":"https:\/\/boreal-plus.ro\/blog\/","name":"Blog - Boreal Plus","isPartOf":{"@id":"https:\/\/boreal-plus.ro\/#website"},"primaryImageOfPage":{"@id":"https:\/\/boreal-plus.ro\/blog\/#primaryimage"},"image":{"@id":"https:\/\/boreal-plus.ro\/blog\/#primaryimage"},"thumbnailUrl":"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2024\/08\/apartamente-finalizate.png","datePublished":"2026-05-19T07:57:48+00:00","dateModified":"2026-06-25T17:18:45+00:00","breadcrumb":{"@id":"https:\/\/boreal-plus.ro\/blog\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/boreal-plus.ro\/blog\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/boreal-plus.ro\/blog\/#primaryimage","url":"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2024\/08\/apartamente-finalizate.png","contentUrl":"https:\/\/boreal-plus.ro\/wp-content\/uploads\/2024\/08\/apartamente-finalizate.png"},{"@type":"BreadcrumbList","@id":"https:\/\/boreal-plus.ro\/blog\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/boreal-plus.ro\/"},{"@type":"ListItem","position":2,"name":"Blog"}]},{"@type":"WebSite","@id":"https:\/\/boreal-plus.ro\/#website","url":"https:\/\/boreal-plus.ro\/","name":"Boreal Plus","description":"Apartments and houses for sale BOREAL Constan\u021ba","publisher":{"@id":"https:\/\/boreal-plus.ro\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/boreal-plus.ro\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/boreal-plus.ro\/#organization","name":"Boreal Plus","url":"https:\/\/boreal-plus.ro\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/boreal-plus.ro\/#\/schema\/logo\/image\/","url":"","contentUrl":"","caption":"Boreal Plus"},"image":{"@id":"https:\/\/boreal-plus.ro\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/boreal-plus.ro\/en\/wp-json\/wp\/v2\/pages\/16607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/boreal-plus.ro\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/boreal-plus.ro\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/boreal-plus.ro\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/boreal-plus.ro\/en\/wp-json\/wp\/v2\/comments?post=16607"}],"version-history":[{"count":47,"href":"https:\/\/boreal-plus.ro\/en\/wp-json\/wp\/v2\/pages\/16607\/revisions"}],"predecessor-version":[{"id":17755,"href":"https:\/\/boreal-plus.ro\/en\/wp-json\/wp\/v2\/pages\/16607\/revisions\/17755"}],"wp:attachment":[{"href":"https:\/\/boreal-plus.ro\/en\/wp-json\/wp\/v2\/media?parent=16607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}