<?php\ndefined( 'ABSPATH' ) || exit;\n\n// CHILD THEME - ladowanie stylow rodzica\nadd_action('wp_enqueue_scripts', function() {\n    wp_enqueue_style('parent-style', get_template_directory_uri() . '/style.css');\n    wp_enqueue_style('pw-design', get_stylesheet_directory_uri() . '/pw-design.css', ['parent-style'], '2.0');\n});\n\n// ===================================================\n// PolakW.nl - WYBOR KONTA: prywatne / firmowe\n// ===================================================\nadd_action('wp_footer', function() {\n    echo '<style>\n.polakw-account-type { margin-bottom: 1.5rem; }\n.polakw-account-type__label { font-size:11px !important; font-weight:700 !important; letter-spacing:0.05em !important; text-transform:uppercase !important; color:#111 !important; margin-bottom:10px !important; display:block !important; }\n.polakw-account-type__grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }\n.polakw-account-type__btn { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:16px 12px; border:1.5px solid #e8e4f0; border-radius:12px; background:#f8f7fc; cursor:pointer; transition:all 0.15s; text-align:center; }\n.polakw-account-type__btn:hover { border-color:#7c3aed; background:rgba(168,85,247,0.04); }\n.polakw-account-type__btn.active { border-color:#7c3aed; background:rgba(168,85,247,0.08); }\n.polakw-account-type__icon { font-size:28px; line-height:1; }\n.polakw-account-type__title { font-size:14px; font-weight:700; color:#111; }\n.polakw-account-type__desc { font-size:11px; color:#666; margin-top:2px; }\n.polakw-account-type__btn.active .polakw-account-type__title { color:#7c3aed; }\n</style>\n<script>\n(function(){\nfunction insertAccountTypePicker(){\n  var form=document.querySelector(".hp-form--user-register");\n  if(!form||document.querySelector(".polakw-account-type"))return;\n  var picker=document.createElement("div");\n  picker.className="polakw-account-type";\n  picker.innerHTML=\'<span class="polakw-account-type__label">Rodzaj konta</span><div class="polakw-account-type__grid"><div class="polakw-account-type__btn active" data-type="private"><span class="polakw-account-type__icon">\u{1F464}</span><div><div class="polakw-account-type__title">Prywatne</div><div class="polakw-account-type__desc">Og\u0142oszenia osobiste</div></div></div><div class="polakw-account-type__btn" data-type="company"><span class="polakw-account-type__icon">\u{1F3E2}</span><div><div class="polakw-account-type__title">Firma</div><div class="polakw-account-type__desc">Sklep + og\u0142oszenia</div></div></div></div><input type="hidden" name="hp_typ_konta" id="polakw-account-type-value" value="private">\';\n  form.insertBefore(picker,form.firstChild);\n  picker.querySelectorAll(".polakw-account-type__btn").forEach(function(btn){\n    btn.addEventListener("click",function(){\n      picker.querySelectorAll(".polakw-account-type__btn").forEach(function(b){b.classList.remove("active");});\n      btn.classList.add("active");\n      document.getElementById("polakw-account-type-value").value=btn.dataset.type;\n    });\n  });\n}\ndocument.addEventListener("DOMContentLoaded",function(){\n  insertAccountTypePicker();\n  var observer=new MutationObserver(function(){insertAccountTypePicker();});\n  observer.observe(document.body,{childList:true,subtree:true});\n});\n})();\n</script>';\n});\n\nadd_action('user_register', function($user_id) {\n  if(isset($_POST['hp_typ_konta'])){\n    update_user_meta($user_id,'hp_typ_konta',sanitize_text_field($_POST['hp_typ_konta']));\n  }\n}, 10, 1);\n\n// ===================================================\n// PolakW.nl - wyłącz wpautop na stronie głównej\n// ===================================================\nadd_filter('the_content', function($content) {\n    if (is_front_page()) {\n        remove_filter('the_content', 'wpautop');\n    }\n    return $content;\n}, 9);\n\n// ===================================================\n// PolakW.nl - przycisk Dodaj ogloszenie\n// ===================================================\nadd_action('wp_head', function() {\n  echo '<style>\n    .hp-menu__item--listing-submit,\n    .button--secondary[data-url*="submit"] {\n      background: linear-gradient(135deg, #7c3aed, #db2777) !important;\n      color: #fff !important;\n      border: none !important;\n      border-radius: 100px !important;\n    }\n  </style>';\n});\n\n// ===================================================\n// PolakW.nl - Zastąp żółty akcent motywu fioletowym\n// ===================================================\nadd_action('wp_head', function() {\n  echo '<style>\n/* Belka tytułu strony - zastąp żółty fioletowym */\n.hp-page__title::before,\n.hp-section__title::before,\n.title::before,\n.widget__title::before {\n  background-color: #7c3aed !important;\n  background-image: linear-gradient(to right, #7c3aed, #db2777) !important;\n}\n/* Aktywna zakładka - belka kolorowa */\n.hp-menu--tabbed .hp-menu__item--current::before {\n  background-color: #7c3aed !important;\n  background-image: linear-gradient(to right, #7c3aed, #db2777) !important;\n}\n/* Aktywna zakładka - kolor tekstu */\n.hp-menu--tabbed .hp-menu__item--current a,\n.hp-menu--tabbed .hp-menu__item a:hover {\n  color: #7c3aed !important;\n}\n/* Menu konta - aktywna pozycja */\n.hp-menu--account .hp-menu__item--current > a,\n.hp-menu--account .hp-menu__item--current::before {\n  color: #7c3aed !important;\n}\n/* Wyróżnione ogłoszenie - obramowanie */\n.hp-listing--view-block.hp-listing--featured {\n  border-color: #7c3aed !important;\n}\n.hp-listing--view-block .hp-listing__featured-badge {\n  background-color: #7c3aed !important;\n  background-image: linear-gradient(to right, #7c3aed, #db2777) !important;\n}\n/* Przyciski primary - upewnij się że są fioletowe */\n.button--primary,\na.button--primary {\n  background: linear-gradient(135deg, #7c3aed, #db2777) !important;\n  border-color: transparent !important;\n  color: #fff !important;\n}\n/* Spinner ładowania strony - fioletowy zamiast żółtego */\n.site-loader svg stop { stop-color: #7c3aed !important; }\n  </style>';\n}, 5);\n\n// ===================================================\n// PolakW.nl - styl strony cennika (hp-card, hp-hero itp.)\n// ===================================================\nadd_action('wp_head', function() {\n  if(!is_page(263)) return;\n  echo '<style>\n/* Ukryj duplikat tytulu strony */\n.page-title, .entry-header { display:none !important; }\n\n/* Hero */\n.hp-wrap { max-width:1100px; margin:0 auto; padding:40px 20px; }\n.hp-hero { text-align:center; margin-bottom:48px; }\n.hp-hero h1 { font-size:2rem; font-weight:800; color:#1a1a2e; margin-bottom:12px; }\n.hp-hero p { font-size:1.1rem; color:#555; max-width:580px; margin:0 auto; }\n\n/* Naglowki sekcji */\n.hp-section-title { font-size:1.2rem; font-weight:700; color:#1a1a2e; margin:40px 0 20px; padding-bottom:10px; border-bottom:3px solid #7c3aed; display:inline-block; }\n\n/* Karty pakietow */\n.hp-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:24px; margin-bottom:48px; }\n.hp-card { background:#fff; border:2px solid #e8e4f0; border-radius:20px; padding:28px 24px; display:flex; flex-direction:column; transition:box-shadow 0.2s,border-color 0.2s; }\n.hp-card:hover { box-shadow:0 8px 32px rgba(168,85,247,0.12); border-color:#7c3aed; }\n.hp-card.popular { border-color:#7c3aed; box-shadow:0 8px 32px rgba(168,85,247,0.18); position:relative; }\n.hp-card.popular::before { content:"Najpopularniejszy"; position:absolute; top:-14px; left:50%; transform:translateX(-50%); background:linear-gradient(135deg,#7c3aed,#db2777); color:#fff; font-size:11px; font-weight:700; padding:4px 14px; border-radius:50px; white-space:nowrap; }\n.hp-card h3 { font-size:1.3rem; font-weight:800; color:#1a1a2e; margin:0 0 6px; }\n.hp-card .desc { font-size:0.875rem; color:#666; margin:0 0 16px; }\n.hp-card .price { font-size:2rem; font-weight:800; color:#7c3aed; margin-bottom:4px; }\n.hp-card .period { font-size:0.8rem; color:#888; margin-bottom:16px; }\n.hp-card ul { list-style:none; padding:0; margin:0 0 24px; flex:1; }\n.hp-card ul li { font-size:0.875rem; color:#444; padding:5px 0; padding-left:22px; position:relative; }\n.hp-card ul li::before { content:"✓"; position:absolute; left:0; color:#7c3aed; font-weight:700; }\n.btn-order { display:block; text-align:center; background:linear-gradient(135deg,#7c3aed,#db2777); color:#fff !important; font-weight:700; font-size:0.95rem; padding:13px 20px; border-radius:50px; text-decoration:none !important; transition:opacity 0.2s; }\n.btn-order:hover { opacity:0.88; }\n\n/* Karty slidera */\n.hp-slider-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:20px; margin-bottom:48px; }\n.hp-slider-card { background:#f8f4ff; border:1.5px solid #e0d5f7; border-radius:16px; padding:24px 20px; position:relative; }\n.hp-slider-card .badge { position:absolute; top:16px; right:16px; background:linear-gradient(135deg,#7c3aed,#db2777); color:#fff; font-size:10px; font-weight:700; padding:3px 10px; border-radius:50px; }\n.hp-slider-card h3 { font-size:1.1rem; font-weight:700; color:#1a1a2e; margin:0 0 8px; }\n.hp-slider-card p { font-size:0.875rem; color:#555; margin:0 0 16px; }\n.hp-slider-card .price { font-size:1.6rem; font-weight:800; color:#7c3aed; margin-bottom:16px; }\n\n/* Weryfikacja */\n.hp-verified { background:linear-gradient(135deg,#f8f4ff,#fff0fa); border:1.5px solid #d8c5f7; border-radius:20px; padding:32px; margin-bottom:48px; }\n.hp-verified h2 { font-size:1.2rem; font-weight:700; color:#1a1a2e; margin:0 0 12px; }\n.hp-verified p, .hp-verified li { font-size:0.9rem; color:#444; line-height:1.7; }\n.hp-verified ul { padding-left:20px; margin:12px 0; }\n\n/* Info banner (promowanie via listing) */\n.hp-info-banner { background:#f0f8ff; border:1.5px solid #c3e0ff; border-radius:12px; padding:16px 20px; margin-bottom:20px; font-size:0.9rem; color:#1a4a7a; display:flex; flex-wrap:wrap; align-items:center; gap:12px; }\n.hp-info-link { color:#7c3aed; font-weight:700; text-decoration:none; white-space:nowrap; }\n.hp-info-link:hover { text-decoration:underline; }\n\n/* Verified bottom */\n.hp-verified-bottom { display:flex; flex-wrap:wrap; align-items:center; gap:24px; margin-top:24px; }\n.hp-price-pill .price { font-size:1.8rem; font-weight:800; color:#7c3aed; }\n.hp-price-pill .sub { font-size:0.8rem; color:#888; margin-top:2px; }\n\n/* Note */\n.hp-note { background:#fff9f0; border:1.5px solid #ffd59e; border-radius:12px; padding:16px 20px; font-size:0.875rem; color:#7a4a00; margin-top:40px; }\n\n/* Contact */\n.hp-contact { text-align:center; margin-top:32px; padding:24px; border-top:1px solid #f0f0f8; }\n.hp-contact p { color:#666; margin-bottom:8px; }\n.hp-contact a { color:#7c3aed; font-weight:700; text-decoration:none; font-size:1.05rem; }\n\n@media(max-width:640px){\n  .hp-cards { grid-template-columns:1fr; }\n  .hp-slider-cards { grid-template-columns:1fr; }\n  .hp-hero h1 { font-size:1.5rem; }\n  .hp-verified-bottom { flex-direction:column; align-items:flex-start; }\n}\n  </style>';\n});\n\n// ===================================================\n// PolakW.nl - pomijaj bledy walidacji vendora\n// ===================================================\nadd_filter('hivepress/v1/models/vendor/errors', function($errors, $vendor) {\n  if(empty($errors)) return $errors;\n  $user_id = $vendor->get_user__id();\n  if(!$user_id) return $errors;\n  $vendor_posts = get_posts(['post_type'=>'hp_vendor','author'=>$user_id,'numberposts'=>1,'post_status'=>['publish','draft','auto-draft']]);\n  if($vendor_posts) return [];\n  return $errors;\n}, 10, 2);\n\n// ===================================================\n// PolakW.nl - skip "Wypelnij profil"\n// ===================================================\nadd_action('template_redirect', function() {\n  if(!is_user_logged_in()) return;\n  global $wp;\n  if(strpos($wp->request,'dodaj')===false && strpos($_SERVER['REQUEST_URI'],'submit')===false) return;\n  $user_id = get_current_user_id();\n  $vendor = get_posts(['post_type'=>'hp_vendor','author'=>$user_id,'numberposts'=>1,'post_status'=>['publish','draft']]);\n  if(!$vendor){\n    $user = get_userdata($user_id);\n    wp_insert_post(['post_type'=>'hp_vendor','post_title'=>$user->display_name ?: $user->user_login,'post_status'=>'publish','post_author'=>$user_id]);\n  }\n}, 1);\n\n// ===================================================\n// PolakW.nl - opcje dla atrybutow uzytkownika\n// ===================================================\nadd_filter('hivepress/v1/models/user/attributes', function($attributes) {\n  if(isset($attributes['typ_konta'])){\n    $attributes['typ_konta']['edit_field']['options'] = ['private'=>'Osoba prywatna','company'=>'Firma'];\n  }\n  return $attributes;\n}, 1000);\n\n// ===================================================\n// PolakW.nl - ukryj mape\n// ===================================================\nadd_action('wp_head', function() {\n  if(!is_post_type_archive('hp_listing') && !is_tax('hp_listing_category')) return;\n  echo '<style>.hp-widget--listing-map,.hp-map,[class*="listing-map"]{display:none !important;}</style>';\n});\nadd_action('wp_head', function() {\n  echo '<style>.widget.hp-map{display:none !important;}</style>';\n});\n\n// ===================================================\n// PolakW.nl - POGRUPOWANE przyciski kategorii w formularzu\n// ===================================================\nadd_action('wp_footer', function() {\n  if(strpos($_SERVER['REQUEST_URI'],'submit-listing')===false) return;\n  $all_cats = get_terms(['taxonomy'=>'hp_listing_category','hide_empty'=>false]);\n  $cats_data = [];\n  foreach($all_cats as $cat){\n    $cats_data[] = ['id'=>$cat->term_id,'name'=>$cat->name,'parent'=>(int)$cat->parent,'slug'=>$cat->slug];\n  }\n  // Definicje grup (nazwa, emoji, kolor, ID kategorii głównych)\n  $groups = [\n    ['key'=>'sprzedaz',      'label'=>'Sprzedaż',       'emoji'=>'🛍️',  'color'=>'#f59e0b', 'ids'=>[10,5,11,104,9,67,66,65,110,68]],\n    ['key'=>'nieruchomosci', 'label'=>'Nieruchomości',  'emoji'=>'🏠',  'color'=>'#3b82f6', 'ids'=>[3]],\n    ['key'=>'praca',         'label'=>'Praca',           'emoji'=>'💼',  'color'=>'#8b5cf6', 'ids'=>[2]],\n    ['key'=>'uslugi',        'label'=>'Usługi',          'emoji'=>'🔧',  'color'=>'#db2777', 'ids'=>[135,103]],\n    ['key'=>'inne',          'label'=>'Inne',            'emoji'=>'📦',  'color'=>'#6b7280', 'ids'=>[8]],\n  ];\n  echo '<style>\n/* ── Grupowany picker kategorii ── */\n.pw-type-wrap{margin-top:8px}\n.pw-type-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}\n@media(max-width:480px){.pw-type-row{grid-template-columns:repeat(2,1fr)}}\n.pw-type-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:14px 8px 12px;border:2px solid #e8e4f0;border-radius:14px;background:#f8f7fc;cursor:pointer;transition:all 0.15s;text-align:center}\n.pw-type-btn:hover{border-color:var(--tw-clr);background:color-mix(in srgb,var(--tw-clr) 6%,#fff)}\n.pw-type-btn.sel{border-color:var(--tw-clr);background:color-mix(in srgb,var(--tw-clr) 8%,#fff)}\n.pw-type-icon{font-size:26px;line-height:1}\n.pw-type-name{font-size:12px;font-weight:700;color:#1a1a2e}\n.pw-type-btn.sel .pw-type-name{color:var(--tw-clr)}\n.pw-cat-section{display:none}\n.pw-cat-section.active{display:block}\n.pw-sec-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#888;margin:2px 0 8px;display:flex;align-items:center;gap:6px}\n.pw-sec-label::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--tw-clr)}\n.pw-cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}\n@media(max-width:480px){.pw-cat-grid{grid-template-columns:repeat(2,1fr)}}\n.polakw-cat-btn{padding:9px 6px;border:1.5px solid #e8e4f0;border-radius:10px;background:#fff;font-size:12px;color:#333;cursor:pointer;text-align:center;transition:all 0.15s;line-height:1.3}\n.polakw-cat-btn:hover{border-color:#7c3aed;color:#7c3aed;background:#f8f4ff}\n.polakw-cat-btn.sel{border-color:#7c3aed;background:#f3ebff;color:#7c3aed;font-weight:600}\n.pw-sub-label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#888;margin:12px 0 8px;display:none}\n.pw-sub-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}\n@media(max-width:480px){.pw-sub-grid{grid-template-columns:repeat(2,1fr)}}\n</style>\n<script>\n(function(){\nvar cats='.json_encode($cats_data).';\nvar groups='.json_encode($groups).';\nvar children={};\ncats.forEach(function(c){if(c.parent>0){if(!children[c.parent])children[c.parent]=[];children[c.parent].push(c);}});\n\nfunction setSelect2Val(sel,val){\n  if(!val)return;\n  var found=false;\n  for(var i=0;i<sel.options.length;i++){if(sel.options[i].value==val){found=true;break;}}\n  if(!found){var opt=document.createElement("option");opt.value=val;opt.text=val;sel.appendChild(opt);}\n  sel.value=val;\n  sel.dispatchEvent(new Event("change",{bubbles:true}));\n  sel.dispatchEvent(new Event("input",{bubbles:true}));\n  if(window.jQuery){jQuery(sel).val(val).trigger("change").trigger("select2:select");}\n}\n\nwindow._pwCatDone=false;\ndocument.addEventListener("DOMContentLoaded",function(){\n  if(window._pwCatDone)return; window._pwCatDone=true;\n  var sel=document.querySelector(".hp-field--select select,select[name*=categor]");\n  if(!sel)return;\n  var wrapper=sel.closest(".hp-form__field")||sel.parentElement;\n  sel.style.display="none";\n  var s2=sel.parentElement.querySelector(".select2-container");\n  if(s2)s2.style.display="none";\n  if(window.jQuery)setTimeout(function(){jQuery(sel).next(".select2-container").hide();},500);\n\n  var wrap=document.createElement("div");wrap.className="pw-type-wrap";\n  var typeRow=document.createElement("div");typeRow.className="pw-type-row";\n  wrap.appendChild(typeRow);\n  wrapper.appendChild(wrap);\n\n  // Usuń duplikaty\n  setTimeout(function(){\n    var all=document.querySelectorAll(".pw-type-wrap");\n    for(var d=1;d<all.length;d++) all[d].remove();\n  },100);\n\n  // Zbuduj sekcje kategorii (ukryte)\n  var sections={};\n  groups.forEach(function(g){\n    var sec=document.createElement("div");\n    sec.className="pw-cat-section";\n    sec.style.setProperty("--tw-clr",g.color);\n    var lbl=document.createElement("div");lbl.className="pw-sec-label";\n    lbl.style.setProperty("--tw-clr",g.color);\n    lbl.textContent=g.label;\n    sec.appendChild(lbl);\n    var grid=document.createElement("div");grid.className="pw-cat-grid";\n    var subLabel=document.createElement("div");subLabel.className="pw-sub-label";subLabel.textContent="Podkategoria";\n    var subGrid=document.createElement("div");subGrid.className="pw-sub-grid";\n    sec.appendChild(grid);sec.appendChild(subLabel);sec.appendChild(subGrid);\n    wrap.appendChild(sec);\n    sections[g.key]={sec:sec,grid:grid,subLabel:subLabel,subGrid:subGrid};\n\n    // Wypełnij kategorie w tej grupie\n    g.ids.forEach(function(catId){\n      var cat=cats.find(function(c){return c.id===catId||c.id===""+catId;});\n      if(!cat)return;\n      var btn=document.createElement("div");btn.className="polakw-cat-btn";\n      var emojis={"Elektronika":"📱","Motoryzacja":"🚗","Meble i Dom":"🛋️","Nieruchomości":"🏠","Praca":"💼","Usługi":"🔧","Rowery":"🚲","Transport":"🚐","Moda i odzież":"👗","Inne / Gratis":"📦","Dzieci i zabawki":"🧸","Sport i rekreacja":"⚽","Książki i edukacja":"📚","Zdrowie i uroda":"💊","Zwierzęta":"🐾"};\n      btn.textContent=(emojis[cat.name]||"📌")+" "+cat.name;\n      btn.dataset.catId=cat.id;\n      btn.addEventListener("click",function(){\n        document.querySelectorAll(".polakw-cat-btn").forEach(function(b){b.classList.remove("sel");});\n        btn.classList.add("sel");\n        subLabel.style.display="none";subGrid.innerHTML="";\n        var subs=children[cat.id]||[];\n        if(subs.length>0){\n          subLabel.style.display="block";\n          subs.forEach(function(sub){\n            var sb=document.createElement("div");sb.className="polakw-cat-btn";sb.textContent=sub.name;\n            sb.addEventListener("click",function(){\n              subGrid.querySelectorAll(".polakw-cat-btn").forEach(function(b){b.classList.remove("sel");});\n              sb.classList.add("sel");setSelect2Val(sel,sub.id);\n            });\n            subGrid.appendChild(sb);\n          });\n        } else {\n          setSelect2Val(sel,cat.id);\n        }\n      });\n      grid.appendChild(btn);\n    });\n  });\n\n  // Typ-btns\n  groups.forEach(function(g){\n    var btn=document.createElement("div");btn.className="pw-type-btn";\n    btn.style.setProperty("--tw-clr",g.color);\n    btn.innerHTML="<span class=\"pw-type-icon\">"+g.emoji+"</span><span class=\"pw-type-name\">"+g.label+"</span>";\n    btn.addEventListener("click",function(){\n      typeRow.querySelectorAll(".pw-type-btn").forEach(function(b){b.classList.remove("sel");});\n      btn.classList.add("sel");\n      Object.values(sections).forEach(function(s){s.sec.classList.remove("active");});\n      sections[g.key].sec.classList.add("active");\n      // Reset sub-grids\n      sections[g.key].subLabel.style.display="none";\n      sections[g.key].subGrid.innerHTML="";\n      document.querySelectorAll(".polakw-cat-btn").forEach(function(b){b.classList.remove("sel");});\n    });\n    typeRow.appendChild(btn);\n  });\n});\n})();\n</script>';\n});\n\n// ===================================================\n// PolakW.nl - ukryj oryginalny select kategorii\n// ===================================================\nadd_action('wp_head', function() {\n  if(strpos($_SERVER['REQUEST_URI'],'submit-listing')===false) return;\n  echo '<style>.hp-field--select .select2-container,.hp-field--select select{display:none !important;}</style>';\n});\n\n// ===================================================\n// PolakW.nl - CSS formularza dodawania ogloszen\n// ===================================================\nadd_action('wp_head', function() {\n  if(strpos($_SERVER['REQUEST_URI'],'submit-listing')===false) return;\n  echo '<style>\n.hp-field__label{font-size:11px !important;font-weight:700 !important;letter-spacing:0.05em !important;text-transform:uppercase !important;color:#111 !important;margin-bottom:6px !important;display:block !important;}\n.hp-field__description,.hp-field__description p{color:#555 !important;font-size:13px !important;font-weight:400 !important;text-transform:none !important;letter-spacing:0 !important;margin-top:4px !important;}\n.hp-form input[type=text],.hp-form input[type=number],.hp-form input[type=email],.hp-form input[type=tel],.hp-form input[type=url],.hp-form textarea{width:100% !important;padding:0.7rem 1rem !important;font-size:15px !important;color:#111 !important;background:#f8f7fc !important;border:1.5px solid #e8e4f0 !important;border-radius:10px !important;outline:none !important;transition:border-color 0.15s,box-shadow 0.15s !important;}\n.hp-form input:focus,.hp-form textarea:focus{border-color:#7c3aed !important;box-shadow:0 0 0 3px rgba(168,85,247,0.12) !important;background:#fff !important;}\n.hp-form textarea{min-height:120px !important;resize:vertical !important;}\n.hp-form__field:not(:last-child){margin-bottom:1.25rem !important;}\n.hp-form__messages:empty{display:none !important;}\n.hp-form [type=submit],.hp-form button[type=submit]{width:100% !important;padding:0.9rem !important;background:linear-gradient(135deg,#7c3aed,#db2777) !important;border:none !important;border-radius:100px !important;color:#fff !important;font-size:16px !important;font-weight:700 !important;cursor:pointer !important;margin-top:0.5rem !important;}\n.hp-form [type=submit]:hover{opacity:0.9 !important;}\n.iti{width:100% !important;}.iti input[type=tel]{padding-left:58px !important;}.iti__selected-flag{border-right:1px solid #e8e4f0 !important;}\n.hp-field--attachment-upload>div:first-child{border:1.5px dashed #c4b5fd !important;border-radius:10px !important;padding:1.2rem !important;background:#faf8ff !important;}\n</style>';\n});\n\n// ===================================================\n// PolakW.nl - Gmail SMTP\n// ===================================================\nadd_action('phpmailer_init', function($phpmailer) {\n  $phpmailer->isSMTP();\n  $phpmailer->Host = 'smtp.gmail.com';\n  $phpmailer->SMTPAuth = true;\n  $phpmailer->Port = 587;\n  $phpmailer->SMTPSecure = 'tls';\n  $phpmailer->Username = 'portalpolakwnl@gmail.com';\n  $phpmailer->Password = 'hnif bqys kahk wrxj';\n  $phpmailer->From = 'portalpolakwnl@gmail.com';\n  $phpmailer->FromName = 'PolakW.nl';\n});\n\n// ===================================================\n// PolakW.nl - autocapitalize + kierunkowy NL\n// ===================================================\nadd_action('wp_footer', function() {\n  echo '<script>\ndocument.addEventListener("DOMContentLoaded",function(){\n  document.querySelectorAll("input[name*=imie],input[name*=nazwisko],input[name*=first],input[name*=last]").forEach(function(el){\n    el.setAttribute("autocapitalize","words");\n    el.addEventListener("blur",function(){if(this.value)this.value=this.value.charAt(0).toUpperCase()+this.value.slice(1);});\n  });\n  function polakwFilterCountries(){jQuery(".iti__country").each(function(){var code=jQuery(this).attr("data-country-code");if(code&&["nl","de","be"].indexOf(code)===-1)jQuery(this).hide();});}\n  function polakwSetNL(){jQuery(".iti input[type=tel]").each(function(){var inst=this._iti;if(inst&&typeof inst.setCountry==="function"){var cur=inst.getSelectedCountryData();if(!cur||!cur.iso2)inst.setCountry("nl");}});}\n  jQuery(document).on("click",".iti__selected-dial-code,.iti__flag-container,.iti__selected-flag",function(){setTimeout(polakwFilterCountries,50);});\n  jQuery(document).on("hivepress:init",function(){setTimeout(function(){polakwSetNL();polakwFilterCountries();jQuery(".iti__flag-container").hide();jQuery(".iti input[type=tel]").css("padding-left","58px");},300);});\n  setTimeout(function(){polakwSetNL();jQuery(".iti__flag-container").hide();jQuery(".iti input[type=tel]").css("padding-left","58px");},800);\n});\n</script>';\n});\n\n// ===================================================\n// PolakW.nl - CSS rejestracji i logowania\n// ===================================================\nadd_action('wp_head', function() {\n  echo '<style>\n.hp-form--user-register,.hp-form--user-login{background:#fff !important;border-radius:16px !important;padding:1.5rem !important;}\n.hp-form--user-register .hp-field__label,.hp-form--user-login .hp-field__label,\n.hp-form--primary .hp-field__label,.hp-form--narrow .hp-field__label,.hp-form--narrow .hp-form__label{\n  font-size:11px !important;font-weight:700 !important;letter-spacing:0.05em !important;text-transform:uppercase !important;color:#111 !important;margin-bottom:6px !important;display:block !important;\n}\n.hp-form--user-register input,.hp-form--user-login input{width:100% !important;padding:0.75rem 1rem !important;font-size:15px !important;color:#111 !important;background:#f8f7fc !important;border:1.5px solid #e8e4f0 !important;border-radius:10px !important;outline:none !important;}\n.hp-form--user-register input:focus,.hp-form--user-login input:focus{border-color:#7c3aed !important;box-shadow:0 0 0 3px rgba(168,85,247,0.12) !important;background:#fff !important;}\n.hp-form--user-register [type=submit],.hp-form--user-login [type=submit]{width:100% !important;padding:0.9rem !important;background:linear-gradient(135deg,#7c3aed,#db2777) !important;border:none !important;border-radius:100px !important;color:#fff !important;font-size:16px !important;font-weight:700 !important;cursor:pointer !important;margin-top:0.5rem !important;}\n</style>';\n});\n\n// ===================================================\n// PolakW.nl - ogranicz kierunkowe do NL, DE, BE\n// ===================================================\nadd_filter('hivepress/v1/forms/user_register', function($form) {\n  if(isset($form['fields']['hp_numer_whatsapp'])){\n    $form['fields']['hp_numer_whatsapp']['countries'] = ['nl','de','be'];\n    $form['fields']['hp_numer_whatsapp']['country'] = 'nl';\n  }\n  return $form;\n});\nadd_filter('hivepress/v1/models/user/fields', function($fields) {\n  if(isset($fields['hp_numer_whatsapp'])){\n    $fields['hp_numer_whatsapp']['countries'] = ['nl','de','be'];\n    $fields['hp_numer_whatsapp']['country'] = 'nl';\n  }\n  return $fields;\n});\n\n// ===================================================\n// PolakW.nl - pole telefonu czysty wyglad\n// ===================================================\nadd_action('wp_head', function() {\n  echo '<style>\n.iti{width:100% !important;}\n.iti__flag-container{display:none !important;}\n.iti--separate-dial-code input[type=tel],.iti input[type=tel]{padding-left:58px !important;}\n</style>';\n});\n\n// ===================================================\n// PolakW.nl - mobile layout\n// ===================================================\nadd_action('wp_head', function() {\n  echo '<style>\n@media(max-width:767px){\n  .hp-listings--view-block,.hp-grid{grid-template-columns:repeat(2,1fr) !important;gap:10px !important;}\n  .hp-listing--view-block{min-width:0 !important;}\n  .hp-listing__badge,.hp-badge{left:4px !important;font-size:10px !important;padding:2px 6px !important;}\n  .hp-button--whatsapp,a[href*="whatsapp"]{font-size:11px !important;padding:6px 8px !important;white-space:nowrap !important;overflow:hidden !important;text-overflow:ellipsis !important;max-width:100% !important;}\n  div[style*="grid-template-columns:repeat(3,1fr)"],div[style*="grid-template-columns: repeat(3, 1fr)"]{grid-template-columns:repeat(2,1fr) !important;gap:8px !important;}\n  .elementor-posts-container,.hp-listings{grid-template-columns:repeat(2,1fr) !important;}\n  .hp-categories--view-block,.hp-grid--categories{grid-template-columns:repeat(2,1fr) !important;}\n  .elementor-widget-container>div[style*="grid"],div:has(>a.cat-card){grid-template-columns:repeat(2,1fr) !important;display:grid !important;}\n  .elementor-element:has(.elementor-counter){display:none !important;}\n}\n@media(max-width:480px){\n  .hp-listings--view-block,.hp-grid{grid-template-columns:repeat(2,1fr) !important;}\n}\n</style>';\n});\n\n// PolakW.nl - ukryj WC stopke (silniejszy selektor)\nadd_action('wp_head', function() {\n  echo '<style>\nbody .site-footer .footer-navbar,\nbody footer.site-footer .footer-navbar {\n  display: none !important;\n  visibility: hidden !important;\n  height: 0 !important;\n  overflow: hidden !important;\n}\n</style>';\n}, 999);\n\n// PolakW.nl - stopka: styl i responsywnosc\nadd_action('wp_head', function() {\n    echo '<style>\n.pw-footer{background:#05050f;padding:40px 0 0;width:100%}\n.pw-footer__inner{max-width:1200px;margin:0 auto;padding:0 24px}\n.pw-footer__logo{font-size:22px;font-weight:800;background:linear-gradient(135deg,#7c3aed,#db2777);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:8px;display:inline-block}\n.pw-footer__desc{color:#fff;font-size:14px;margin-bottom:28px}\n.pw-footer__grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:32px;margin-bottom:32px}@media(max-width:768px){.pw-footer__grid{grid-template-columns:1fr 1fr}}\n.pw-footer__col-title{color:#fff;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:14px}.pw-footer h4{color:#fff;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:0.06em;margin:0 0 14px}.pw-footer ul{list-style:none;margin:0;padding:0}\n.pw-footer a{display:block;color:#fff;text-decoration:none;font-size:14px;margin-bottom:10px}\n.pw-footer a:hover{color:#7c3aed}\n.pw-footer__bottom{border-top:1px solid #1a1a2e;padding:16px 0;color:#fff;font-size:12px;opacity:0.55;margin-top:4px}\n@media(max-width:480px){.pw-footer__grid{grid-template-columns:1fr;gap:24px}}\n</style>';\n}, 9999);\n\n\n// PolakW.nl - przekierowania slug\nadd_action('template_redirect', function() {\n    $redirects = [\n        'rejestracja'      => '/konto/',\n        'logowanie'        => '/konto/',\n        'regulamin'        => '/regulamin-serwisu-polakw-nl/',\n        'dodaj-ogloszenie' => '/dodaj-ogloszenie/',\n    ];\n    $slug = trim(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH), '/');\n    if (isset($redirects[$slug])) {\n        wp_redirect(home_url($redirects[$slug]), 301);\n        exit;\n    }\n});\n\n\n// PolakW.nl - styl stron WooCommerce (konto, logowanie, koszyk)\nadd_action('wp_head', function() {\n    if (!is_account_page() && !is_cart() && !is_checkout()) return;\n    echo '<style>\n.woocommerce-MyAccount-navigation ul{list-style:none;padding:0;margin:0 0 24px}\n.woocommerce-MyAccount-navigation li a{display:block;padding:10px 16px;color:#1a1a2e;border-radius:6px;text-decoration:none;font-weight:500;transition:background 0.15s}\n.woocommerce-MyAccount-navigation li.is-active a,\n.woocommerce-MyAccount-navigation li a:hover{background:linear-gradient(135deg,#7c3aed,#db2777);color:#fff}\n.woocommerce-form input,.woocommerce-Input{border:1px solid #e0e0e0 !important;border-radius:6px !important;padding:10px 14px !important}\n.woocommerce-Button,.woocommerce button[type=submit],.woocommerce-form .button{background:linear-gradient(135deg,#7c3aed,#db2777) !important;color:#fff !important;border:none !important;border-radius:50px !important;padding:12px 32px !important;font-weight:700 !important;cursor:pointer}\n.woocommerce-notices-wrapper .woocommerce-message{border-top-color:#7c3aed}\n.woocommerce-account .woocommerce h2{color:#1a1a2e;font-weight:700;margin-bottom:16px}\n</style>';\n}, 20);\n\n\n// PolakW.nl - styl stron prawnych\nadd_action('wp_head', function() {\n    if (!is_singular() || !in_array(get_the_ID(), [145, 143])) return;\n    echo '<style>\n.site-content .container{max-width:820px;margin:40px auto;padding:0 24px}\n.site-content .container p{color:#333;font-size:15px;line-height:1.85;margin-bottom:12px}\n.site-content .container h1,.site-content .container h2{color:#1a1a2e;font-weight:700;margin:28px 0 10px;padding-bottom:8px;border-bottom:2px solid #f0f0f0}\n.site-content .container h1{font-size:26px;border-bottom:3px solid #7c3aed}\n.site-content .container ul{padding-left:20px;margin:8px 0 16px}\n.site-content .container li{color:#444;font-size:15px;line-height:1.7;margin-bottom:4px}\n.page-title{color:#1a1a2e;font-size:26px;font-weight:800;margin-bottom:24px}\n</style>';\n}, 20);\n\n// PolakW.nl - formularz ogloszen: ukryj duplikat kategorii (dropdown), zostaw tylko kafle\nadd_action('wp_head', function() {\n    if (!is_page(322) && strpos($_SERVER["REQUEST_URI"] ?? "", "submit-listing") === false) return;\n    echo '<style>\n/* Ukryj drugi blok kategorii (dropdown select) - zostaw tylko kafle */\n.hp-form--listing-submit .hp-field--categories > .hp-field__control > select {\n    display: none !important;\n}\n/* Stan - upewnij sie ze jest dropdown */\n.hp-form--listing-submit .hp-field--stan .hp-field__control {\n    position: relative;\n}\n</style>';\n}, 20);\n\n\n// PolakW.nl - tlumaczenia brakujacych stringow WooCommerce\nadd_filter('gettext', function($translated, $text, $domain) {\n    $translations = [\n        'Your cart is currently empty!' => 'Twój koszyk jest pusty!',\n        'New in store'                  => 'Nowości w sklepie',\n        'Return to shop'                => 'Wróć do sklepu',\n        'Cart totals'                   => 'Podsumowanie koszyka',\n        'Proceed to checkout'           => 'Przejdź do kasy',\n        'Subtotal'                      => 'Suma częściowa',\n        'Shipping'                      => 'Dostawa',\n        'Total'                         => 'Łącznie',\n        'Apply coupon'                  => 'Zastosuj kupon',\n        'Update cart'                   => 'Aktualizuj koszyk',\n        'Coupon code'                   => 'Kod kuponu',\n        'Place order'                   => 'Złóż zamówienie',\n        'Your order'                    => 'Twoje zamówienie',\n        'Have a coupon?'                => 'Masz kupon?',\n        'Billing details'               => 'Dane do faktury',\n        'Order notes'                   => 'Uwagi do zamówienia',\n        'My account'                    => 'Moje konto',\n        'Lost your password?'           => 'Zapomniałeś hasła?',\n        'Remember me'                   => 'Zapamiętaj mnie',\n        'Log in'                        => 'Zaloguj się',\n        'Register'                      => 'Zarejestruj się',\n        'No account yet?'               => 'Nie masz konta?',\n        'Username or email address'     => 'Nazwa użytkownika lub e-mail',\n        'Password'                      => 'Hasło',\n        'Product'                       => 'Produkt',\n        'Price'                         => 'Cena',\n        'Remove'                        => 'Usuń',\n        'Add to cart'                   => 'Dodaj do koszyka',\n        'Shop'                          => 'Sklep',\n    ];\n    return isset($translations[$text]) ? $translations[$text] : $translated;\n}, 10, 3);\n\n// PolakW.nl - obrazki produktow WooCommerce (placeholder zastap ikonami)\nadd_action('wp_head', function() {\n    if (!is_cart() && !is_shop() && !is_product()) return;\n    echo '<style>\n.woocommerce-cart-form .woocommerce-cart-form__cart-item .woocommerce-cart-form__cart-item--product-thumbnail img[src*="placeholder"] {\n    opacity: 0.3;\n}\n.woocommerce ul.products li.product .woocommerce-loop-product__title {\n    color: #1a1a2e;\n    font-weight: 700;\n}\n.woocommerce ul.products li.product .price {\n    color: #7c3aed;\n    font-weight: 700;\n}\n.woocommerce ul.products li.product .button {\n    background: linear-gradient(135deg,#7c3aed,#db2777);\n    color: #fff;\n    border-radius: 50px;\n    border: none;\n    font-weight: 700;\n}\n.woocommerce ul.products li.product .button:hover {\n    background: linear-gradient(135deg,#db2777,#7c3aed);\n    color: #fff;\n}\n.woocommerce .cart-empty { text-align:center; padding:40px; font-size:18px; color:#666; }\n.woocommerce .return-to-shop .button {\n    background: linear-gradient(135deg,#7c3aed,#db2777);\n    color: #fff;\n    border-radius: 50px;\n    padding: 12px 32px;\n    font-weight: 700;\n}\n.wc-empty-cart-message { font-size:16px; color:#444; }\n</style>';\n}, 20);\n\n// PolakW.nl - ukryj zdublowany dropdown kategorii w formularzu HP (zostaw tylko kafle)\nadd_action('wp_head', function() {\n    if (strpos($_SERVER["REQUEST_URI"] ?? "", "submit-listing") === false) return;\n    echo '<style>\n.hp-form--listing-submit .hp-field--categories .choices { display:none !important; }\n.hp-form--listing-submit .hp-field--categories select { display:none !important; }\n.polakw-cat-wrap { display:none !important; }\n</style>';\n}, 20);\n\n\n// pw_buy handler przeniesiony do systemu promowania\n\n\n// PolakW.nl - styl checkout i koszyka\nadd_action('wp_head', function() {\n    if (!is_checkout() && !is_cart() && !is_page(269)) return;\n    echo '<style>\n/* Checkout - ogolny styl */\n.woocommerce-checkout,\n.woocommerce-cart { background:#f8f8fc; }\n\n/* Tytul strony */\n.page-title, .woocommerce-checkout h1, h1.page-title {\n    background: linear-gradient(135deg,#7c3aed,#db2777);\n    -webkit-background-clip: text;\n    -webkit-text-fill-color: transparent;\n    font-weight: 800;\n}\n\n/* Sekcje formularza */\n.woocommerce-billing-fields h3,\n.woocommerce-shipping-fields h3,\n.woocommerce-additional-fields h3,\n#order_review_heading,\n.wc_payment_methods + h3 {\n    color: #1a1a2e;\n    font-size: 16px;\n    font-weight: 700;\n    padding-bottom: 8px;\n    border-bottom: 2px solid #7c3aed;\n    margin-bottom: 16px;\n}\n\n/* Inputy */\n.woocommerce form .form-row input.input-text,\n.woocommerce form .form-row select,\n.woocommerce form .form-row textarea {\n    border: 1.5px solid #e0e0ef !important;\n    border-radius: 8px !important;\n    padding: 12px 14px !important;\n    font-size: 14px !important;\n    background: #fff !important;\n    transition: border-color 0.2s;\n}\n.woocommerce form .form-row input.input-text:focus,\n.woocommerce form .form-row select:focus {\n    border-color: #7c3aed !important;\n    outline: none !important;\n    box-shadow: 0 0 0 3px rgba(168,85,247,0.1) !important;\n}\n\n/* Podsumowanie zamowienia */\n.woocommerce-checkout-review-order-table,\n.shop_table {\n    border-radius: 12px !important;\n    overflow: hidden;\n    border: 1px solid #e8e8f0 !important;\n    background: #fff;\n}\n.woocommerce-checkout-review-order-table th,\n.shop_table th {\n    background: linear-gradient(135deg,#7c3aed,#db2777) !important;\n    color: #fff !important;\n    font-weight: 700;\n    padding: 12px 16px !important;\n    border: none !important;\n}\n.woocommerce-checkout-review-order-table td,\n.shop_table td {\n    padding: 14px 16px !important;\n    border-bottom: 1px solid #f0f0f8 !important;\n    color: #1a1a2e;\n    font-weight: 500;\n}\n.woocommerce-checkout-review-order-table .order-total td,\n.woocommerce-checkout-review-order-table .order-total th {\n    font-size: 18px !important;\n    font-weight: 800 !important;\n    color: #7c3aed !important;\n    background: #f8f4ff !important;\n}\n\n/* Miniaturka produktu w checkout */\n.woocommerce-checkout-review-order-table .woocommerce-table__product-name a {\n    color: #1a1a2e;\n    font-weight: 600;\n}\n.product-thumbnail { \n    width: 64px !important;\n    text-align: center;\n}\n.pw-product-thumb {\n    width: 56px;\n    height: 56px;\n    border-radius: 10px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 26px;\n    margin: 0 auto;\n}\n\n/* Przycisk zamow */\n#place_order,\n.woocommerce-cart .checkout-button {\n    background: linear-gradient(135deg,#7c3aed,#db2777) !important;\n    color: #fff !important;\n    border: none !important;\n    border-radius: 50px !important;\n    padding: 16px 40px !important;\n    font-size: 16px !important;\n    font-weight: 700 !important;\n    width: 100% !important;\n    cursor: pointer !important;\n    transition: opacity 0.2s !important;\n    letter-spacing: 0.02em !important;\n}\n#place_order:hover { opacity: 0.88 !important; }\n\n/* Sekcja platnosci */\n#payment { \n    background: #fff !important;\n    border-radius: 12px !important;\n    border: 1px solid #e8e8f0 !important;\n    padding: 20px !important;\n}\n.woocommerce-checkout #payment ul.payment_methods {\n    border-bottom: 1px solid #f0f0f8 !important;\n    padding-bottom: 16px !important;\n    margin-bottom: 16px !important;\n}\n\n/* Kupon */\n.woocommerce-checkout .showcoupon,\n.woocommerce-checkout .woocommerce-form-coupon-toggle {\n    color: #7c3aed;\n}\n\n/* Wróć do koszyka */\n.wc-backward, .return-to-shop a {\n    color: #7c3aed !important;\n    font-weight: 600;\n}\n</style>';\n}, 20);\n\n// PolakW.nl - ikony produktow w checkout zamiast placeholder\nadd_filter('woocommerce_order_item_thumbnail', function($image, $item) {\n    $product_id = $item->get_product_id();\n    $icons = [\n        373 => ['icon' => '⭐', 'bg' => '#fef3c7'],\n        374 => ['icon' => '🚀', 'bg' => '#f3e8ff'],\n        375 => ['icon' => '💎', 'bg' => '#fce7f3'],\n        376 => ['icon' => '📢', 'bg' => '#dbeafe'],\n        381 => ['icon' => '📣', 'bg' => '#d1fae5'],\n        382 => ['icon' => '📡', 'bg' => '#ffe4e6'],\n    ];\n    if (isset($icons[$product_id])) {\n        $i = $icons[$product_id];\n        return '<div class="pw-product-thumb" style="background:' . $i['bg'] . '">' . $i['icon'] . '</div>';\n    }\n    return $image;\n}, 10, 2);\n\n\n// PolakW.nl - EAEL checkout dodatkowy CSS\nadd_action('wp_head', function() {\n    if (!is_checkout() && !is_page(269)) return;\n    echo '<style>\n/* EAEL Checkout - tytuly sekcji */\n.eael-checkout .eael-checkout__heading,\n.eael-checkout h2, .eael-checkout h3 {\n    color: #1a1a2e !important;\n    font-weight: 700 !important;\n    border-bottom: 2px solid #7c3aed !important;\n    padding-bottom: 8px !important;\n    margin-bottom: 16px !important;\n}\n/* EAEL - inputy */\n.eael-checkout input[type="text"],\n.eael-checkout input[type="email"],\n.eael-checkout input[type="tel"],\n.eael-checkout select,\n.eael-checkout textarea {\n    border: 1.5px solid #e0e0ef !important;\n    border-radius: 8px !important;\n    padding: 12px 14px !important;\n}\n.eael-checkout input:focus,\n.eael-checkout select:focus {\n    border-color: #7c3aed !important;\n    box-shadow: 0 0 0 3px rgba(168,85,247,0.1) !important;\n}\n/* EAEL - przycisk zamow */\n.eael-checkout .eael-checkout__place-order-btn,\n.eael-checkout button[type="submit"],\n.eael-checkout #place_order {\n    background: linear-gradient(135deg,#7c3aed,#db2777) !important;\n    color: #fff !important;\n    border: none !important;\n    border-radius: 50px !important;\n    padding: 16px 40px !important;\n    font-size: 16px !important;\n    font-weight: 700 !important;\n    width: 100% !important;\n    cursor: pointer !important;\n}\n/* EAEL - podsumowanie zamowienia */\n.eael-checkout .eael-checkout__order-review table,\n.eael-checkout .woocommerce-checkout-review-order-table {\n    border-radius: 12px !important;\n    overflow: hidden !important;\n    border: 1px solid #e8e8f0 !important;\n}\n.eael-checkout .eael-checkout__order-review th {\n    background: linear-gradient(135deg,#7c3aed,#db2777) !important;\n    color: #fff !important;\n    padding: 12px 16px !important;\n}\n.eael-checkout .order-total .amount,\n.eael-checkout .woocommerce-Price-amount {\n    color: #7c3aed !important;\n    font-weight: 800 !important;\n}\n/* Ikona produktu placeholder */\n.eael-checkout .product-thumbnail,\n.eael-checkout td.product-thumbnail {\n    background: #f3e8ff;\n    border-radius: 8px;\n    text-align: center;\n    font-size: 24px;\n    padding: 8px !important;\n    width: 60px !important;\n}\n/* Strona zamowienia - tlo */\n.eael-woo-checkout .eael-checkout {\n    background: #f8f8fc;\n    border-radius: 16px;\n    padding: 24px;\n}\n</style>';\n}, 25);\n\n\n// PolakW.nl - checkout przycisk i sekcje - precyzyjne selektory\nadd_action('wp_head', function() {\n    if (!is_checkout() && !is_page(269)) return;\n    echo '<style>\n/* Przycisk Kupuje i place */\nbutton#place_order,\ninput#place_order,\n.woocommerce button[name="woocommerce_checkout_place_order"],\nform.checkout button[type="submit"] {\n    background: linear-gradient(135deg,#7c3aed,#db2777) !important;\n    color: #fff !important;\n    border: none !important;\n    border-radius: 50px !important;\n    padding: 16px 40px !important;\n    font-size: 16px !important;\n    font-weight: 700 !important;\n    width: 100% !important;\n    letter-spacing: 0.02em !important;\n}\n/* Dane kontaktowe heading */\n.woocommerce h3#order_review_heading,\n.woocommerce-billing-fields > h3,\n.woocommerce-account-fields > h3,\nform.checkout h3 {\n    color: #1a1a2e !important;\n    font-weight: 700 !important;\n    padding-bottom: 8px !important;\n    border-bottom: 2px solid #7c3aed !important;\n}\n/* Inputy checkout */\nform.checkout .input-text,\nform.checkout select {\n    border: 1.5px solid #e0e0ef !important;\n    border-radius: 8px !important;\n}\nform.checkout .input-text:focus,\nform.checkout select:focus {\n    border-color: #7c3aed !important;\n    box-shadow: 0 0 0 3px rgba(168,85,247,0.12) !important;\n}\n/* Tabela podsumowania */\ntable.woocommerce-checkout-review-order-table th {\n    background: linear-gradient(135deg,#7c3aed,#db2777) !important;\n    color: #fff !important;\n}\ntable.woocommerce-checkout-review-order-table .order-total .amount {\n    color: #7c3aed !important;\n    font-size: 1.2rem !important;\n    font-weight: 800 !important;\n}\n/* Placeholder ikony produktu */\ntable.woocommerce-checkout-review-order-table td.product-thumbnail {\n    background: #f3e8ff !important;\n    border-radius: 8px !important;\n    font-size: 1.5rem !important;\n    text-align: center !important;\n}\n</style>';\n}, 30);\n\n\n// PolakW.nl - WooCommerce Blocks checkout CSS (precyzyjne selektory)\nadd_action('wp_head', function() {\n    if (!is_checkout() && !is_page(269)) return;\n    echo '<style>\n/* Przycisk Kupuje i place - WC Blocks */\n.wc-block-components-checkout-place-order-button,\n.wc-block-components-button.contained {\n    background: linear-gradient(135deg,#7c3aed,#db2777) !important;\n    color: #fff !important;\n    border: none !important;\n    border-radius: 50px !important;\n    padding: 16px 32px !important;\n    font-size: 16px !important;\n    font-weight: 700 !important;\n    letter-spacing: 0.02em !important;\n}\n.wc-block-components-checkout-place-order-button:hover {\n    opacity: 0.88 !important;\n}\n\n/* Tytul strony */\nh1.wp-block-post-title, .entry-title, h1 {\n    font-weight: 800 !important;\n}\n\n/* Sekcje checkout blocks */\n.wc-block-components-checkout-step__title,\n.wp-block-woocommerce-checkout-contact-information-block h2,\n.wp-block-woocommerce-checkout-billing-address-block h2,\n.wp-block-woocommerce-checkout-payment-block h2,\n.wc-block-checkout__sidebar-sticky-position h2 {\n    color: #1a1a2e !important;\n    font-size: 16px !important;\n    font-weight: 700 !important;\n    border-bottom: 2px solid #7c3aed !important;\n    padding-bottom: 8px !important;\n    margin-bottom: 16px !important;\n}\n\n/* Inputy WC Blocks */\n.wc-block-components-text-input input,\n.wc-block-components-country-input input,\n.wc-block-components-select select {\n    border: 1.5px solid #e0e0ef !important;\n    border-radius: 8px !important;\n    padding: 12px 14px !important;\n}\n.wc-block-components-text-input input:focus,\n.wc-block-components-country-input input:focus {\n    border-color: #7c3aed !important;\n    box-shadow: 0 0 0 3px rgba(168,85,247,0.12) !important;\n    outline: none !important;\n}\n\n/* Podsumowanie - sidebar */\n.wc-block-checkout__sidebar {\n    background: #fff !important;\n    border-radius: 16px !important;\n    border: 1px solid #e8e8f0 !important;\n    padding: 20px !important;\n}\n.wc-block-components-order-summary-item__description {\n    color: #666 !important;\n    font-size: 13px !important;\n}\n.wc-block-components-totals-item__value.wc-block-components-totals-footer-item-tax-value,\n.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {\n    color: #7c3aed !important;\n    font-weight: 800 !important;\n    font-size: 1.1rem !important;\n}\n\n/* Ikona produktu w podsumowaniu */\n.wc-block-components-order-summary-item__image img {\n    border-radius: 8px !important;\n}\n.wc-block-components-order-summary-item__image {\n    background: #f3e8ff !important;\n    border-radius: 8px !important;\n    overflow: hidden !important;\n}\n\n/* Metody platnosci */\n.wc-block-components-payment-method-label {\n    font-weight: 600 !important;\n    color: #1a1a2e !important;\n}\n\n/* Tlo strony checkout */\n.wp-block-woocommerce-checkout {\n    background: #f8f8fc !important;\n}\n.wc-block-checkout__main {\n    background: #fff !important;\n    border-radius: 16px !important;\n    padding: 24px !important;\n    border: 1px solid #e8e8f0 !important;\n}\n</style>';\n}, 35);\n\n\n// PolakW.nl - floating labels fix + ikona PNG zamiast SVG emoji\nadd_action('wp_head', function() {\n    if (!is_checkout()) return;\n    echo '<style>\n/* Floating label - normalny stan */\n.wc-block-components-text-input label,\n.wc-block-components-select label {\n    color: #9ca3af !important;\n    font-size: 14px !important;\n    font-weight: 400 !important;\n    pointer-events: none !important;\n}\n/* Floating label - aktywny / wypelniony */\n.wc-block-components-text-input.is-active label,\n.wc-block-components-text-input input:not(:placeholder-shown) + label,\n.wc-block-components-text-input.has-value label {\n    font-size: 11px !important;\n    color: #7c3aed !important;\n    font-weight: 600 !important;\n    top: 8px !important;\n}\n/* Input tekst - nie nachodzi na label */\n.wc-block-components-text-input input {\n    padding-top: 22px !important;\n    padding-bottom: 6px !important;\n    height: 56px !important;\n    font-size: 15px !important;\n    color: #1a1a2e !important;\n    font-weight: 500 !important;\n}\n/* Select kraj */\n.wc-block-components-country-input .wc-block-components-select-input {\n    padding-top: 22px !important;\n    padding-bottom: 6px !important;\n    height: 56px !important;\n    font-size: 15px !important;\n}\n/* Ikona produktu - tlo kolorowe zamiast obcietego emoji */\n.wc-block-components-order-summary-item__image {\n    width: 56px !important;\n    height: 56px !important;\n    min-width: 56px !important;\n    border-radius: 12px !important;\n    background: linear-gradient(135deg,#f3e8ff,#fce7f3) !important;\n    overflow: hidden !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n    font-size: 28px !important;\n}\n.wc-block-components-order-summary-item__image img {\n    width: 56px !important;\n    height: 56px !important;\n    object-fit: contain !important;\n    padding: 4px !important;\n}\n/* Heading checkout steps - wyraxne */\n.wc-block-components-checkout-step__title {\n    font-size: 17px !important;\n    font-weight: 800 !important;\n    color: #1a1a2e !important;\n    border-bottom: 3px solid #7c3aed !important;\n    padding-bottom: 10px !important;\n    margin-bottom: 20px !important;\n    display: block !important;\n}\n/* Validation error */\n.wc-block-components-validation-error p {\n    color: #ef4444 !important;\n    font-size: 12px !important;\n    font-weight: 500 !important;\n}\n/* Input border - wyraxny */\n.wc-block-components-text-input input,\n.wc-block-components-country-input .wc-block-components-select-input {\n    border: 2px solid #e5e7eb !important;\n    border-radius: 10px !important;\n}\n.wc-block-components-text-input.is-active input,\n.wc-block-components-text-input input:focus {\n    border-color: #7c3aed !important;\n    box-shadow: 0 0 0 3px rgba(168,85,247,0.1) !important;\n}\n</style>';\n}, 55);\n\n\n// ============================================================\n\n// PolakW.nl - system promowania ogloszen\nrequire_once get_stylesheet_directory() . '/pw-promote.php';\n\n\n\n\n\n\n// ===== FORMULARZ SUBMIT - poprawki UI =====\nadd_action('wp_head','pw_submit_form_fixes',5);\nfunction pw_submit_form_fixes(){\n    if(strpos($_SERVER['REQUEST_URI'],'submit-listing')===false) return;\n    // Pobierz email zalogowanego uzytkownika\n    $email = is_user_logged_in() ? wp_get_current_user()->user_email : '';\n    echo '<style>\n    /* Ukryj pole hp_cena i hp_stan z naszego customowego kodu - HP ma wlasne */\n    #pw-cena-field, #pw-stan-field { display:none!important; }\n    /* Ukryj pole "email" jesli HP je pokazuje - bedzie hidden */\n    .hp-field--email:not(.hp-field--whatsapp) { display:none!important; }\n    </style>';\n    echo '<script>\n(function(){\ndocument.addEventListener("DOMContentLoaded", function(){\n    // Auto-wypelnij email z profilu jesli jest pole email\n    var emailVal = ' . json_encode($email) . ';\n    if(emailVal){\n        var emailInputs = document.querySelectorAll("input[name*=email], input[type=email]");\n        emailInputs.forEach(function(inp){\n            if(!inp.value) inp.value = emailVal;\n        });\n    }\n    // Zmien step pola cena HP na 0.01\n    function fixCenaStep(){\n        var cena = document.querySelector("input[name=cena]");\n        if(cena){ cena.step = "0.01"; cena.placeholder = "np. 14.99"; }\n    }\n    fixCenaStep();\n    setTimeout(fixCenaStep, 1000);\n    setTimeout(fixCenaStep, 2000);\n});\n})();\n<\/script>';\n}\n\n\n// ===== NAPRAWA FORMULARZA SUBMIT =====\nadd_action('wp_head','pw_fix_submit_form',5);\nfunction pw_fix_submit_form(){\n    if(strpos($_SERVER['REQUEST_URI'],'submit-listing')===false) return;\n    $user = wp_get_current_user();\n    $email = $user ? esc_js($user->user_email) : '';\n    $wa = '';\n    if($user){\n        $wa = get_user_meta($user->ID,'hp_numer_whatsapp',true);\n        if(!$wa) $wa = get_user_meta($user->ID,'billing_phone',true);\n    }\n    $wa = esc_js($wa);\n    $loc = '';\n    if($user){\n        $loc_raw = get_user_meta($user->ID,'hp_location',true);\n        if($loc_raw) $loc = esc_js($loc_raw);\n    }\n    echo '<style>\n    /* Ukryj nasze duplikaty */\n    #pw-cena-field,#pw-stan-field{display:none!important;}\n    /* Ukryj pola ktore wypelniaja sie z profilu */\n    .hp-form__field--tel{display:none!important;}\n    .hp-form__field--location input{background:#f0f0f5!important;color:#888!important;cursor:not-allowed!important;}\n    .hp-form__field--location label::after{content:" (z profilu)";font-size:11px;color:#7c3aed;font-weight:400;}\n    </style>';\n    echo '<script>\n(function(){\n  var _email=' . json_encode($email) . ';\n  var _wa=' . json_encode($wa) . ';\n  var _loc=' . json_encode($loc) . ';\n  function pwAutoFill(){\n    // Ukryj telefon, ale lokalizacje tylko zablokuj i wypelnij z profilu\n    document.querySelectorAll(".hp-form__field--tel").forEach(function(f){f.style.setProperty("display","none","important");});\n    // Auto-wypelnij lokalizacje z profilu i zablokuj edycje\n    var locField=document.querySelector(".hp-form__field--location input");\n    if(locField&&_loc&&locField.value===""){\n      locField.value=_loc;\n      locField.setAttribute("readonly","readonly");\n      locField.dispatchEvent(new Event("input",{bubbles:true}));\n      locField.dispatchEvent(new Event("change",{bubbles:true}));\n    } else if(locField&&locField.value===""&&_loc){\n      locField.value=_loc;\n      locField.setAttribute("readonly","readonly");\n    }\n    // MutationObserver dla tel\n    if(!window._pwHideObs){\n      window._pwHideObs=new MutationObserver(function(){\n        document.querySelectorAll(".hp-form__field--tel").forEach(function(f){\n          if(f.offsetHeight>0) f.style.setProperty("display","none","important");\n        });\n        var lf=document.querySelector(".hp-form__field--location input");\n        if(lf&&_loc&&lf.value===""){ lf.value=_loc; lf.setAttribute("readonly","readonly"); lf.dispatchEvent(new Event("input",{bubbles:true})); }\n      });\n      window._pwHideObs.observe(document.body,{childList:true,subtree:true});\n    }\n    // Ukryj i auto-wypelnij WhatsApp\n    document.querySelectorAll(".hp-form__field").forEach(function(f){\n      var label=f.querySelector("label,.hp-field__label");\n      var txt=label?label.textContent.trim():"";\n      // WhatsApp - ukryj i wypelnij z profilu\n      if(txt.includes("WhatsApp")||txt.includes("whatsapp")){\n        var inp=f.querySelector("input");\n        if(inp&&_wa&&inp.value===""){inp.value=_wa;inp.dispatchEvent(new Event("input",{bubbles:true}));}\n        f.style.display="none";\n      }\n      // Email - ukryj i wypelnij z profilu\n      if(inp=f.querySelector("input[type=email]")){\n        if(_email&&inp.value===""){inp.value=_email;inp.dispatchEvent(new Event("input",{bubbles:true}));}\n        f.style.display="none";\n      }\n    });\n    // Lokalizacja - auto-wypelnij jesli pusta\n    if(_loc){\n      var locInp=document.querySelector("input[name=location]");\n      if(locInp&&locInp.value===""){locInp.value=_loc;locInp.dispatchEvent(new Event("input",{bubbles:true}));}\n    }\n  }\n  document.addEventListener("DOMContentLoaded",pwAutoFill);\n  setTimeout(pwAutoFill,600);\n  setTimeout(pwAutoFill,1500);\n  setTimeout(pwAutoFill,3000);\n})();\n</sc' . 'ript>';\n}\n\n\n// ===== FILTR FORMULARZA HP - USUNIECIE POL Z PROFILU =====\nadd_filter('hivepress/v1/forms/listing_submit','pw_filter_listing_form',10,1);\nfunction pw_filter_listing_form($form){\n    if(!is_user_logged_in()) return $form;\n    $user_id = get_current_user_id();\n    $user = get_userdata($user_id);\n    \n    // Zawsze dodaj Cena i Stan\n    $stan_opts = get_post_meta(297,'hp_options',true);\n    if(empty($stan_opts)) $stan_opts = ['nowy'=>'Nowy','uzywany'=>'Używany','uszkodzony'=>'Uszkodzony'];\n    $form['fields']['cena'] = [\n        'label' => 'Cena (€)',\n        'type' => 'number',\n        'min_value' => 0,\n        'placeholder' => '0',\n        'description' => '',\n        'order' => 25,\n        'required' => true,\n    ];\n    $form['fields']['stan'] = [\n        'label' => 'Stan',\n        'type' => 'select',\n        'options' => $stan_opts,\n        'placeholder' => 'Wybierz stan',\n        'order' => 30,\n        'required' => false,\n    ];\n    if(isset($form['fields']['title'])) $form['fields']['title']['order'] = 20;\n    // Usun pole WhatsApp z formularza - bedzie z profilu  \n    if(isset($form['fields']['numer_whatsapp'])) unset($form['fields']['numer_whatsapp']);\n    if(isset($form['fields']['numer-whatsapp'])) unset($form['fields']['numer-whatsapp']);\n    // Miasto — proste pole tekstowe (zamiast geolokalizacji HP)\n    $form['fields']['miasto'] = [\n        'label'       => 'Miasto',\n        'type'        => 'text',\n        'placeholder' => 'np. Amsterdam',\n        'order'       => 35,\n        'required'    => true,\n    ];\n    if(isset($form['fields']['location'])) unset($form['fields']['location']);\n    return $form;\n}\n\n// Przy zapisie ogłoszenia - uzupelnij lokalizacje i WA z profilu\nadd_action('hivepress/v1/models/listing/create','pw_autofill_from_profile',5,2);\nadd_action('hivepress/v1/models/listing/update','pw_autofill_from_profile',5,2);\nfunction pw_autofill_from_profile($listing_id, $listing=null){\n    if(!is_user_logged_in()) return;\n    $user_id = get_current_user_id();\n    \n    // Miasto z formularza lub profilu\n    $miasto_post = isset($_POST['miasto']) ? sanitize_text_field($_POST['miasto']) : '';\n    if($miasto_post) {\n        update_post_meta($listing_id,'hp_miasto',$miasto_post);\n        update_post_meta($listing_id,'hp_location',$miasto_post);\n    } else {\n        $loc = get_user_meta($user_id,'hp_location',true);\n        if($loc && !get_post_meta($listing_id,'hp_miasto',true)){\n            $city = trim(explode(',', $loc)[0]);\n            update_post_meta($listing_id,'hp_miasto',$city);\n            update_post_meta($listing_id,'hp_location',$city);\n        }\n    }\n    \n    // WhatsApp z profilu\n    $wa = get_user_meta($user_id,'hp_numer_whatsapp',true);\n    if(!$wa) $wa = get_user_meta($user_id,'hp_whatsapp_number',true);\n    if($wa && !get_post_meta($listing_id,'hp_numer_whatsapp',true)){\n        update_post_meta($listing_id,'hp_numer_whatsapp',$wa);\n    }\n    \n    // Email z profilu\n    $user = get_userdata($user_id);\n    if($user && !get_post_meta($listing_id,'hp_email',true)){\n        update_post_meta($listing_id,'hp_email',$user->user_email);\n    }\n}\n\n\n// ===== NAPRAWA POPUPU KONTAKTOWEGO =====\nadd_action('wp_head','pw_fix_popup_css',5);\nfunction pw_fix_popup_css(){\n    echo '<style>\n    /* Naprawa popupu Odpowiedz na ogloszenie */\n    .hp-popup__content .hp-form__button,\n    .hp-form--listing-make-offer .hp-form__button,\n    .hp-popup .hp-form__button {\n        background: linear-gradient(135deg, #7c3aed, #db2777) !important;\n        color: #fff !important;\n        border: none !important;\n        border-radius: 50px !important;\n        padding: 14px 28px !important;\n        font-weight: 700 !important;\n        font-size: 16px !important;\n        width: 100% !important;\n    }\n    .hp-popup__overlay { background: rgba(0,0,0,0.6) !important; }\n    .hp-popup__content {\n        border-radius: 20px !important;\n        padding: 32px !important;\n        max-width: 500px !important;\n        width: 90% !important;\n    }\n    .hp-popup__title {\n        font-size: 24px !important;\n        font-weight: 800 !important;\n        color: #111 !important;\n        margin-bottom: 20px !important;\n    }\n    .hp-form__field textarea {\n        border: 1.5px solid #e8e4f0 !important;\n        border-radius: 12px !important;\n        padding: 12px 16px !important;\n        font-size: 15px !important;\n        min-height: 120px !important;\n        width: 100% !important;\n        resize: vertical !important;\n    }\n    </style>';\n}\n\n\n// ===== REDIRECT - POMIŃ KROK 1 =====\nadd_action('template_redirect','pw_skip_listing_step1');\nfunction pw_skip_listing_step1(){\n    if(!is_user_logged_in()) return;\n    // Jezeli uzytkownik idzie na /dodaj-ogloszenie lub /dodaj-ogloszenie/ bez kroku\n    $uri = $_SERVER['REQUEST_URI'];\n    if(preg_match('#^/dodaj-ogloszenie/?$#',$uri) || preg_match('#^/dodaj-ogloszenie/?$#',$uri)){\n        wp_redirect(home_url('/dodaj-ogloszenie/details/'));\n        exit;\n    }\n}\n\n\n// ===== REDIRECT PO DODANIU OGLOSZENIA =====\nadd_action('hivepress/v1/models/listing/create','pw_listing_complete_redirect',20,2);\nfunction pw_listing_complete_redirect($listing_id, $listing=null){\n    if(!is_admin() && isset($_POST['_wpnonce'])){\n        // Redirect nastapi przez HP - sprawdz czy juz nie redirectuje\n        // Dodaj meta zeby wiedziec ze zostal juz przekierowany\n        update_post_meta($listing_id,'_pw_submit_done','1');\n    }\n}\n\n// Fix - upewnij sie ze po submit HP redirectuje na complete\nadd_filter('hivepress/v1/forms/listing_submit','pw_fix_submit_redirect',20,1);\nfunction pw_fix_submit_redirect($form){\n    // Upewnij sie ze redirect jest ustawiony\n    if(!isset($form['redirect'])){\n        $complete_page = get_page_by_path('submit-listing/complete');\n        if($complete_page){\n            $form['redirect'] = get_permalink($complete_page->ID);\n        } else {\n            $form['redirect'] = home_url('/dodaj-ogloszenie/complete/');\n        }\n    }\n    return $form;\n}\n\n\n// ===== DYNAMICZNE POLA ZALEZNIE OD KATEGORII =====\nadd_action('wp_head','pw_dynamic_fields_js',5);\nfunction pw_dynamic_fields_js(){\n    if(strpos($_SERVER['REQUEST_URI'],'submit-listing')===false) return;\n\n    // Kategoria Praca\n    $praca = get_term_by('name','Praca','hp_listing_category');\n    $praca_id = $praca ? $praca->term_id : 2;\n    $sub_praca = get_terms(['taxonomy'=>'hp_listing_category','parent'=>$praca_id,'hide_empty'=>false,'fields'=>'ids']);\n    $praca_ids = array_merge([$praca_id], is_array($sub_praca) ? $sub_praca : []);\n\n    // Kategoria Usługi\n    $uslugi = get_term_by('name','Usługi','hp_listing_category');\n    $uslugi_id = $uslugi ? $uslugi->term_id : 135;\n    $sub_uslugi = get_terms(['taxonomy'=>'hp_listing_category','parent'=>$uslugi_id,'hide_empty'=>false,'fields'=>'ids']);\n    $uslugi_ids = array_merge([$uslugi_id], is_array($sub_uslugi) ? $sub_uslugi : []);\n\n    // Kategoria Mieszkania i pokoje\n    $mieszk = get_term_by('name','Nieruchomości','hp_listing_category');\n    $mieszk_id = $mieszk ? $mieszk->term_id : 3;\n    $sub_mieszk = get_terms(['taxonomy'=>'hp_listing_category','parent'=>$mieszk_id,'hide_empty'=>false,'fields'=>'ids']);\n    $mieszk_ids = array_merge([$mieszk_id], is_array($sub_mieszk) ? $sub_mieszk : []);\n\n    echo '<script>\nvar _pracaIds  = ' . json_encode($praca_ids) . ';\nvar _uslugiIds = ' . json_encode($uslugi_ids) . ';\nvar _mieszkIds = ' . json_encode($mieszk_ids) . ';\n\nfunction pwUpdateFieldsForCat(catId){\n    catId = parseInt(catId);\n    var isPraca  = _pracaIds.indexOf(catId)  > -1;\n    var isUslugi = _uslugiIds.indexOf(catId) > -1;\n    var isMieszk = _mieszkIds.indexOf(catId) > -1;\n    var hideStan = isPraca || isUslugi || isMieszk;\n\n    document.querySelectorAll(".hp-form__field").forEach(function(f){\n        var label = f.querySelector("label");\n        if(!label) return;\n        var txt = label.textContent.trim().replace(/\s*\(.*\)/g,"").replace(/\s*\*\s*/g,"").trim();\n\n        // ── Pole ceny ──\n        if(txt === "Cena" || txt.indexOf("Cena") === 0 || txt.indexOf("Stawka") === 0){\n            var _p = f.querySelector("p");\n\n            // Dodaj symbol € jeśli nie ma\n            var inp = f.querySelector("input[type=number]");\n            if(inp && !f.querySelector(".pw-eur")){\n                inp.style.paddingRight = "32px";\n                var eur = document.createElement("span");\n                eur.className = "pw-eur";\n                eur.textContent = "€";\n                eur.style.cssText = "position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#7c3aed;font-weight:700;pointer-events:none;font-size:1rem;";\n                var wrap = inp.parentElement;\n                wrap.style.position = "relative";\n                wrap.style.display  = "block";\n                wrap.appendChild(eur);\n            }\n\n            if(isPraca){\n                label.childNodes[0].nodeValue = "Stawka (€/mies.) * ";\n                if(_p){ _p.textContent = "Zostaw puste jeśli wynagrodzenie do uzgodnienia"; _p.style.display=""; }\n            } else if(isUslugi){\n                label.childNodes[0].nodeValue = "Stawka (€) * ";\n                if(_p){ _p.textContent = "Wpisz 0 jeśli wycena indywidualna / bezpłatne"; _p.style.display=""; }\n            } else if(isMieszk){\n                label.childNodes[0].nodeValue = "Czynsz / Cena (€) * ";\n                if(_p){ _p.textContent = "Podaj miesięczny czynsz lub cenę sprzedaży"; _p.style.display=""; }\n            } else {\n                label.childNodes[0].nodeValue = "Cena (€) * ";\n                if(_p){ _p.textContent = "Wpisz 0 jeśli oddajesz za darmo"; _p.style.display=""; }\n            }\n        }\n\n        // ── Pole Stan (ukryj dla Praca, Usługi, Mieszkania) ──\n        if(txt === "Stan"){\n            f.style.display = hideStan ? "none" : "";\n        }\n    });\n}\n\n// Nasłuchuj kliknięcia kafelka kategorii\ndocument.addEventListener("click",function(e){\n    var btn = e.target.closest(".polakw-cat-btn");\n    if(btn){\n        setTimeout(function(){\n            var cat = document.querySelector("select[name=categories]");\n            if(cat && cat.value) pwUpdateFieldsForCat(cat.value);\n        }, 250);\n    }\n});\n\n// Init przy załadowaniu\nsetTimeout(function(){\n    var cat = document.querySelector("select[name=categories]");\n    if(cat && cat.value) pwUpdateFieldsForCat(cat.value);\n    // Dodaj € na wszystkich polach liczbowych z Cena\n    document.querySelectorAll(".hp-form__field").forEach(function(f){\n        var lbl = f.querySelector("label");\n        if(!lbl) return;\n        var txt = lbl.textContent.trim().replace(/\s*\*\s*/g,"");\n        if(txt.indexOf("Cena") < 0 && txt.indexOf("Stawka") < 0) return;\n        var inp = f.querySelector("input[type=number]");\n        if(inp && !f.querySelector(".pw-eur")){\n            inp.style.paddingRight = "32px";\n            var eur = document.createElement("span");\n            eur.className = "pw-eur";\n            eur.textContent = "€";\n            eur.style.cssText = "position:absolute;right:10px;top:50%;transform:translateY(-50%);color:#7c3aed;font-weight:700;pointer-events:none;font-size:1rem;";\n            var wrap = inp.parentElement;\n            wrap.style.position = "relative";\n            wrap.style.display  = "block";\n            wrap.appendChild(eur);\n        }\n    });\n}, 800);\n</sc' . 'ript>';\n}\n\n\n// ===================================================\n// PolakW.nl - ODZNAKA ZWERYFIKOWANEJ FIRMY\n// ===================================================\n\n// Pokaż odznakę na ogłoszeniu i profilu sprzedawcy\nadd_action('wp_head', function() {\n  if (!is_singular('hp_listing') && !is_singular('hp_vendor')) return;\n  echo '<style>\n.pw-firma-badge { display:inline-flex; align-items:center; gap:6px; background:linear-gradient(135deg,#7c3aed,#db2777); color:#fff; font-size:11px; font-weight:700; padding:4px 12px; border-radius:50px; margin:6px 0; }\n</style>';\n});\n\nadd_filter('the_content', function($content) {\n  if (!is_singular('hp_listing')) return $content;\n  global $post;\n  $author_id  = (int) $post->post_author;\n  $firma_end  = (int) get_user_meta($author_id, 'pw_firma_end', true);\n  $firma_stat = get_user_meta($author_id, 'pw_firma_status', true);\n  if ($firma_stat === 'active' && $firma_end > time()) {\n    $badge = '<div class="pw-firma-badge">🏢 Zweryfikowana Firma</div>';\n    $content = $badge . $content;\n  }\n  return $content;\n});\n\n// ===================================================\n// PolakW.nl - AKTYWACJA FIRMY PRZEZ ADMINA\n// ===================================================\n// Odwiedź /wp-admin/?pw_activate_firma=USER_ID aby aktywować firmę\nadd_action('admin_init', function() {\n  if (!isset($_GET['pw_activate_firma']) || !current_user_can('manage_options')) return;\n  $uid = (int) $_GET['pw_activate_firma'];\n  update_user_meta($uid, 'pw_firma_status', 'active');\n  $end = max((int)get_user_meta($uid,'pw_firma_end',true), time());\n  if ($end <= time()) update_user_meta($uid, 'pw_firma_end', time() + 30*DAY_IN_SECONDS);\n  $user = get_userdata($uid);\n  if ($user) {\n    $msg = 'Witaj ' . $user->display_name . ',' . "\n\n"\n         . 'Twoja firma zostala pozytywnie zweryfikowana!' . "\n\n"\n         . 'Od teraz Twoje ogloszenia wyswietlaja odznakę Zweryfikowana Firma.' . "\n\n"\n         . 'Panel sprzedawcy: ' . home_url('/sprzedawcy/') . "\n\n"\n         . 'Pozdrawiamy,' . "\n" . 'Zespol PolakW.nl';\n    wp_mail($user->user_email, '[PolakW.nl] Twoja firma zostala zweryfikowana!', $msg);\n  }\n  $back = isset($_SERVER['HTTP_REFERER']) ? esc_url($_SERVER['HTTP_REFERER']) : admin_url();\n  wp_die('Firma UID=' . $uid . ' aktywowana. <a href="' . $back . '">Wróć</a>');\n});\n\n// ===================================================\n// PolakW.nl - LINK DO PANELU SPRZEDAWCY W MY ACCOUNT\n// ===================================================\nadd_filter('woocommerce_account_menu_items', function($items) {\n  if (!is_user_logged_in()) return $items;\n  $uid = get_current_user_id();\n  $status = get_user_meta($uid, 'pw_firma_status', true);\n  $end    = (int) get_user_meta($uid, 'pw_firma_end', true);\n  $label  = ($status === 'active' && $end > time()) ? '🏢 Panel Firmy' : '🏢 Zostań Sprzedawcą';\n  // Insert before logout\n  $new = [];\n  foreach ($items as $k => $v) {\n    if ($k === 'customer-logout') {\n      $new['pw-seller'] = $label;\n    }\n    $new[$k] = $v;\n  }\n  return $new;\n});\n\nadd_action('woocommerce_account_pw-seller_endpoint', function() {\n  wp_redirect(home_url('/sprzedawcy/'));\n  exit;\n});\n\nadd_action('init', function() {\n  add_rewrite_endpoint('pw-seller', EP_ROOT | EP_PAGES);\n});\n\n// ===================================================\n// PolakW.nl - SZABLON CSV DO IMPORTU PRODUKTÓW\n// ===================================================\nadd_action('init', function() {\n  $upload_dir = wp_upload_dir();\n  $template   = $upload_dir['basedir'] . '/polakw-import-szablon.csv';\n  if (!file_exists($template)) {\n    $csv = "ID,Type,SKU,Name,Published,\"Short description\",Description,\"Regular price\",\"Sale price\",\"Tax status\",\"Tax class\",\"In stock?\",Stock,\"Backorders allowed?\",\"Sold individually?\",\"Weight (kg)\",Images,\"Categories\",\"Tags\"\n";\n    $csv .= ",simple,PRODUKT-001,\"Nazwa produktu\",1,\"Krótki opis\",\"Szczegółowy opis\",29.99,,taxable,,1,,0,0,,https://url-do-zdjecia.jpg,Elektronika,tag1|tag2\n";\n    file_put_contents($template, $csv);\n  }\n});\n\n// ===================================================\n// PolakW.nl - SIDEBAR MENU LINK DO SPRZEDAWCY\n// ===================================================\nadd_action('wp_head', function() {\n  if (!is_user_logged_in()) return;\n  $uid = get_current_user_id();\n  $status = get_user_meta($uid, 'pw_firma_status', true);\n  $end    = (int) get_user_meta($uid, 'pw_firma_end', true);\n  if ($status !== 'active' || $end <= time()) return;\n  echo '<style>\n.pw-firma-nav-badge { background:linear-gradient(135deg,#7c3aed,#db2777); color:#fff; font-size:10px; font-weight:700; padding:2px 8px; border-radius:50px; margin-left:6px; vertical-align:middle; }\n</style>';\n});\n\n// ===================================================\n// PolakW.nl - WYSWIETLANIE: miasto na ogloszeniu + Za darmo\n// ===================================================\nadd_filter('the_content', function($content) {\n    if (!is_singular('hp_listing')) return $content;\n    global $post;\n    $miasto = get_post_meta($post->ID, 'hp_miasto', true);\n    if ($miasto) {\n        $content = '<div class="pw-listing-city">ð\x9f\x93\x8d ' . esc_html($miasto) . '</div>' . $content;\n    }\n    return $content;\n});\n\n// Styl dla miasta + "Za darmo"\nadd_action('wp_head', function(){\n    if(!is_singular('hp_listing') && !is_archive() && !is_home()) return;\n    echo '<style>\n.pw-listing-city{font-size:0.875rem;color:#666;margin-bottom:10px;display:flex;align-items:center;gap:4px;}\n.pw-price-free{color:#22c55e !important;font-weight:800 !important;}\n</style>\n<script>\ndocument.addEventListener("DOMContentLoaded",function(){\n  var priceEls = document.querySelectorAll(".hp-listing__price,.hp-listing__attribute--price");\n  priceEls.forEach(function(el){\n    var t=el.textContent.trim();\n    if(t==="0 €"||t==="0€"||t==="€0"||t==="0,00 €"||t==="0.00 €"){\n      el.textContent="Za darmo";\n      el.classList.add("pw-price-free");\n    }\n  });\n});\n</script>';\n}, 30);\n\n// ===================================================\n// PolakW.nl - PASEK FILTROWANIA NA STRONIE OGLOSZEN\n// ===================================================\nadd_action('wp_head', function() {\n  // Strona archiwum ogloszen HP lub strona /ogloszenia/\n  $is_listings = is_post_type_archive('hp_listing')\n              || is_page('ogloszenia')\n              || (isset($_GET['post_type']) && $_GET['post_type']==='hp_listing');\n  if(!$is_listings) return;\n\n  // Pobierz ID grup kategorii\n  $groups_def = [\n    ['key'=>'sprzedaz',      'label'=>'Sprzedaż',      'emoji'=>'🛍️', 'color'=>'#f59e0b', 'ids'=>[10,5,11,104,9,67,66,65,110,68]],\n    ['key'=>'nieruchomosci', 'label'=>'Nieruchomości', 'emoji'=>'🏠', 'color'=>'#3b82f6', 'ids'=>[3]],\n    ['key'=>'praca',         'label'=>'Praca',          'emoji'=>'💼', 'color'=>'#8b5cf6', 'ids'=>[2]],\n    ['key'=>'uslugi',        'label'=>'Usługi',         'emoji'=>'🔧', 'color'=>'#db2777', 'ids'=>[135,103]],\n    ['key'=>'inne',          'label'=>'Inne',           'emoji'=>'📦', 'color'=>'#6b7280', 'ids'=>[8]],\n  ];\n\n  // Mapuj ID kategorii HP -> klucz grupy\n  $cat_group_map = [];\n  foreach($groups_def as $g){\n    foreach($g['ids'] as $cat_id){\n      $sub = get_terms(['taxonomy'=>'hp_listing_category','parent'=>$cat_id,'hide_empty'=>false,'fields'=>'ids']);\n      $all_ids = array_merge([$cat_id], is_array($sub) ? $sub : []);\n      foreach($all_ids as $id) $cat_group_map[$id] = $g['key'];\n    }\n  }\n\n  $active_group = isset($_GET['pw_group']) ? sanitize_key($_GET['pw_group']) : '';\n  echo '<style>\n/* Pasek sekcji na stronie ogłoszeń */\n.pw-section-nav { background:#fff; border-bottom:1.5px solid #ede8f7; padding:0; position:sticky; top:0; z-index:100; box-shadow:0 2px 8px rgba(0,0,0,.06); }\n.pw-section-nav__inner { max-width:1200px; margin:0 auto; padding:0 16px; display:flex; align-items:center; gap:0; overflow-x:auto; scrollbar-width:none; }\n.pw-section-nav__inner::-webkit-scrollbar { display:none; }\n.pw-section-tab { display:flex; align-items:center; gap:7px; padding:14px 18px; font-size:13px; font-weight:600; color:#555; text-decoration:none; border-bottom:3px solid transparent; white-space:nowrap; transition:all .15s; cursor:pointer; }\n.pw-section-tab:hover { color:#7c3aed; border-bottom-color:#e9d5ff; }\n.pw-section-tab.active { color:var(--tw-tab-clr); border-bottom-color:var(--tw-tab-clr); background:color-mix(in srgb,var(--tw-tab-clr) 5%,transparent); }\n.pw-section-tab .tab-emoji { font-size:18px; }\n.pw-section-tab .tab-count { font-size:10px; background:#f3f0fb; color:#888; border-radius:50px; padding:1px 7px; font-weight:500; margin-left:2px; }\n.pw-section-tab.active .tab-count { background:color-mix(in srgb,var(--tw-tab-clr) 15%,#fff); color:var(--tw-tab-clr); }\n</style>';\n\n  echo '<script>';\n  echo 'var pwCatGroupMap = ' . json_encode($cat_group_map) . ';';\n  echo 'var pwGroupsDef = ' . json_encode($groups_def) . ';';\n  echo 'var pwActiveGroup = ' . json_encode($active_group) . ';';\n  echo '\n(function(){\nfunction buildSectionNav(){\n  if(document.querySelector(".pw-section-nav")) return;\n  var nav = document.createElement("div");\n  nav.className = "pw-section-nav";\n  var inner = document.createElement("div");\n  inner.className = "pw-section-nav__inner";\n  nav.appendChild(inner);\n\n  // Tab "Wszystkie"\n  var allTab = document.createElement("a");\n  allTab.className = "pw-section-tab" + (pwActiveGroup=="" ? " active" : "");\n  allTab.style.setProperty("--tw-tab-clr","#7c3aed");\n  allTab.href = window.location.pathname;\n  allTab.innerHTML = "<span class=\"tab-emoji\">🔍</span><span>Wszystkie</span>";\n  inner.appendChild(allTab);\n\n  pwGroupsDef.forEach(function(g){\n    var tab = document.createElement("a");\n    var isActive = pwActiveGroup === g.key;\n    tab.className = "pw-section-tab" + (isActive ? " active" : "");\n    tab.style.setProperty("--tw-tab-clr", g.color);\n    var url = new URL(window.location.href);\n    url.searchParams.set("pw_group", g.key);\n    tab.href = url.toString();\n    tab.innerHTML = "<span class=\"tab-emoji\">" + g.emoji + "</span><span>" + g.label + "</span>";\n    inner.appendChild(tab);\n  });\n\n  // Wstaw nad listą ogłoszeń\n  var listingsEl = document.querySelector(".hp-listings,.hp-grid,.elementor-widget-hivepress-listings-block");\n  var pageTitle  = document.querySelector(".page-title,.entry-title,.hp-page-title");\n  var insertRef  = pageTitle || listingsEl;\n  if(insertRef && insertRef.parentNode){\n    insertRef.parentNode.insertBefore(nav, insertRef);\n  } else if(document.querySelector(".site-content")) {\n    document.querySelector(".site-content").prepend(nav);\n  }\n}\n\n// Filtruj widoczność kart ogłoszeń po grupach\nfunction filterListingsByGroup(group){\n  if(!group) return; // Brak filtru = pokaż wszystkie\n  // HP renderuje ogłoszenia ze swoimi elementami — filtruj po classach kategorii lub data-attrach\n  document.querySelectorAll(".hp-listing,[data-hp-listing],.hp-lcard,.pw-lcard").forEach(function(card){\n    var found = false;\n    // Sprawdź terminy na karcie (klasy CSS od HP)\n    var classes = card.className || "";\n    var catMatch = classes.match(/hp-listing--category-(\S+)/);\n    if(catMatch){\n      // Musielibyśmy znać mapowanie slug->id — uproszczone: pokaż wszystkie\n      found = true;\n    } else {\n      found = true; // Fallback — pokaż jeśli nie umiemy filtrować\n    }\n    // card.style.display = found ? "" : "none";\n  });\n}\n\ndocument.addEventListener("DOMContentLoaded", function(){\n  buildSectionNav();\n  setTimeout(buildSectionNav, 800);\n  if(pwActiveGroup) filterListingsByGroup(pwActiveGroup);\n});\n})();\n</script>';\n\n  // Jeśli filtr grupy aktywny — ogranicz zapytanie HP do wybranych kategorii\n  if($active_group){\n    $group_cats = [];\n    foreach($groups_def as $g){\n      if($g['key'] === $active_group){\n        foreach($g['ids'] as $cat_id){\n          $sub = get_terms(['taxonomy'=>'hp_listing_category','parent'=>$cat_id,'hide_empty'=>false,'fields'=>'ids']);\n          $group_cats = array_merge($group_cats, [$cat_id], is_array($sub) ? $sub : []);\n        }\n        break;\n      }\n    }\n    if($group_cats){\n      add_filter('hivepress/v1/queries/listing', function($query) use($group_cats){\n        $query['tax_query'][] = [\n          'taxonomy' => 'hp_listing_category',\n          'field'    => 'term_id',\n          'terms'    => $group_cats,\n        ];\n        return $query;\n      });\n    }\n  }\n}, 5);\n\n\n// ===================================================\n// PolakW.nl - HOMEPAGE MODERN 2025\n// ── REST endpoints dla ogłoszeń i banerów ──\nadd_action('rest_api_init', function(){\n\n  // Endpoint: /wp-json/pw/v1/listings\n  register_rest_route('pw/v1','listings',[\n    'methods'=>'GET',\n    'callback'=>function($r){\n      $per=$r->get_param('per_page');\n      $args=['post_type'=>'hp_listing','post_status'=>'publish','posts_per_page'=>$per?intval($per):8,'orderby'=>'date','order'=>'DESC'];\n      if($r->get_param('featured')) $args['meta_query'][]=['key'=>'hp_featured','value'=>'1','compare'=>'='];\n      if($r->get_param('author')) $args['author']=intval($r->get_param('author'));\n      $posts=get_posts($args);\n      $out=[];\n      foreach($posts as $p){\n        $img=get_the_post_thumbnail_url($p->ID,'medium');\n        $cats=wp_get_post_terms($p->ID,'hp_listing_category');\n        $cat=$cats&&!is_wp_error($cats)?$cats[0]->name:'';\n        $vm=get_user_meta($p->post_author,'hp_typ_konta',true);\n        $isV=($vm==='firma')||get_post_meta($p->ID,'hp_vendor_id',true);\n        $wa=get_post_meta($p->ID,'hp_whatsapp',true)?:get_post_meta($p->ID,'hp_whatsapp_number',true);\n        $out[]=['id'=>$p->ID,'title'=>$p->post_title,'link'=>get_permalink($p->ID),'img'=>$img?:'','cat'=>$cat,'price'=>floatval(get_post_meta($p->ID,'hp_cena',true)),'featured'=>(bool)get_post_meta($p->ID,'hp_featured',true),'vendor'=>(bool)$isV,'wa'=>$wa?:'','email'=>get_post_meta($p->ID,'hp_email',true)?:''];\n      }\n      return rest_ensure_response($out);\n    },\n    'permission_callback'=>'__return_true',\n  ]);\n\n  // Endpoint: /wp-json/pw/v1/banners\n  register_rest_route('pw/v1','banners',[\n    'methods'=>'GET',\n    'callback'=>function(){\n      $posts=get_posts(['post_type'=>'page','meta_key'=>'pw_is_banner','meta_value'=>'1','posts_per_page'=>10,'post_status'=>'publish']);\n      $out=[];\n      foreach($posts as $p){\n        $out[]=['id'=>$p->ID,'title'=>$p->post_title,'img'=>get_post_meta($p->ID,'pw_banner_img',true),'url'=>get_post_meta($p->ID,'pw_banner_url',true)];\n      }\n      return $out;\n    },\n    'permission_callback'=>'__return_true',\n  ]);\n});\n\n// ── Rejestracja meta REST API dla banerów ──\nadd_action('init', function(){\n  foreach(['pw_banner_img','pw_banner_url','pw_is_banner'] as $key){\n    register_meta('post', $key, [\n      'type'=>'string','single'=>true,'show_in_rest'=>true,\n      'object_subtype'=>'page',\n    ]);\n  }\n});\n\n// Redirect /sklep/ → /cennik/\nadd_action('template_redirect', function(){\n  if(is_shop()||is_page('sklep')){\n    wp_redirect('/cennik/', 301);\n    exit;\n  }\n});\n\n// ===================================================\n// Ukryj admin bar search - zasłania header\nadd_action('wp_head', function(){\n  echo '<style>#wp-admin-bar-search{display:none!important}</style>';\n}, 5);\n\n\n\n\nadd_action('wp_head', function(){\n  // Pasek wyszukiwania w nagłówku - wszystkie strony\n  echo '<style>\n/* ── HEADER SEARCH BAR ── */\n.site-header .header-navbar{flex-wrap:nowrap!important;align-items:center!important;padding:0 16px}\n.header-navbar__start{flex-shrink:0!important}\n.header-navbar__end{display:flex!important;align-items:center!important;flex:1!important;min-width:0!important;gap:0!important}\n.header-navbar__menu{flex:1!important;min-width:0!important}\n.header-navbar__menu ul{flex-wrap:nowrap!important;gap:0!important}\n.header-navbar__menu ul li a{padding:0 10px!important;font-size:13px!important;white-space:nowrap!important}\n/* Ukryj duplikat user w menu */\n.header-navbar__menu .hp-menu__item--user-account{display:none!important}\n.pw-header-search{\n  flex:0 0 260px!important;margin:0 8px!important;\n  display:flex!important;align-items:center!important;\n}\n.pw-header-search__form{\n  display:flex!important;align-items:stretch!important;\n  border:2px solid #7c3aed!important;border-radius:8px!important;\n  overflow:hidden!important;height:38px!important;\n  background:#fff!important;width:100%!important;\n}\n.pw-header-search__input{\n  flex:1!important;background:#fff!important;border:none!important;\n  outline:none!important;box-shadow:none!important;\n  color:#1a1a2e!important;font-size:14px!important;padding:0 10px!important;min-width:0!important;\n}\n.pw-header-search__input::placeholder{color:#aaa!important;font-size:13px!important}\n.pw-header-search__btn{\n  background:#7c3aed!important;border:none!important;color:#fff!important;\n  font-weight:700!important;font-size:13px!important;\n  padding:0 14px!important;cursor:pointer!important;\n  white-space:nowrap!important;flex-shrink:0!important;\n}\n.pw-header-search__btn:hover{background:#6d28d9!important}\n@media(max-width:1200px){\n  .pw-header-search{flex:0 0 200px!important}\n  .header-navbar__menu ul li a{padding:0 7px!important;font-size:12px!important}\n}\n@media(max-width:900px){\n  .pw-header-search{display:none!important}\n}</style>';\n}, 5);\n// ===================================================\n// PolakW.nl - PRZEKIEROWANIE WYSZUKIWANIA WP → HP\n// ===================================================\nadd_action('template_redirect', function() {\n  // Przekieruj WP search do ogloszen HP — tylko gdy nie jestesmy juz na /ogloszenia/\n  if(!isset($_GET['s'])) return;\n  if(is_admin()) return;\n  $current_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);\n  // Juz na stronie ogloszen — nic nie rob\n  if(strpos($current_path, '/ogloszenia') !== false) return;\n  if(strpos($current_path, '/submit-listing') !== false) return;\n  $q = sanitize_text_field($_GET['s']);\n  wp_redirect(home_url('/ogloszenia/?listing_search=' . urlencode($q)));\n  exit;\n}, 1);\n\n\n// ===================================================\n// PolakW.nl - POLSKIE ALIASY URL\n// ===================================================\nadd_action('template_redirect', function() {\n  if(is_admin()) return;\n  $uri = $_SERVER['REQUEST_URI'];\n  // /dodaj-ogloszenie/ → /submit-listing/\n  if(strpos($uri, '/dodaj-ogloszenie') === 0){\n    $rest = substr($uri, strlen('/dodaj-ogloszenie'));\n    wp_redirect(home_url('/submit-listing' . $rest), 301);\n    exit;\n  }\n  // /rejestracja/ → HP register\n  if(strpos($uri, '/rejestracja') === 0 && !is_page('rejestracja')){\n    wp_redirect(home_url('/account/login/?action=register'), 302);\n    exit;\n  }\n  // /logowanie/ → HP login  \n  if(strpos($uri, '/logowanie') === 0 && !is_page('logowanie')){\n    wp_redirect(home_url('/account/login/'), 302);\n    exit;\n  }\n}, 2);\n\n// ===================================================\n// PolakW.nl - STARE SLUGI KATEGORII → NOWE (301)\n// ===================================================\nadd_action('template_redirect', function() {\n  if(is_admin()) return;\n  $cat_redirects = [\n    '/listing-category/mieszkania/'        => '/listing-category/nieruchomosci/',\n    '/listing-category/moda-i-styl-zycia/' => '/listing-category/moda-i-odziez/',\n    '/listing-category/pozostale/'         => '/listing-category/inne/',\n    '/listing-category/uslugi-budowlane-praca-i-uslugi/' => '/listing-category/uslugi-budowlane/',\n    '/listing-category/uslugi-sprzatajace-praca-i-uslugi/' => '/listing-category/uslugi-sprzatajace/',\n    '/listing-category/busy-i-dostawcze-transport/' => '/listing-category/busy-i-dostawcze/',\n    '/listing-category/czesci-i-akcesoria-motoryzacja/' => '/listing-category/czesci-motoryzacja/',\n    '/listing-category/oswietlenie-meble-i-dom/' => '/listing-category/oswietlenie/',\n    '/listing-category/akcesoria/'         => '/listing-category/akcesoria-elektroniczne/',\n  ];\n  $path = strtok($_SERVER['REQUEST_URI'], '?');\n  if(isset($cat_redirects[$path])){\n    wp_redirect(home_url($cat_redirects[$path]), 301);\n    exit;\n  }\n}, 3);\n\n\n// ===================================================\n// PolakW.nl - STOPKA (footer override)\n// ===================================================\nadd_action('wp_footer', function() {\n  echo '<style>\n/* ---- Override domyslnej stopki WP ---- */\n.site-footer .footer-navbar { display:none !important; }\n.site-footer .container { padding:0 !important; max-width:none !important; }\n.site-footer { background:#0d0d1a !important; padding:0 !important; margin-top:0 !important; }\n</style>';\n\n  echo '<div class="pw-footer">\n  <div class="pw-footer__inner">\n    <div class="pw-footer__grid">\n      <div>\n        <a href="/"><span class="pw-footer__logo">PolakW.nl</span></a>\n        <p style="color:#aaa;font-size:14px;margin:8px 0 20px;line-height:1.6;">Największy polski portal ogłoszeniowy w Holandii.<br>Sprzedaj, kup, wynajmij — po polsku.</p>\n        <p style="font-size:13px;color:#888;margin-top:0;">🇳🇱 &nbsp;Holandia</p>\n      </div>\n      <div>\n        <h4>Ogłoszenia</h4>\n        <ul>\n          <li><a href="/ogloszenia/">Przeglądaj ogłoszenia</a></li>\n          <li><a href="/dodaj-ogloszenie/">Dodaj ogłoszenie</a></li>\n          <li><a href="/ogloszenia/?pw_group=nieruchomosci">Nieruchomości</a></li>\n          <li><a href="/ogloszenia/?pw_group=praca">Praca i usługi</a></li>\n          <li><a href="/sklep/">Sklep firm</a></li>\n        </ul>\n      </div>\n      <div>\n        <h4>Konto</h4>\n        <ul>\n          <li><a href="/konto/">Moje konto</a></li>\n          <li><a href="/konto/pakiety/">Pakiety i cennik</a></li>\n          <li><a href="/sprzedawcy/">Panel sprzedawcy</a></li>\n          <li><a href="/koszyk/">Koszyk</a></li>\n        </ul>\n      </div>\n      <div>\n        <h4>Informacje</h4>\n        <ul>\n          <li><a href="/cennik/">Cennik i promowanie</a></li>\n          <li><a href="/regulamin-serwisu-polakw-nl/">Regulamin</a></li>\n          <li><a href="/polityka-prywatnosci-serwisu-polakw-nl/">Polityka prywatności</a></li>\n        </ul>\n      </div>\n    </div>\n    <div class="pw-footer__bottom">\n      <span>© 2025 PolakW.nl — Wszelkie prawa zastrzeżone</span>\n      <span style="display:flex;gap:16px;align-items:center;">\n        <span style="font-size:11px;color:#888;">Bezpieczne płatności</span>\n        <span style="font-size:18px;">💳</span>\n        <span style="font-size:18px;">🔒</span>\n      </span>\n    </div>\n  </div>\n</div>';\n}, 99);\n\n// ===================================================\n// PolakW.nl - PRZEKIEROWANIA LOGOWANIE/REJESTRACJA  \n// ===================================================\n// Strona /logowanie/ - jesli istnieje jako WP page, OK\n// Jesli nie, przekieruj do HP login\nadd_filter('wp_redirect', function($location, $status) {\n  // Ujednolicenie: /my-account/ → /konto/\n  if(strpos($location, site_url('/my-account/')) === 0){\n    $rest = substr($location, strlen(site_url('/my-account/')));\n    return home_url('/konto/' . $rest);\n  }\n  return $location;\n}, 10, 2);\n\n// ===================================================\n// PolakW.nl - POPRAWKI SKLEPU\n// ===================================================\n// Zmien tytul strony /sklep/ na bardziej opisowy\nadd_filter('woocommerce_page_title', function($title) {\n  if(is_shop()) return 'Pakiety i promowanie';\n  return $title;\n});\n\n\n// ── Search bar w headerze HivePress przez JS DOM ──\nadd_action('wp_footer', function(){\n  echo '<script>\n(function(){\n  function insertSearchBar(){\n    if(document.querySelector(".pw-header-search")) return;\n    var end = document.querySelector(".header-navbar__end");\n    if(!end) return;\n    var bar = document.createElement("div");\n    bar.className = "pw-header-search";\n    bar.innerHTML = "<form class=\"pw-header-search__form\" onsubmit=\"var q=this.querySelector(\'input\').value.trim();if(q){window.location=\'/ogloszenia/?listing_search=\'+encodeURIComponent(q);}return false;\"><input class=\"pw-header-search__input\" type=\"text\" placeholder=\"Czego szukasz?...\" autocomplete=\"off\"><button class=\"pw-header-search__btn\" type=\"submit\">Szukaj</button></form>";\n    var menu = end.querySelector("nav.header-navbar__menu, nav");\n    if(menu){ end.insertBefore(bar, menu); }\n    else { end.prepend(bar); }\n  }\n  if(document.readyState === "loading"){\n    document.addEventListener("DOMContentLoaded", insertSearchBar);\n  } else { insertSearchBar(); }\n  setTimeout(insertSearchBar, 500);\n})();\n</script>';\n}, 20);\n\n\n// PW-FIX: napraw pw-cat-css.php przez file_put_contents (usun po zaladowaniu)\nadd_action('init', function(){\n  if(!is_admin() || !current_user_can('manage_options')) return;\n  $path = WP_CONTENT_DIR . '/mu-plugins/pw-cat-css.php';\n  $content = file_get_contents($path);\n  if(strpos($content, 'style=\"display:none') !== false || strpos($content, "style=\"display:none") !== false) {\n    $content = str_replace("style=\"display:none !important;\"", '', $content);\n    file_put_contents($path, $content);\n    error_log('PW-FIX: removed display:none from pw-cat-css.php');\n  }\n});\n\n\n// PW: Override pwmLoadCards z lepszymi kartami v2\nadd_action('wp_footer', function(){\n  if(!is_front_page()) return;\n  echo '<script>\n(function(){\n  function buildCard(p){\n    var img = p.img\n      ? "<div class=\'pwm-card__img\'><img src=\'" + p.img + "\' alt=\'" + p.title.replace(/\'/g,"\'") + "\' loading=\'lazy\'></div>"\n      : "<div class=\'pwm-card__img\'><span class=\'pwm-card__ph\'>📷</span></div>";\n    var badges = "";\n    if(p.featured) badges += "<span class=\'pwm-badge pwm-badge--promo\'>⭐ Promowane</span>";\n    if(p.vendor)   badges += "<span class=\'pwm-badge pwm-badge--firma\'>✓ Firma</span>";\n    if(badges) img = img.replace("</div>","<div class=\'pwm-card__badges\'>" + badges + "</div></div>",1);\n    var price = p.price > 0\n      ? "<div class=\'pwm-card__price\'>€" + Number(p.price).toLocaleString("pl-PL") + "</div>"\n      : "<div class=\'pwm-card__price pwm-card__price--free\'>Zapytaj o cenę</div>";\n    var wa = p.wa ? p.wa.replace(/[^0-9+]/g,"") : "";\n    var btnWa = wa\n      ? "<a href=\'https://wa.me/" + wa.replace(/^\+/,"") + "\' class=\'pwm-card__btn pwm-card__btn--wa\' target=\'_blank\' rel=\'noopener\' onclick=\'event.stopPropagation()\'>💬 WhatsApp</a>"\n      : "";\n    var btnEmail = p.email\n      ? "<a href=\'" + p.link + "#contact\' class=\'pwm-card__btn pwm-card__btn--mail\' onclick=\'event.stopPropagation()\'>✉ Email</a>"\n      : "";\n    var btnBuy = "<a href=\'" + p.link + "\' class=\'pwm-card__btn pwm-card__btn--buy\'>👁 Zobacz</a>";\n    var footer = (btnWa || btnEmail || btnBuy)\n      ? "<div class=\'pwm-card__footer\'><div class=\'pwm-card__contact\'>" + btnWa + btnEmail + "</div>" + btnBuy + "</div>"\n      : "";\n    return "<a href=\'" + p.link + "\' class=\'pwm-card\'>"\n      + img\n      + "<div class=\'pwm-card__body\'>"\n      + "<div class=\'pwm-card__title\'>" + p.title + "</div>"\n      + price\n      + "</div>"\n      + footer\n      + "</a>";\n  }\n\n  window.pwmLoadCards = function(mode){\n    var g = document.getElementById("pwm-grid");\n    if(!g) return;\n    g.innerHTML = "<div style=\'grid-column:1/-1;text-align:center;padding:40px 0;color:#c4b5fd;font-size:14px\'>⧗ Ładowanie...</div>";\n    var url = mode === "vendor"\n      ? "/wp-json/pw/v1/listings?per_page=8&vendor=1"\n      : "/wp-json/pw/v1/listings?per_page=8";\n    fetch(url)\n      .then(function(r){return r.json();})\n      .then(function(posts){\n        if(!Array.isArray(posts)||!posts.length){\n          g.innerHTML = "<div style=\'grid-column:1/-1;text-align:center;padding:40px 0\'><a href=\'" + (mode==="vendor"?"/sprzedawcy/":"/dodaj-ogloszenie/") + "\' style=\'color:#7c3aed;font-weight:700;font-size:14px\'>" + (mode==="vendor"?"Przejrzyj sprzedawców →":"Dodaj pierwsze ogłoszenie →") + "</a></div>";\n          return;\n        }\n        g.innerHTML = posts.map(buildCard).join("");\n      }).catch(function(){g.innerHTML="";});\n  };\n\n  // Reload on DOM ready with delay to override any other scripts\n  setTimeout(function(){\n    var activeBtn = document.querySelector(".pwm-mode-btn--active");\n    var mode = activeBtn && activeBtn.id === "pwm-btn-vend" ? "vendor" : "private";\n    window.pwmLoadCards(mode);\n  }, 1200);\n})();\n</script>';\n}, 20);\n\n\n// ============================================================\n// PolakW.nl FIX v3 - napraw pwn-cfoot poza pwn-card\n// Karty generowane przez JS - potrzebujemy delay/observer\n// ============================================================\nadd_action("wp_footer", function(){\n  if(!is_front_page()) return;\n  ?><script>\n(function(){\n  function fixCards(){\n    var fixed = 0;\n    document.querySelectorAll(".pwn-g4").forEach(function(g){\n      var ch = Array.from(g.children);\n      for(var i=ch.length-1;i>=0;i--){\n        if(ch[i].classList.contains("pwn-cfoot")){\n          for(var j=i-1;j>=0;j--){\n            if(ch[j].classList.contains("pwn-card")){\n              ch[j].appendChild(ch[i]);\n              fixed++;\n              break;\n            }\n          }\n        }\n      }\n    });\n    return fixed;\n  }\n  // Uruchom przy DOMContentLoaded i po 500ms, 1s, 2s\n  if(document.readyState === "loading"){\n    document.addEventListener("DOMContentLoaded", function(){ fixCards(); setTimeout(fixCards,500); setTimeout(fixCards,1500); });\n  } else {\n    fixCards(); setTimeout(fixCards,300); setTimeout(fixCards,800); setTimeout(fixCards,1800);\n  }\n  // MutationObserver na wypadek późniejszych zmian\n  var obs = new MutationObserver(function(){ fixCards(); });\n  obs.observe(document.body, {childList:true,subtree:true});\n  setTimeout(function(){ obs.disconnect(); fixCards(); }, 4000);\n})();\n</script><?php\n}, 25);<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="//polakw.nl/main-sitemap.xsl"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
	<sitemap>
		<loc>https://polakw.nl/post-sitemap.xml</loc>
		<lastmod>2026-03-24T12:32:18+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://polakw.nl/page-sitemap.xml</loc>
		<lastmod>2026-06-17T08:19:52+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://polakw.nl/product-sitemap.xml</loc>
		<lastmod>2026-05-29T19:39:23+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://polakw.nl/hp_listing-sitemap.xml</loc>
		<lastmod>2026-05-29T19:11:30+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://polakw.nl/hp_vendor-sitemap.xml</loc>
		<lastmod>2026-05-29T19:11:24+00:00</lastmod>
	</sitemap>
	<sitemap>
		<loc>https://polakw.nl/category-sitemap.xml</loc>
		<lastmod>2026-03-24T12:32:18+00:00</lastmod>
	</sitemap>
</sitemapindex>
<!-- XML Sitemap generated by Rank Math SEO Plugin (c) Rank Math - rankmath.com -->