PageSourceSearch

https://www.drewno.pl/gieldadrzewna/

html drewno.pl collected 2026-10-02 08:02:24 UTC 194,553 bytes, 2,549 lines download raw bytes

1<!DOCTYPE html>
2<html lang="pl">
3<head>
4<link rel="icon" href="/favicon-192x192.png" type="image/png" sizes="192x192">
5<link rel="apple-touch-icon" href="/favicon-192x192.png">
6  <meta charset="UTF-8">
7  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
8  <title>Giełda Ogłoszeń - kupno i sprzedaż drewna | DREWNO.PL</title>
9  <meta name="description" content="Giełda Ogłoszeń - ogłoszenia kupna i sprzedaży drewna, tarcicy, biomasy i maszyn leśnych. Największy portal branży drzewnej w Polsce.">
10  <link rel="canonical" href="https://www.drewno.pl/gieldadrzewna/">
11  <link rel="alternate" hreflang="pl-PL" href="https://www.drewno.pl/gieldadrzewna/">
12  <link rel="alternate" hreflang="en" href="https://www.drewno.pl/en/timber-exchange/">
13  <link rel="alternate" hreflang="de" href="https://www.drewno.pl/de/holzboerse/">
14  <link rel="alternate" hreflang="uk" href="https://www.drewno.pl/ua/derevna-birzha/">
15  <link rel="alternate" hreflang="sk" href="https://www.drewno.pl/sk/drevna-burza/">
16  <link rel="alternate" hreflang="x-default" href="https://www.drewno.pl/gieldadrzewna/">
17  <meta property="og:type"        content="website">
18  <meta property="og:title"       content="Giełda Ogłoszeń - kupno i sprzedaż drewna | DREWNO.PL">
19  <meta property="og:description" content="Giełda Ogłoszeń - ogłoszenia kupna i sprzedaży drewna, tarcicy, biomasy i maszyn leśnych. Największy portal branży drzewnej w Polsce.">
20  <meta property="og:url"         content="https://www.drewno.pl/gieldadrzewna/">
21  <meta property="og:site_name"   content="Drewno.pl - portal branży drzewnej">
22  <meta property="og:image"       content="https://www.drewno.pl/assets/img/og-drewno.jpg">
23  <link rel="stylesheet" href="/assets/css/bundle.css?v=1790765823">
24  <link rel="stylesheet" href="/assets/css/market-listing.bundle.css?v=1790765823">
25  <link rel="stylesheet" href="/assets/css/market-mobile-nav.bundle.css?v=1790765823">
26</head>
27<body class="has-gmn">
28<!-- ═══════════════════════════════════════════════════════════
29     TOP BAR - fixed, zielony pasek na górze
30     Edycja: assets/partials/header/topbar.php
31═══════════════════════════════════════════════════════════ -->
32<div class="top-bar" style="background:#2d4a0e;">
33  <div class="top-bar__inner">
34
35    <div class="top-bar__left"></div>
36
37    <!-- Linki narzędziowe - środek -->
38    <nav class="top-bar__nav" aria-label="Narzędzia">
39      <a href="/gieldadrzewna/"  class="top-bar__nav-link" style="color:rgba(255,255,255,.9)">Ogłoszenia</a>
40      <span class="top-bar__sep" aria-hidden="true">|</span>
41      <a href="/oferty-pracy"   class="top-bar__nav-link" style="color:rgba(255,255,255,.9)">Praca</a>
42      <span class="top-bar__sep" aria-hidden="true">|</span>
43            <a href="/maszyny"    class="top-bar__nav-link" style="color:rgba(255,255,255,.9)">Maszyny</a>
44      <span class="top-bar__sep" aria-hidden="true">|</span>
45      <a href="/katalog"    class="top-bar__nav-link" style="color:rgba(255,255,255,.9)">Firmy</a>
46      <span class="top-bar__sep" aria-hidden="true">|</span>
47      <a href="https://sklep.drewno.pl"      class="top-bar__nav-link" style="color:rgba(255,255,255,.9)">Sklep</a>
48    </nav>
49
50    <!-- Logowanie - prawa strona -->
51    <div class="top-bar__right">
52                      <a href="/logowanie?ret=%2Fgieldadrzewna%2F" class="top-bar__login" rel="nofollow">
53          <svg class="top-bar__icon" width="18" height="18" viewBox="0 0 24 24" fill="none"
54               stroke="currentColor" stroke-width="2" aria-hidden="true">
55            <circle cx="12" cy="8" r="4"/>
56            <path d="M4 20c0-4 3.6-7 8-7s8 3 8 7"/>
57          </svg>
58          Zaloguj się        </a>
59            <details class="top-bar__lang">
60        <summary class="top-bar__lang-trigger" aria-label="Język">
61          <span class="top-bar__lang-flag">🇵🇱</span>
62          <span class="top-bar__lang-code">PL</span>
63        </summary>
64        <div class="top-bar__lang-menu" role="menu" aria-label="Język">
65                                        <a href="https://www.drewno.pl/gieldadrzewna/"
66             class="top-bar__lang-link is-active"
67             hreflang="pl-PL"
68             role="menuitem">
69            <span class="top-bar__lang-link-flag">🇵🇱</span>
70            <span>Polski</span>
71          </a>
72                                                  <a href="https://www.drewno.pl/en/timber-exchange/"
73             class="top-bar__lang-link"
74             hreflang="en"
75             role="menuitem">
76            <span class="top-bar__lang-link-flag">🇬🇧</span>
77            <span>English</span>
78          </a>
79                                                  <a href="https://www.drewno.pl/de/holzboerse/"
80             class="top-bar__lang-link"
81             hreflang="de"
82             role="menuitem">
83            <span class="top-bar__lang-link-flag">🇩🇪</span>
84            <span>Deutsch</span>
85          </a>
86                                                  <a href="https://www.drewno.pl/ua/derevna-birzha/"
87             class="top-bar__lang-link"
88             hreflang="uk"
89             role="menuitem">
90            <span class="top-bar__lang-link-flag">🇺🇦</span>
91            <span>Українська</span>
92          </a>
93                                                  <a href="https://www.drewno.pl/sk/drevna-burza/"
94             class="top-bar__lang-link"
95             hreflang="sk"
96             role="menuitem">
97            <span class="top-bar__lang-link-flag">🇸🇰</span>
98            <span>Slovenčina</span>
99          </a>
100                            </div>
101      </details>
102    </div>
103
104  </div>
105</div>
106<!-- ═══════════════════════════════════════════════════════════
107     SITE HEADER - logo + mega-nav + przycisk wyszukiwarki
108     Edycja: assets/partials/header/site-header.php
109═══════════════════════════════════════════════════════════ -->
110<header class="site-header" role="banner">
111  <div class="site-header__inner">
112
113    <!-- Logo -->
114    <a href="/" class="site-logo" aria-label="DREWNO.PL - strona główna">
115      <img src="/drewno-logo.svg" alt="DREWNO.PL" class="site-logo__img" width="180" height="61">
116    </a>
117
118    <!-- Mega-nav: BIZNES | PASJA | EDUKACJA -->
119    <nav class="mega-nav" aria-label="Główna nawigacja">
120
121      <div class="mega-nav__item" data-menu="biznes">
122        <a href="/biznes" class="mega-nav__link">
123          Biznes        </a>
124        <button type="button" class="mega-nav__toggle" aria-expanded="false" aria-controls="mega-biznes" aria-haspopup="true"
125                aria-label="Otwórz menu Biznes">
126          <svg class="mega-nav__arrow" width="14" height="14" viewBox="0 0 24 24"
127               fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true">
128            <path d="M6 9l6 6 6-6"/>
129          </svg>
130        </button>
131      </div>
132
133      <div class="mega-nav__item" data-menu="pasja">
134        <a href="/pasja" class="mega-nav__link">
135          Pasja        </a>
136        <button type="button" class="mega-nav__toggle" aria-expanded="false" aria-controls="mega-pasja" aria-haspopup="true"
137                aria-label="Otwórz menu Pasja">
138          <svg class="mega-nav__arrow" width="14" height="14" viewBox="0 0 24 24"
139               fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true">
140            <path d="M6 9l6 6 6-6"/>
141          </svg>
142        </button>
143      </div>
144
145      <div class="mega-nav__item" data-menu="edukacja">
146        <a href="/edukacja" class="mega-nav__link">
147          Edukacja        </a>
148        <button type="button" class="mega-nav__toggle" aria-expanded="false" aria-controls="mega-edukacja" aria-haspopup="true"
149                aria-label="Otwórz menu Edukacja">
150          <svg class="mega-nav__arrow" width="14" height="14" viewBox="0 0 24 24"
151               fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true">
152            <path d="M6 9l6 6 6-6"/>
153          </svg>
154        </button>
155      </div>
156
157    </nav>
158
159    <!-- Ikona wyszukiwarki -->
160    <button class="header-search-btn" id="search-open-btn"
161            aria-label="Otwórz wyszukiwarkę" aria-expanded="false" aria-controls="search-popup">
162      <svg width="30" height="30" viewBox="0 0 24 24" fill="none"
163           stroke="currentColor" stroke-width="1.8" aria-hidden="true">
164        <circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/>
165      </svg>
166      <span class="header-search-btn__label">Szukaj</span>
167    </button>
168
169    <!-- Hamburger (mobile) -->
170    <button class="nav-hamburger" aria-label="Menu" aria-controls="mobile-nav-drawer" aria-expanded="false">
171      <span class="nav-hamburger__bar"></span>
172      <span class="nav-hamburger__bar"></span>
173      <span class="nav-hamburger__bar"></span>
174    </button>
175
176  </div>
177</header>
178<div class="mega-overlay" id="mega-overlay" aria-hidden="true"></div><!-- ═══════════════════════════════════════════════════════════
179     MEGA-MENU: BIZNES
180     Edycja: assets/partials/header/mega-biznes.php
181     Struktura: top panel | 8 kafli | bottom panel
182═══════════════════════════════════════════════════════════ -->
183<div class="mega-menu" id="mega-biznes" role="dialog"
184     aria-label="Menu Biznes" aria-hidden="true">
185  <div class="mega-menu__inner">
186
187    <!-- Górny pasek -->
188    <div class="mega-menu__top">
189      <span class="mega-menu__top-label">Narzędzia dla branży drzewnej</span>
190      <a href="/gieldadrzewna/dodaj" class="mega-menu__top-cta">+ Dodaj ogłoszenie</a>
191    </div>
192
193    <!-- 8 kafli -->
194    <div class="mega-menu__tiles">
195
196      <a href="/biznes" class="mega-tile">
197        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#00838f,#00acc1)">
198          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
199            <path d="M4 22h16a2 2 0 002-2V4a2 2 0 00-2-2H8a2 2 0 00-2 2v2"/>
200            <path d="M4 22a2 2 0 01-2-2v-7c0-1.1.9-2 2-2h2v9a2 2 0 01-2 2z"/>
201            <line x1="10" y1="7" x2="18" y2="7"/>
202            <line x1="10" y1="11" x2="18" y2="11"/>
203            <line x1="10" y1="15" x2="14" y2="15"/>
204          </svg>
205        </div>
206        <div class="mega-tile__body">
207          <strong class="mega-tile__title">Biznes News</strong>
208          <span class="mega-tile__desc">Najnowsze informacje z branż opartych na przerobie drewna</span>
209        </div>
210      </a>
211
212      <a href="/gieldadrzewna/" class="mega-tile">
213        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#e65100,#ff6f00)">
214          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
215            <path d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-1.4 5h12.8"/>
216            <circle cx="9" cy="21" r="1"/><circle cx="20" cy="21" r="1"/>
217          </svg>
218        </div>
219        <div class="mega-tile__body">
220          <strong class="mega-tile__title">Giełda ogłoszeń</strong>
221          <span class="mega-tile__desc">Kupno i sprzedaż drewna, tarcicy i materiałów</span>
222        </div>
223      </a>
224
225      <a href="/katalog" class="mega-tile">
226        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#6a1b9a,#9c27b0)">
227          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
228            <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/>
229            <polyline points="9 22 9 12 15 12 15 22"/>
230          </svg>
231        </div>
232        <div class="mega-tile__body">
233          <strong class="mega-tile__title">Katalog firm</strong>
234          <span class="mega-tile__desc">Tartaki, producenci, dystrybutorzy drewna</span>
235        </div>
236      </a>
237
238      <a href="/oferty-pracy" class="mega-tile">
239        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#2e7d32,#43a047)">
240          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
241            <rect x="2" y="7" width="20" height="14" rx="2"/>
242            <path d="M16 7V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v2"/>
243            <line x1="12" y1="12" x2="12" y2="16"/>
244            <line x1="10" y1="14" x2="14" y2="14"/>
245          </svg>
246        </div>
247        <div class="mega-tile__body">
248          <strong class="mega-tile__title">Oferty pracy</strong>
249          <span class="mega-tile__desc">Praca w branży drzewnej i leśnej</span>
250        </div>
251      </a>
252
253      <a href="https://sklep.drewno.pl" class="mega-tile">
254        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#ad1457,#e91e63)">
255          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
256            <path d="M6 2L3 6v14a2 2 0 002 2h14a2 2 0 002-2V6l-3-4z"/>
257            <line x1="3" y1="6" x2="21" y2="6"/>
258            <path d="M16 10a4 4 0 01-8 0"/>
259          </svg>
260        </div>
261        <div class="mega-tile__body">
262          <strong class="mega-tile__title">Sklep internetowy</strong>
263          <span class="mega-tile__desc">Produkty i akcesoria dla branży drzewnej</span>
264        </div>
265      </a>
266
267            <a href="/maszyny" class="mega-tile">
268        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#1565c0,#1976d2)">
269          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
270            <circle cx="12" cy="12" r="3"/>
271            <path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/>
272          </svg>
273        </div>
274        <div class="mega-tile__body">
275          <strong class="mega-tile__title">Katalog maszyn</strong>
276          <span class="mega-tile__desc">Pilarki, strugarki, suszarnie i urządzenia leśne</span>
277        </div>
278      </a>
279
280      <a href="/kalkulator-miazszosci-drewna-okraglego.html" class="mega-tile">
281        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#5d4037,#8d6e63)">
282          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
283            <rect x="3" y="4" width="18" height="16" rx="2"/>
284            <line x1="7" y1="8" x2="17" y2="8"/>
285            <line x1="7" y1="12" x2="17" y2="12"/>
286            <line x1="7" y1="16" x2="13" y2="16"/>
287          </svg>
288        </div>
289        <div class="mega-tile__body">
290          <strong class="mega-tile__title">Kalkulator miąższości</strong>
291          <span class="mega-tile__desc">Oblicz miąższość drewna okrągłego</span>
292        </div>
293      </a>
294
295      <a href="/kalendarium" class="mega-tile">
296        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#006064,#00838f)">
297          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
298            <rect x="3" y="4" width="18" height="18" rx="2"/>
299            <line x1="16" y1="2" x2="16" y2="6"/>
300            <line x1="8" y1="2" x2="8" y2="6"/>
301            <line x1="3" y1="10" x2="21" y2="10"/>
302          </svg>
303        </div>
304        <div class="mega-tile__body">
305          <strong class="mega-tile__title">Kalendarium</strong>
306          <span class="mega-tile__desc">Targi, wystawy i konferencje branżowe</span>
307        </div>
308      </a>
309
310    </div>
311
312    <!-- Dolny pasek -->
313    <div class="mega-menu__bottom">
314      <a href="/newsletter" class="mega-menu__bottom-link">✉ Subskrybuj Newsletter</a>
315      <a href="https://reklama.drewno.pl" class="mega-menu__bottom-link">📣 Reklama na portalu</a>
316    </div>
317
318  </div>
319</div>
320<!-- ═══════════════════════════════════════════════════════════
321     MEGA-MENU: PASJA
322     Edycja: assets/partials/header/mega-pasja.php
323     Struktura: top panel | 4 kafli | bottom panel
324═══════════════════════════════════════════════════════════ -->
325<div class="mega-menu" id="mega-pasja" role="dialog"
326     aria-label="Menu Pasja" aria-hidden="true">
327  <div class="mega-menu__inner">
328
329    <!-- Górny pasek -->
330    <div class="mega-menu__top">
331      <span class="mega-menu__top-label">Świat drewna z pasją - Dom, ogród, hobby</span>
332      <a href="/gieldadrzewna/" class="mega-menu__top-cta">📢 Oferty na Giełdzie ogłoszeń</a>
333    </div>
334
335    <!-- 4 kafli -->
336    <div class="mega-menu__tiles">
337
338      <a href="/pasja" class="mega-tile">
339        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#507417,#7cb342)">
340          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
341            <path d="M4 22h16a2 2 0 002-2V4a2 2 0 00-2-2H8a2 2 0 00-2 2v16"/>
342            <path d="M2 22h20"/>
343            <line x1="12" y1="11" x2="12" y2="17"/>
344            <line x1="9" y1="14" x2="15" y2="14"/>
345          </svg>
346        </div>
347        <div class="mega-tile__body">
348          <strong class="mega-tile__title">Wiadomości</strong>
349          <span class="mega-tile__desc">Najnowsze wiadomości z branży drzewnej</span>
350        </div>
351      </a>
352
353      <a href="/forum" class="mega-tile">
354        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#0277bd,#039be5)">
355          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
356            <path d="M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z"/>
357          </svg>
358        </div>
359        <div class="mega-tile__body">
360          <strong class="mega-tile__title">Forum</strong>
361          <span class="mega-tile__desc">Dyskusje, pytania, wymiana doświadczeń</span>
362        </div>
363      </a>
364
365      <a href="https://sklep.drewno.pl" class="mega-tile">
366        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#ad1457,#e91e63)">
367          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
368            <path d="M6 2L3 6v14a2 2 0 002 2h14a2 2 0 002-2V6l-3-4z"/>
369            <line x1="3" y1="6" x2="21" y2="6"/>
370            <path d="M16 10a4 4 0 01-8 0"/>
371          </svg>
372        </div>
373        <div class="mega-tile__body">
374          <strong class="mega-tile__title">Sklep internetowy</strong>
375          <span class="mega-tile__desc">Książki, narzędzia i akcesoria dla pasjonatów drewna</span>
376        </div>
377      </a>
378
379      <a href="/muzea" class="mega-tile">
380        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#6d4c41,#8d6e63)">
381          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
382            <path d="M12 3l2.9 5.88L21 9.76l-4.5 4.39 1.06 6.21L12 17.77 6.44 20.36 7.5 14.15 3 9.76l6.1-.88z"/>
383          </svg>
384        </div>
385        <div class="mega-tile__body">
386          <strong class="mega-tile__title">Warto zobaczyć</strong>
387          <span class="mega-tile__desc">Inspiracje, wyjątkowe realizacje i ciekawe przedmioty z drewna</span>
388        </div>
389      </a>
390
391    </div>
392
393    <!-- Dolny pasek -->
394    <div class="mega-menu__bottom">
395      <a href="/newsletter" class="mega-menu__bottom-link">✉ Subskrybuj Newsletter</a>
396      <a href="https://reklama.drewno.pl" class="mega-menu__bottom-link">📣 Reklama na portalu</a>
397    </div>
398
399  </div>
400</div>
401<!-- ═══════════════════════════════════════════════════════════
402     MEGA-MENU: EDUKACJA
403     Edycja: assets/partials/header/mega-edukacja.php
404     Struktura: top panel | 6 kafli | bottom panel
405═══════════════════════════════════════════════════════════ -->
406<div class="mega-menu" id="mega-edukacja" role="dialog"
407     aria-label="Menu Edukacja" aria-hidden="true">
408  <div class="mega-menu__inner">
409
410    <!-- Górny pasek -->
411    <div class="mega-menu__top">
412      <span class="mega-menu__top-label">Rozwijaj się w branży drzewnej</span>
413      <a href="/kalendarium" class="mega-menu__top-cta">📅 Kalendarz szkoleń</a>
414    </div>
415
416    <!-- 6 kafli -->
417    <div class="mega-menu__tiles">
418
419      <a href="/edukacja" class="mega-tile">
420        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#00838f,#00acc1)">
421          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
422            <path d="M4 22h16a2 2 0 002-2V4a2 2 0 00-2-2H8a2 2 0 00-2 2v2"/>
423            <path d="M4 22a2 2 0 01-2-2v-7c0-1.1.9-2 2-2h2v9a2 2 0 01-2 2z"/>
424            <line x1="10" y1="7" x2="18" y2="7"/>
425            <line x1="10" y1="11" x2="18" y2="11"/>
426            <line x1="10" y1="15" x2="14" y2="15"/>
427          </svg>
428        </div>
429        <div class="mega-tile__body">
430          <strong class="mega-tile__title">Aktualności</strong>
431          <span class="mega-tile__desc">Najnowsze informacje o edukacji, szkoleniach i rozwoju w branży</span>
432        </div>
433      </a>
434
435      <a href="https://szkolenia.drewno.pl" class="mega-tile">
436        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#1a237e,#3949ab)">
437          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
438            <path d="M22 10v6M2 10l10-5 10 5-10 5z"/>
439            <path d="M6 12v5c0 2 6 3 6 3s6-1 6-3v-5"/>
440          </svg>
441        </div>
442        <div class="mega-tile__body">
443          <strong class="mega-tile__title">Kursy i szkolenia</strong>
444          <span class="mega-tile__desc">Zdobądź wiedzę i umiejętności</span>
445        </div>
446      </a>
447
448      <a href="/szkoly" class="mega-tile">
449        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#4a148c,#6a1b9a)">
450          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
451            <path d="M3 9l9-7 9 7v11a2 2 0 01-2 2H5a2 2 0 01-2-2z"/>
452            <polyline points="9 22 9 12 15 12 15 22"/>
453          </svg>
454        </div>
455        <div class="mega-tile__body">
456          <strong class="mega-tile__title">Szkolnictwo branżowe</strong>
457          <span class="mega-tile__desc">Szkoły i uczelnie kształcące w kierunkach leśnych i drzewnych</span>
458        </div>
459      </a>
460
461      <a href="/kalendarium" class="mega-tile">
462        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#006064,#00838f)">
463          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
464            <rect x="3" y="4" width="18" height="18" rx="2"/>
465            <line x1="16" y1="2" x2="16" y2="6"/>
466            <line x1="8" y1="2" x2="8" y2="6"/>
467            <line x1="3" y1="10" x2="21" y2="10"/>
468          </svg>
469        </div>
470        <div class="mega-tile__body">
471          <strong class="mega-tile__title">Kalendarium</strong>
472          <span class="mega-tile__desc">Targi, wystawy i konferencje branżowe</span>
473        </div>
474      </a>
475
476      <a href="/oferty-pracy" class="mega-tile">
477        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#2e7d32,#43a047)">
478          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
479            <rect x="2" y="7" width="20" height="14" rx="2"/>
480            <path d="M16 7V5a2 2 0 00-2-2h-4a2 2 0 00-2 2v2"/>
481            <line x1="12" y1="12" x2="12" y2="16"/>
482            <line x1="10" y1="14" x2="14" y2="14"/>
483          </svg>
484        </div>
485        <div class="mega-tile__body">
486          <strong class="mega-tile__title">Oferty pracy</strong>
487          <span class="mega-tile__desc">Praca i rozwój kariery w branży drzewnej i leśnej</span>
488        </div>
489      </a>
490
491      <a href="https://sklep.drewno.pl" class="mega-tile">
492        <div class="mega-tile__icon" style="background:linear-gradient(135deg,#ad1457,#e91e63)">
493          <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#fff" stroke-width="1.8">
494            <path d="M6 2L3 6v14a2 2 0 002 2h14a2 2 0 002-2V6l-3-4z"/>
495            <line x1="3" y1="6" x2="21" y2="6"/>
496            <path d="M16 10a4 4 0 01-8 0"/>
497          </svg>
498        </div>
499        <div class="mega-tile__body">
500          <strong class="mega-tile__title">Sklep internetowy</strong>
501          <span class="mega-tile__desc">Największy wybór literatury fachowej</span>
502        </div>
503      </a>
504
505    </div>
506
507    <!-- Dolny pasek -->
508    <div class="mega-menu__bottom">
509      <a href="/newsletter" class="mega-menu__bottom-link">✉ Subskrybuj Newsletter</a>
510      <a href="https://reklama.drewno.pl" class="mega-menu__bottom-link">📣 Reklama na portalu</a>
511    </div>
512
513  </div>
514</div>
515<!-- ═══════════════════════════════════════════════════════════
516     POPUP WYSZUKIWARKI - live search, podgląd, Cmd+K
517     Edycja: assets/partials/header/search-popup.php
518═══════════════════════════════════════════════════════════ -->
519<div class="search-popup" id="search-popup" role="search"
520     aria-label="Zaawansowana wyszukiwarka" aria-hidden="true" inert>
521  <div class="search-popup__backdrop" id="search-backdrop"></div>
522  <div class="search-popup__box">
523
524    <div class="search-popup__header">
525      <span class="search-popup__title" aria-hidden="true">Wyszukiwarka</span>
526      <span class="search-popup__kbd" aria-hidden="true"><kbd>/</kbd> lub <kbd>⌘K</kbd></span>
527      <button class="search-popup__close" id="search-close-btn" aria-label="Zamknij wyszukiwarkę">
528        <svg width="20" height="20" viewBox="0 0 24 24" fill="none"
529             stroke="currentColor" stroke-width="2.5">
530          <path d="M18 6L6 18M6 6l12 12"/>
531        </svg>
532      </button>
533    </div>
534
535    <div class="search-popup__message" id="search-popup-message">Wpisz co najmniej 2 znaki…</div>
536
537    <div class="search-popup__main">
538      <input type="text" class="search-popup__input" id="search-popup-input" autocomplete="off"
539             placeholder="Czego szukasz? (artykuł, firma, ogłoszenie…)" aria-label="Fraza 
539wyszukiwania">
540      <button type="button" class="search-popup__submit" id="search-popup-submit" aria-label="Szukaj">
541        <svg width="18" height="18" viewBox="0 0 24 24" fill="none"
542             stroke="currentColor" stroke-width="2.5" aria-hidden="true">
543          <circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/>
544        </svg>
545        Szukaj      </button>
546    </div>
547
548    <div class="search-popup__toolbar">
549      <div class="search-popup__filters" role="group" aria-label="Zakres wyszukiwania">
550        <button type="button" class="search-popup__filter-btn active" data-scope="all">Wszystko</button>
551        <button type="button" class="search-popup__filter-btn" data-scope="articles">Artykuły</button>
552        <button type="button" class="search-popup__filter-btn" data-scope="advs">Ogłoszenia</button>
553        <button type="button" class="search-popup__filter-btn" data-scope="firms">Firmy</button>
554        <button type="button" class="search-popup__filter-btn" data-scope="machines">Maszyny</button>
555        <button type="button" class="search-popup__filter-btn" data-scope="jobs">Oferty pracy</button>
556      </div>
557
558      <div class="search-popup__meta-controls">
559        <label class="search-popup__meta-label" for="search-popup-range">Okres</label>
560        <select class="search-popup__select" id="search-popup-range" aria-label="Zakres czasowy">
561          <option value="all">Dowolny czas</option>
562          <option value="30d">Ostatnie 30 dni</option>
563          <option value="365d">Ostatnie 12 miesięcy</option>
564        </select>
565      </div>
566    </div>
567
568    <div class="search-popup__content">
569      <div class="search-popup__results" id="search-popup-results">
570        <div class="search-popup__state" id="search-popup-state">Wpisz co najmniej 2 znaki…</div>
571      </div>
572      <aside class="search-popup__preview" id="search-popup-preview" aria-label="Podgląd artykułu">
573        <div class="search-popup__preview-inner" id="search-popup-preview-inner">
574          <p class="search-popup__preview-placeholder">Wybierz artykuł z listy lub wpisz zapytanie.</p>
575        </div>
576      </aside>
577    </div>
578
579    <div class="search-popup__footer" id="search-popup-footer" style="display:none">
580      <a href="#" class="search-popup__more" id="search-popup-more">Pokaż wszystkie wyniki →</a>
581      <span class="search-popup__hint"><kbd>↵</kbd> otwiera &nbsp;·&nbsp; <kbd>Esc</kbd> zamyka</span>
582    </div>
583
584    <div class="search-popup__hints">
585      <span class="search-popup__hint-label">Popularne:</span>
586            <a href="/szukaj?q=sosna" class="search-popup__hint">sosna</a>
587            <a href="/szukaj?q=d%C4%85b" class="search-popup__hint">dąb</a>
588            <a href="/szukaj?q=tarcica" class="search-popup__hint">tarcica</a>
589            <a href="/szukaj?q=tartak" class="search-popup__hint">tartak</a>
590            <a href="/szukaj?q=pellet" class="search-popup__hint">pellet</a>
591          </div>
592
593  </div>
594</div>
595<script>
596window.headerSearchConfig = {"searchUrl":"/szukaj","apiUrl":"/search-api","i18n":{"scopeArticles":"Artykuły","scopeAdvs":"Ogłoszenia","scopeFirms":"Firmy","scopeJobs":"Oferty pracy","scopeMachines":"Maszyny","scopeAdvsArchive":"Ogłoszenia - archiwum","archivedBadge":"Archiwum","initialState":"Wpisz co najmniej 2 znaki…","previewPlaceholder":"Wybierz artykuł z listy lub wpisz zapytanie.","moreResults":"Pokaż wszystkie wyniki →","loading":"Szukam…","errorSearch":"Błąd wyszukiwania.","errorConnection":"Błąd połączenia.","noResultsFor":"Brak wyników dla „__QUERY__”","previewReadMore":"Czytaj więcej →"}};
597</script>
597
598<!-- ═══════════════════════════════════════════════════════════
599     MOBILE DRAWER - menu boczne na urządzenia mobilne
600     Edycja: assets/partials/header/mobile-drawer.php
601═══════════════════════════════════════════════════════════ -->
602<div class="nav-drawer__overlay" aria-hidden="true"></div>
603<nav id="mobile-nav-drawer" class="nav-drawer" aria-label="Menu mobilne" aria-hidden="true">
604  <div class="nav-drawer__header">
605    <strong class="nav-drawer__title">Menu</strong>
606    <button class="nav-drawer__close" aria-label="Zamknij menu">✕</button>
607  </div>
608
609  
610  <section class="nav-drawer__section" aria-label="Szybkie akcje">
611    <div class="nav-drawer__section-title">Szybkie akcje</div>
612    <div class="nav-drawer__actions">
613      <button type="button" id="drawer-search-btn" class="nav-drawer__action nav-drawer__action--muted">Szukaj</button>
614      <a href="/gieldadrzewna/dodaj" class="nav-drawer__action nav-drawer__action--primary">+ Dodaj ogłoszenie</a>
615            <a href="/logowanie?ret=%2Fgieldadrzewna%2F" class="nav-drawer__action" rel="nofollow">Zaloguj się</a>
616                      </div>
617  </section>
618
619  <section class="nav-drawer__section" aria-label="Na skróty">
620    <div class="nav-drawer__section-title">Na skróty</div>
621    <div class="nav-drawer__shortcuts">
622            <a href="/gieldadrzewna/" class="nav-drawer__shortcut">Giełda ogłoszeń</a>
623            <a href="/oferty-pracy" class="nav-drawer__shortcut">Oferty pracy</a>
624            <a href="/katalog" class="nav-drawer__shortcut">Katalog firm</a>
625            <a href="/maszyny" class="nav-drawer__shortcut">Katalog maszyn</a>
626            <a href="https://sklep.drewno.pl" class="nav-drawer__shortcut" target="_blank" rel="noopener">Sklep internetowy</a>
627          </div>
628  </section>
629
630  <section class="nav-drawer__section" aria-label="Główna nawigacja">
631        <details class="nav-drawer__group" open>
632      <summary class="nav-drawer__summary">Biznes</summary>
633      <div class="nav-drawer__group-links">
634                <a href="/biznes" class="nav-drawer__link">Biznes News</a>
635                <a href="/gieldadrzewna/" class="nav-drawer__link">Giełda ogłoszeń</a>
636                <a href="/katalog" class="nav-drawer__link">Katalog firm</a>
637                <a href="/oferty-pracy" class="nav-drawer__link">Oferty pracy</a>
638                <a href="https://sklep.drewno.pl" class="nav-drawer__link" target="_blank" rel="noopener">Sklep internetowy</a>
639                <a href="/maszyny" class="nav-drawer__link">Katalog maszyn</a>
640                <a href="/kalkulator-miazszosci-drewna-okraglego.html" class="nav-drawer__link">Kalkulator miąższości</a>
641                <a href="/kalendarium" class="nav-drawer__link">Kalendarium</a>
642              </div>
643    </details>
644        <details class="nav-drawer__group">
645      <summary class="nav-drawer__summary">Pasja</summary>
646      <div class="nav-drawer__group-links">
647                <a href="/pasja" class="nav-drawer__link">Wiadomości</a>
648                <a href="/forum" class="nav-drawer__link">Forum</a>
649                <a href="https://sklep.drewno.pl" class="nav-drawer__link" target="_blank" rel="noopener">Sklep internetowy</a>
650                <a href="/muzea" class="nav-drawer__link">Warto zobaczyć</a>
651              </div>
652    </details>
653        <details class="nav-drawer__group">
654      <summary class="nav-drawer__summary">Edukacja</summary>
655      <div class="nav-drawer__group-links">
656                <a href="/edukacja" class="nav-drawer__link">Aktualności</a>
657                <a href="https://szkolenia.drewno.pl" class="nav-drawer__link" target="_blank" rel="noopener">Kursy i szkolenia</a>
658                <a href="/szkoly" class="nav-drawer__link">Szkolnictwo branżowe</a>
659                <a href="/kalendarium" class="nav-drawer__link">Kalendarium</a>
660                <a href="/oferty-pracy" class="nav-drawer__link">Oferty pracy</a>
661                <a href="https://sklep.drewno.pl" class="nav-drawer__link" target="_blank" rel="noopener">Sklep internetowy</a>
662              </div>
663    </details>
664      </section>
665
666  <section class="nav-drawer__section" aria-label="Więcej">
667    <div class="nav-drawer__section-title">Więcej</div>
668    <div class="nav-drawer__group-links nav-drawer__group-links--flat">
669            <a href="/newsletter" class="nav-drawer__link">Newsletter</a>
670            <a href="https://szkolenia.drewno.pl" class="nav-drawer__link" target="_blank" rel="noopener">Szkolenia</a>
671            <a href="https://reklama.drewno.pl" class="nav-drawer__link" target="_blank" rel="noopener">Reklama</a>
672            <a href="/kontakt" class="nav-drawer__link">Kontakt</a>
673          </div>
674  </section>
675
676  <section class="nav-drawer__section" aria-label="Język">
677    <div class="nav-drawer__section-title">Język</div>
678    <div class="nav-drawer__locales">
679                        <a href="https://www.drewno.pl/gieldadrzewna/"
680         class="nav-drawer__locale-link is-active"
681         hreflang="pl-PL">
682        <span class="nav-drawer__locale-flag">🇵🇱</span>
683        <span>Polski</span>
684      </a>
685                              <a href="https://www.drewno.pl/en/timber-exchange/"
686         class="nav-drawer__locale-link"
687         hreflang="en">
688        <span class="nav-drawer__locale-flag">🇬🇧</span>
689        <span>English</span>
690      </a>
691                              <a href="https://www.drewno.pl/de/holzboerse/"
692         class="nav-drawer__locale-link"
693         hreflang="de">
694        <span class="nav-drawer__locale-flag">🇩🇪</span>
695        <span>Deutsch</span>
696      </a>
697                              <a href="https://www.drewno.pl/ua/derevna-birzha/"
698         class="nav-drawer__locale-link"
699         hreflang="uk">
700        <span class="nav-drawer__locale-flag">🇺🇦</span>
701        <span>Українська</span>
702      </a>
703                              <a href="https://www.drewno.pl/sk/drevna-burza/"
704         class="nav-drawer__locale-link"
705         hreflang="sk">
706        <span class="nav-drawer__locale-flag">🇸🇰</span>
707        <span>Slovenčina</span>
708      </a>
709                </div>
710  </section>
711</nav>
712<div class="page-loader" id="page-loader" role="status" aria-live="polite" aria-hidden="true"><span class="page-loader__icon" aria-hidden="true"></span><span class="visually-hidden">Ładowanie strony</span></div>
712<script src="/assets/js/header.js?v=1790765823" defer></script>
712<script src="/assets/js/page-loader.js?v=1790765823" defer></script>
712<div class="revive-below-header" role="region" aria-label="Reklama"><div class="revive-below-header__inner"><ins class="revive-slot revive-below-header__slot" data-revive-zoneid="32" data-revive-id="aa600e994c965dc732dd0f67c6cc7b18" data-revive-strona="portal" data-revive-urlreg="/gieldadrzewna/"></ins></div></div>
712<script async src="//ads2.drewno.pl/delivery/asyncjs.php"></script>
712
713<!-- ── Hero ──────────────────────────────────────────────── -->
714<section class="offer-hero">
715  <div class="offer-hero__inner">
716
717    <div class="offer-hero__left">
718                  <h1 class="offer-hero__title">Giełda Ogłoszeń</h1>
719      <p class="offer-hero__sub">Kupno i sprzedaż drewna, tarcicy, biomasy, maszyn</p>
720      <div class="offer-hero__filters">
721                                      </div>
722    </div>
723
724    <div class="offer-hero__stat">
725      <div class="offer-hero__counts">
726        <div class="offer-hero__count">
727          <span class="offer-hero__count-num">543</span>
728          <span class="offer-hero__count-label">Aktywne</span>
729        </div>
730        <span class="offer-hero__count-divider" aria-hidden="true">|</span>
731        <div class="offer-hero__count">
732          <span class="offer-hero__count-num">86&nbsp;748</span>
733          <span class="offer-hero__count-label">Archiwalne</span>
734        </div>
735      </div>
736    </div>
737
738  </div>
739</section>
740
741<!-- ── Główny layout ─────────────────────────────────────── -->
742<div class="offer-layout">
743
744  <!-- ── KOLUMNA GŁÓWNA ── -->
745  <main>
746
747    <!-- Panel filtrów -->
748    <div class="offer-filters-card">
749      <div class="offer-mobile-cta-stack">
750        <a href="/gieldadrzewna/dodaj" class="offer-mobile-cta" aria-label="Dodaj ogłoszenie">
751          <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" aria-hidden="true"><path d="M12 5v14M5 12h14"/></svg>
752          Dodaj ogłoszenie        </a>
753        <a href="/platnosci" class="offer-mobile-order-cta">
754          Zamów dostęp        </a>
755      </div>
756      <div class="offer-filters-card__header">
757        <h2 class="offer-filters-card__title">Szukaj ogłoszeń</h2>
758        <div style="display:flex;gap:8px;flex-wrap:wrap;align-items:center;">
759          <a href="/gieldadrzewna/dodaj" class="offer-btn-add">
760            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 5v14M5 12h14"/></svg>
761            Dodaj ogłoszenie          </a>
762          <a href="/platnosci" class="filter-extras__cta">Zamów dostęp</a>
763                  </div>
764      </div>
765
766      <form method="GET" action="/gieldadrzewna/" class="filter-form" id="search-form">
767        <input
768          type="text"
769          name="q"
770          placeholder="Szukaj ogłoszeń…"
771          value=""
772          aria-label="Fraza wyszukiwania"
773        >
774                <div class="cat-combo" id="cat-combo">
775          <span class="cat-combo-icon" aria-hidden="true">
776            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="7"/><path d="M21 21l-4.35-4.35"/></svg>
777          </span>
778          <input
779            type="text"
780            class="cat-combo-input"
781            id="cat-combo-input"
782            placeholder="Kategoria - wpisz lub wybierz"
783            value=""
784            autocomplete="off"
785            aria-label="Kategoria"
786            aria-haspopup="listbox"
787            aria-expanded="false"
788          >
789          <input type="hidden" name="cat" id="cat-hidden" value="0">
790          <div class="cat-dropdown" id="cat-dropdown" role="listbox">
791            <div class="cat-option cat-option--reset" data-id="0" data-name="">Wszystkie kategorie</div>
792            <div class="cat-dropdown__loading" id="cat-dropdown-loading" aria-live="polite">Wczytywanie…</div>
793          </div>
794        </div>
795                <button type="submit" class="btn-search">Szukaj</button>
796      </form>
797
798      <div class="type-pills-row">
799        <!-- Rząd 1: główne typy (Sprzedam / Kupię / Inne) -->
800        <div class="type-pills type-pills--main">
801          <input type="radio" class="type-pill type-pill--s" name="type" id="type-s" value="s" form="search-form">
802          <label for="type-s"><span class="type-pill-dot"></span>Sprzedam</label>
803          <input type="radio" class="type-pill type-pill--k" name="type" id="type-k" value="k" form="search-form">
804          <label for="type-k"><span class="type-pill-dot"></span>Kupię</label>
805          <input type="radio" class="type-pill type-pill--i" name="type" id="type-i" value="i" form="search-form">
806          <label for="type-i"><span class="type-pill-dot"></span>Inne</label>
807        </div>
808
809        <!-- Rząd 2: Wszystkie + przycisk Filtry -->
810        <div class="type-pills-sub">
811          <div class="type-pills type-pills--all">
812            <input type="radio" class="type-pill type-pill--all" name="type" id="type-all" value="" form="search-form" checked>
813            <label for="type-all">Wszystkie</label>
814          </div>
815
816                    <button type="button" class="offer-filters-toggle" id="offer-filters-toggle" aria-expanded="false">
817            <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><line x1="4" y1="6" x2="20" y2="6"/>
817<line x1="8" y1="12" x2="16" y2="12"/><line x1="10" y1="18" x2="14" y2="18"/></svg>
818            Filtry                        <i class="toggle-arrow">&#9660;</i>
819          </button>
820        </div>
821      </div>
822
823      <div class="offer-filters-panel" id="offer-filters-panel">
824        <div class="offer-filter-group">
825          <label for="price-min">Cena (PLN)</label>
826          <div class="offer-filter-price">
827            <input type="number" id="price-min" name="price_min" form="search-form" placeholder="od" min="0" value="" aria-label="Cena od">
828            <span>-</span>
829            <input type="number" id="price-max" name="price_max" form="search-form" placeholder="do" min="0" value="" aria-label="Cena do">
830          </div>
831        </div>
832        <div class="offer-filter-group">
833          <label for="country-filter">Kraj</label>
834          <select id="country-filter" name="country" form="search-form" class="offer-filter-select" aria-label="Filtruj według kraju">
835            <option value="0">Wszystkie kraje</option>
836                          <option value="1">Algieria</option>
837                          <option value="8">Australia</option>
838                          <option value="9">Austria</option>
839                          <option value="16">Belgia</option>
840                          <option value="15">Białoruś</option>
841                          <option value="20">Botswana</option>
842                          <option value="21">Brazil</option>
843                          <option value="24">Bułgaria</option>
844                          <option value="28">Chiny</option>
845                          <option value="31">Croatia</option>
846                          <option value="33">Czechy</option>
847                          <option value="34">Dania</option>
848                          <option value="40">Estonia</option>
849                          <option value="42">Finland</option>
850                          <option value="43">France</option>
851                          <option value="54">Hungary</option>
852                          <option value="56">India</option>
853                          <option value="59">Ireland</option>
854                          <option value="60">Israel</option>
855                          <option value="25">Kanada</option>
856                          <option value="70">Lebanon</option>
857                          <option value="71">Litwa</option>
858                          <option value="72">Luxembourg</option>
859                          <option value="69">Łotwa</option>
860                          <option value="75">Madagascar</option>
861                          <option value="78">Mauritius</option>
862                          <option value="79">Mexico</option>
863                          <option value="84">Netherlands</option>
864                          <option value="45">Niemcy</option>
865                          <option value="89">Norway</option>
866                          <option value="91">Pakistan</option>
867                          <option value="95">Peru</option>
868                          <option value="97">Polska</option>
869                          <option value="100">Romania</option>
870                          <option value="101">Rosja</option>
871                          <option value="109">Slovenia</option>
872                          <option value="108">Słowacja</option>
873                          <option value="110">South Africa</option>
874                          <option value="111">Spain</option>
875                          <option value="114">St.Lucia</option>
876                          <option value="115">St.Martin</option>
877                          <option value="130">Stany Zjednoczone</option>
878                          <option value="119">Switzerland</option>
879                          <option value="118">Szwecja</option>
880                          <option value="121">Thailand</option>
881                          <option value="125">Turkey</option>
882                          <option value="127">Ukraina</option>
883                          <option value="131">Urugwaj</option>
884                          <option value="129">Wielka Brytania</option>
885                          <option value="61">Włochy</option>
886                      </select>
887        </div>
888        <div id="offer-filter-postal-radius" class="offer-filter-postal-radius">
889                    <div class="offer-filter-group">
890            <label for="postal-cc-filter">Kraj kodu</label>
891            <select id="postal-cc-filter" name="postal_cc" form="search-form" class="offer-filter-select" aria-label="Kraj, którego dotyczy wpisany kod pocztowy (gdy „Wszystkie kraje”)">
892              <option value="" selected>Polska (PL)</option>
893                            <option value="AT">AT - Austria</option>
894                            <option value="BE">BE - Belgia</option>
895                            <option value="BG">BG - Bułgaria</option>
896                            <option value="CH">CH - Switzerland</option>
897                            <option value="CZ">CZ - Czechy</option>
898                            <option value="DE">DE - Niemcy</option>
899                            <option value="DK">DK - Dania</option>
900                            <option value="EE">EE - Estonia</option>
901                            <option value="ES">ES - Spain</option>
902                            <option value="FI">FI - Finland</option>
903                            <option value="FR">FR - France</option>
904                            <option value="GB">GB - Wielka Brytania</option>
905                            <option value="HR">HR - Croatia</option>
906                            <option value="HU">HU - Hungary</option>
907                            <option value="IE">IE - Ireland</option>
908                            <option value="IT">IT - Włochy</option>
909                            <option value="LT">LT - Litwa</option>
910                            <option value="LU">LU - Luxembourg</option>
911                            <option value="LV">LV - Łotwa</option>
912                            <option value="NO">NO - Norway</option>
913                            <option value="PL">PL - Polska</option>
914                            <option value="SE">SE - Szwecja</option>
915                            <option value="SI">SI - Slovenia</option>
916                            <option value="SK">SK - Słowacja</option>
917                            <option value="UA">UA - Ukraina</option>
918                          </select>
919          </div>
920                    <div class="offer-filter-group offer-filter-group--postal" style="position:relative;">
921            <label for="postal-filter">Kod pocztowy</label>
922            <div class="geo-combo" id="geo-combo" style="position:relative;">
923              <input type="text" id="postal-filter" name="postal" form="search-form" inputmode="text" placeholder="np. 62-322" value="" maxlength="100" autocomplete="off" aria-label="Kod pocztowy - punkt odniesienia dla promienia">
924              <div class="cat-dropdown" id="geo-dropdown" role="listbox" style="display:none;position:absolute;top:100%;left:0;width:100%;z-index:99;background:var(--surface-page);border:1px solid var(--clr-border);border-top:none;border-radius:0 0 var(--radius-md) var(--radius-md);max-height:300px;overflow-y:auto;box-shadow:var(--shadow-md);"></div>
925            </div>
926          </div>
927          <div class="offer-filter-group">
928            <label for="radius-filter">Promień</label>
929            <select id="radius-filter" name="radius" form="search-form" class="offer-filter-select" aria-label="Maksymalna odległość od kodu pocztowego">
930                            <option value="0">+ 0 km</option>
931                            <option value="10">10 km</option>
932                            <option value="15">15 km</option>
933                            <option value="25">25 km</option>
934                            <option value="50" selected>50 km</option>
935                            <option value="100">100 km</option>
936                            <option value="150">150 km</option>
937                            <option value="200">200 km</option>
938                          </select>
939          </div>
940        </div>
941              </div>
942
943      <div class="filter-extras">
944        <input type="checkbox" class="arch-checkbox" id="arch-cb" name="arch" value="1" form="search-form">
945        <label for="arch-cb">
946          <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" aria-hidden="true"><path d="M5 8h14M5 8a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V10a2 2 0 0 0-2-2M5 8V6a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2"/></svg>
947          Szukaj również w archiwum ogłoszeń        </label>
948              </div>
949    </div>
950
951    <!-- Revive: leaderboard giełda drewna -->
952            <div class="adv-market-leaderboard" id="market-leaderboard" data-slot-index="market-lb" style="display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start"></div>
953        <template id="market-lb-desktop">
954      <div class="card-special__ad-label" style="text-align:left;background:transparent;padding:1px 0 2px 0;"><a href="https://reklama.drewno.pl" target="_blank" rel="noopener noreferrer">REKLAMA [Z:28]</a></div>
955      <div class="adv-market-leaderboard__slot" style="text-align:center;min-height:200px;">
956        <ins class="revive-slot revive-slot--leaderboard" data-revive-zoneid="28"
957             data-revive-id="aa600e994c965dc732dd0f67c6cc7b18"
958             data-revive-strona="gielda"
959             data-revive-urlreg="/gieldadrzewna/"></ins>
960      </div>
961    </template>
962            <template id="market-lb-mobile">
963      <div class="card-special__ad-label" style="text-align:left;background:transparent;padding:1px 0 2px 0;"><a href="https://reklama.drewno.pl" target="_blank" rel="noopener noreferrer">REKLAMA [Z:18]</a></div>
964      <div class="adv-market-leaderboard__slot">
965        <ins class="revive-slot revive-slot--leaderboard" data-revive-zoneid="18"
966             data-revive-id="aa600e994c965dc732dd0f67c6cc7b18"
967             data-revive-strona="gielda"
968             data-revive-urlreg="/gieldadrzewna/"></ins>
969      </div>
970    </template>
971        
971<script>
972    (function () {
973        var lb = document.getElementById('market-leaderboard');
974        var mobile = !!(window.matchMedia && window.matchMedia('(max-width: 767.98px)').matches);
975        var tpl = document.getElementById(mobile ? 'market-lb-mobile' : 'market-lb-desktop');
976        if (!lb) return;
977        if (!tpl || !tpl.content) { lb.style.display = 'none'; return; }
978        if (mobile) {
979            lb.classList.add('adv-market-leaderboard--mobile');
980            lb.setAttribute('data-slot-index', 'market-lb-mobile');
981        } else {
982            lb.style.minHeight = '200px';
983        }
984        lb.appendChild(tpl.content.cloneNode(true));
985    }());
986    </script>
986
987    
988    <!-- Popularne kategorie -->
989        <div class="pop-cats">
990      <div class="pop-cats__header">
991        <h2 class="pop-cats__title">Popularne kategorie</h2>
992        <a href="/gieldadrzewna/mapa-kategorii" class="pop-cats__map-btn">
993          Mapa kategorii        </a>
994      </div>
995      <div class="pop-cats__chips">
996                        <a href="/gieldadrzewna/tarcica-iglasta-nieobrzynana-obrzynana-strugana-suszona/" class="pop-cats__chip">
997          Tarcica iglasta (nieobrzynana, obrzynana, strugana, suszona)          <span class="pop-cats__chip-count">53</span>
998        </a>
999                        <a href="/gieldadrzewna/tarcica-lisciasta-nieobrzynana-obrzynana-strugana-suszona/" class="pop-cats__chip">
1000          Tarcica liściasta (nieobrzynana, obrzynana, strugana, suszona)          <span class="pop-cats__chip-count">34</span>
1001        </a>
1002                        <a href="/gieldadrzewna/traki-ramowe-tasmowe-tarczowe-linie-pryzmujace/" class="pop-cats__chip">
1003          Traki ramowe, taśmowe, tarczowe, linie pryzmujące          <span class="pop-cats__chip-count">32</span>
1004        </a>
1005                        <a href="/gieldadrzewna/wiezby-belki-lite-klejone-wiazary-laty-kontrlaty-glulam-clt-x-lam-i-belki-bsh-kvh-z-certyfikatem-ce/" class="pop-cats__chip">
1006          Więźby, belki lite, klejone, wiązary, łaty, kontrłaty Glulam, CLT, X-lam, I-belki, BSH, KVH z certyfikatem CE          <span class="pop-cats__chip-count">28</span>
1007        </a>
1008                        <a href="/gieldadrzewna/pozostale-urzadzenia/" class="pop-cats__chip">
1009          Pozostałe urządzenia          <span class="pop-cats__chip-count">28</span>
1010        </a>
1011                        <a href="/gieldadrzewna/pilarki-tarczowe/" class="pop-cats__chip">
1012          Pilarki tarczowe          <span class="pop-cats__chip-count">25</span>
1013        </a>
1014                        <a href="/gieldadrzewna/kompletne-linie-produkcyjne/" class="pop-cats__chip">
1015          Kompletne linie produkcyjne          <span class="pop-cats__chip-count">23</span>
1016        </a>
1017                        <a href="/gieldadrzewna/maszyny-do-produkcji-palet-zbijarki-rozcinarki/" class="pop-cats__chip">
1018          Maszyny do produkcji palet (zbijarki, rozcinarki)          <span class="pop-cats__chip-count">19</span>
1019        </a>
1020              </div>
1021    </div>
1022    
1023    <!-- Popularne wyszukiwania (SEO landingi z białej listy) — strona główna giełdy,
1024         per locale: linki/etykiety z fetchWidgetLinks($pathLocale), tylko zatwierdzone wersje -->
1025    
1026    <!-- SEO landing: tekst redakcyjny nad wynikami (HTML z admina, permission >= 100) -->
1027    
1028    <!-- Liczba wyników -->
1029        <p class="offer-results-meta">
1030      Znaleziono <strong>543</strong>
1031      ogłoszeń          </p>
1032    
1033    <!-- SSR: pierwsza strona -->
1034    <div id="items-container">
1035                        <div class="offer-card-wrap" data-offer-id="263241"><a href="/gieldadrzewna/deski-tarasowe-podesty-nawierzchnie-z-drewna/termo-drewno-modrzew-kanadyjski-europejski-swierk-sosna-impregnowana-cisnieniowo-263241.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/fe5d0ebc10c9100de711c216_thumb.webp" type="image/webp"><img src="/files/advs/fe5d0ebc10c9100de711c216.jpg" class="offer-card__img" alt="&quot;TERMO DREWNO &quot; Modrzew kanadyjski / europejski / świerk/ sosna impregnowana ciśnieniowo" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Deski tarasowe, podesty, nawierzchnie z drewna</span><h2 class="offer-card__title">&quot;TERMO DREWNO &quot; Modrzew kanadyjski / europejski / świerk/ sosna impregnowana ciśnieniowo</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> śląskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 29.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263241" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="255670"><a href="/gieldadrzewna/tarcica-iglasta-nieobrzynana-obrzynana-strugana-suszona/tarcica-iglasta-drewno-konstrukcyjne-c24-i-drewno-klejone-kvh-i-bsh-255670.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/255670_1.jpg" class="offer-card__img" alt="Tarcica iglasta, drewno konstrukcyjne C24 i drewno klejone KVH i BSH" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Tarcica iglasta (nieobrzynana, obrzynana, strugana, suszona)</span><h2 class="offer-card__title">Tarcica iglasta, drewno konstrukcyjne C24 i drewno klejone KVH i BSH</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 62-028 · wielkopolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 31.03.2023</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="255670" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="263400"><a href="/gieldadrzewna/wiezby-belki-lite-klejone-wiazary-laty-kontrlaty-glulam-clt-x-lam-i-belki-bsh-kvh-z-certyfikatem-ce/kvh-i-bsh-od-producenta-srednice-dlugosci-od-5-do-13m-263400.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/c3b4724777ac3cffd7d772ec_thumb.webp" type="image/webp"><img src="/files/advs/c3b4724777ac3cffd7d772ec.jpg" class="offer-card__img" alt="KVH i BSH od producenta - średnice, długości od 5 do 13m" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Więźby, belki lite, klejone, wiązary, łaty, kontrłaty Glulam, CLT, X-lam, I-belki, BSH, KVH z certyfikatem CE</span><h2 class="offer-card__title">KVH i BSH od producenta - średnice, długości od 5 do 13m</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 35108 · Allendorf · Niemcy</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 22.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263400" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="262966"><a href="/gieldadrzewna/traki-ramowe-tasmowe-tarczowe-linie-pryzmujace/wravor-wrc-1150-ac-262966.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/51e4750f9a1db4277066828e_thumb.webp" type="image/webp"><img src="/files/advs/51e4750f9a1db4277066828e.jpg" class="offer-card__img" alt="wravor WRC 1150 AC" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Traki ramowe, taśmowe, tarczowe, linie pryzmujące</span><h2 class="offer-card__title">wravor WRC 1150 AC</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 21-500 · lubelskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 01.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="262966" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="262170"><a href="/gieldadrzewna/tarcica-iglasta-nieobrzynana-obrzynana-strugana-suszona/tarcica-iglasta-versowood-finlandia-262170.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/262170_1.jpg" class="offer-card__img" alt="Tarcica iglasta - Versowood Finlandia" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Tarcica iglasta (nieobrzynana, obrzynana, strugana, suszona)</span><h2 class="offer-card__title">Tarcica iglasta - Versowood Finlandia</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> mazowieckie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 25.11.2025</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="262170" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="262747"><a href="/gieldadrzewna/tarcica-lisciasta-nieobrzynana-obrzynana-strugana-suszona/tarcica-25mm-dab-czerwony-262747.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/ca638f55c2e85419192e7a87_thumb.webp" type="image/webp"><img src="/files/advs/ca638f55c2e85419192e7a87.jpg" class="offer-card__img" alt="Tarcica 25mm dąb czerwony" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Tarcica liściasta (nieobrzynana, obrzynana, strugana, suszona)</span><h2 class="offer-card__title">Tarcica 25mm dąb czerwony</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 63-708 · wielkopolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 24.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="262747" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="253337"><a href="/gieldadrzewna/tarcica-iglasta-nieobrzynana-obrzynana-strugana-suszona/wiezby-dachowe-tarcica-obrzynana-sosnowa-belki-krokwie-laty-deski-253337.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="/files/advs/a65101163e684c3b93c29076.jpg" class="offer-card__img" alt="Więźby dachowe tarcica obrzynana sosnowa belki krokwie łaty deski" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Tarcica iglasta (nieobrzynana, obrzynana, strugana, suszona)</span><h2 class="offer-card__title">Więźby dachowe tarcica obrzynana sosnowa belki krokwie łaty deski</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 29-100 · świętokrzyskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 29.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="253337" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="262140"><a href="/gieldadrzewna/strugarki-wyrowniarki-grubosciowki/strugarka-czterostronna-weinig-hydromat-h17bl-262140.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/262140_1.jpg" class="offer-card__img" alt="Strugarka czterostronna Weinig Hydromat H17BL" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Strugarki, wyrówniarki, grubościówki</span><h2 class="offer-card__title">Strugarka czterostronna Weinig Hydromat H17BL</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> wielkopolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 24.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="262140" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="263060"><a href="/gieldadrzewna/pilarki-tarczowe/trak-tarczowy-dwuwalowy-tta-450-amix-263060.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/34f18b26aa6dd0f3eaefce25_thumb.webp" type="image/webp"><img src="/files/advs/34f18b26aa6dd0f3eaefce25.jpg" class="offer-card__img" alt="TRAK TARCZOWY DWUWAŁOWY TTA-450 AMIX" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Pilarki tarczowe</span><h2 class="offer-card__title">TRAK TARCZOWY DWUWAŁOWY TTA-450 AMIX</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 98-358 · Kiełczygłów · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 16.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263060" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="262563"><a href="/gieldadrzewna/kotly-na-drewno-i-biomase-systemy-spalania-biomasy/kotlownia-na-trociny-750-kw-262563.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/262563_1.jpg" class="offer-card__img" alt="Kotłownia na trociny - 750 kW" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Kotły na drewno i biomasę, systemy spalania biomasy</span><h2 class="offer-card__title">Kotłownia na trociny - 750 kW</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> wielkopolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 27.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="262563" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="259334"><a href="/gieldadrzewna/wiezby-belki-lite-klejone-wiazary-laty-kontrlaty-glulam-clt-x-lam-i-belki-bsh-kvh-z-certyfikatem-ce/oferujemy-kompletne-materialy-konstrukcji-dachowych-z-najwyzszej-jakosci-drewna-259334.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/9eb3d2ab514ee29d254e1fef_thumb.webp" type="image/webp"><img src="/files/advs/9eb3d2ab514ee29d254e1fef.jpg" class="offer-card__img" alt="Oferujemy kompletne materiały konstrukcji dachowych  z najwyższej jakości drewna" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Więźby, belki lite, klejone, wiązary, łaty, kontrłaty Glulam, CLT, X-lam, I-belki, BSH, KVH z certyfikatem CE</span><h2 class="offer-card__title">Oferujemy kompletne materiały konstrukcji dachowych  z najwyższej jakości drewna</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> śląskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 25.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="259334" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="262139"><a href="/gieldadrzewna/wozki-widlowe-ladowarki/ladowarka-kolowa-kramer-5075-262139.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/262139_1.jpg" class="offer-card__img" alt="Ładowarka kołowa Kramer 5075" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Wózki widłowe, ładowarki</span><h2 class="offer-card__title">Ładowarka kołowa Kramer 5075</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> wielkopolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 24.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="262139" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="263416"><a href="/gieldadrzewna/zaklady-produkcyjne-na-sprzedaz-dzierzawe/na-sprzedaz-przedsiebiorstwo-drzewne-polnocno-wschodnia-polska-263416.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/7c109802fb12e1487536c4c4_thumb.webp" type="image/webp"><img src="/files/advs/7c109802fb12e1487536c4c4.jpg" class="offer-card__img" alt="NA SPRZEDAŻ PRZEDSIĘBIORSTWO DRZEWNE - PÓŁNOCNO-WSCHODNIA POLSKA" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Zakłady produkcyjne na sprzedaż / dzierżawę</span><h2 class="offer-card__title">NA SPRZEDAŻ PRZEDSIĘBIORSTWO DRZEWNE - PÓŁNOCNO-WSCHODNIA POLSKA</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 11-010 · Barczewo · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 30.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263416" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="240135"><a href="/gieldadrzewna/domy-z-bali-szkieletowe-modulowe-konstrukcje/drewno-do-budowy-domow-domkow-ogrodow-tarasow-balkonow-240135.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/0865a6507e5b8e9f9cd0d8a0_thumb.webp" type="image/webp"><img src="/files/advs/0865a6507e5b8e9f9cd0d8a0.jpg" class="offer-card__img" alt="DREWNO DO BUDOWY DOMÓW, DOMKÓW, OGRODÓW, TARASÓW, BALKONÓW ....." loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Domy z bali, szkieletowe modułowe, konstrukcje</span><h2 class="offer-card__title">DREWNO DO BUDOWY DOMÓW, DOMKÓW, OGRODÓW, TARASÓW, BALKONÓW .....</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> śląskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 21.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="240135" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="256461"><a href="/gieldadrzewna/wiezby-belki-lite-klejone-wiazary-laty-kontrlaty-glulam-clt-x-lam-i-belki-bsh-kvh-z-certyfikatem-ce/laty-40-x50-40-x-60-256461.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="/assets/img/brak-foto.svg" class="offer-card__img no-photo-img" alt="Łaty 40 x50 / 40 x 60" loading="lazy"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Więźby, belki lite, klejone, wiązary, łaty, kontrłaty Glulam, CLT, X-lam, I-belki, BSH, KVH z certyfikatem CE</span><h2 class="offer-card__title">Łaty 40 x50 / 40 x 60</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 19-124  · podlaskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 10.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="256461" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="261594"><a href="/gieldadrzewna/uslugi-certyfikacji-fsc-pefc-ce-iso/uzyskaj-certyfikat-fsc-lub-pefc-261594.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="/assets/img/brak-foto.svg" class="offer-card__img no-photo-img" alt="Uzyskaj Certyfikat FSC® lub PEFC " loading="lazy"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Usługi certyfikacji FSC, PEFC, CE, ISO</span><h2 class="offer-card__title">Uzyskaj Certyfikat FSC® lub PEFC </h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 00-680 · mazowieckie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 20.08.2025</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="261594" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="263398"><a href="/gieldadrzewna/boazeria-podbitka-deska-elewacyjna-listwy/boazeria-podbitka-sosnowa-24-mm-x100-125-145-mm-x3-0-4-4-5-0-m-cena-od-33-zl-m2-263398.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/f771302e10f440782b566328_thumb.webp" type="image/webp"><img src="/files/advs/f771302e10f440782b566328.jpg" class="offer-card__img" alt="Boazeria/podbitka sosnowa 24 mm x100/125/145 mm x3,0/4.4/5,0 m cena od 33 zł/m2" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Boazeria, podbitka, deska elewacyjna, listwy</span><h2 class="offer-card__title">Boazeria/podbitka sosnowa 24 mm x100/125/145 mm x3,0/4.4/5,0 m cena od 33 zł/m2</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 66-200 · lubuskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 21.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263398" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="253336"><a href="/gieldadrzewna/elementy-palet/elementy-palet-kantowki-deski-paletowe-253336.html" class="offer-card is-featured"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/253336_1.jpg" class="offer-card__img" alt="elementy palet kantówki de
1035ski paletowe" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__featured-badge" title="Sponsorowane">Sponsorowane</span><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Elementy palet</span><h2 class="offer-card__title">elementy palet kantówki deski paletowe</h2><div class="offer-card__meta"><span class="offer-card__location"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 29-100 · świętokrzyskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 29.09.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="253336" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="259889"><a href="/gieldadrzewna/traki-ramowe-tasmowe-tarczowe-linie-pryzmujace/trak-ramowy-gkt-60-hydrauliczny-259889.html" class="offer-card"><div class="offer-card__img-wrap"><img src="/files/advs/cdf80ab345943950ae08b03b.jpg" class="offer-card__img" alt="Trak ramowy GKT-60 hydrauliczny" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Traki ramowe, taśmowe, tarczowe, linie pryzmujące</span><h2 class="offer-card__title">Trak ramowy GKT-60 hydrauliczny</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 84-352 · pomorskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 02.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="259889" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="207791"><a href="/gieldadrzewna/drewno-klejone-plyty-klejone-i-stolarskie/plyta-18-mm-i-plyciny-7-mm-z-sosny-skandynawskiej-207791.html" class="offer-card"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/207791_1.jpg" class="offer-card__img" alt="Płyta 18 mm i płyciny 7 mm  z sosny skandynawskiej" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Drewno klejone  - Płyty klejone i stolarskie</span><h2 class="offer-card__title">Płyta 18 mm i płyciny 7 mm  z sosny skandynawskiej</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 48-317 · opolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 02.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="207791" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="209996"><a href="/gieldadrzewna/drewno-klejone-plyty-klejone-i-stolarskie/klejonka-z-sosny-skandynawskiej-18-mm-na-wymiar-209996.html" class="offer-card"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/a85debab427fa33ddf0800b4_thumb.webp" type="image/webp"><img src="/files/advs/a85debab427fa33ddf0800b4.jpg" class="offer-card__img" alt="Klejonka z sosny skandynawskiej 18 mm na wymiar" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Drewno klejone  - Płyty klejone i stolarskie</span><h2 class="offer-card__title">Klejonka z sosny skandynawskiej 18 mm na wymiar</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 48-317 · opolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 02.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="209996" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="226128"><a href="/gieldadrzewna/schody-schody-strychowe-stopnie-i-stopnice-balustrady-porecze-tralki/stopnie-schodowe-z-sosny-skandynawskiej-226128.html" class="offer-card"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/226128_1.jpg" class="offer-card__img" alt="Stopnie schodowe z sosny skandynawskiej" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Schody, schody strychowe, stopnie i stopnice, balustrady, poręcze, tralki</span><h2 class="offer-card__title">Stopnie schodowe z sosny skandynawskiej</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 48-317 · opolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 02.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="226128" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="238261"><a href="/gieldadrzewna/drewno-klejone-plyty-klejone-i-stolarskie/plyta-sosnowa-lita-7mm-18mm22mm-238261.html" class="offer-card"><div class="offer-card__img-wrap"><img src="//img.drewno.pl/z/238261_1.jpg" class="offer-card__img" alt="Płyta sosnowa lita 7mm 18mm22mm" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Drewno klejone  - Płyty klejone i stolarskie</span><h2 class="offer-card__title">Płyta sosnowa lita 7mm 18mm22mm</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 48-317 · opolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 02.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="238261" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="236506"><a href="/gieldadrzewna/prasy/prasa-kallesoe-6219-295-000-zl-netto-236506.html" class="offer-card"><div class="offer-card__img-wrap"><img src="/files/advs/72b81165d805af1bc1e61e2d.jpg" class="offer-card__img" alt="Prasa Kallesoe 6219 - 295 000 zł NETTO" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Prasy</span><h2 class="offer-card__title">Prasa Kallesoe 6219 - 295 000 zł NETTO</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 48-317 · opolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 02.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="236506" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="192260"><a href="/gieldadrzewna/boazeria-podbitka-deska-elewacyjna-listwy/boazerie-elewacje-podbitki-podlogi-tarasy-drewno-konstrukcyjne-192260.html" class="offer-card"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/fc84afb12b424798d07f81f3_thumb.webp" type="image/webp"><img src="/files/advs/fc84afb12b424798d07f81f3.jpg" class="offer-card__img" alt="Boazerie/ Elewacje/ Podbitki/ Podłogi/ Tarasy/Drewno konstrukcyjne" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Boazeria, podbitka, deska elewacyjna, listwy</span><h2 class="offer-card__title">Boazerie/ Elewacje/ Podbitki/ Podłogi/ Tarasy/Drewno konstrukcyjne</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> śląskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 02.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="192260" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="263355"><a href="/gieldadrzewna/tarcica-lisciasta-nieobrzynana-obrzynana-strugana-suszona/tarcica-debowa-263355.html" class="offer-card"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/cbd5f79b1fd404bac1da0411_thumb.webp" type="image/webp"><img src="/files/advs/cbd5f79b1fd404bac1da0411.jpg" class="offer-card__img" alt="Tarcica dębowa." loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Tarcica liściasta (nieobrzynana, obrzynana, strugana, suszona)</span><h2 class="offer-card__title">Tarcica dębowa.</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 48-200 · opolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 02.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263355" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="263417"><a href="/gieldadrzewna/blaty-kuchenne-meblowe-postforming/blaty-debowe-klasa-ab-producent-263417.html" class="offer-card"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/6c7160cbe2859e71f4dded33_thumb.webp" type="image/webp"><img src="/files/advs/6c7160cbe2859e71f4dded33.jpg" class="offer-card__img" alt="Blaty dębowe klasa AB- producent" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Blaty kuchenne, meblowe, postforming</span><h2 class="offer-card__title">Blaty dębowe klasa AB- producent</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 62-261 · wielkopolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 01.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263417" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="263177"><a href="/gieldadrzewna/tarcica-lisciasta-nieobrzynana-obrzynana-strugana-suszona/tarcica-dab-czerwony-263177.html" class="offer-card"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/c49f3ef14cd3f7df6fc17b71_thumb.webp" type="image/webp"><img src="/files/advs/c49f3ef14cd3f7df6fc17b71.jpg" class="offer-card__img" alt="Tarcica dąb czerwony" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Tarcica liściasta (nieobrzynana, obrzynana, strugana, suszona)</span><h2 class="offer-card__title">Tarcica dąb czerwony</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 26-804 · mazowieckie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 01.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263177" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="258879"><a href="/gieldadrzewna/tarcica-iglasta-nieobrzynana-obrzynana-strugana-suszona/deski-suche-25mm-40mm-258879.html" class="offer-card"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/a83db1f71341f57554447347_thumb.webp" type="image/webp"><img src="/files/advs/a83db1f71341f57554447347.jpg" class="offer-card__img" alt="Deski suche 25mm, 40mm" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Tarcica iglasta (nieobrzynana, obrzynana, strugana, suszona)</span><h2 class="offer-card__title">Deski suche 25mm, 40mm</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 26-804 · mazowieckie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 01.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="258879" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  <div class="offer-card-wrap" data-offer-id="263020"><a href="/gieldadrzewna/pilarki-tarczowe/podajnik-drewna-p-2500-producent-boldrew-263020.html" class="offer-card"><div class="offer-card__img-wrap"><picture><source srcset="/files/advs/6cebbb44f4faeb317ade661b_thumb.webp" type="image/webp"><img src="/files/advs/6cebbb44f4faeb317ade661b.jpg" class="offer-card__img" alt="Podajnik Drewna P-2500   Producent BOLDREW" loading="lazy" onerror="this.onerror=null;this.src='/assets/img/brak-foto.svg';this.className='offer-card__img no-photo-img'"></picture><span class="offer-card__type-badge offer-card__type-badge--s">SPRZEDAM</span></div><div class="offer-card__body"><span class="offer-card__cat">Pilarki tarczowe</span><h2 class="offer-card__title">Podajnik Drewna P-2500   Producent BOLDREW</h2><div class="offer-card__meta"><span class="offer-card__location">
1035<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"><path d="M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0118 0z"/><circle cx="12" cy="10" r="3"/></svg> 63-520 · wielkopolskie · Polska</span><span class="offer-card__date"><svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg> Dodano: 01.10.2026</span></div><div class="offer-card__price-bar"><span class="offer-card__price offer-card__price--s">SPRZEDAM</span></div></div></a><button type="button" class="offer-save-btn" data-offer-id="263020" title="Dodaj do obserwowanych" aria-label="Dodaj do obserwowanych"><svg width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg></button></div>                  </div>
1036
1037        
1037<script>
1038    /* Pętla banerów między ogłoszeniami na ekranach < 1024 px: po każdym 5. kafelku przy jednej
1039       kolumnie (≤ 560 px), po każdym 6. przy 2-3 kolumnach, strefy po kolei Z30 → Z31 → Z18.
1040       Tryb i krok ustalane raz przy ładowaniu. Skrypt synchroniczny, zaraz za listą z SSR: sloty
1041       pierwszej porcji są w DOM przed DOMContentLoaded, więc wypełni je startowy skan Revive;
1042       porcje z „Pokaż więcej” wołają mktFeedAds.afterInsert() (wstawienie + refresh()).
1043       Wypełnienie rozpoznawane po zdarzeniu Revive `loaded` i wymiarze kreacji, nie po
1044       data-revive-loaded (Revive ustawia go już przy wysyłce żądania).
1045       Spec: docs/specs/2026-09-29-gielda-petla-banerow-mobile.md */
1046    (function () {
1047        if (!window.matchMedia || !window.matchMedia('(max-width: 1023.98px)').matches) return;
1048        var ZONES = [30,31,18];
1049        var RID = "aa600e994c965dc732dd0f67c6cc7b18";
1050        var URLREG = "\/gieldadrzewna\/";
1051        var STEP = window.matchMedia('(max-width: 560px)').matches ? 5 : 6;
1052        var NO_RESPONSE_MS = 8000;
1053        var states = {};
1054        var pausedUntil = 0;
1055
1056        /* Jedna strategia przewijania dla Chrome/Firefox i Safari iOS: natywne scroll anchoring
1057           wyłączone, zmiany wysokości slotu zaczynającego się nad górą ekranu kompensujemy sami.
1058           Zmiany stanu (wypełniony / pusty / przywrócony) idą przez mutate(), które mierzy
1059           przesunięcie NASTĘPNEGO elementu - obejmuje wysokość, marginesy i odstęp siatki, a działa
1060           też przy display:none (zwinięty slot nie ma własnej pozycji). ResizeObserver łapie
1061           pozostałe zmiany wysokości samej kreacji (np. doładowany obrazek). Pomijane w trakcie
1062           programowego przewijania (pauseCompensation). */
1063        document.documentElement.style.overflowAnchor = 'none';
1064
1065        function mutate(wrap, fn) {
1066            var ref = wrap.nextElementSibling || (wrap.parentNode && wrap.parentNode.nextElementSibling);
1067            var shown = wrap.offsetParent !== null;
1068            var refTop = ref ? ref.getBoundingClientRect().top : null;
1069            /* Górna krawędź slotu nad górą ekranu: zmiana wysokości przesunęłaby treść, którą
1070               użytkownik właśnie czyta (zwinięty slot nie ma pozycji - bierzemy następny element). */
1071            var startsAbove = ref !== null && (shown ? wrap.getBoundingClientRect().top < 0 : refTop < 0);
1072            fn();
1073            if (startsAbove && Date.now() >= pausedUntil) {
1074                var d = ref.getBoundingClientRect().top - refTop;
1075                if (d) window.scrollBy(0, d);
1076            }
1077            wrap._mktH = wrap.offsetHeight;
1078        }
1079
1080        var ro = window.ResizeObserver ? new ResizeObserver(function (entries) {
1081            for (var i = 0; i < entries.length; i++) {
1082                var el = entries[i].target;
1083                var prev = el._mktH;
1084                var cur = el.offsetHeight;
1085                el._mktH = cur;
1086                if (prev === undefined || prev === cur || Date.now() < pausedUntil) continue;
1087                if (cur > 0 && el.getBoundingClientRect().top < 0) {
1088                    window.scrollBy(0, cur - prev);
1089                }
1090            }
1091        }) : null;
1092
1093        function measured(el) {
1094            var w = Math.max(el.offsetWidth || 0, el.naturalWidth || 0, parseInt(el.getAttribute('width') || '0', 10) || 0);
1095            var h = Math.max(el.offsetHeight || 0, el.naturalHeight || 0, parseInt(el.getAttribute('height') || '0', 10) || 0);
1096            return w > 1 && h > 1;
1097        }
1098
1099        /* true = jest kreacja, false = nie ma, null = obrazek jeszcze się ładuje. */
1100        function creativeState(wrap) {
1101            var nodes = wrap.querySelectorAll('.market-feed-ad__slot iframe, .market-feed-ad__slot video, .market-feed-ad__slot object, .market-feed-ad__slot embed, .market-feed-ad__slot img');
1102            var pending = false;
1103            for (var i = 0; i < nodes.length; i++) {
1104                var n = nodes[i];
1105                if (n.closest('[id^="beacon_"]')) continue;
1106                if (n.tagName === 'IMG' && !n.complete) { pending = true; continue; }
1107                if (measured(n)) return true;
1108            }
1109            return pending ? null : false;
1110        }
1111
1112        function check(wrap) {
1113            var st = creativeState(wrap);
1114            if (st === null) {
1115                var imgs = wrap.querySelectorAll('img');
1116                for (var i = 0; i < imgs.length; i++) {
1117                    if (!imgs[i].complete) {
1118                        imgs[i].addEventListener('load', function () { check(wrap); }, { once: true });
1119                        imgs[i].addEventListener('error', function () { check(wrap); }, { once: true });
1120                    }
1121                }
1122                return;
1123            }
1124            wrap.setAttribute('data-feed-answered', '1');
1125            mutate(wrap, function () {
1126                wrap.classList.toggle('is-filled', st);
1127                wrap.classList.toggle('is-empty', !st);
1128            });
1129        }
1130
1131        function onRevive(e) {
1132            var d = (e && e.detail) || {};
1133            var ids = [];
1134            if (typeof d.id === 'string') ids.push(d.id);
1135            else for (var k in d) { if (Object.prototype.hasOwnProperty.call(d, k)) ids.push(k); }
1136            for (var i = 0; i < ids.length; i++) {
1137                var el = document.getElementById(ids[i]);
1138                var wrap = el && el.closest ? el.closest('.market-feed-ad') : null;
1139                if (wrap) check(wrap);
1140            }
1141        }
1142        /* `completed` niesie mapę całej odpowiedzi (id <ins> → dane). Slot wysłany w tym żądaniu
1143           (seq ≤ największy seq odpowiedzi), którego Revive nie odesłał, nie ma emisji. */
1144        function onCompleted(e) {
1145            onRevive(e);
1146            var d = (e && e.detail) || {};
1147            var maxSeq = -1;
1148            for (var k in d) {
1149                if (!Object.prototype.hasOwnProperty.call(d, k)) continue;
1150                var m = /-(\d+)$/.exec(k);
1151                if (m) maxSeq = Math.max(maxSeq, parseInt(m[1], 10));
1152            }
1153            if (maxSeq < 0) return;
1154            var sent = document.querySelectorAll('.market-feed-ad:not([data-feed-answered]) ins[data-revive-seq]');
1155            for (var i = 0; i < sent.length; i++) {
1156                if (parseInt(sent[i].getAttribute('data-revive-seq'), 10) > maxSeq) continue;
1157                var wrap = sent[i].closest('.market-feed-ad');
1158                wrap.setAttribute('data-feed-answered', '1');
1159                mutate(wrap, function () { wrap.classList.add('is-empty'); });
1160            }
1161        }
1162        document.addEventListener('revive-' + RID + '-loaded', onRevive);
1163        document.addEventListener('revive-' + RID + '-completed', onCompleted);
1164
1165        function buildSlot(zone) {
1166            var wrap = document.createElement('div');
1167            wrap.className = 'market-feed-ad';
1168            wrap.setAttribute('data-slot-index', 'market-feed');
1169            var label = document.createElement('div');
1170            label.className = 'card-special__ad-label';
1171            var a = document.createElement('a');
1172            a.href = 'https://reklama.drewno.pl';
1173            a.target = '_blank';
1174            a.rel = 'noopener noreferrer';
1175            a.textContent = 'REKLAMA [Z:' + zone + ']';
1176            label.appendChild(a);
1177            var box = document.createElement('div');
1178            box.className = 'market-feed-ad__slot';
1179            var ins = document.createElement('ins');
1180            ins.className = 'revive-slot revive-slot--feed';
1181            ins.setAttribute('data-revive-zoneid', String(zone));
1182            ins.setAttribute('data-revive-id', RID);
1183            ins.setAttribute('data-revive-strona', 'gielda');
1184            ins.setAttribute('data-revive-urlreg', URLREG);
1185            box.appendChild(ins);
1186            wrap.appendChild(label);
1187            wrap.appendChild(box);
1188            /* Brak jakiejkolwiek odpowiedzi (zablokowane ads2, błąd XHR) - zwinięcie po 8 s.
1189               Późne `loaded` z kreacją przywraca slot przez check(). */
1190            setTimeout(function () {
1191                if (!wrap.hasAttribute('data-feed-answered')) mutate(wrap, function () { wrap.classList.add('is-empty'); });
1192            }, NO_RESPONSE_MS);
1193            return wrap;
1194        }
1195
1196        function inject(container) {
1197            if (!container || !container.id) return 0;
1198            var st = states[container.id] || (states[container.id] = { tiles: 0, k: 0 });
1199            var tiles = [];
1200            for (var c = container.firstElementChild; c;
1200 c = c.nextElementSibling) {
1201                if (c.classList.contains('offer-card-wrap')) tiles.push(c);
1202            }
1203            var added = 0;
1204            for (var i = st.tiles; i < tiles.length; i++) {
1205                if ((i + 1) % STEP !== 0) continue;
1206                var slot = buildSlot(ZONES[st.k % ZONES.length]);
1207                st.k++;
1208                tiles[i].parentNode.insertBefore(slot, tiles[i].nextSibling);
1209                if (ro) ro.observe(slot);
1210                added++;
1211            }
1212            st.tiles = tiles.length;
1213            return added;
1214        }
1215
1216        function refresh() {
1217            try {
1218                var ra = window.reviveAsync && window.reviveAsync[RID];
1219                if (ra && typeof ra.refresh === 'function') ra.refresh();
1220            } catch (e) { /* brak Revive nie może psuć listy */ }
1221        }
1222
1223        window.mktFeedAds = {
1224            afterInsert: function (container) {
1225                try { if (inject(container) > 0) refresh(); } catch (e) { /* j.w. */ }
1226            },
1227            pauseCompensation: function (ms) { pausedUntil = Date.now() + (ms || 1000); }
1228        };
1229        inject(document.getElementById('items-container'));
1230    }());
1231    </script>
1231
1232    
1233    <!-- Baner: przeszukaj archiwum? -->
1234    
1235        <div class="offer-load-more" id="load-more-container">
1236            <button id="load-more-btn" class="btn-load">Wczytaj więcej ogłoszeń</button>
1237                  <div id="no-more-active" class="arch-after-active" style="display:none">
1238        <p id="no-more-msg" style="color:var(--clr-neutral-400);font-size:var(--font-size-xs);margin:8px 0;">To już wszystkie aktywne ogłoszenia.</p>
1239        <a href="/gieldadrzewna/?arch=2" class="btn-arch-yes">Przeglądaj ogłoszenia archiwalne</a>
1240      </div>
1241          </div>
1242
1243    <div id="arch-divider-container"></div>
1244    <div id="arch-items-container"></div>
1245    <div id="arch-load-more-container" style="text-align:center;margin:8px 0 24px;display:none">
1246      <button id="arch-load-more-btn" class="btn-load">Wczytaj więcej archiwalnych</button>
1247    </div>
1248
1249    <!-- SEO landing: tekst redakcyjny pod wynikami -->
1250    
1251    <!-- CTA: Dodaj ogłoszenie -->
1252    <div class="offer-cta-banner">
1253      <div class="offer-cta-banner__text">
1254        <strong>Masz coś do sprzedania lub szukasz drewna?</strong>
1255        <span>Opublikuj swoją ofertę kupna lub sprzedaży na naszej Giełdzie Ogłoszeń.</span>
1256      </div>
1257      <a href="/gieldadrzewna/dodaj" class="offer-btn-add">
1258        <svg width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 5v14M5 12h14"/></svg>
1259        Dodaj ogłoszenie      </a>
1260    </div>
1261
1262  </main>
1263
1264
1265  <!-- ── SIDEBAR ── -->
1266  <aside class="sidebar">
1267
1268    <!-- Reklama górna. Sidebar znika < 1024 px (CSS), więc sloty sidebara leżą w <template>
1269         i trafiają do DOM tylko na szerokim ekranie - ukryty <ins> Revive też by pobrał i naliczył.
1270         Na węższych ekranach te strefy idą w pętli między ogłoszeniami.
1271         Spec: docs/specs/2026-09-29-gielda-petla-banerow-mobile.md -->
1272    <template id="market-sb-top-tpl">
1273    <div class="card-special card-special--ad card-special--ad-sidebar"
1274     data-slot-index="sidebar-top"
1275     style="width:min(100%,320px);min-width:320px;max-width:320px;margin-left:auto;margin-right:auto;">
1276  <div class="card-special__ad-label"><a href="https://reklama.drewno.pl" target="_blank" rel="noopener noreferrer">REKLAMA [Z:30]</a></div>
1277  <div class="card-special__ad-banner" style="width:320px;min-width:320px;max-width:320px;margin-left:auto;margin-right:auto;text-align:center;">
1278          <ins class="revive-slot revive-slot--sidebar" data-revive-zoneid="30"
1279           data-revive-id="aa600e994c965dc732dd0f67c6cc7b18"
1280           data-revive-strona="gielda"
1281           data-revive-urlreg="/gieldadrzewna/"></ins>
1282      
1282<script async src="//ads2.drewno.pl/delivery/asyncjs.php"></script>
1282
1283      </div>
1284</div>
1285    </template>
1286    
1286<script>
1287    (function () {
1288        var t = document.getElementById('market-sb-top-tpl');
1289        if (!t || !t.content) return;
1290        if (window.matchMedia && !window.matchMedia('(min-width: 1024px)').matches) return;
1291        t.parentNode.insertBefore(t.content.cloneNode(true), t);
1292    }());
1293    </script>
1293
1294
1295    <!-- Oferty pracy -->
1296    
1297    <!-- Katalog maszyn -->
1298    <div class="widget widget--katalog-maszyn">
1299      <div class="widget__header">
1300                <h3 class="widget__title"><a href="/maszyny">Katalog maszyn</a></h3>
1301      </div>
1302      <div class="widget__body">
1303        <p class="offer-sidebar-katalog-desc">Maszyny do obróbki drewna, stolarskie i leśne - przeglądaj oferty producentów i dystrybutorów.</p>
1304        <a href="/maszyny" class="offer-sidebar-katalog-cta">
1305          Przejdź do katalogu maszyn →        </a>
1306      </div>
1307    </div>
1308
1309        <!-- Najczęściej czytane + polecane -->
1310    <div class="widget widget--trending">
1311      <div class="widget__header">
1312        <h3 class="widget__title">
1313          Najczęściej czytane        </h3>
1314        <a href="/archiwum-artykulow" class="widget__link-all">Wszystkie →</a>
1315      </div>
1316      <div class="widget__body" style="padding:0">
1317
1318                <div class="widget-trending__section">
1319          <div class="widget-trending__label">
1320            <svg width="10" height="10" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><polygon points="12,2 15.09,8.26 22,9.27 17,14.14 18.18,21.02 12,17.77 5.82,21.02 7,14.14 2,9.27 8.91,8.26"/></svg>
1321            Polecane          </div>
1322          <ul class="widget-list">
1323                        <li class="widget-list__item">
1324              <div class="widget-list__row">
1325                                <img src="/imgs/13914_1.png" alt="XII Międzynarodowa Konferencja Konserwatorska: Problemy muzeów związane z zachowaniem i konserwacją zbiorów"
1326                     class="widget-list__thumb" loading="lazy"
1327                     onerror="this.style.display='none'">
1328                                <div class="widget-list__content">
1329                  <a href="/artykuly/xii-miedzynarodowa-konferencja-konserwatorska-problemy-muzeow-zwiazane-z-zachowaniem-i-konserwacja-zbiorow-13914.html" class="widget-list__title">XII Międzynarodowa Konferencja Konserwatorska: Problemy muzeów związane z zachowaniem i konserwacją zbiorów</a>
1330                                    <div class="widget-list__meta">
1331                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1332                    319                  </div>
1333                                  </div>
1334              </div>
1335            </li>
1336                        <li class="widget-list__item">
1337              <div class="widget-list__row">
1338                                <img src="/imgs/13882_1.jpg" alt="XI Ogólnopolski Kongres Meblarski - 9 września w Poznaniu"
1339                     class="widget-list__thumb" loading="lazy"
1340                     onerror="this.style.display='none'">
1341                                <div class="widget-list__content">
1342                  <a href="/artykuly/xi-ogolnopolski-kongres-meblarski-9-wrzesnia-w-poznaniu-13882.html" class="widget-list__title">XI Ogólnopolski Kongres Meblarski - 9 września w Poznaniu</a>
1343                                    <div class="widget-list__meta">
1344                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1345                    596                  </div>
1346                                  </div>
1347              </div>
1348            </li>
1349                        <li class="widget-list__item">
1350              <div class="widget-list__row">
1351                                <img src="/imgs/13866_1.jpg" alt="PPWR w branży drzewnej: Co zaczynamy stosować w sierpniu, a co dopiero od 2030r."
1352                     class="widget-list__thumb" loading="lazy"
1353                     onerror="this.style.display='none'">
1354                                <div class="widget-list__content">
1355                  <a href="/artykuly/ppwr-w-branzy-drzewnej-co-zaczynamy-stosowac-w-sierpniu-a-co-dopiero-od-2030r-13866.html" class="widget-list__title">PPWR w branży drzewnej: Co zaczynamy stosować w sierpniu, a co dopiero od 2030r.</a>
1356                                    <div class="widget-list__meta">
1357                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1358                    464                  </div>
1359                                  </div>
1360              </div>
1361            </li>
1362                        <li class="widget-list__item">
1363              <div class="widget-list__row">
1364                                <img src="/imgs/13854_1.jpg" alt="XI Ogólnopolski Kongres Meblarski we wrześniu w Poznaniu"
1365                     class="widget-list__thumb" loading="lazy"
1366                     onerror="this.style.display='none'">
1367                                <div class="widget-list__content">
1368                  <a href="/artykuly/xi-ogolnopolski-kongres-meblarski-we-wrzesniu-w-poznaniu-13854.html" class="widget-list__title">XI Ogólnopolski Kongres Meblarski we wrześniu w Poznaniu</a>
1369                                    <div class="widget-list__meta">
1370                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1371                    268                  </div>
1372                                  </div>
1373              </div>
1374            </li>
1375                        <li class="widget-list__item">
1376              <div class="widget-list__row">
1377                                <img src="/imgs/13848_1.jpg" alt="Koniec haseł „eko&quot; bez dowodu - nowe unijne zasady dla drewna i mebli"
1378                     class="widget-list__thumb" loading="lazy"
1379                     onerror="this.style.display='none'">
1380                                <div class="widget-list__content">
1381                  <a href="/artykuly/koniec-hasel-eko-bez-dowodu-nowe-unijne-zasady-dla-drewna-i-mebli-13848.html" class="widget-list__title">Koniec haseł „eko&quot; bez dowodu - nowe unijne zasady dla drewna i mebli</a>
1382                                    <div class="widget-list__meta">
1383                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1384                    278                  </div>
1385                                  </div>
1386              </div>
1387            </li>
1388                      </ul>
1389        </div>
1390        
1391                <div class="widget-trending__section widget-trending__section--sep">
1392                    <div class="widget-trending__label">
1393            <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" aria-hidden="true"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"/></svg>
1394            Ostatnie 30 dni          </div>
1395                    <ul class="widget-list">
1396                        <li class="widget-list__item">
1397              <div class="widget-list__row">
1398                                <img src="/imgs/13909_1.jpg" alt="Komisja Europejska doprecyzowuje przepisy EUDR"
1399                     class="widget-list__thumb" loading="lazy"
1400                     onerror="this.style.display='none'">
1401                                <div class="widget-list__content">
1402                  <a href="/artykuly/komisja-europejska-doprecyzowuje-przepisy-eudr-13909.html" class="widget-list__title">Komisja Europejska doprecyzowuje przepisy EUDR</a>
1403                                    <div class="widget-list__meta">
1404                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1405                    925                  </div>
1406                                  </div>
1407              </div>
1408            </li>
1409                        <li class="widget-list__item">
1410              <div class="widget-list__row">
1411                                <img src="/imgs/13908_1.jpg" alt="W ciągu roku zaległości producentów mebli wzrosły o 21,1%"
1412                     class="widget-list__thumb" loading="lazy"
1413                     onerror="this.style.display='none'">
1414                                <div class="widget-list__content">
1415                  <a href="/artykuly/w-ciagu-roku-zaleglosci-producentow-mebli-wzrosly-o-21-1-13908.html" class="widget-list__title">W ciągu roku zaległości producentów mebli wzrosły o 21,1%</a>
1416                                    <div class="widget-list__meta">
1417                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1418                    601                  </div>
1419                                  </div>
1420              </div>
1421            </li>
1422                        <li class="widget-list__item">
1423              <div class="widget-list__row">
1424                                <img src="/imgs/13911_1.jpg" alt="Rada ds. Przemysłu Drzewnego i Meblarskiego o prognozach pozyskania drewna do 2050r."
1425                     class="widget-list__thumb" loading="lazy"
1426                     onerror="this.style.display='none'">
1427                                <div class="widget-list__content">
1428                  <a href="/artykuly/rada-ds-przemyslu-drzewnego-i-meblarskiego-o-prognozach-pozyskania-drewna-do-2050r-13911.html" class="widget-list__title">Rada ds. Przemysłu Drzewnego i Meblarskiego o prognozach pozyskania drewna do 2050r.</a>
1429                                    <div class="widget-list__meta">
1430                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1431                    477                  </div>
1432                                  </div>
1433              </div>
1434            </li>
1435                        <li class="widget-list__item">
1436              <div class="widget-list__row">
1437                                <img src="/imgs/13912_1.jpg" alt="Werth-Holz złożył wniosek o przyspieszone postępowanie układowe"
1438                     class="widget-list__thumb" loading="lazy"
1439                     onerror="this.style.display='none'">
1440                                <div class="widget-list__content">
1441                  <a href="/artykuly/werth-holz-zlozyl-wniosek-o-przyspieszone-postepowanie-ukladowe-13912.html" class="widget-list__title">Werth-Holz złożył wniosek o przyspieszone postępowanie układowe</a>
1442                                    <div class="widget-list__meta">
1443                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1444                    450                  </div>
1445                                  </div>
1446              </div>
1447            </li>
1448                        <li class="widget-list__item">
1449              <div class="widget-list__row">
1450                                <img src="/imgs/13910_1.jpg" alt="Lesy ČR: 17,3 mln CZK kary za umowny zakaz eksportu zrębków"
1451                     class="widget-list__thumb" loading="lazy"
1452                     onerror="this.style.display='none'">
1453                                <div class="widget-list__content">
1454                  <a href="/artykuly/lesy-r-17-3-mln-czk-kary-za-umowny-zakaz-eksportu-zrebkow-13910.html" class="widget-list__title">Lesy ČR: 17,3 mln CZK kary za umowny zakaz eksportu zrębków</a>
1455                                    <div class="widget-list__meta">
1456                    <svg width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
1457                    351                  </div>
1458                                  </div>
1459              </div>
1460            </li>
1461                      </ul>
1462        </div>
1463        
1464      </div>
1465    </div>
1466    
1467    <!-- Reklama dolna (jak górna: <template> + wstawienie tylko ≥ 1024 px) -->
1468    <template id="market-sb-bottom-tpl">
1469    <div class="card-special card-special--ad card-special--ad-sidebar"
1470     data-slot-index="sidebar-bottom"
1471     style="width:min(100%,320px);min-width:320px;max-width:320px;margin-left:auto;margin-right:auto;">
1472  <div class="card-special__ad-label"><a href="https://reklama.drewno.pl" target="_blank" rel="noopener noreferrer">REKLAMA [Z:31]</a></div>
1473  <div class="card-special__ad-banner" style="width:320px;min-width:320px;max-width:320px;margin-left:auto;margin-right:auto;text-align:center;">
1474          <ins class="revive-slot revive-slot--sidebar" data-revive-zoneid="31"
1475           data-revive-id="aa600e994c965dc732dd0f67c6cc7b18"
1476           data-revive-strona="gielda"
1477           data-revive-urlreg="/gieldadrzewna/"></ins>
1478      
1478<script async src="//ads2.drewno.pl/delivery/asyncjs.php"></script>
1478
1479      </div>
1480</div>
1481    </template>
1482    
1482<script>
1483    (function () {
1484        var t = document.getElementById('market-sb-bottom-tpl');
1485        if (!t || !t.content) return;
1486        if (window.matchMedia && !window.matchMedia('(min-width: 1024px)').matches) return;
1487        t.parentNode.insertBefore(t.content.cloneNode(true), t);
1488    }());
1489    </script>
1489
1490
1491  </aside>
1492
1493      
1493<script async src="//ads2.drewno.pl/delivery/asyncjs.php"></script>
1493
1494  
1495</div><!-- /offer-layout -->
1496
1497<footer class="site-footer site-footer--biznes">
1498
1499  <!-- ── Pasek subskrypcji ─────────────────────────────── -->
1500    <div class="footer__newsletter-bar" id="footer-newsletter">
1501    <div class="footer__newsletter-inner">
1502      <div class="footer__newsletter-text">
1503        <strong>Zapisz się do Newslettera</strong>
1504        <span>Aktualności z branży drzewnej prosto na Twój e-mail</span>
1505      </div>
1506            <form class="footer__newsletter-form" action="/newsletter/zapisz" method="post">
1507        <input type="hidden" name="csrf" value="v1.1790956934.ddeac58bf7b26de6feb0f2788b109c59a57af74271b47b7282923c2a342f0c26">
1508        <input type="hidden" name="return_url" value="/gieldadrzewna/">
1509        <input type="hidden" name="anchor" value="footer-newsletter">
1510                <div class="footer__newsletter-row">
1511          <input type="email" name="email" value="" placeholder="Twój adres e-mail" autocomplete="email" required>
1512          <button type="submit">Zapisz się</button>
1513        </div>
1514                <label class="footer__newsletter-consent">
1515          <input type="checkbox" name="accept_rodo" required>
1516          <span>Zgadzam się na przetwarzanie e-maila w celu wysyłki newslettera            (<a href="/polityka-prywatnosci.html" target="_blank" rel="noopener">Polityka prywatności</a>).</span>
1517        </label>
1518        <div class="cf-turnstile" data-sitekey="0x4AAAAAAD0XkgxwWjLZsvQf" data-appearance="interaction-only"></div>
1518<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
1518      </form>
1519        </div>
1520
1521  <!-- ── Główna siatka ─────────────────────────────────── -->
1522  <div class="footer__main">
1523    <div class="footer__grid">
1524
1525      <!-- Kolumna 1: Logo + opis + social -->
1526      <div class="footer__brand">
1527        <a href="/" class="footer__logo-link">
1528          <img src="/drewno-logo.svg" alt="DREWNO.PL" class="footer__logo" width="180" height="61">
1529        </a>
1530        <p class="footer__description">
1531          Największy w Polsce portal dedykowany branży drzewnej, od leśnictwa po meblarstwo. Od 1998r. dostarczamy rzetelne aktualności branżowe, szkolimy fachowców, udostępniamy giełdę ogłoszeń, katalog maszyn do obróbki drewna oraz prowadzimy sklep internetowy. Dołącz do tysięcy przedsiębiorców obecnych w naszym katalogu firm i rozwijaj swój biznes z liderem rynku.        </p>
1532        <div class="footer__social">
1533          <a href="https://www.facebook.com/drewnopl" class="footer__social-btn" aria-label="Facebook" target="_blank" rel="noopener">
1534            <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"/></svg>
1535          </a>
1536          <a href="https://www.youtube.com/@drewnotv" class="footer__social-btn" aria-label="YouTube" target="_blank" rel="noopener">
1537            <svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><path d="M22.54 6.42a2.78 2.78 0 00-1.95-1.96C18.88 4 12 4 12 4s-6.88 0-8.59.46A2.78 2.78 0 001.46 6.42 29 29 0 001 12a29 29 0 00.46 5.58 2.78 2.78 0 001.95 1.96C5.12 20 12 20 12 20s6.88 0 8.59-.46a2.78 2.78 0 001.95-1.96A29 29 0 0023 12a29 29 0 00-.46-5.58z"/><polygon points="9.75,15.02 15.5,12 9.75,8.98 9.75,15.02" fill="#1c1c22"/></svg>
1538          </a>
1539          <a href="https://x.com/DREWNOPL" class="footer__social-btn" aria-label="X" target="_blank" rel="noopener">
1540            <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"><path d="M18.244 2H21l-6.02 6.879L22 22h-5.48l-4.29-7.942L5.28 22H2.52l6.44-7.358L2 2h5.62l3.878 7.224zm-.968 18h1.527L6.79 3.896H5.152z"/></svg>
1541          </a>
1542          <a href="https://www.linkedin.com/company/drewno-pl-sp-z-o-o-/" class="footer__social-btn" aria-label="LinkedIn" target="_blank" rel="noopener">
1543            <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M16 8a6 6 0 016 6v7h-4v-7a2 2 0 00-2-2 2 2 0 00-2 2v7h-4v-7a6 6 0 016-6zM2 9h4v12H2z"/><circle cx="4" cy="4" r="2"/></svg>
1544          </a>
1545        </div>
1546      </div>
1547
1548      <!-- Kolumna 2: O portalu -->
1549      <div>
1550        <h3 class="footer__col-title">O portalu</h3>
1551        <ul class="footer__nav">
1552          <li><a href="/kontakt">Kontakt</a></li>
1553          <li><a href="/zglos-blad">Zgłoś błąd</a></li>
1554          <li><a href="https://reklama.drewno.pl" target="_blank" rel="noopener">Reklama</a></li>
1555          <li><a href="/regulaminy.html">Regulaminy</a></li>
1556          <li><a href="/zwroty-i-reklamacje.html">Zwroty i reklamacje</a></li>
1557          <li><a href="/polityka-prywatnosci.html">Polityka prywatności</a></li>
1558                    <li><button type="button" class="cc-settings-footer-link" onclick="if(window.openCookieSettings){window.openCookieSettings();}">Ustawienia cookies</button></li>
1559                  </ul>
1560      </div>
1561
1562      <!-- Kolumna 3: Serwisy -->
1563      <div class="footer__services-col">
1564        <h3 class="footer__col-title">Serwisy</h3>
1565        <div class="footer__services-grid">
1566          <ul class="footer__nav">
1567            <li><a href="/biznes">Biznes</a></li>
1568            <li><a href="/pasja">Pasja &amp; Hobby</a></li>
1569            <li><a href="/edukacja">Edukacja</a></li>
1570            <li><a href="/forum">Forum</a></li>
1571            <li><a href="/kalendarium">Kalendarium targów</a></li>
1572          </ul>
1573          <ul class="footer__nav">
1574            <li><a href="/gieldadrzewna/">Giełda ogłoszeń</a></li>
1575            <li><a href="/oferty-pracy">Oferty pracy</a></li>
1576            <li><a href="/katalog">Katalog firm</a></li>
1577                        <li><a href="/maszyny">Katalog maszyn</a></li>
1578            <li><a href="/kalkulator-miazszosci-drewna-okraglego.html">Kalkulatory</a></li>
1579          </ul>
1580        </div>
1581      </div>
1582
1583    </div>
1584  </div>
1585
1586  <!-- ── Bottom bar ─────────────────────────────────────── -->
1587  <div class="footer__bottom-wrap">
1588    <div class="footer__bottom">
1589      <span class="footer__bottom-copy">
1590        &copy; 1998&ndash;2026 <strong>DREWNO.PL</strong> - wszelkie prawa zastrzeżone      </span>
1591      <div class="footer__bottom-links">
1592        <a href="/regulaminy.html">Regulaminy</a>
1593        <a href="/polityka-prywatnosci.html">Prywatność</a>
1594        <!-- ═══ CMP: Modal ustawień prywatności ══════════════════════════════════ -->
1595<div id="cc-modal-overlay" class="cc-overlay" aria-hidden="true">
1596  <div id="cc-modal"
1597       role="dialog"
1598       aria-modal="true"
1599       aria-labelledby="cc-modal-title"
1600       class="cc-modal">
1601
1602    <div class="cc-modal__header">
1603      <h2 id="cc-modal-title" class="cc-modal__title">Ustawienia prywatności</h2>
1604      <button id="cc-modal-close"
1605              class="cc-modal__close"
1606              type="button"
1607              aria-label="Zamknij ustawienia cookies">
1608        <svg width="20" height="20" viewBox="0 0 24 24" fill="none"
1609             stroke="currentColor" stroke-width="2.2" aria-hidden="true">
1610          <path d="M18 6L6 18M6 6l12 12"/>
1611        </svg>
1612      </button>
1613    </div>
1614
1615    <div class="cc-modal__body">
1616
1617      <!-- Niezbędne -->
1618      <div class="cc-category">
1619        <div class="cc-category__info">
1620          <strong class="cc-category__name">Niezbędne</strong>
1621          <p class="cc-category__desc">
1622            Pliki wymagane do działania strony: sesja logowania, preferencje interfejsu. Nie można ich wyłączyć.          </p>
1623        </div>
1624        <label class="cc-toggle cc-toggle--disabled" aria-label="Niezbędne cookies - zawsze włączone">
1625          <input type="checkbox"
1626                 id="cc-toggle-necessary"
1627                 role="switch"
1628                 aria-checked="true"
1629                 aria-disabled="true"
1630                 checked
1631                 disabled>
1632          <span class="cc-toggle__track"></span>
1633        </label>
1634      </div>
1635
1636      <!-- Analityczne -->
1637      <div class="cc-category">
1638        <div class="cc-category__info">
1639          <strong class="cc-category__name">Analityczne</strong>
1640          <p class="cc-category__desc">
1641            Pozwalają mierzyć ruch i zachowanie użytkowników na stronie. Pomagają nam ulepszać portal na podstawie danych o popularności treści.          </p>
1642        </div>
1643        <label class="cc-toggle" aria-label="Cookies analityczne">
1644          <input type="checkbox"
1645                 id="cc-toggle-analytics"
1646                 role="switch"
1647                 aria-checked="false">
1648          <span class="cc-toggle__track"></span>
1649        </label>
1650      </div>
1651
1652      <!-- Marketingowe -->
1653      <div class="cc-category">
1654        <div class="cc-category__info">
1655          <strong class="cc-category__name">Marketingowe</strong>
1656          <p class="cc-category__desc">
1657            Umożliwiają wyświetlanie spersonalizowanych reklam i remarketingu. Dane mogą być udostępniane partnerom reklamowym portalu.          </p>
1658        </div>
1659        <label class="cc-toggle" aria-label="Cookies marketingowe">
1660          <input type="checkbox"
1661                 id="cc-toggle-marketing"
1662                 role="switch"
1663                 aria-checked="false">
1664          <span class="cc-toggle__track"></span>
1665        </label>
1666      </div>
1667
1668    </div><!-- /.cc-modal__body -->
1669
1670    <div class="cc-modal__footer">
1671      <a href="/polityka-prywatnosci.html" class="cc-privacy-link" target="_blank" rel="noopener">
1672        Polityka prywatności      </a>
1673      <button id="cc-save-settings" class="cc-btn cc-btn--primary" type="button">
1674        Zapisz ustawienia      </button>
1675    </div>
1676
1677  </div><!-- /.cc-modal -->
1678</div><!-- /.cc-overlay -->
1679<!-- ═══ /CMP Modal ════════════════════════════════════════════════════════ -->
1680    <button id="cc-open-settings"
1681        type="button"
1682        class="cc-settings-footer-link"
1683        aria-label="Zmień ustawienia cookies">&#x1F36A; Cookies</button>
1684          </div>
1685    </div>
1686  </div>
1687
1688</footer>
1689
1690<a href="/zglos-blad" class="bug-report-fab" id="bug-report-fab" title="Zgłoś błąd lub sugestię dotyczącą strony" aria-label="Zgłoś błąd">
1691  <span class="bug-report-fab__icon" aria-hidden="true">🐞</span>
1692  <span>Zgłoś błąd</span>
1693</a>
1694<script>
1695(function () {
1696  var el = document.getElementById('bug-report-fab');
1697  if (!el) return;
1698  el.addEventListener('click', function (e) {
1699    e.preventDefault();
1700    var base = el.getAttribute('href') || '/zglos-blad';
1701    var u = new URL(base, window.location.origin);
1702    u.searchParams.set('ref', window.location.href);
1703    window.location.href = u.toString();
1704  });
1705}());
1706</script>
1706
1707    
1708<button class="scroll-top-btn" id="scroll-top-btn" aria-label="Wróć na górę strony">
1709  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
1710    <polyline points="18 15 12 9 6 15"/>
1711  </svg>
1712</button>
1713<script>
1714(function () {
1715  var btn = document.getElementById('scroll-top-btn');
1716  if (!btn) return;
1717  function update() {
1718    btn.classList.toggle('is-visible', window.scrollY > 320);
1719  }
1720  window.addEventListener('scroll', update, { passive: true });
1721  btn.addEventListener('click', function () {
1722    window.scrollTo({ top: 0, behavior: 'smooth' });
1723  });
1724}());
1725</script>
1725
1726
1727<script>
1728window.drewnoGtmContainerId = "GTM-N4N9RZ";
1729window.drewnoGtmDisabled = false;
1730</script>
1730
1731<!-- ═══ CMP: Cookie Consent Banner ══════════════════════════════════════ -->
1732<div id="cc-banner"
1733     role="dialog"
1734     aria-modal="true"
1735     aria-label="Ustawienia cookies"
1736     aria-live="polite">
1737  <div class="cc-banner__inner">
1738    <p class="cc-banner__text">
1739      Używamy cookies. Zgodnie z wymogami obowiązującego prawa musisz wyrazić zgodę, aby korzystać z naszego portalu.      <a href="/logowanie?ret=%2Fgieldadrzewna%2F" class="cc-banner__login-link" rel="nofollow">Zaloguj się</a>
1740      aby wyłączyć te głupie powiadomienia.    </p>
1741    <div class="cc-banner__actions">
1742      <button id="cc-accept-all"   class="cc-btn cc-btn--primary"   type="button">Akceptuj wszystkie</button>
1743      <button id="cc-accept-basic" class="cc-btn cc-btn--secondary" type="button">Tylko niezbędne</button>
1744      <button id="cc-open-modal"   class="cc-btn cc-btn--link"      type="button">Ustawienia</button>
1745    </div>
1746  </div>
1747</div>
1748<!-- ═══ /CMP Banner ══════════════════════════════════════════════════════ -->
1749    
1750<!-- Google Tag Manager. GA4 w GTM: G-LQRZZNK3WZ -->
1751<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-N4N9RZ" height="0" width="0" style="display:none;visibility:hidden" title="Google Tag Manager" aria-hidden="true"></iframe></noscript>
1752<script data-drewno-gtm="1">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=1;j.src='https://www.googletagmanager.com/gtm.js?id='+i;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','GTM-N4N9RZ');</script>
vendor: 1 bytes, line 1752
1752
1753<script src="/assets/js/cookie-consent.js?v=1790765823" defer></script>
vendor: 1 bytes, line 1753
1753
1754<script src="/assets/js/sidebar-sticky.js?v=1790765823" defer></script>
1754
1755
1756<script>
1757var marketI18n = {"comboNoResults":"Brak wyników","loading":"Wczytywanie…","loadMore":"Wczytaj więcej ogłoszeń","loadMoreArchive":"Wczytaj więcej archiwalnych","loadMoreError":"Błąd - spróbuj ponownie","archiveEnd":"To wszystkie archiwalne ogłoszenia spełniające kryteria.","archiveDivider":"&#128194; Ogłoszenia archiwalne (wygasłe)","watchRemove":"Usun z obserwowanych","watchAdd":"Dodaj do obserwowanych","priceRangeMaxTitle":"Cena maksymalna musi być wyższa od minimalnej","priceRangeInvalid":"Cena minimalna nie może być wyższa od maksymalnej."};
1758/* ---------------------------------------------------------------
1759   Searchable category combobox (kategorie z /gieldadrzewna/api/categories)
1760--------------------------------------------------------------- */
1761(function () {
1762    var combo   = document.getElementById('cat-combo');
1763    if (!combo) return;
1764
1765    var input    = document.getElementById('cat-combo-input');
1766    var hidden   = document.getElementById('cat-hidden');
1767    var dropdown = document.getElementById('cat-dropdown');
1768    var allOptions = [];
1769    var activeIdx  = -1;
1770
1771    function refreshOptionList() {
1772        allOptions = Array.prototype.slice.call(dropdown.querySelectorAll('.cat-option'));
1773    }
1774    refreshOptionList();
1775    function normalizePolishText(value) {
1776        var text = String(value || '').toLowerCase();
1777        var map = { 'ą':'a','ć':'c','ę':'e','ł':'l','ń':'n','ó':'o','ś':'s','ż':'z','ź':'z' };
1778        text = text.replace(/[ąćęłńóśżź]/g, function (ch) { return map[ch] || ch; });
1779        return text.replace(/[^a-z0-9]+/g, ' ').trim();
1780    }
1781    function singularizeToken(token) {
1782        var t = String(token || '');
1783        if (t.length <= 4) return t;
1784        var endings = ['kami','ami','ach','owi','om','iem','ią','ię','ą','ę','ie','i','y','e','a','u'];
1785        for (var i = 0; i < endings.length; i++) {
1786            var end = endings[i];
1787            if (t.length > end.length + 3 && t.slice(-end.length) === end) {
1788                return t.slice(0, -end.length);
1789            }
1790        }
1791        return t;
1792    }
1793    function stemPolishText(value) {
1794        var norm = normalizePolishText(value);
1795        if (!norm) return '';
1796        return norm.split(/\s+/).map(singularizeToken).join(' ');
1797    }
1798
1799    function open()  { dropdown.classList.add('open'); input.setAttribute('aria-expanded', 'true'); }
1800    function close() { dropdown.classList.remove('open'); input.setAttribute('aria-expanded', 'false'); activeIdx = -1; allOptions.forEach(function (o) { o.classList.remove('active'); }); }
1801    function filter(q) {
1802        var lq = String(q || '').toLowerCase();
1803        var qNorm = normalizePolishText(lq);
1804        var qStem = stemPolishText(lq);
1805        var visible = [];
1806        allOptions.forEach(function (o) {
1807            var name = String(o.getAttribute('data-name') || '').toLowerCase();
1808            var search = String(o.getAttribute('data-search') || name);
1809            var searchNorm = normalizePolishText(search);
1810            var searchStem = stemPolishText(search);
1811            var id   = o.getAttribute('data-id');
1812            var match = id === '0'
1813                || search.toLowerCase().indexOf(lq) !== -1
1814                || (qNorm !== '' && searchNorm.indexOf(qNorm) !== -1)
1815                || (qStem !== '' && searchNorm.indexOf(qStem) !== -1)
1816                || (qNorm !== '' && searchStem.indexOf(qNorm) !== -1)
1817                || (qStem !== '' && searchStem.indexOf(qStem) !== -1);
1818            o.style.display = match ? '' : 'none';
1819            if (match) visible.push(o);
1820        });
1821        var noRes = dropdown.querySelector('.cat-no-results');
1822        if (visible.length === 0) {
1823            if (!noRes) { noRes = document.createElement('div'); noRes.className = 'cat-no-results'; noRes.textContent = marketI18n.comboNoResults; dropdown.appendChild(noRes); }
1824            noRes.style.display = '';
1825        } else if (noRes) { noRes.style.display = 'none'; }
1826        activeIdx = -1;
1827        allOptions.forEach(function (o) { o.classList.remove('active'); });
1828    }
1829    function select(opt) {
1830        var id = opt.getAttribute('data-id'), name = opt.getAttribute('data-name');
1831        hidden.value = id; input.value = name || '';
1832        input.classList.toggle('has-value', id !== '0');
1833        close();
1834        allOptions.forEach(function (o) { o.style.display = ''; });
1835    }
1836    function moveActive(dir) {
1837        var visible = allOptions.filter(function (o) { return o.style.display !== 'none'; });
1838        if (!visible.length) return;
1839        activeIdx = (activeIdx + dir + visible.length) % visible.length;
1840        allOptions.forEach(function (o) { o.classList.remove('active'); });
1841        visible[activeIdx].classList.add('active');
1842        visible[activeIdx].scrollIntoView({ block: 'nearest' });
1843    }
1844    input.addEventListener('focus', function () { filter(''); open(); });
1845    input.addEventListener('input', function () { filter(this.value); if (!dropdown.classList.contains('open')) open(); });
1846    input.addEventListener('keydown', function (e) {
1847        if (e.key === 'ArrowDown')  { e.preventDefault(); moveActive(1); }
1848        if (e.key === 'ArrowUp')    { e.preventDefault(); moveActive(-1); }
1849        if (e.key === 'Escape')     { close(); input.blur(); }
1850        if (e.key === 'Enter') {
1851            e.preventDefault();
1852            var visible = allOptions.filter(function (o) { return o.style.display !== 'none'; });
1853            if (activeIdx >= 0 && visible[activeIdx]) select(visible[activeIdx]);
1854        }
1855    });
1856    dropdown.addEventListener('mousedown', function (e) {
1857        var opt = e.target.closest('.cat-option');
1858        if (!opt) return;
1859        e.preventDefault();
1860        select(opt);
1861    });
1862    document.addEventListener('mousedown', function (e) { if (!combo.contains(e.target)) close(); });
1863
1864    function appendCategoryRow(c) {
1865        var div = document.createElement('div');
1866        var level = parseInt(String(c.level || '0'), 10) || 0;
1867        div.className = 'cat-option';
1868        if (level > 0) div.className += ' cat-option--level-' + level;
1869        div.setAttribute('data-id', String(c.id));
1870        var label = String(c.label != null ? c.label : (c.name != null ? c.name : ''));
1871        div.setAttribute('data-name', label);
1872        div.setAttribute('data-search', String(c.search_label != null ? c.search_label : label));
1873        div.appendChild(document.createTextNode(label));
1874        var cnt = parseInt(String(c.count || '0'), 10) || 0;
1875        if (cnt > 0) {
1876            var span = document.createElement('span');
1877            span.className = 'cat-option__count';
1878            span.appendChild(document.createTextNode(String(cnt)));
1879            div.appendChild(span);
1880        }
1881        dropdown.appendChild(div);
1882    }
1883
1884    function applyCategoriesPayload(list) {
1885        var loading = document.getElementById('cat-dropdown-loading');
1886        if (loading) loading.remove();
1887        if (!Array.isArray(list)) list = [];
1888        list.forEach(appendCategoryRow);
1889        refreshOptionList();
1890        if (document.activeElement === input) filter(input.value || '');
1891    }
1892
1893    function loadCategoriesFromApi() {
1894        /* Prefiks językowy z bieżącego URL-a — etykiety kategorii per locale pod osobnym URL-em
1895           (Cache-Control: public na API; goły URL mieszałby języki w cache po przełączeniu) */
1896        fetch('/gieldadrzewna/api/categories', { credentials: 'same-origin' })
1897            .then(function (r) { if (!r.ok) throw new Error('bad status'); return r.json(); })
1898            .then(function (data) { applyCategoriesPayload(data.categories); })
1899            .catch(function () {
1900                var loading = document.getElementById('cat-dropdown-loading');
1901                if (loading) {
1902                    loading.className = 'cat-dropdown__load-err';
1903                    loading.textContent = marketI18n.loadMoreError || '';
1904                }
1905            });
1906    }
1907    if (typeof requestIdleCallback === 'function') {
1908        requestIdleCallback(function () { loadCategoriesFromApi(); }, { timeout: 2500 });
1909    } else {
1910        setTimeout(loadCategoriesFromApi, 1);
1911    }
1912}());
1913
1914/* ---------------------------------------------------------------
1915   AJAX Geo Autocomplete
1916--------------------------------------------------------------- */
1917(function () {
1918    var input = document.getElementById('postal-filter');
1919    var dropdown = document.getElementById('geo-dropdown');
1920    var ccSelect = document.getElementById('postal-cc-filter');
1921    if (!input || !dropdown) return;
1922    
1923    var activeIdx = -1;
1924    var allOptions = [];
1925    var debounceTimer;
1926
1927    function open() { dropdown.style.display = 'block'; input.setAttribute('aria-expanded', 'true'); }
1928    function close() { dropdown.style.display = 'none'; input.setAttribute('aria-expanded', 'false'); activeIdx = -1; }
1929    
1930    function renderOptions(results) {
1931        dropdown.innerHTML = '';
1932        allOptions = [];
1933        if (results.length === 0) {
1934            var noRes = document.createElement('div');
1935            noRes.className = 'cat-option';
1936            noRes.style.color = 'var(--clr-neutral-500)';
1937            noRes.style.pointerEvents = 'none';
1938            noRes.textContent = marketI18n.comboNoResults || 'Brak wyników';
1939            dropdown.appendChild(noRes);
1940        } else {
1941            results.forEach(function (r) {
1942                var el = document.createElement('div');
1943                el.className = 'cat-option';
1944                el.textContent = r.place ? r.place + ' (' + r.postal + ')' : r.postal;
1945                el.setAttribute('data-id', r.id);
1946                el.setAttribute('data-postal', r.postal);
1947                el.setAttribute('data-place', r.place || '');
1948                el.addEventListener('mousedown', function (e) {
1949                    e.preventDefault();
1950                    selectOption(r.id, r.place ? r.place : r.postal);
1951                });
1952                dropdown.appendChild(el);
1953                allOptions.push(el);
1954            });
1955        }
1956    }
1957
1958    function selectOption(id, label) {
1959        input.value = label;
1960        close();
1961        // Opcjonalny auto-submit fomularza po wyborze lokacji
1962        // setTimeout(function() { document.getElementById('search-form').submit(); }, 50);
1963    }
1964
1965    function fetchGeo(q) {
1966        if (q.length < 2) { close(); return; }
1967        var cc = ccSelect ? ccSelect.value : 'PL';
1968        fetch('/gieldadrzewna/api/geo-suggest?cc=' + encodeURIComponent(cc) + '&q=' + encodeURIComponent(q))
1969            .then(function(r) { return r.json(); })
1970            .then(function(data) {
1971                if (data.results) {
1972                    renderOptions(data.results);
1973                    open();
1974                }
1975            })
1976            .catch(function(){});
1977    }
1978
1979    function moveActive(dir) {
1980        if (!allOptions.length) return;
1981        if (activeIdx >= 0) allOptions[activeIdx].classList.remove('active');
1982        activeIdx = (activeIdx + dir + allOptions.length) % allOptions.length;
1983        allOptions[activeIdx].classList.add('active');
1984        allOptions[activeIdx].scrollIntoView({ block: 'nearest' });
1985    }
1986
1987    input.addEventListener('input', function () {
1988        clearTimeout(debounceTimer);
1989        var val = this.value;
1990        debounceTimer = setTimeout(function() { fetchGeo(val); }, 300);
1991    });
1992
1993    input.addEventListener('keydown', function (e) {
1994        if (e.key === 'ArrowDown')  { e.preventDefault(); moveActive(1); }
1995        if (e.key === 'ArrowUp')    { e.preventDefault(); moveActive(-1); }
1996        if (e.key === 'Escape')     { close(); input.blur(); }
1997        if (e.key === 'Enter') {
1998            if (activeIdx >= 0 && allOptions[activeIdx]) {
1999                e.preventDefault();
2000                selectOption(
2001                    allOptions[activeIdx].getAttribute('data-id'),
2002                    allOptions[activeIdx].getAttribute('data-place') || allOptions[activeIdx].getAttribute('data-postal')
2003                );
2004            }
2005        }
2006    });
2007
2008    document.addEventListener('mousedown', function (e) {
2009        if (!input.contains(e.target) && !dropdown.contains(e.target)) close();
2010    });
2011}());
2012
2013/* ---------------------------------------------------------------
2014   Back-state restore (scroll + doładowane strony po powrocie z ogłoszenia)
2015--------------------------------------------------------------- */
2016(function () {
2017    var sc = parseInt(sessionStorage.getItem('mkt_back_scroll') || '', 
201710);
2018    var pg = parseInt(sessionStorage.getItem('mkt_back_pages')  || '', 10);
2019    var of = parseInt(sessionStorage.getItem('mkt_back_offer')  || '', 10);
2020    sessionStorage.removeItem('mkt_back_scroll');
2021    sessionStorage.removeItem('mkt_back_pages');
2022    sessionStorage.removeItem('mkt_back_offer');
2023    if (sc > 0 || pg > 1) {
2024        window._mktAutoRestore = { scroll: sc || 0, pages: pg || 1, offer: of > 0 ? of : 0 };
2025    }
2026}());
2027
2028/* ---------------------------------------------------------------
2029   AJAX load more - aktywne ogłoszenia
2030--------------------------------------------------------------- */
2031(function () {
2032    var currentPage = 1;
2033    var loading     = false;
2034    var exhausted   = false;
2035
2036    var query      = "";
2037    var catFilter  = 0;
2038    var archMode   = 0;
2039    var priceMin   = 0;
2040    var priceMax   = 0;
2041    var showPostalRadius = true;
2042    var postalFilter = "";
2043    var postalCcFilter = "";
2044    var radiusKm     = 0;
2045    var countryFilter = 0;
2046    var typeFilter = "";
2047    var container  = document.getElementById('items-container');
2048    var btn        = document.getElementById('load-more-btn');
2049    var noMoreMsg  = document.getElementById('no-more-msg');
2050    var noMoreActive = document.getElementById('no-more-active');
2051
2052    function buildAdvFilters() {
2053        var s = '';
2054        if (priceMin > 0) s += '&price_min=' + priceMin;
2055        if (priceMax > 0) s += '&price_max=' + priceMax;
2056        if (showPostalRadius && postalFilter) s += '&postal=' + encodeURIComponent(postalFilter);
2057        if (showPostalRadius && postalFilter && radiusKm > 0) s += '&radius=' + radiusKm;
2058        if (showPostalRadius && postalFilter && countryFilter === 0 && postalCcFilter) s += '&postal_cc=' + encodeURIComponent(postalCcFilter);
2059        if (countryFilter > 0) s += '&country=' + countryFilter;
2060        if (typeFilter)   s += '&type='      + encodeURIComponent(typeFilter);
2061        return s;
2062    }
2063    function markExhausted() {
2064        exhausted = true;
2065        if (btn) btn.style.display = 'none';
2066        var archVisible = document.getElementById('arch-divider-container').innerHTML.trim() !== '';
2067        if (archVisible) return;
2068        if (Number(archMode) === 0 && noMoreActive) {
2069            noMoreActive.style.display = '';
2070            return;
2071        }
2072        if (noMoreMsg) noMoreMsg.style.display = '';
2073    }
2074    function buildUrl(page) {
2075        // Prefiks językowy z bieżącego URL-a — kafelki dogrywane na /de/ dziedziczą /de/ (PR4)
2076        return '/gieldadrzewna/load-more?page=' + page + '&q=' + encodeURIComponent(query) + '&cat=' + encodeURIComponent(catFilter) + '&arch=' + archMode + buildAdvFilters();
2077    }
2078    function loadMore() {
2079        if (loading || exhausted) return;
2080        loading = true; btn.disabled = true; btn.textContent = marketI18n.loading;
2081        fetch(buildUrl(currentPage)).then(function (r) { return r.text(); }).then(function (html) {
2082            var trimmed = html.trim();
2083            if (!trimmed) { markExhausted(); }
2084            else {
2085                var prevCount = container.children.length;
2086                container.insertAdjacentHTML('beforeend', trimmed);
2087                /* Pierwszy nowy kafelek łapany przed wstawieniem slotów reklamowych pętli */
2088                var newFirst = container.children[prevCount];
2089                currentPage++;
2090                btn.disabled = false;
2091                btn.textContent = marketI18n.loadMore;
2092                if (window.mktFeedAds) window.mktFeedAds.afterInsert(container);
2093                /* Na mobile - przewiń do pierwszego nowego ogłoszenia */
2094                if (newFirst) {
2095                    if (window.mktFeedAds) window.mktFeedAds.pauseCompensation(1200);
2096                    setTimeout(function () {
2097                        newFirst.scrollIntoView({ behavior: 'smooth', block: 'start' });
2098                    }, 80);
2099                }
2100            }
2101        }).catch(function () { btn.disabled = false; btn.textContent = marketI18n.loadMoreError; })
2102          .finally(function () { loading = false; });
2103    }
2104    function loadMoreSilent(cb) {
2105        if (exhausted) { cb(); return; }
2106        fetch(buildUrl(currentPage)).then(function (r) { return r.text(); }).then(function (html) {
2107            var trimmed = html.trim();
2108            if (!trimmed) { exhausted = true; } else {
2109                container.insertAdjacentHTML('beforeend', trimmed); currentPage++;
2110                if (window.mktFeedAds) window.mktFeedAds.afterInsert(container);
2111            }
2112            cb();
2113        }).catch(cb);
2114    }
2115    if (btn && !exhausted) btn.addEventListener('click', loadMore);
2116
2117    /* Zapis stanu przy kliknięciu kafelka */
2118    if (container) {
2119        container.addEventListener('click', function (e) {
2120            var card = e.target.closest('a.offer-card');
2121            if (!card) return;
2122            var cardWrap = card.closest('.offer-card-wrap');
2123            try {
2124                sessionStorage.setItem('mkt_back_scroll', String(Math.round(window.scrollY)));
2125                sessionStorage.setItem('mkt_back_pages',  String(currentPage));
2126                /* Id ogłoszenia: po powrocie przewijamy do kafelka, nie do pikseli - banery pętli
2127                   mają różne wysokości, więc ta sama pozycja w px wypada obok. */
2128                sessionStorage.setItem('mkt_back_offer', cardWrap ? String(parseInt(cardWrap.getAttribute('data-offer-id') || '0', 10) || '') : '');
2129            } catch (_) {}
2130        });
2131    }
2132
2133    /* Auto-restore po powrocie z ogłoszenia */
2134    var restore = window._mktAutoRestore;
2135    delete window._mktAutoRestore;
2136    if (restore) {
2137        (function doRestore() {
2138            if (currentPage >= restore.pages || exhausted) {
2139                var target = restore.offer > 0 ? container.querySelector('.offer-card-wrap[data-offer-id="' + restore.offer + '"]') : null;
2140                if (window.mktFeedAds) window.mktFeedAds.pauseCompensation(600);
2141                if (target) { target.scrollIntoView({ block: 'center' }); }
2142                else if (restore.scroll > 0) { window.scrollTo(0, restore.scroll); }
2143                return;
2144            }
2145            loadMoreSilent(doRestore);
2146        }());
2147    }
2148}());
2149
2150/* ---------------------------------------------------------------
2151   Baner archiwum + ładowanie archiwalnych
2152--------------------------------------------------------------- */
2153(function () {
2154    var btnYes        = document.getElementById('btn-arch-yes');
2155    var btnNo         = document.getElementById('btn-arch-no');
2156    var suggest       = document.getElementById('archive-suggest');
2157    var dividerCont   = document.getElementById('arch-divider-container');
2158    var archContainer = document.getElementById('arch-items-container');
2159    var archMoreCont  = document.getElementById('arch-load-more-container');
2160    var archMoreBtn   = document.getElementById('arch-load-more-btn');
2161    if (!btnYes) return;
2162
2163    var query      = "";
2164    var catFilter  = 0;
2165    var priceMin   = 0;
2166    var priceMax   = 0;
2167    var showPostalRadius = true;
2168    var postalFilter = "";
2169    var postalCcFilter = "";
2170    var radiusKm     = 0;
2171    var countryFilter = 0;
2172    var typeFilter = "";
2173    var archPage  = 0, archLoading = false, archExhausted = false;
2174
2175    function buildAdvFilters() {
2176        var s = '';
2177        if (priceMin > 0) s += '&price_min=' + priceMin;
2178        if (priceMax > 0) s += '&price_max=' + priceMax;
2179        if (showPostalRadius && postalFilter) s += '&postal=' + encodeURIComponent(postalFilter);
2180        if (showPostalRadius && postalFilter && radiusKm > 0) s += '&radius=' + radiusKm;
2181        if (showPostalRadius && postalFilter && countryFilter === 0 && postalCcFilter) s += '&postal_cc=' + encodeURIComponent(postalCcFilter);
2182        if (countryFilter > 0) s += '&country=' + countryFilter;
2183        if (typeFilter)   s += '&type='      + encodeURIComponent(typeFilter);
2184        return s;
2185    }
2186    function loadArchivePage(page) {
2187        if (archLoading || archExhausted) return;
2188        archLoading = true;
2189        if (archMoreBtn) { archMoreBtn.disabled = true; archMoreBtn.textContent = marketI18n.loading; }
2190        var url = '/gieldadrzewna/load-more?page=' + page + '&q=' + encodeURIComponent(query) + '&cat=' + encodeURIComponent(catFilter) + '&arch=2' + buildAdvFilters();
2191        fetch(url).then(function (r) { return r.text(); }).then(function (html) {
2192            var trimmed = html.trim();
2193            if (!trimmed) {
2194                archExhausted = true; if (archMoreCont) archMoreCont.style.display = 'none';
2195                var endMsg = document.createElement('p');
2196                endMsg.style.cssText = 'text-align:center;color:var(--clr-neutral-400);font-size:var(--font-size-xs);margin:8px 0 24px';
2197                endMsg.textContent = marketI18n.archiveEnd;
2198                archContainer.appendChild(endMsg);
2199            } else {
2200                archContainer.insertAdjacentHTML('beforeend', trimmed);
2201                if (archMoreBtn) { archMoreBtn.disabled = false;
2201 archMoreBtn.textContent = marketI18n.loadMoreArchive; }
2202                if (window.mktFeedAds) window.mktFeedAds.afterInsert(archContainer);
2203                if (archMoreCont) archMoreCont.style.display = ''; archPage++;
2204            }
2205        }).catch(function () { if (archMoreBtn) { archMoreBtn.disabled = false; archMoreBtn.textContent = marketI18n.loadMoreError; } })
2206          .finally(function () { archLoading = false; });
2207    }
2208    function showArchiveResults() {
2209        if (suggest) suggest.style.display = 'none';
2210        var noMoreMsg = document.getElementById('no-more-msg');
2211        if (noMoreMsg) noMoreMsg.style.display = 'none';
2212        var noMoreActive = document.getElementById('no-more-active');
2213        if (noMoreActive) noMoreActive.style.display = 'none';
2214        if (dividerCont) dividerCont.innerHTML = '<div class="arch-divider"><span>' + marketI18n.archiveDivider + '</span></div>';
2215        loadArchivePage(0);
2216    }
2217    btnYes.addEventListener('click', showArchiveResults);
2218    btnNo.addEventListener('click', function () { if (suggest) suggest.style.display = 'none'; });
2219    if (archMoreBtn) archMoreBtn.addEventListener('click', function () { loadArchivePage(archPage); });
2220}());
2221
2222/* ---------------------------------------------------------------
2223   Obserwuj ogloszenie - toggle
2224--------------------------------------------------------------- */
2225(function () {
2226    var CSRF  = "v1.1790956934.ddeac58bf7b26de6feb0f2788b109c59a57af74271b47b7282923c2a342f0c26";
2227    var UID   = 0;
2228    var LOGIN = "/logowanie";
2229
2230    document.addEventListener('click', function (e) {
2231        var btn = e.target.closest('.offer-save-btn');
2232        if (!btn) return;
2233        e.preventDefault();
2234        e.stopPropagation();
2235
2236        if (UID <= 0) {
2237            var back = window.location.pathname + window.location.search;
2238            if (!back || back[0] !== '/') back = '/';
2239            window.location.href = LOGIN + '?ret=' + encodeURIComponent(back);
2240            return;
2241        }
2242        if (btn.classList.contains('is-saving')) return;
2243
2244        var advId = parseInt(btn.dataset.offerId, 10);
2245        btn.classList.add('is-saving');
2246
2247        var fd = new FormData();
2248        fd.append('adv_id', advId);
2249        fd.append('csrf',   CSRF);
2250
2251        fetch('/gieldadrzewna/obserwowane', { method: 'POST', body: fd })
2252            .then(function (r) { return r.json(); })
2253            .then(function (json) {
2254                if (json.saved === undefined) return;
2255                var saved = json.saved;
2256                btn.classList.toggle('is-saved', saved);
2257                var label = saved ? marketI18n.watchRemove : marketI18n.watchAdd;
2258                btn.title = label;
2259                btn.setAttribute('aria-label', label);
2260                var path = btn.querySelector('svg path');
2261                if (path) path.setAttribute('fill', saved ? 'currentColor' : 'none');
2262            })
2263            .catch(function () {})
2264            .finally(function () { btn.classList.remove('is-saving'); });
2265    });
2266}());
2267
2268/* ---------------------------------------------------------------
2269   Sticky sidebar - smart scroll-aware positioning
2270   Sidebar natychmiast reaguje na zmianę kierunku scrollowania:
2271   - scroll w dół  → top maleje aż dolna reklama zetknie się z dołem viewportu
2272   - scroll w górę → top rośnie aż sidebar oprze się o nagłówek
2273   Działa przez aktualizację CSS top przy każdym zdarzeniu scroll,
2274   zaciskając wartość do przedziału [topMin, topMax].
2275--------------------------------------------------------------- */
2276(function () {
2277    var sidebar = document.querySelector('.offer-layout .sidebar');
2278    if (!sidebar) return;
2279
2280    var BOTTOM_PAD  = 16;
2281    var lastScrollY = window.scrollY;
2282    var currentTop  = 0;
2283    var headerOff   = 0;
2284    var active      = false;
2285
2286    function readHeaderOffset() {
2287        var cs      = getComputedStyle(document.documentElement);
2288        var ticker  = parseFloat(cs.getPropertyValue('--ticker-height')) || 36;
2289        var header  = parseFloat(cs.getPropertyValue('--header-height')) || 100;
2290        return ticker + header + 16;
2291    }
2292
2293    function init() {
2294        if (window.innerWidth < 1024) {
2295            sidebar.style.top = '';
2296            active = false;
2297            return;
2298        }
2299        headerOff  = readHeaderOffset();
2300        var vh     = window.innerHeight;
2301        var sh     = sidebar.offsetHeight;
2302        var avail  = vh - headerOff - BOTTOM_PAD;
2303
2304        /* Zacznij od pozycji odpowiedniej dla bieżącej wysokości sidebara */
2305        currentTop  = sh <= avail
2306            ? headerOff               /* mieści się - od góry         */
2307            : vh - sh - BOTTOM_PAD;  /* za wysoki  - dolna reklama   */
2308
2309        sidebar.style.top = currentTop + 'px';
2310        lastScrollY = window.scrollY;
2311        active = true;
2312    }
2313
2314    function onScroll() {
2315        if (!active) return;
2316
2317        var scrollY  = window.scrollY;
2318        var delta    = scrollY - lastScrollY;   /* >0 = w dół, <0 = w górę */
2319        lastScrollY  = scrollY;
2320
2321        var vh     = window.innerHeight;
2322        var sh     = sidebar.offsetHeight;
2323        var topMin = vh - sh - BOTTOM_PAD;  /* granica dolna: dolna reklama przy krawędzi */
2324        var topMax = headerOff;             /* granica górna: tuż pod nagłówkiem          */
2325
2326        /* Kontrujemy scroll - sidebar przesuwa się natychmiast w obu kierunkach */
2327        currentTop = Math.min(topMax, Math.max(topMin, currentTop - delta));
2328        sidebar.style.top = currentTop + 'px';
2329    }
2330
2331    init();
2332    window.addEventListener('scroll', onScroll, { passive: true });
2333    window.addEventListener('resize', init);
2334    window.addEventListener('load',   init);
2335
2336    /* Revive i inne async widgety mogą zmienić wysokość sidebara po chwili */
2337    if (typeof ResizeObserver !== 'undefined') {
2338        new ResizeObserver(function () {
2339            if (active) init();
2340        }).observe(sidebar);
2341    }
2342})();
2343
2344/* ---------------------------------------------------------------
2345   Toggle panelu filtrow zaawansowanych
2346--------------------------------------------------------------- */
2347(function () {
2348    var toggle = document.getElementById('offer-filters-toggle');
2349    var panel  = document.getElementById('offer-filters-panel');
2350    if (!toggle || !panel) return;
2351    toggle.addEventListener('click', function () {
2352        var isOpen = panel.classList.contains('open');
2353        panel.classList.toggle('open', !isOpen);
2354        toggle.classList.toggle('open', !isOpen);
2355        toggle.setAttribute('aria-expanded', String(!isOpen));
2356    });
2357    var priceMinInput = document.getElementById('price-min');
2358    var priceMaxInput = document.getElementById('price-max');
2359    function validatePriceRange() {
2360        if (!priceMinInput || !priceMaxInput) return;
2361        var mn = parseInt(priceMinInput.value, 10) || 0;
2362        var mx = parseInt(priceMaxInput.value, 10) || 0;
2363        if (mx > 0 && mn > mx) { priceMaxInput.style.borderColor = 'var(--clr-danger-500)'; priceMaxInput.title = marketI18n.priceRangeMaxTitle; }
2364        else { priceMaxInput.style.borderColor = ''; priceMaxInput.title = ''; }
2365    }
2366    if (priceMinInput) priceMinInput.addEventListener('input', validatePriceRange);
2367    if (priceMaxInput) priceMaxInput.addEventListener('input', validatePriceRange);
2368    var form = document.getElementById('search-form');
2369    if (form) {
2370        form.addEventListener('submit', function (e) {
2371            var mn = parseInt(priceMinInput && priceMinInput.value, 10) || 0;
2372            var mx = parseInt(priceMaxInput && priceMaxInput.value, 10) || 0;
2373            if (mx > 0 && mn > mx) { e.preventDefault(); if (priceMinInput) priceMinInput.focus(); alert(marketI18n.priceRangeInvalid); }
2374        });
2375    }
2376    var archCb = document.getElementById('arch-cb');
2377    if (archCb && form) {
2378        archCb.addEventListener('change', function () { form.submit(); });
2379
2380        /* Kliknięcie przycisku "Szukaj" resetuje arch - nowe wyszukiwanie
2381           zaczyna się zawsze bez archiwum, chyba że user sam zaznaczy */
2382        var btnSearch = form.querySelector('.btn-search');
2383        if (btnSearch) {
2384            btnSearch.addEventListener('click', function () { archCb.checked = false; });
2385        }
2386    }
2387}());
2388
2389/* ---------------------------------------------------------------
2390   Przycisk "Wróć do góry" (tylko mobile)
2391--------------------------------------------------------------- */
2392(function () {
2393    var btn = document.getElementById('back-to-top');
2394    if (!btn) return;
2395    var SHOW_AFTER = 320; /* px od góry */
2396    var visible = false;
2397
2398    function getScrollY() {
2399        return window.scrollY !== undefined
2400            ? window.scrollY
2401            : (document.documentElement.scrollTop || document.body.scrollTop || 0);
2402    }
2403
2404    function onScroll() {
2405        var should = getScrollY() > SHOW_AFTER;
2406        if (should !== visible) {
2407            visible = should;
2408            btn.classList.toggle('btt--visible', visible);
2409        }
2410    }
2411
2412    window.addEventListener('scroll', onScroll, { passive: true });
2413    btn.addEventListener('click', function () {
2414        try {
2415            window.scrollTo({ top: 0, behavior: 'smooth' });
2416        } catch (e) {
2417            window.scrollTo(0, 0);
2418        }
2419    });
2420}());
2421
2422/* ---------------------------------------------------------------
2423   Marketplace leaderboard – show/hide based on Revive fill
2424--------------------------------------------------------------- */
2425(function () {
2426    var lb = document.getElementById('market-leaderboard');
2427    if (!lb) return;
2428
2429    function imageLooksVisible(img) {
2430        var wAttr = parseInt(img.getAttribute('width') || '0', 10);
2431        var hAttr = parseInt(img.getAttribute('height') || '0', 10);
2432        var w = Math.max(img.clientWidth || 0, img.naturalWidth || 0, isNaN(wAttr) ? 0 : wAttr);
2433        var h = Math.max(img.clientHeight || 0, img.naturalHeight || 0, isNaN(hAttr) ? 0 : hAttr);
2434        return w > 1 && h > 1;
2435    }
2436
2437    function hasRenderableCreative(container) {
2438        if (!container) return false;
2439        if (container.querySelector('iframe, object, embed, video')) return true;
2440        var links = container.querySelectorAll('a[href]');
2441        for (var i = 0; i < links.length; i++) {
2442            var a = links[i];
2443            var href = (a.getAttribute('href') || '').trim();
2444            var img = a.querySelector('img');
2445            if (href !== '' && img && imageLooksVisible(img)) return true;
2446            if (href !== '' && (a.textContent || '').trim().length > 0) return true;
2447        }
2448        var imgs = container.querySelectorAll('img');
2449        for (var j = 0; j < imgs.length; j++) {
2450            if (!imgs[j].closest('[id^="beacon_"]') && imageLooksVisible(imgs[j])) return true;
2451        }
2452        return false;
2453    }
2454
2455    function isExplicitNoFill(container) {
2456        var html = ((container && container.innerHTML) || '').toLowerCase();
2457        return html.indexOf('bannerid=0') !== -1 || html.indexOf('campaignid=0') !== -1;
2458    }
2459
2460    /* Wariant mobilny rezerwuje 470 px (CSS), żeby lista nie skakała przy domyślnej kreacji.
2461       Po rozstrzygnięciu emisji - udanej albo pustej - rezerwacja schodzi i slot ma wysokość
2462       kreacji (np. 250 px). Desktop trzyma inline min-height jak przed zmianą. */
2463    function releaseMobileReservation() {
2464        if (!lb.classList.contains('adv-market-leaderboard--mobile')) return;
2465        var box = lb.querySelector('.adv-market-leaderboard__slot');
2466        if (box) box.style.minHeight = '0';
2467    }
2468
2469    function audit() {
2470        var slot = lb.querySelector('.revive-slot--leaderboard');
2471        if (!slot) { lb.style.display = 'none'; return true; }
2472        if (hasRenderableCreative(slot) && !isExplicitNoFill(slot)) { lb.style.display = ''; releaseMobileReservation(); return true; }
2473        if (isExplicitNoFill(slot) || slot.getAttribute('data-revive-loaded') === '1') { lb.style.display = 'none'; releaseMobileReservation(); return true; }
2474        return false;
2475    }
2476
2477    if (audit()) return;
2478    var attempts = 0;
2479    var timer = setInterval(function () {
2480        attempts++;
2481        if (audit()) { clearInterval(timer); return; }
2482        if (attempts >= 12) { clearInterval(timer); releaseMobileReservation(); }
2483    }, 1000);
2484}());
2485</script>
2485
2486
2487<!-- Przycisk "Wróć do góry" - widoczny tylko na mobile przy scrollu -->
2488<button id="back-to-top" aria-label="Wróć do góry" title="Wróć do góry">
2489  <svg width="20" height="20" viewBox="0 0 24 24" fill="none"
2490       stroke="currentColor" stroke-width="2.5"
2491       stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
2492    <polyline points="18 15 12 9 6 15"/>
2493  </svg>
2494</button>
2495
2496<!-- ── Dolna nawigacja mobilna ─────────────────────────────────────── -->
2497
2498<nav class="gmn" aria-label="Nawigacja mobilna">
2499
2500  <a href="/" class="gmn__item" aria-label="Strona główna">
2501    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
2502         stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
2503      <path d="M3 9.5L12 3l9 6.5V20a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V9.5z"/>
2504      <polyline points="9 21 9 12 15 12 15 21"/>
2505    </svg>
2506    <span>Główna</span>
2507  </a>
2508
2509    <a href="/gieldadrzewna/" class="gmn__item gmn__item--active" aria-label="Ogłoszenia" >
2510    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
2511         stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
2512      <rect x="3" y="3" width="18" height="18" rx="2"/>
2513      <line x1="8" y1="8" x2="16" y2="8"/>
2514      <line x1="8" y1="12" x2="16" y2="12"/>
2515      <line x1="8" y1="16" x2="12" y2="16"/>
2516    </svg>
2517    <span>Ogłoszenia</span>
2518  </a>
2519
2520  <a href="/gieldadrzewna/dodaj" class="gmn__item gmn__item--add" aria-label="Dodaj ogłoszenie">
2521    <div class="gmn__icon-wrap" aria-hidden="true">
2522      <svg viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round">
2523        <line x1="12" y1="5" x2="12" y2="19"/>
2524        <line x1="5" y1="12" x2="19" y2="12"/>
2525      </svg>
2526    </div>
2527    <span>Dodaj</span>
2528  </a>
2529
2530  <a href="/moje-konto?tab=obserwowane" class="gmn__item" aria-label="Obserwowane">
2531    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
2532         stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
2533      <path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/>
2534    </svg>
2535    <span>Obserwowane</span>
2536  </a>
2537
2538  <a href="/moje-konto" class="gmn__item" aria-label="Konto">
2539    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
2540         stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
2541      <path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/>
2542      <circle cx="12" cy="7" r="4"/>
2543    </svg>
2544    <span>Konto</span>
2545  </a>
2546
2547</nav>
2548</body>
2549</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.