PageSourceSearch

https://czasnarelakswro.pl/wydarzenia/

html czasnarelakswro.pl collected 2026-10-07 20:51:13 UTC 15,901 bytes, 303 lines download raw bytes

1<!doctype html>
2<html lang="pl">
3  <head>
4    <meta charset="UTF-8" />
5    <!-- Dokument HTML jest zawsze rewalidowany (odwołuje się do hashowanych assetów).
6         Pragma czytana przez audyty SEO; docelowo ten sam nagłówek powinien wysyłać
7         serwer — patrz docs/seo-hosting.md. -->
8    <meta http-equiv="Cache-Control" content="public, max-age=0, must-revalidate" />
9    <title>Wydarzenia i warsztaty — Czas na Relaks</title>
10    <meta name="description" content="Pragniemy podzielić się z Wami pasją, która jest zarówno sztuką, jak i sposobem wyrażania siebie — sztuką rysowania. Zapraszamy do odkrycia tego fascynującego świata." />
11    <!-- `max-image-preview:large` pozwala Google pokazywać duże miniatury naszych
12         zdjęć w wynikach; pozostałe dwa zdejmują limit długości opisu i wideo.
13         Tę samą wartość ustawiają `src/lib/seo.js` i `scripts/prerender.mjs`. -->
14    <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1" />
15    <link rel="canonical" href="https://czasnarelakswro.pl/wydarzenia/" />
16    <link rel="alternate" href="https://czasnarelakswro.pl/wydarzenia/" hreflang="pl" />
17    <link rel="alternate" href="https://czasnarelakswro.pl/ru/wydarzenia/" hreflang="ru" />
18    <link rel="alternate" href="https://czasnarelakswro.pl/wydarzenia/" hreflang="x-default" />
19    <meta property="og:title" content="Wydarzenia i warsztaty — Czas na Relaks" />
20    <meta property="og:description" content="Pragniemy podzielić się z Wami pasją, która jest zarówno sztuką, jak i sposobem wyrażania siebie — sztuką rysowania. Zapraszamy do odkrycia tego fascynującego świata." />
21    <meta property="og:image" content="https://czasnarelakswro.pl/logo.png" />
22    <meta property="og:image:alt" content="Wydarzenia i warsztaty — Czas na Relaks" />
23    <meta property="og:url" content="https://czasnarelakswro.pl/wydarzenia/" />
24    <meta property="og:type" content="website" />
25    <meta property="og:site_name" content="Czas na Relaks" />
26    <meta property="og:locale" content="pl_PL" />
27    <meta name="twitter:card" content="summary_large_image" />
28    <meta name="twitter:title" content="Wydarzenia i warsztaty — Czas na Relaks" />
29    <meta name="twitter:description" content="Pragniemy podzielić się z Wami pasją, która jest zarówno sztuką, jak i sposobem wyrażania siebie — sztuką rysowania. Zapraszamy do odkrycia tego fascynującego świata." />
30    <meta name="twitter:image" content="https://czasnarelakswro.pl/logo.png" />
31    <meta name="twitter:image:alt" content="Wydarzenia i warsztaty — Czas na Relaks" />
32    <link rel="preconnect" href="https://fonts.googleapis.com">
33    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
34    <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet">
35    <link rel="icon" href="/favicon.ico" sizes="any" />
36    <link rel="icon" type="image/png" href="/favicon.png" />
37    <link rel="apple-touch-icon" href="/favicon.png" />
38    <meta name="theme-color" content="#1A1C19" />
39    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
40    <link rel="manifest" href="/manifest.json" />
41    <!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 41-42
41
42    <script async src="https://www.googletagmanager.com/gtag/js?id=
42G-H3M4CR4V6N
vendor: 16 bytes, lines 42-43
42"></script>
43    
43<script>
44      window.dataLayer = window.dataLayer || [];
45      function gtag(){dataLayer.push(arguments);}
46      gtag('js', new Date());
47
48      // Consent Mode v2 — domyślnie brak zgody. Zgodę podnosi baner cookie
49      // (src/components/spa/CookieConsent.jsx); zapamiętany wybór czytamy tutaj,
50      // żeby statystyki działały od pierwszego widoku strony po akceptacji.
51      gtag('consent', 'default', {
52        ad_storage: 'denied',
53        ad_user_data: 'denied',
54        ad_personalization: 'denied',
55        analytics_storage: 'denied'
56      });
57      try {
58        if (localStorage.getItem('cookie-consent') === 'accepted') {
59          gtag('consent', 'update', { analytics_storage: 'granted' });
60        }
61      } catch (e) { /* localStorage niedostępny (tryb prywatny) — zostaje 'denied' */ }
62
63      gtag('config', 'G-H3M4CR4V6N');
64    </script>
64
65    <!-- Wizytówka firmy dla wyszukiwarek. Zostaje w statycznym HTML, bo przeżywa
66         przejścia między stronami w SPA, a reszta znaczników odwołuje się do niej
67         przez "@id". `priceRange` to widełki z cennika (`src/lib/services/`) —
68         aktualizować razem z cenami.
69
70         Jeden graf, trzy węzły:
71           #website      — witryna; z niej wyszukiwarka bierze nazwę strony,
72           #organization — firma jako podmiot prawny: Extra VEH sp. z o.o.,
73                           NIP 8971915108 (`taxID`), wydawca witryny,
74           #business     — samo studio: adres, godziny, widełki cen, mapa.
75         Studio jest miejscem prowadzonym przez firmę, więc wiąże je z nią para
76         `parentOrganization` / `subOrganization`. Typ studia podajemy podwójnie:
77         HealthAndBeautyBusiness jest rodzajem LocalBusiness, ale nie każdy
78         czytnik danych o tym wie. Listy `sameAs` w obu węzłach trzymamy
79         zgodne — to te same profile firmy i studia.
80
81         Świadomie bez `potentialAction`/`SearchAction` (pole wyszukiwania w
82         wynikach Google): witryna nie ma własnej wyszukiwarki, a adresu wyników,
83         którego nie ma, zgłaszać nie wolno. -->
84    
84<script type="application/ld+json">
85      {
86        "@context": "https://schema.org",
87        "@graph": [{
88          "@type": "WebSite",
89          "@id": "https://czasnarelakswro.pl/#website",
90          "url": "https://czasnarelakswro.pl/",
91          "name": "Czas na Relaks",
92          "alternateName": "Czas na Relaks — Studio Masażu Wrocław",
93          "description": "Kameralne studio masażu w sercu Wrocławia. Masaże twarzy i ciała, praktyki energetyczne, zabiegi pielęgnacyjne i relaks.",
94          "inLanguage": ["pl", "ru"],
95          "publisher": { "@id": "https://czasnarelakswro.pl/#organization" },
96          "about": { "@id": "https://czasnarelakswro.pl/#business" }
97        }, {
98          "@type": "Organization",
99          "@id": "https://czasnarelakswro.pl/#organization",
100          "name": "Czas na Relaks",
101          "legalName": "Extra VEH sp. z o.o.",
102          "taxID": "8971915108",
103          "identifier": {
104            "@type": "PropertyValue",
105            "propertyID": "NIP",
106            "value": "8971915108"
107          },
108          "url": "https://czasnarelakswro.pl",
109          "logo": {
110            "@type": "ImageObject",
111            "url": "https://czasnarelakswro.pl/logo.png",
112            "width": 400,
113            "height": 400
114          },
115          "image": "https://czasnarelakswro.pl/img/hero.webp",
116          "telephone": "+48512358784",
117          "email": "[email protected]",
118          "address": {
119            "@type": "PostalAddress",
120            "streetAddress": "ul. Stawowa 2a",
121            "addressLocality": "Wrocław",
122            "postalCode": "50-002",
123            "addressCountry": "PL"
124          },
125          "areaServed": { "@type": "City", "name": "Wrocław" },
126          "contactPoint": {
127            "@type": "ContactPoint",
128            "contactType": "customer service",
129            "telephone": "+48512358784",
130            "email": "[email protected]",
131            "availableLanguage": ["pl", "ru"]
132          },
133          "subOrganization": { "@id": "https://czasnarelakswro.pl/#business" },
134          "sameAs": [
135            "https://booksy.com/pl-pl/214786_czas-na-relaks_salon-kosmetyczny_13750_wroclaw",
136            "https://www.instagram.com/czasnarelakswro/",
137            "https://www.facebook.com/profile.php?id=100087731803525",
138            "https://www.tiktok.com/@czas_na_relaks_wro",
139            "https://www.youtube.com/@czasnarelakswro"
140          ]
141        }, {
142          "@type": ["HealthAndBeautyBusiness", "LocalBusiness"],
143          "@id": "https://czasnarelakswro.pl/#business",
144          "name": "Czas na Relaks",
145          "parentOrganization": { "@id": "https://czasnarelakswro.pl/#organization" },
146          "description": "Kameralne studio masażu w sercu Wrocławia. Masaże twarzy i ciała, praktyki energetyczne, zabiegi pielęgnacyjne i relaks.",
147          "logo": "https://czasnarelakswro.pl/logo.png",
148          "image": [
149            "https://czasnarelakswro.pl/img/hero.webp",
150            "https://czasnarelakswro.pl/img/gabinet.webp",
151            "https://czasnarelakswro.pl/img/o-nas.webp"
152          ],
153          "url": "https://czasnarelakswro.pl",
154          "telephone": "+48512358784",
155          "email": "[email protected]",
156          "areaServed": { "@type": "City", "name": "Wrocław" },
157          "knowsLanguage": ["pl", "ru"],
158          "currenciesAccepted": "PLN",
159          "priceRange": "30–400 zł",
160          "geo": {
161            "@type": "GeoCoordinates",
162            "latitude": 51.10203,
163            "longitude": 17.03495
164          },
165          "hasMap": "https://www.google.com/maps/search/?api=1&query=ul.+Stawowa+2a%2C+50-002+Wroc%C5%82aw",
166          "address": {
167            "@type": "PostalAddress",
168            "streetAddress": "ul. Stawowa 2a",
169            "addressLocality": "Wrocław",
170            "postalCode": "50-002",
171            "addressCountry": "PL"
172          },
173          "openingHoursSpecification": {
174            "@type": "OpeningHoursSpecification",
175            "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
176            "opens": "09:00",
177            "closes": "21:00"
178          },
179          "sameAs": [
180            "https://booksy.com/pl-pl/214786_czas-na-relaks_salon-kosmetyczny_13750_wroclaw",
181            "https://www.instagram.com/czasnarelakswro/",
182            "https://www.facebook.com/profile.php?id=100087731803525",
183            "https://www.tiktok.com/@czas_na_relaks_wro",
184            "https://www.youtube.com/@czasnarelakswro"
185          ]
186        }]
187      }
188    </script>
188
189    
189<script type="module" crossorigin src="/assets/index-D__ptn8_.js"></script>
189
190    <link rel="modulepreload" crossorigin href="/assets/react-3IxESyam.js">
191    <link rel="modulepreload" crossorigin href="/assets/framer-motion-Bc3_OT7B.js">
192    <link rel="stylesheet" crossorigin href="/assets/index-Cmu9Zc0Y.css">
193  </head>
194  <body>
195    <div id="root"><main>
196<h1>Wydarzenia i warsztaty</h1>
197<p>Pragniemy podzielić się z Wami pasją, która jest zarówno sztuką, jak i sposobem wyrażania siebie — sztuką rysowania. Zapraszamy do odkrycia tego fascynującego świata.</p>
198<p>Chcemy Was zaprosić do fascynującej podróży po świecie naszych masek do twarzy. Przedstawimy Wam nasze najnowsze innowacje i produkty, które pomogą Wam osiągnąć zdrową, promienną skórę.</p>
199<p>Świat relaksu i oczyszczenia — do naszej wspaniałej bani. Bania to nie tylko miejsce ciepła, to miejsce, gdzie możemy zadbać o zdrowie i wyciszyć się.</p>
200<p>Chcielibyśmy podzielić się z Wami fascynującym światem makramé — sztuki tworzenia pięknych wzorów za pomocą węzłów. Poznajmy tę kreatywną technikę bliżej.</p>
201<nav><ul>
202<li><a href="/wydarzenia/rysowanie-tworz-wyrazaj-inspiruj/">Rysowanie: Twórz, Wyrażaj, Inspiruj</a></li>
203<li><a href="/wydarzenia/maski-do-twarzy/">Maski do twarzy</a></li>
204<li><a href="/wydarzenia/pani-w-bani/">Pani w Bani</a></li>
205<li><a href="/wydarzenia/makrame-sztuka-wezlow/">Makramé: Sztuka Węzłów</a></li>
206<li><a href="/">Strona główna</a></li>
207<li><a href="/cennik/">Cennik</a></li>
208<li><a href="/sklep/">Sklep</a></li>
209<li><a href="/blog/">Inspiracje i wiedza</a></li>
210<li><a href="/wydarzenia/">Wydarzenia i warsztaty</a></li>
211<li><a href="/galeria/">Atmosfera i rezultaty</a></li>
212<li><a href="/mapa-strony/">Mapa strony</a></li>
213</ul></nav>
214</main>
215<footer>Czas na Relaks · ul. Stawowa 2a, 50-002 Wrocław · <a href="tel:+48512358784">+48 512 358 784</a></footer></div>
216    
216<script async src="https://webchatix.purplelabs.eu/widget/webchatix.js?v=2.4.1" data-site-key="isov758o0oz9l0rk0nzds4fi"></script>
216
217    <!-- Ikona czatu Webchatix w granicach ekranu.
218         Widget ustawia swój przycisk (`.rp-btn`) i dymek zaproszenia
219         (`.rp-invite`) sztywno względem layout viewportu. Na telefonach
220         layout viewport bywa większy od tego, co widać: pasek adresu i pasek
221         narzędzi przeglądarki zasłaniają dół oraz prawą krawędź, więc ikona
222         wychodziła poza ekran i była ucięta. Różnicę mierzymy przez
223         `visualViewport` i o tyle przesuwamy ikonę transformacją — własne
224         odstępy widgetu (te z jego progu 420px i te z konfiguracji) zostają
225         nietknięte. `#chat-viewport-probe` rozciąga się na cały layout
226         viewport i służy wyłącznie do odczytania jego krawędzi — jest
227         niewidoczny i nie łapie kliknięć. -->
228    <style>
229      #chat-viewport-probe {
230        position: fixed;
231        inset: 0;
232        visibility: hidden;
233        pointer-events: none;
234      }
235      /* `--chat-shift-y` podnosi ikonę ponad baner cookies, dopóki ten wisi na
236         dole ekranu (ustawia go src/components/spa/CookieConsent.jsx). Bez tego
237         ikona zasłaniała na telefonie przycisk „Akceptuję”. */
238      .rp-btn,
239      .rp-invite {
240        transform: translate(
241          calc(-1 * var(--chat-inset-x, 0px)),
242          calc(-1 * (var(--chat-inset-y, 0px) + var(--chat-shift-y, 0px)))
243        );
244        transition: transform 0.25s ease;
245      }
246    </style>
247    <div id="chat-viewport-probe" aria-hidden="true"></div>
248    
248<script>
249      (function () {
250        var vv = window.visualViewport;
251        var probe = document.getElementById('chat-viewport-probe');
252        if (!vv || !probe) return;
253
254        // Paski przeglądarki zabierają najwyżej ok. 150 px. Większa różnica
255        // to klawiatura ekranowa — wtedy ikony nie ruszamy, żeby nie
256        // skakała na środek ekranu. Przy powiększeniu strony (scale != 1)
257        // zostawiamy ją tam, gdzie postawił ją widget.
258        var MAX_INSET = 200;
259        var pending = false;
260        var current = { x: null, y: null };
261
262        function inset(layoutEdge, visibleEdge) {
263          var value = Math.round(layoutEdge - visibleEdge);
264          return value > 0 && value <= MAX_INSET ? value : 0;
265        }
266
267        function update() {
268          pending = false;
269          var x = 0;
270          var y = 0;
271          if (Math.abs(vv.scale - 1) < 0.01) {
272            var box = probe.getBoundingClientRect();
273            x = inset(box.right, vv.offsetLeft + vv.width);
274            y = inset(box.bottom, vv.offsetTop + vv.height);
275          }
276          if (x === current.x && y === current.y) return;
277          current.x = x;
278          current.y = y;
279          var root = document.documentElement;
280          root.style.setProperty('--chat-inset-x', x + 'px');
281          root.style.setProperty('--chat-inset-y', y + 'px');
282        }
283
284        function schedule() {
285          if (pending) return;
286          pending = true;
287          requestAnimationFrame(update);
288        }
289
290        // Widoczny obszar zmienia się przy chowaniu pasków przeglądarki i
291        // przy obrocie ekranu (zdarzenia `visualViewport`), a sam layout
292        // viewport — gdy aplikacja dorysuje treść po wczytaniu strony; to
293        // łapie obserwator rozmiaru sondy. Pomiar jest ograniczony do
294        // jednego na klatkę.
295        vv.addEventListener('resize', schedule);
296        vv.addEventListener('scroll', schedule);
297        window.addEventListener('orientationchange', schedule);
298        if (window.ResizeObserver) new ResizeObserver(schedule).observe(probe);
299        schedule();
300      })();
301    </script>
301
302  </body>
303</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.