PageSourceSearch

https://ivc.pl/

html ivc.pl collected 2026-10-02 12:26:12 UTC 44,298 bytes, 766 lines download raw bytes

1<!DOCTYPE html>
2<html lang="pl" x-data="{ darkMode: localStorage.getItem('theme') === 'dark' }" :class="{ 'dark-mode': darkMode }" x-init="$watch('darkMode', v => localStorage.setItem('theme', v ? 'dark' : 'light'))">
3<head>
4    <meta charset="utf-8">
5    <meta name="viewport" content="width=device-width, initial-scale=1">
6    <meta name="csrf-token" content="7fnFIDg2CrWBWwL477Y9yajm18Dj3l0EHKIjSrrh">
7    <meta name="csp-nonce" content="f5JW+fkiog4AiV4Abv5c6Q==">
8    <title>IVC Katalog Firm</title>
9    <meta name="description" content="Przeglądaj tysiące firm z całej Polski, czytaj opinie, porównuj oferty.">
10    <link rel="canonical" href="https://ivc.pl">
11    <meta name="robots" content="FOLLOW, INDEX, MAX-SNIPPET:-1, MAX-VIDEO-PREVIEW:-1, MAX-IMAGE-PREVIEW:LARGE">
12    <link rel="shortcut icon" type="image/png" href="https://ivc.pl/img/favicon.png">
13
14    
15    <meta property="og:title" content="IVC Katalog Firm">
16    <meta property="og:description" content="Przeglądaj tysiące firm z całej Polski, czytaj opinie, porównuj oferty.">
17    <meta property="og:type" content="website">
18    <meta property="og:url" content="https://ivc.pl">
19    <meta property="og:image" content="https://ivc.pl/img/og-default.png">
20    <meta property="og:site_name" content="IVC Katalog Firm">
21    <meta property="og:locale" content="pl_PL">
22
23    
24    <meta name="twitter:card" content="summary_large_image">
25    <meta name="twitter:title" content="IVC Katalog Firm">
26    <meta name="twitter:description" content="Przeglądaj tysiące firm z całej Polski, czytaj opinie, porównuj oferty.">
27    <meta name="twitter:image" content="https://ivc.pl/img/og-default.png">
28
29    
29<script type="application/ld+json">{"<?php $__contextArgs = [];\nif (context()->has($__contextArgs[0])) :\nif (isset($value)) { $__contextPrevious[] = $value; }\n$value = context()->get($__contextArgs[0]); ?>":"https://schema.org","@type":"WebSite","name":"IVC Katalog Firm","url":"https://ivc.pl","description":"Przeglądaj tysiące firm z całej Polski, czytaj opinie, porównuj oferty.","potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://ivc.pl/wyszukiwarka?zapytanie={search_term_string}"},"query-input":"required name=search_term_string"}}</script>
vendor: 1 bytes, line 29
29
30<script type="application/ld+json">{"<?php $__contextArgs = [];\nif (context()->has($__contextArgs[0])) :\nif (isset($value)) { $__contextPrevious[] = $value; }\n$value = context()->get($__contextArgs[0]); ?>":"https://schema.org","@type":"Organization","name":"IVC Katalog Firm","url":"https://ivc.pl","logo":"https://ivc.pl/img/og-default.png"}</script>
vendor: 1 bytes, line 30
30
31<script type="application/ld+json">{"@context":"https://schema.org","@type":"CollectionPage","name":"Kategorie firm","description":"Wszystkie kategorie firm w katalogu","url":"https://ivc.pl","mainEntity":{"@type":"ItemList","numberOfItems":20,"itemListElement":[{"@type":"ListItem","position":1,"name":"AGD i RTV","url":"https://ivc.pl/kategoria/agd-i-rtv"},{"@type":"ListItem","position":2,"name":"AKTUALNOŚCI i MEDIA","url":"https://ivc.pl/kategoria/aktualnosci-i-media"},{"@type":"ListItem","position":3,"name":"BIURO i REKLAMA","url":"https://ivc.pl/kategoria/biuro-i-reklama"},{"@type":"ListItem","position":4,"name":"BIZNES i EKONOMIA","url":"https://ivc.pl/kategoria/biznes-i-ekonomia"},{"@type":"ListItem","position":5,"name":"BUDOWNICTWO","url":"https://ivc.pl/kategoria/budownictwo"},{"@type":"ListItem","position":6,"name":"DLA DZIECI","url":"https://ivc.pl/kategoria/dla-dzieci"},{"@type":"ListItem","position":7,"name":"DOM i OGRÓD","url":"https://ivc.pl/kategoria/dom-i-ogrod"},{"@type":"ListItem","position":8,"name":"EDUKACJA i NAUKA","url":"https://ivc.pl/kategoria/edukacja-i-nauka"},{"@type":"ListItem","position":9,"name":"FINANSE","url":"https://ivc.pl/kategoria/finanse"},{"@type":"ListItem","position":10,"name":"FLORA i FAUNA","url":"https://ivc.pl/kategoria/flora-i-fauna"},{"@type":"ListItem","position":11,"name":"GASTRONOMIA","url":"https://ivc.pl/kategoria/gastronomia"},{"@type":"ListItem","position":12,"name":"INTERNET i KOMPUTERY","url":"https://ivc.pl/kategoria/internet-i-komputery"},{"@type":"ListItem","position":13,"name":"KULTURA i SZTUKA","url":"https://ivc.pl/kategoria/kultura-i-sztuka"},{"@type":"ListItem","position":14,"name":"MOTORYZACJA","url":"https://ivc.pl/kategoria/motoryzacja"},{"@type":"ListItem","position":15,"name":"NIERUCHOMOŚCI","url":"https://ivc.pl/kategoria/nieruchomo%C5%9Bci"},{"@type":"ListItem","position":16,"name":"SKLEPY INTERNETOWE","url":"https://ivc.pl/kategoria/sklepy-internetowe"},{"@type":"ListItem","position":17,"name":"ŚLUB i WESELE","url":"https://ivc.pl/kategoria/slub-i-wesele"},{"@type":"ListItem","position":18,"name":"SPORT i REKREACJA","url":"https://ivc.pl/kategoria/sport-i-rekreacja"},{"@type":"ListItem","position":19,"name":"TURYSTYKA","url":"https://ivc.pl/kategoria/turystyka"},{"@type":"ListItem","position":20,"name":"ZDROWIE i URODA","url":"https://ivc.pl/kategoria/zdrowie-i-uroda"}]}}</script>
31
32
33    
34    
34<script>
35        window.dataLayer = window.dataLayer || [];
36        function gtag(){ dataLayer.push(arguments); }
37        // Default: deny everything except security_storage. RODO-compliant.
38        gtag('consent', 'default', {
39            'ad_storage': 'denied',
40            'ad_user_data': 'denied',
41            'ad_personalization': 'denied',
42            'analytics_storage': 'denied',
43            'functionality_storage': 'denied',
44            'personalization_storage': 'denied',
45            'security_storage': 'granted',
46            'wait_for_update': 500
47        });
48        gtag('set', 'developer_id.dXdXNGE', true); // for tracking implementation
49        // Restore previous consent on page load (before any GA/GTM script)
50        try {
51            const stored = JSON.parse(localStorage.getItem('cookie_consent_v2') || 'null');
52            if (stored && stored.gtag) gtag('consent', 'update', stored.gtag);
53        } catch(e){}
54    </script>
54
55
56    
57    
58        
59    
60    
60<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4606166976132809"
61     crossorigin="anonymous"></script>
61
62    <link rel="preconnect" href="https://fonts.googleapis.com">
63    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
64    <link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap">
65    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet" media="print" onload="this.media='all'">
66    <noscript><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet"></noscript>
67    <link rel="preload" as="style" href="https://ivc.pl/build/assets/app-DYNlEoVk.css" /><link rel="modulepreload" as="script" href="https://ivc.pl/build/assets/app-20XyoJmg.js" /><link rel="stylesheet" href="https://ivc.pl/build/assets/app-DYNlEoVk.css" />
67<script type="module" src="https://ivc.pl/build/assets/app-20XyoJmg.js"></script>
67    <style>
68    .blog-card { transition: transform .2s, box-shadow .2s }
69    .blog-card:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0,0,0,.08) !important }
70</style>
71</head>
72<body>
73
74
75
76
77
78<a href="#main-content" class="skip-link" style="position:absolute;left:-9999px;top:0;background:#4f46e5;color:#fff;padding:.5rem 1rem;z-index:10000" onfocus="this.style.left='0'" onblur="this.style.left='-9999px'">Przejdź do treści</a>
79
80
81<nav class="navbar navbar-expand-lg navbar-glass fixed-top" aria-label="Główna nawigacja">
82    <div class="container">
83        <a class="navbar-brand" href="https://ivc.pl">IVC Katalog Firm</a>
84        <button class="navbar-toggler border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
85                aria-controls="navbarNav" aria-expanded="false" aria-label="Otwórz menu nawigacji">
86            <span class="navbar-toggler-icon"></span>
87        </button>
88        <div class="collapse navbar-collapse" id="navbarNav">
89            <ul class="navbar-nav me-auto">
90                <li class="nav-item"><a class="nav-link" href="https://ivc.pl/blog" >Blog</a></li>
91                <li class="nav-item"><a class="nav-link" href="https://ivc.pl/regulamin" >Regulamin</a></li>
92                <li class="nav-item"><a class="nav-link" href="https://ivc.pl/kontakt" >Kontakt</a></li>
93            </ul>
94
95            <form class="d-flex me-3" action="https://ivc.pl/wyszukiwarka" method="GET" role="search" aria-label="Wyszukiwarka firm">
96                <label for="navbar-search" class="visually-hidden">Szukaj firmy</label>
97                <input id="navbar-search" class="search-input" type="search" name="zapytanie" placeholder="Szukaj firmy..." minlength="3" required>
98            </form>
99
100            <div class="d-flex align-items-center gap-2">
101                
102                <button type="button" class="btn btn-sm btn-outline-light" @click="darkMode = !darkMode" aria-label="Przelacz motyw" title="Przelacz motyw jasny/ciemny">
103                    <span x-show="!darkMode">&#9728;</span>
104                    <span x-show="darkMode" x-cloak>&#9790;</span>
105                </button>
106
107                                    <a class="nav-link text-white" href="https://ivc.pl/logowanie" style="font-size:.85rem">Zaloguj</a>
108                    <a class="nav-link text-white" href="https://ivc.pl/rejestracja" style="font-size:.85rem">Rejestracja</a>
109                                <a href="https://ivc.pl/dodawanie-firmy" class="btn btn-nav-cta">+ Dodaj firme</a>
110            </div>
111        </div>
112    </div>
113</nav>
114
115
116<div style="height: 60px"></div>
117
118
119
120<section class="hero">
121    <div class="container">
122        <div class="row align-items-center">
123            <div class="col-lg-7">
124                <h1>Znajdź sprawdzone firmy w Polsce</h1>
125                <p class="hero-subtitle mt-3 mb-4">Przeglądaj tysiące firm z całej Polski, czytaj opinie, porównuj oferty.</p>
126                <div class="hero-search mb-3">
127                    <form action="https://ivc.pl/wyszukiwarka" method="GET">
128                        <div class="input-group">
129                            <input type="search" class="form-control" name="zapytanie" placeholder="Szukaj firmy, usługi, miasta..." minlength="3" required>
130                            <button class="btn" type="submit">Szukaj</button>
131                        </div>
132                    </form>
133                </div>
134                <div class="d-flex flex-wrap gap-3 mt-3">
135                    <span class="hero-stat"><strong>599</strong> firm w bazie</span>
136                    <span class="hero-stat"><strong>20</strong> kategorii</span>
137                </div>
138            </div>
139        </div>
140    </div>
141</section>
142
143<main class="container py-4" id="main-content">
144    
145
146
147
148<section class="mb-5">
149    <h2 class="section-heading">Kategorie</h2>
150    <div class="row g-3">
151                <div class="col-lg-3 col-md-4 col-sm-6">
152            <a href="https://ivc.pl/kategoria/agd-i-rtv" class="category-card d-flex justify-content-between align-items-center">
153                <span class="category-name">AGD i RTV</span>
154                <span class="category-count">14</span>
155            </a>
156        </div>
157                <div class="col-lg-3 col-md-4 col-sm-6">
158            <a href="https://ivc.pl/kategoria/aktualnosci-i-media" class="category-card d-flex justify-content-between align-items-center">
159                <span class="category-name">AKTUALNOŚCI i MEDIA</span>
160                <span class="category-count">3</span>
161            </a>
162        </div>
163                <div class="col-lg-3 col-md-4 col-sm-6">
164            <a href="https://ivc.pl/kategoria/biuro-i-reklama" class="category-card d-flex justify-content-between align-items-center">
165                <span class="category-name">BIURO i REKLAMA</span>
166                <span class="category-count">27</span>
167            </a>
168        </div>
169                <div class="col-lg-3 col-md-4 col-sm-6">
170            <a href="https://ivc.pl/kategoria/biznes-i-ekonomia" class="category-card d-flex justify-content-between align-items-center">
171                <span class="category-name">BIZNES i EKONOMIA</span>
172                <span class="category-count">58</span>
173            </a>
174        </div>
175                <div class="col-lg-3 col-md-4 col-sm-6">
176            <a href="https://ivc.pl/kategoria/budownictwo" class="category-card d-flex justify-content-between align-items-center">
177                <span class="category-name">BUDOWNICTWO</span>
178                <span class="category-count">78</span>
179            </a>
180        </div>
181                <div class="col-lg-3 col-md-4 col-sm-6">
182            <a href="https://ivc.pl/kategoria/dla-dzieci" class="category-card d-flex justify-content-between align-items-center">
183                <span class="category-name">DLA DZIECI</span>
184                <span class="category-count">7</span>
185            </a>
186        </div>
187                <div class="col-lg-3 col-md-4 col-sm-6">
188            <a href="https://ivc.pl/kategoria/dom-i-ogrod" class="category-card d-flex justify-content-between align-items-center">
189                <span class="category-name">DOM i OGRÓD</span>
190                <span class="category-count">83</span>
191            </a>
192        </div>
193                <div class="col-lg-3 col-md-4 col-sm-6">
194            <a href="https://ivc.pl/kategoria/edukacja-i-nauka" class="category-card d-flex justify-content-between align-items-center">
195                <span class="category-name">EDUKACJA i NAUKA</span>
196                <span class="category-count">11</span>
197            </a>
198        </div>
199                <div class="col-lg-3 col-md-4 col-sm-6">
200            <a href="https://ivc.pl/kategoria/finanse" class="category-card d-flex justify-content-between align-items-center">
201                <span class="category-name">FINANSE</span>
202                <span class="category-count">17</span>
203            </a>
204        </div>
205                <div class="col-lg-3 col-md-4 col-sm-6">
206            <a href="https://ivc.pl/kategoria/flora-i-fauna" class="category-card d-flex justify-content-between align-items-center">
207                <span class="category-name">FLORA i FAUNA</span>
208                <span class="category-count">1</span>
209            </a>
210        </div>
211                <div class="col-lg-3 col-md-4 col-sm-6">
212            <a href="https://ivc.pl/kategoria/gastronomia" class="category-card d-flex justify-content-between align-items-center">
213                <span class="category-name">GASTRONOMIA</span>
214                <span class="category-count">40</span>
215            </a>
216        </div>
217                <div class="col-lg-3 col-md-4 col-sm-6">
218            <a href="https://ivc.pl/kategoria/internet-i-komputery" class="category-card d-flex justify-content-between align-items-center">
219                <span class="category-name">INTERNET i KOMPUTERY</span>
220                <span class="category-count">23</span>
221            </a>
222        </div>
223                <div class="col-lg-3 col-md-4 col-sm-6">
224            <a href="https://ivc.pl/kategoria/kultura-i-sztuka" class="category-card d-flex justify-content-between align-items-center">
225                <span class="category-name">KULTURA i SZTUKA</span>
226                <span class="category-count">8</span>
227            </a>
228        </div>
229                <div class="col-lg-3 col-md-4 col-sm-6">
230            <a href="https://ivc.pl/kategoria/motoryzacja" class="category-card d-flex justify-content-between align-items-center">
231                <span class="category-name">MOTORYZACJA</span>
232                <span class="category-count">35</span>
233            </a>
234        </div>
235                <div class="col-lg-3 col-md-4 col-sm-6">
236            <a href="https://ivc.pl/kategoria/nieruchomo%C5%9Bci" class="category-card d-flex justify-content-between align-items-center">
237                <span class="category-name">NIERUCHOMOŚCI</span>
238                <span class="category-count">12</span>
239            </a>
240        </div>
241                <div class="col-lg-3 col-md-4 col-sm-6">
242            <a href="https://ivc.pl/kategoria/sklepy-internetowe" class="category-card d-flex justify-content-between align-items-center">
243                <span class="category-name">SKLEPY INTERNETOWE</span>
244                <span class="category-count">68</span>
245            </a>
246        </div>
247                <div class="col-lg-3 col-md-4 col-sm-6">
248            <a href="https://ivc.pl/kategoria/slub-i-wesele" class="category-card d-flex justify-content-between align-items-center">
249                <span class="category-name">ŚLUB i WESELE</span>
250                <span class="category-count">11</span>
251            </a>
252        </div>
253                <div class="col-lg-3 col-md-4 col-sm-6">
254            <a href="https://ivc.pl/kategoria/sport-i-rekreacja" class="category-card d-flex justify-content-between align-items-center">
255                <span class="category-name">SPORT i REKREACJA</span>
256                <span class="category-count">14</span>
257            </a>
258        </div>
259                <div class="col-lg-3 col-md-4 col-sm-6">
260            <a href="https://ivc.pl/kategoria/turystyka" class="category-card d-flex justify-content-between align-items-center">
261                <span class="category-name">TURYSTYKA</span>
262                <span class="category-count">12</span>
263            </a>
264        </div>
265                <div class="col-lg-3 col-md-4 col-sm-6">
266            <a href="https://ivc.pl/kategoria/zdrowie-i-uroda" class="category-card d-flex justify-content-between align-items-center">
267                <span class="category-name">ZDROWIE i URODA</span>
268                <span class="category-count">74</span>
269            </a>
270        </div>
271            </div>
272</section>
273
274
275<section class="mb-5">
276    <h2 class="section-heading">Najnowsze firmy</h2>
277    <div class="row g-3">
278                <div class="col-lg-4 col-md-6">
279            <div class="card company-card h-100">
280                <div class="card-body">
281                    <h5 class="card-title">
282                        <a href="https://ivc.pl/auto-wrocek">Auto Wrocek</a>
283                    </h5>
284                    <div class="company-city mb-2">Wrocław</div>
285                    <p class="card-text">Auto Wrocek to wrocławska firma z licencjonowaną stacją demontażu pojazdów, prowadząca złomowanie i kasację zgodnie z obowiązującymi normami...</p>
286                </div>
287                <div class="card-footer bg-transparent border-0 pt-0">
288                    <a href="https://ivc.pl/auto-wrocek" class="btn btn-sm btn-outline-primary">Szczegóły</a>
289                </div>
290            </div>
291        </div>
292                <div class="col-lg-4 col-md-6">
293            <div class="card company-card h-100">
294                <div class="card-body">
295                    <h5 class="card-title">
296                        <a href="https://ivc.pl/lomzik-firma-marcin-lomzik">Kasacja Kraków</a>
297                    </h5>
298                    <div class="company-city mb-2">Tymbark</div>
299                    <p class="card-text">Samodzielna sprzedaż auta potrafi ciągnąć się tygodniami: zdjęcia, ogłoszenia, telefony od niezdecydowanych kupców, oględziny i targowanie s...</p>
300                </div>
301                <div class="card-footer bg-transparent border-0 pt-0">
302                    <a href="https://ivc.pl/lomzik-firma-marcin-lomzik" class="btn btn-sm btn-outline-primary">Szczegóły</a>
303                </div>
304            </div>
305        </div>
306                <div class="col-lg-4 col-md-6">
307            <div class="card company-card h-100">
308                <div class="card-body">
309                    <h5 class="card-title">
310                        <a href="https://ivc.pl/metalex-sita-techniczne">Metalex</a>
311                    </h5>
312                    <div class="company-city mb-2">Gliwice</div>
313                    <p class="card-text">Szukasz sprawdzonego producenta siatek metalowych? Metalex z Gliwic (ul. Miodowa 31, 44-141) to firma z długoletnim doświadczeniem, dostarcz...</p>
314                </div>
315                <div class="card-footer bg-transparent border-0 pt-0">
316                    <a href="https://ivc.pl/metalex-sita-techniczne" class="btn btn-sm btn-outline-primary">Szczegóły</a>
317                </div>
318            </div>
319        </div>
320            </div>
321</section>
322
323
324<section class="mb-4">
325    <h2 class="section-heading text-center">Popularne usługi</h2>
326    <div class="tag-cloud text-center">
327                    <a href="https://ivc.pl/tag/kendama" class="tag-badge">Kendama</a>
328                    <a href="https://ivc.pl/tag/torba-shopper" class="tag-badge">torba shopper</a>
329                    <a href="https://ivc.pl/tag/lampy-wiszace" class="tag-badge">lampy wiszące</a>
330                    <a href="https://ivc.pl/tag/restauracja-gdansk" class="tag-badge">restauracja gdańsk</a>
331                    <a href="https://ivc.pl/tag/brak-nazwy" class="tag-badge">dali </a>
332                    <a href="https://ivc.pl/tag/olej-cbd" class="tag-badge">olej cbd</a>
333                    <a href="https://ivc.pl/tag/zaluzja-okienna" class="tag-badge">żaluzja okienna</a>
334                    <a href="https://ivc.pl/tag/pokoj-zagadek" class="tag-badge">pokój zagadek</a>
335                    <a href="https://ivc.pl/tag/kancelaria-radcy-prawnego" class="tag-badge">kancelaria radcy prawnego</a>
336                    <a href="https://ivc.pl/tag/drogeria-internetowa" class="tag-badge">drogeria internetowa</a>
337                    <a href="https://ivc.pl/tag/plytki-ceramiczne-lazienkowe" class="tag-badge">płytki ceramiczne łazienkowe</a>
338                    <a href="https://ivc.pl/tag/kamerzysta-na-wesele" class="tag-badge">Kamerzysta na wesele</a>
339                    <a href="https://ivc.pl/tag/leczenie-lysienia" class="tag-badge">leczenie łysienia</a>
340                    <a href="https://ivc.pl/tag/kontrola-dostepu" class="tag-badge">Kontrola dostępu</a>
341                    <a href="https://ivc.pl/tag/waporyzacja" class="tag-badge">waporyzacja</a>
342                    <a href="https://ivc.pl/tag/blog-kulinarny" class="tag-badge">blog kulinarny</a>
343                    <a href="https://ivc.pl/tag/bus-polska-holandia" class="tag-badge">Bus Polska Holandia</a>
344                    <a href="https://ivc.pl/tag/blaszak-krakow" class="tag-badge">blaszak Kraków</a>
345                    <a href="https://ivc.pl/tag/pizza" class="tag-badge">pizza</a>
346                    <a href="https://ivc.pl/tag/dentysta-wyszkow" class="tag-badge">dentysta wyszków</a>
347                    <a href="https://ivc.pl/tag/slomki-kompostowalne" class="tag-badge">słomki kompostowalne</a>
348                    <a href="https://ivc.pl/tag/nawozy-rolnicze" class="tag-badge">Nawozy rolnicze</a>
349                    <a href="https://ivc.pl/tag/tania-firma-przeprowadzkowa-warszawa" class="tag-badge">tania Firma Przeprowadzkowa warszawa</a>
350                    <a href="https://ivc.pl/tag/warszawa-restauracja" class="tag-badge">warszawa restauracja</a>
351                    <a href="https://ivc.pl/tag/dezynfekcja" class="tag-badge">dezynfekcja</a>
352                    <a href="https://ivc.pl/tag/klimatyzatory-warszawa" class="tag-badge">klimatyzatory Warszawa</a>
353                    <a href="https://ivc.pl/tag/ubezpieczenie-szkolne" class="tag-badge">ubezpieczenie szkolne</a>
354                    <a href="https://ivc.pl/tag/ramki-drewniane" class="tag-badge">ramki drewniane</a>
355                    <a href="https://ivc.pl/tag/oprogramowania-do-fakturowania" class="tag-badge">oprogramowania do fakturowania</a>
356                    <a href="https://ivc.pl/tag/developer" class="tag-badge">developer</a>
357                    <a href="https://ivc.pl/tag/obsluga-prawna" class="tag-badge">obsługa prawna</a>
358                    <a href="https://ivc.pl/tag/splywy-kajakowe-debki" class="tag-badge">spływy kajakowe dębki</a>
359                    <a href="https://ivc.pl/tag/tatuaz" class="tag-badge">tatuaż</a>
360                    <a href="https://ivc.pl/tag/buty-dzieciece" class="tag-badge">buty dziecięce</a>
361            </div>
362</section>
363
364
365
366</main>
367
368
369<footer class="site-footer">
370    <div class="container">
371        <div class="row">
372            <div class="col-md-4 mb-3">
373                <div class="footer-brand mb-2">IVC Katalog Firm</div>
374                <p class="mb-0" style="font-size:.85rem">Przeglądaj tysiące firm z całej Polski, czytaj opinie, porównuj oferty.</p>
375            </div>
376            <div class="col-md-2 mb-3">
377                <div class="footer-heading">Nawigacja</div>
378                <ul class="footer-links">
379                    <li><a href="https://ivc.pl">Strona glowna</a></li>
380                    <li><a href="https://ivc.pl/blog">Blog</a></li>
381                    <li><a href="https://ivc.pl/dodawanie-firmy">Dodaj firme</a></li>
382                    <li><a href="https://ivc.pl/kontakt">Kontakt</a></li>
383                </ul>
384            </div>
385            <div class="col-md-2 mb-3">
386                <div class="footer-heading">Informacje</div>
387                <ul class="footer-links">
388                    <li><a href="https://ivc.pl/regulamin">Regulamin</a></li>
389                    <li><a href="https://ivc.pl/polityka-prywatnosci">Polityka prywatności</a></li>
390                    <li><a href="https://ivc.pl/o-ciasteczkach">Polityka cookies</a></li>
391                    <li><button type="button" class="btn btn-link p-0 footer-link-btn" onclick="window.openCookiePreferences && window.openCookiePreferences();">Ustawienia cookies</button></li>
392                    <li><a href="https://ivc.pl/multikod">Multikod</a></li>
393                </ul>
394            </div>
395            <div class="col-md-4 mb-3">
396                <div class="footer-heading">Konto</div>
397                <ul class="footer-links">
398                    <li><a href="https://ivc.pl/logowanie">Zaloguj sie</a></li>
399                    <li><a href="https://ivc.pl/panel">Panel uzytkownika</a></li>
400                </ul>
401            </div>
402        </div>
403        <div class="footer-bottom text-center">
404            &copy; 2026 IVC Katalog Firm.
405            <span class="ms-2" aria-label="Wersja aplikacji">v.1.0.2</span>
406            Wszelkie prawa zastrzeĹĽone.
407        </div>
408    </div>
409</footer>
410
411
412<style>
413    /* ── Cookie Consent — LIGHT mode defaults ── */
414    .cc-banner {
415        position: fixed; bottom: 1rem; left: 1rem; right: 1rem; max-width: 760px; margin: 0 auto;
416        z-index: 9998; background: rgba(255, 255, 255, 0.98); color: #1e293b;
417        padding: 1.25rem 1.5rem; border-radius: .75rem; backdrop-filter: blur(12px);
418        border: 1px solid rgba(15, 23, 42, 0.08);
419        box-shadow: 0 20px 60px rgba(15, 23, 42, 0.18);
420        font-size: .9rem; line-height: 1.5;
421        display: none;
422    }
423    .cc-banner.is-visible { display: block }
424    .cc-banner .cc-title { display: block; font-size: 1.05rem; margin: 0 0 .5rem; color: #0f172a; font-weight: 700 }
425    .cc-banner p { margin: 0 0 1rem; color: #475569 }
426    .cc-banner a { color: #4f46e5; text-decoration: underline }
427    .cc-banner .cc-actions { display: flex; gap: .5rem; flex-wrap: wrap }
428    .cc-banner .cc-actions button { flex: 1 1 auto; min-width: 140px; border: 0; padding: .65rem 1rem; border-radius: .5rem; font-weight: 600; cursor: pointer; font-size: .85rem; transition: opacity .15s, background .15s }
429    .cc-banner .cc-actions button:hover { opacity: .9 }
430    .cc-banner .cc-btn-accept { background: #4f46e5; color: #fff }
431    .cc-banner .cc-btn-necessary { background: #e2e8f0; color: #1e293b }
432    .cc-banner .cc-btn-prefs { background: transparent; color: #1e293b; border: 1px solid #cbd5e1 !important }
433
434    .cc-modal { display: none; position: fixed; inset: 0; z-index: 10001; align-items: center; justify-content: center; background: rgba(15, 23, 42, .55); padding: 1rem }
435    .cc-modal.is-visible { display: flex }
436    .cc-modal-card { background: #fff; color: #1e293b; max-width: 720px; width: 100%; border-radius: .75rem; max-height: 90vh; overflow: auto; box-shadow: 0 25px 50px rgba(0,0,0,.3) }
437    .cc-modal-card .cc-header { padding: 1.25rem 1.5rem; border-bottom: 1px solid #e2e8f0; display: flex; justify-content: space-between; align-items: center }
438    .cc-modal-card .cc-header .cc-title { display: block; margin: 0; font-size: 1.15rem; color: #0f172a; font-weight: 700 }
439    .cc-modal-card .cc-header .cc-btn-secondary { line-height: 1; padding: .25rem .6rem; font-size: 1.1rem }
440    .cc-modal-card .cc-body { padding: 1.5rem }
441    .cc-modal-intro { font-size: .9rem; color: #64748b; margin: 0 0 1rem }
442    .cc-modal-card .cc-footer { padding: 1rem 1.5rem; border-top: 1px solid #e2e8f0; display: flex; justify-content: space-between; gap: .5rem; flex-wrap: wrap }
443    .cc-cat { padding: 1rem; border: 1px solid #e2e8f0; border-radius: .5rem; margin-bottom: .75rem; background: #f8fafc }
444    .cc-cat-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: .25rem }
445    .cc-cat-header .cc-cat-name { display: block; margin: 0; font-size: 1rem; font-weight: 600; color: #0f172a }
446    .cc-cat-desc { color: #64748b; font-size: .85rem; margin: 0 }
447    .cc-cat-services { margin-top: .35rem; font-size: .75rem; color: #94a3b8 }
448    .cc-toggle { position: relative; width: 44px; height: 24px; flex: 0 0 44px }
449    .cc-toggle input { opacity: 0; width: 0; height: 0 }
450    .cc-toggle .cc-slider { position: absolute; inset: 0; background: #cbd5e1; transition: .25s; border-radius: 24px; cursor: pointer }
451    .cc-toggle .cc-slider:before { content: ""; position: absolute; height: 18px; width: 18px; left: 3px; bottom: 3px; background: #fff; transition: .25s; border-radius: 50% }
452    .cc-toggle input:checked + .cc-slider { background: #4f46e5 }
453    .cc-toggle input:checked + .cc-slider:before { transform: translateX(20px) }
454    .cc-toggle input:disabled + .cc-slider { background: #94a3b8; cursor: not-allowed }
455    .cc-modal-card button { padding: .55rem 1rem; border-radius: .5rem; border: 0; font-weight: 600; cursor: pointer; font-size: .85rem }
456    .cc-modal-card .cc-btn-primary { background: #4f46e5; color: #fff }
457    .cc-modal-card .cc-btn-primary:hover { background: #4338ca }
458    .cc-modal-card .cc-btn-secondary { background: #e2e8f0; color: #1e293b }
459    .cc-modal-card .cc-btn-secondary:hover { background: #cbd5e1 }
460
461    /* ── Cookie Consent — DARK mode overrides (class-based, driven by the site toggle) ── */
462    html.dark-mode .cc-banner {
463        background: rgba(15, 23, 42, 0.97);
464        color: #f1f5f9;
465        border-color: rgba(255, 255, 255, 0.08);
466        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
467    }
468    html.dark-mode .cc-banner .cc-title { color: #fff }
469    html.dark-mode .cc-banner p { color: #cbd5e1 }
470    html.dark-mode .cc-banner a { color: #a5b4fc }
471    html.dark-mode .cc-banner .cc-btn-necessary { background: #475569; color: #fff }
472    html.dark-mode .cc-banner .cc-btn-prefs { background: transparent; color: #f1f5f9; border-color: #475569 !important }
473
474    html.dark-mode .cc-modal { background: rgba(0, 0, 0, 0.7) }
475    html.dark-mode .cc-modal-card { background: #1e293b; color: #f1f5f9 }
476    html.dark-mode .cc-modal-card .cc-header { border-color: #334155 }
477    html.dark-mode .cc-modal-card .cc-header .cc-title { color: #f8fafc }
478    html.dark-mode .cc-modal-intro { color: #cbd5e1 }
479    html.dark-mode .cc-modal-card .cc-footer { border-color: #334155 }
480    html.dark-mode .cc-cat { background: #0f172a; border-color: #334155 }
481    html.dark-mode .cc-cat-header .cc-cat-name { color: #f8fafc }
482    html.dark-mode .cc-cat-desc { color: #94a3b8 }
483    html.dark-mode .cc-cat-services { color: #64748b }
484    html.dark-mode .cc-toggle .cc-slider { background: #475569 }
485    html.dark-mode .cc-modal-card .cc-btn-secondary { background: #334155; color: #f1f5f9 }
486    html.dark-mode .cc-modal-card .cc-btn-secondary:hover { background: #475569 }
487</style>
488
489<div class="cc-banner" id="cc-banner" role="dialog" aria-labelledby="cc-banner-title" aria-describedby="cc-banner-desc" aria-modal="false">
490    <span class="cc-title" id="cc-banner-title">🍪 Pliki cookies</span>
491    <p id="cc-banner-desc">
492        Używamy plików cookies, aby zapewnić najlepsze działanie serwisu, analizować ruch i personalizować treści.
493        Możesz zaakceptować wszystkie lub wybrać tylko niezbędne.
494        <a href="https://ivc.pl/o-ciasteczkach">Polityka cookies</a>.
495    </p>
496    <div class="cc-actions">
497        <button type="button" class="cc-btn-necessary" data-cc-action="necessary">Tylko niezbędne</button>
498        <button type="button" class="cc-btn-prefs" data-cc-action="prefs">Ustawienia</button>
499        <button type="button" class="cc-btn-accept" data-cc-action="accept-all">Akceptuję wszystkie</button>
500    </div>
501</div>
502
503<div class="cc-modal" id="cc-modal" role="dialog" aria-labelledby="cc-modal-title" aria-modal="true">
504    <div class="cc-modal-card">
505        <div class="cc-header">
506            <span class="cc-title" id="cc-modal-title">Ustawienia plików cookies</span>
507            <button type="button" class="cc-btn-secondary" data-cc-action="close-modal" aria-label="Zamknij">×</button>
508        </div>
509        <div class="cc-body">
510            <p class="cc-modal-intro">
511                Wybierz, które kategorie cookies chcesz zaakceptować. Niezbędne cookies są zawsze włączone.
512                Możesz zmienić swoją decyzję w dowolnej chwili — link do ustawień znajdziesz w stopce.
513            </p>
514
515                            <div class="cc-cat">
516                    <div class="cc-cat-header">
517                        <span class="cc-cat-name">Niezbędne</span>
518                        <label class="cc-toggle">
519                            <input type="checkbox" data-cc-cat="necessary"
520                                checked disabled>
521                            <span class="cc-slider"></span>
522                        </label>
523                    </div>
524                    <p class="cc-cat-desc">Pliki cookies wymagane do działania serwisu (sesja, CSRF, preferencje akceptacji cookies). Nie można ich wyłączyć.</p>
525                                            <div class="cc-cat-services">
526                            <strong>Usługi:</strong> Laravel session, CSRF token, consent_id
527                        </div>
528                                    </div>
529                            <div class="cc-cat">
530                    <div class="cc-cat-header">
531                        <span class="cc-cat-name">Analityczne</span>
532                        <label class="cc-toggle">
533                            <input type="checkbox" data-cc-cat="analytics"
534                                >
535                            <span class="cc-slider"></span>
536                        </label>
537                    </div>
538                    <p class="cc-cat-desc">Cookies pomagające nam zrozumieć, jak użytkownicy korzystają z serwisu (zanonimizowane).</p>
539                                            <div class="cc-cat-services">
540                            <strong>Usługi:</strong> Google Analytics 4, Google Tag Manager
541                        </div>
542                                    </div>
543                            <div class="cc-cat">
544                    <div class="cc-cat-header">
545                        <span class="cc-cat-name">Marketingowe</span>
546                        <label class="cc-toggle">
547                            <input type="checkbox" data-cc-cat="marketing"
548                                >
549                            <span class="cc-slider"></span>
550                        </label>
551                    </div>
552                    <p class="cc-cat-desc">Cookies używane do personalizacji reklam i remarketingu.</p>
553                                            <div class="cc-cat-services">
554                            <strong>Usługi:</strong> Google Ads, Facebook Pixel
555                        </div>
556                                    </div>
557                            <div class="cc-cat">
558                    <div class="cc-cat-header">
559                        <span class="cc-cat-name">Funkcjonalne</span>
560                        <label class="cc-toggle">
561                            <input type="checkbox" data-cc-cat="functional"
562                                >
563                            <span class="cc-slider"></span>
564                        </label>
565                    </div>
566                    <p class="cc-cat-desc">Cookies usprawniające działanie serwisu (np. zapamiętanie preferencji dark mode, języka).</p>
567                                            <div class="cc-cat-services">
568                            <strong>Usługi:</strong> Theme preference, Language
569                        </div>
570                                    </div>
571                    </div>
572        <div class="cc-footer">
573            <button type="button" class="cc-btn-secondary" data-cc-action="necessary">Tylko niezbędne</button>
574            <button type="button" class="cc-btn-secondary" data-cc-action="accept-all">Akceptuję wszystkie</button>
575            <button type="button" class="cc-btn-primary" data-cc-action="save-prefs">Zapisz wybór</button>
576        </div>
577    </div>
578</div>
579
580<script>
581(function () {
582    const STORAGE_KEY = 'cookie_consent_v2';
583    const POLICY_VERSION = "4426f90d34a6";
584    const CSRF = document.querySelector('meta[name="csrf-token"]')?.content || '';
585    const banner = document.getElementById('cc-banner');
586    const modal = document.getElementById('cc-modal');
587    if (!banner || !modal) return;
588
589    function uuid() {
590        return 'cc-' + Date.now().toString(36) + '-' + Math.random().toString(36).slice(2, 10);
591    }
592
593    function loadStored() {
594        try { return JSON.parse(localStorage.getItem(STORAGE_KEY)) || null; } catch(e) { return null; }
595    }
596    function saveStored(data) {
597        try { localStorage.setItem(STORAGE_KEY, JSON.stringify(data)); } catch(e) {}
598    }
599
600    function buildGtagPayload(prefs) {
601        return {
602            ad_storage:              prefs.marketing  ? 'granted' : 'denied',
603            ad_user_data:            prefs.marketing  ? 'granted' : 'denied',
604            ad_personalization:      prefs.marketing  ? 'granted' : 'denied',
605            analytics_storage:       prefs.analytics  ? 'granted' : 'denied',
606            functionality_storage:   prefs.functional ? 'granted' : 'denied',
607            personalization_storage: prefs.functional ? 'granted' : 'denied',
608            security_storage:        'granted'
609        };
610    }
611
612    function applyConsent(prefs, action, source) {
613        const gtagPayload = buildGtagPayload(prefs);
614        if (typeof gtag === 'function') {
615            gtag('consent', 'update', gtagPayload);
616        }
617
618        const stored = loadStored() || {};
619        const consentId = stored.consent_id || uuid();
620
621        const data = {
622            consent_id: consentId,
623            policy_version: POLICY_VERSION,
624            prefs: prefs,
625            gtag: gtagPayload,
626            updated_at: new Date().toISOString()
627        };
628        saveStored(data);
629
630        // Audit log to backend (best-effort, async)
631        fetch("https:\/\/ivc.pl\/consent", {
632            method: 'POST',
633            headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'X-CSRF-TOKEN': CSRF },
634            body: JSON.stringify({
635                consent_id: consentId,
636                action: action,
637                necessary: true,
638                analytics: !!prefs.analytics,
639                marketing: !!prefs.marketing,
640                functional: !!prefs.functional,
641                source: source || 'banner'
642            })
643        }).catch(() => {});
644
645        hideBanner();
646        hideModal();
647        document.dispatchEvent(new CustomEvent('cookieConsentChanged', { detail: data }));
648    }
649
650    function showBanner() { banner.classList.add('is-visible'); }
651    function hideBanner() { banner.classList.remove('is-visible'); }
652    function showModal()  { modal.classList.add('is-visible'); }
653    function hideModal()  { modal.classList.remove('is-visible'); }
654
655    function getModalPrefs() {
656        const out = { necessary: true };
657        modal.querySelectorAll('[data-cc-cat]').forEach(cb => {
658            out[cb.dataset.ccCat] = cb.checked;
659        });
660        return out;
661    }
662    function setModalPrefs(prefs) {
663        modal.querySelectorAll('[data-cc-cat]').forEach(cb => {
664            const key = cb.dataset.ccCat;
665            if (key in prefs) cb.checked = prefs[key];
666        });
667    }
668
669    document.addEventListener('click', (e) => {
670        const t = e.target.closest('[data-cc-action]');
671        if (!t) return;
672        e.preventDefault();
673        const action = t.dataset.ccAction;
674
675        if (action === 'accept-all') {
676            applyConsent({ necessary: true, analytics: true, marketing: true, functional: true }, 'granted', t.closest('#cc-modal') ? 'preferences_modal' : 'banner');
677        } else if (action === 'necessary') {
678            applyConsent({ necessary: true, analytics: false, marketing: false, functional: false }, 'denied', t.closest('#cc-modal') ? 'preferences_modal' : 'banner');
679        } else if (action === 'prefs') {
680            const stored = loadStored();
681            setModalPrefs(stored?.prefs || { necessary: true });
682            showModal();
683        } else if (action === 'save-prefs') {
684            applyConsent(getModalPrefs(), 'updated', 'preferences_modal');
685        } else if (action === 'close-modal') {
686            hideModal();
687        }
688    });
689
690    // Init: show banner if no decision yet, OR if policy version changed
691    const stored = loadStored();
692    const needsConsent = !stored || stored.policy_version !== POLICY_VERSION;
693    if (needsConsent) {
694        // Defer to next tick so it doesn't block initial paint
695        setTimeout(showBanner, 100);
696    }
697
698    // Public API: open preferences from anywhere (e.g. footer link)
699    window.openCookiePreferences = () => {
700        const s = loadStored();
701        setModalPrefs(s?.prefs || { necessary: true });
702        showModal();
703    };
704})();
705</script>
705
706
707
708
709
710<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
vendor: 1 bytes, line 710
710
711<script>
712(function () {
713    if (typeof Swal === 'undefined') return;
714    window.Swal = Swal;
715
716    const toast = (icon, title) => Swal.fire({
717        icon, title,
718        toast: true,
719        position: 'top-end',
720        showConfirmButton: false,
721        timer: 4000,
722        timerProgressBar: true,
723    });
724
725    const modal = (icon, title, html) => Swal.fire({
726        icon, title, html,
727        confirmButtonText: 'OK',
728        confirmButtonColor: '#4f46e5',
729    });
730
731    document.querySelectorAll('template[data-flash]').forEach(tpl => {
732        const type = tpl.dataset.flash;
733        const msg = (tpl.innerHTML || '').trim().replace(/\n/g, '<br>');
734        if (!msg) return;
735        switch (type) {
736            case 'success':    toast('success', msg); break;
737            case 'info':       toast('info', msg); break;
738            case 'warning':    modal('warning', 'Uwaga', msg); break;
739            case 'error':      modal('error', 'Błąd', msg); break;
740            case 'validation': modal('error', 'Błąd walidacji', msg); break;
741        }
742    });
743
744    document.querySelectorAll('[data-confirm]').forEach(el => {
745        el.addEventListener('click', (e) => {
746            e.preventDefault();
747            Swal.fire({
748                title: el.dataset.confirmTitle || 'Czy na pewno?',
749                text: el.dataset.confirm || 'Tej operacji nie można cofnąć.',
750                icon: 'warning',
751                showCancelButton: true,
752                confirmButtonColor: '#ef4444',
753                cancelButtonColor: '#64748b',
754                confirmButtonText: el.dataset.confirmBtn || 'Tak, usuń',
755                cancelButtonText: 'Anuluj',
756            }).then(result => {
757                if (!result.isConfirmed) return;
758                if (el.tagName === 'A') window.location.href = el.href;
759                else el.closest('form')?.submit();
760            });
761        });
762    });
763})();
764</script>
764
765</body>
766</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.