<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Radek, Autor w serwisie Netopieka</title>
	<atom:link href="https://netopieka.pl/author/netopeeerek/feed/" rel="self" type="application/rss+xml" />
	<link>https://netopieka.pl/author/netopeeerek/</link>
	<description>Bezpieczne dzieci w sieci</description>
	<lastBuildDate>Sun, 24 May 2026 11:07:25 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://netopieka.pl/wp-content/uploads/2025/09/cropped-NETOPIEKA-Logo-2-1-32x32.png</url>
	<title>Radek, Autor w serwisie Netopieka</title>
	<link>https://netopieka.pl/author/netopeeerek/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Grooming: 7 sygnałów ostrzegawczych</title>
		<link>https://netopieka.pl/grooming-7-sygnalow-ostrzegawczych/</link>
					<comments>https://netopieka.pl/grooming-7-sygnalow-ostrzegawczych/#respond</comments>
		
		<dc:creator><![CDATA[Radek]]></dc:creator>
		<pubDate>Sat, 23 May 2026 19:20:52 +0000</pubDate>
				<category><![CDATA[Wszystkie]]></category>
		<guid isPermaLink="false">https://netopieka.pl/?p=5037</guid>

					<description><![CDATA[<p>Grooming online: 7 sygnałów ostrzegawczych &#124; Netopieka.pl Blog / Grooming / 7 sygnałów ostrzegawczych Grooming · Bezpieczeństwo dziecka Grooming online: 7 sygnałów ostrzegawczych, które rodzic musi znać Większość rodziców rozpoznaje grooming dopiero, gdy jest za...</p>
<p>Artykuł <a href="https://netopieka.pl/grooming-7-sygnalow-ostrzegawczych/">Grooming: 7 sygnałów ostrzegawczych</a> pochodzi z serwisu <a href="https://netopieka.pl">Netopieka</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="5037" class="elementor elementor-5037">
				<div class="elementor-element elementor-element-c4c5a27 e-con-full e-flex e-con e-parent" data-id="c4c5a27" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-2418be9 elementor-widget__width-inherit elementor-widget elementor-widget-html" data-id="2418be9" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
				<div class="elementor-widget-container">
					<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Grooming online: 7 sygnałów ostrzegawczych, które rodzic musi znać. Praktyczny przewodnik bez straszenia od Netopieka.pl">
<title>Grooming online: 7 sygnałów ostrzegawczych | Netopieka.pl</title>

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,300..900;1,9..144,300..900&family=Montserrat:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">

<style>
:root {
  --teal: #20e3e3;
  --teal-soft: #20e3e333;
  --teal-glow: #20e3e360;
  --navy: #1a2b4a;
  --navy-deep: #0f1a2f;
  --navy-soft: #1a2b4ad9;
  --cream: #faf8f3;
  --cream-warm: #f4efe4;
  --paper: #fdfcf9;
  --ink: #1a2b4a;
  --ink-soft: #4a5878;
  --ink-mid: #2d3e5f;
  --line: #e8e2d3;
  --rose: #ff6b6b;
  --amber: #ffb84d;
  --warning-bg: #fff8e6;
  --warning-border: #ffd166;

  --font-display: 'Fraunces', Georgia, serif;
  --font-body: 'Montserrat', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;

  --radius: 14px;
  --radius-lg: 28px;
  --shadow-soft: 0 4px 30px rgba(26, 43, 74, 0.08);
  --shadow-hover: 0 20px 60px rgba(26, 43, 74, 0.18);
  --transition: cubic-bezier(0.22, 1, 0.36, 1);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; scroll-padding-top: 100px; }

body {
  font-family: var(--font-body);
  background: var(--cream);
  color: var(--ink);
  line-height: 1.6;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }

::selection { background: var(--teal); color: var(--navy); }

/* ===== READING PROGRESS BAR ===== */
.progress-bar {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--teal) 0%, var(--navy) 100%);
  width: 0%;
  z-index: 200;
  transition: width 0.1s linear;
  box-shadow: 0 0 12px var(--teal-glow);
}

/* ===== ANIMATED BACKGROUND ===== */
.bg-canvas {
  position: fixed;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  background: var(--cream);
}

.orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(80px);
  opacity: 0.4;
  animation: float 18s ease-in-out infinite;
}

.orb-1 {
  width: 380px; height: 380px;
  background: var(--teal);
  top: -100px; right: -80px;
}

.orb-2 {
  width: 320px; height: 320px;
  background: var(--navy);
  bottom: 30%; left: -120px;
  opacity: 0.18;
  animation-delay: -8s;
}

@keyframes float {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(40px, -50px) scale(1.1); }
  66% { transform: translate(-30px, 30px) scale(0.95); }
}

@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.4); opacity: 0.6; }
}

/* ===== ARTICLE HERO ===== */
.article-hero {
  padding: 80px 40px 60px;
  max-width: 900px;
  margin: 0 auto;
  text-align: center;
}

.breadcrumbs {
  display: flex;
  align-items: center;
  gap: 10px;
  justify-content: center;
  font-family: var(--font-mono);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ink-soft);
  margin-bottom: 28px;
  flex-wrap: wrap;
  opacity: 0;
  animation: fadeUp 0.8s var(--transition) 0.1s forwards;
}

.breadcrumbs a {
  transition: color 0.3s;
}

.breadcrumbs a:hover { color: var(--teal); }

.breadcrumbs .sep {
  opacity: 0.4;
}

.breadcrumbs .current {
  color: var(--navy);
  font-weight: 500;
}

.article-cat {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--paper);
  border: 1px solid var(--line);
  padding: 8px 16px;
  border-radius: 100px;
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  margin-bottom: 28px;
  opacity: 0;
  animation: fadeUp 0.8s var(--transition) 0.2s forwards;
}

.article-cat-dot {
  width: 8px; height: 8px;
  background: var(--rose);
  border-radius: 50%;
  box-shadow: 0 0 8px var(--rose);
}

.article-title-main {
  font-family: var(--font-display);
  font-size: clamp(38px, 6vw, 72px);
  line-height: 1;
  font-weight: 400;
  letter-spacing: -0.035em;
  color: var(--navy);
  margin-bottom: 32px;
  font-variation-settings: "opsz" 144, "SOFT" 50;
  opacity: 0;
  animation: fadeUp 0.9s var(--transition) 0.3s forwards;
}

.article-title-main em {
  font-style: italic;
  font-weight: 300;
  position: relative;
  display: inline-block;
}

.article-title-main em::after {
  content: '';
  position: absolute;
  bottom: 8%; left: -2%;
  width: 104%; height: 16%;
  background: var(--teal);
  z-index: -1;
  border-radius: 4px;
  transform: rotate(-1deg);
  opacity: 0.6;
}

.article-lead {
  font-family: var(--font-display);
  font-size: clamp(18px, 2vw, 24px);
  line-height: 1.5;
  color: var(--ink-mid);
  font-weight: 300;
  font-style: italic;
  max-width: 700px;
  margin: 0 auto 40px;
  opacity: 0;
  animation: fadeUp 0.8s var(--transition) 0.45s forwards;
}

.article-meta-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  flex-wrap: wrap;
  padding: 24px 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  font-size: 13px;
  opacity: 0;
  animation: fadeUp 0.8s var(--transition) 0.6s forwards;
}

.article-meta-author {
  display: flex;
  align-items: center;
  gap: 12px;
  font-weight: 600;
  color: var(--navy);
}

.article-meta-author .avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--teal);
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-weight: 600;
  font-size: 15px;
  color: var(--navy);
}

.article-meta-info {
  display: flex;
  align-items: center;
  gap: 20px;
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ink-soft);
}

.article-meta-info span {
  display: flex;
  align-items: center;
  gap: 6px;
}

/* ===== HERO IMAGE ===== */
.article-hero-image {
  max-width: 1200px;
  margin: 0 auto 60px;
  padding: 0 40px;
  opacity: 0;
  animation: fadeUp 1s var(--transition) 0.7s forwards;
}

.hero-image-frame {
  aspect-ratio: 21/9;
  background: linear-gradient(135deg, var(--navy) 0%, var(--navy-deep) 100%);
  border-radius: var(--radius-lg);
  position: relative;
  overflow: hidden;
  display: grid;
  place-items: center;
}

.hero-image-frame::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 30% 50%, var(--teal-glow) 0%, transparent 50%),
    radial-gradient(circle at 80% 30%, rgba(255, 107, 107, 0.2) 0%, transparent 50%);
}

.hero-image-frame::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(32, 227, 227, 0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(32, 227, 227, 0.06) 1px, transparent 1px);
  background-size: 50px 50px;
}

.hero-image-content {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 60px;
  padding: 60px;
}

.hero-bat-large {
  width: 200px;
  height: 200px;
  flex-shrink: 0;
  animation: floatUp 4s ease-in-out infinite;
  filter: drop-shadow(0 20px 40px rgba(32, 227, 227, 0.3));
}

@keyframes floatUp {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}

.hero-image-text {
  color: var(--cream);
  font-family: var(--font-display);
  font-size: 32px;
  line-height: 1.2;
  font-weight: 400;
  font-style: italic;
  max-width: 480px;
}

.hero-image-text em {
  color: var(--teal);
  font-style: normal;
  font-weight: 500;
  display: block;
}

/* ===== ARTICLE LAYOUT ===== */
.article-layout {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 40px 80px;
  display: grid;
  grid-template-columns: 240px 1fr;
  gap: 80px;
}

/* TOC SIDEBAR */
.toc {
  position: sticky;
  top: 40px;
  align-self: start;
  font-size: 13px;
}

.toc-label {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--teal);
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  gap: 10px;
}

.toc-label::before {
  content: '';
  width: 24px; height: 1px;
  background: var(--teal);
}

.toc ul {
  list-style: none;
  border-left: 1px solid var(--line);
  padding-left: 0;
}

.toc li { position: relative; }

.toc a {
  display: block;
  padding: 10px 0 10px 18px;
  color: var(--ink-soft);
  transition: all 0.3s var(--transition);
  position: relative;
  line-height: 1.4;
  font-weight: 500;
}

.toc a::before {
  content: '';
  position: absolute;
  left: -1px; top: 50%;
  width: 2px; height: 0;
  background: var(--teal);
  transform: translateY(-50%);
  transition: height 0.3s var(--transition);
}

.toc a:hover {
  color: var(--navy);
  padding-left: 22px;
}

.toc a.active {
  color: var(--navy);
  font-weight: 600;
}

.toc a.active::before {
  height: 100%;
}

.toc-share {
  margin-top: 40px;
  padding-top: 30px;
  border-top: 1px solid var(--line);
}

.toc-share-label {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--ink-soft);
  margin-bottom: 16px;
}

.share-buttons {
  display: flex;
  gap: 8px;
}

.share-btn {
  width: 38px; height: 38px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: var(--paper);
  display: grid;
  place-items: center;
  transition: all 0.3s var(--transition);
  color: var(--navy);
}

.share-btn:hover {
  background: var(--navy);
  color: var(--cream);
  border-color: var(--navy);
  transform: translateY(-3px);
}

/* ARTICLE CONTENT */
.article-content {
  font-size: 17px;
  line-height: 1.75;
  color: var(--ink-mid);
  max-width: 720px;
}

.article-content > p:first-child::first-letter {
  font-family: var(--font-display);
  font-size: 76px;
  font-weight: 400;
  float: left;
  line-height: 0.85;
  margin: 8px 14px 0 0;
  color: var(--navy);
  font-style: italic;
}

.article-content p {
  margin-bottom: 28px;
}

.article-content h2 {
  font-family: var(--font-display);
  font-size: clamp(28px, 3.5vw, 40px);
  line-height: 1.1;
  font-weight: 400;
  letter-spacing: -0.025em;
  color: var(--navy);
  margin: 60px 0 24px;
  scroll-margin-top: 100px;
}

.article-content h2 em {
  font-style: italic;
  color: var(--ink-mid);
  font-weight: 300;
}

.article-content h3 {
  font-family: var(--font-display);
  font-size: 24px;
  font-weight: 500;
  color: var(--navy);
  margin: 36px 0 16px;
  letter-spacing: -0.015em;
}

.article-content a {
  color: var(--navy);
  border-bottom: 2px solid var(--teal);
  font-weight: 500;
  transition: all 0.3s;
}

.article-content a:hover {
  background: var(--teal);
  color: var(--navy);
  padding: 0 4px;
  margin: 0 -4px;
}

.article-content strong {
  color: var(--navy);
  font-weight: 700;
}

.article-content em {
  font-family: var(--font-display);
  font-style: italic;
  color: var(--navy);
}

/* PULL QUOTE */
.pull-quote {
  margin: 50px -40px;
  padding: 40px;
  background: var(--paper);
  border-left: 4px solid var(--teal);
  border-radius: 4px;
  font-family: var(--font-display);
  font-size: clamp(22px, 2.4vw, 30px);
  line-height: 1.3;
  font-weight: 400;
  font-style: italic;
  color: var(--navy);
  letter-spacing: -0.015em;
  position: relative;
}

.pull-quote::before {
  content: '"';
  position: absolute;
  top: -10px; left: 24px;
  font-size: 80px;
  color: var(--teal);
  font-family: var(--font-display);
  line-height: 1;
  opacity: 0.4;
}

.pull-quote-attr {
  display: block;
  margin-top: 16px;
  font-family: var(--font-mono);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-style: normal;
  color: var(--ink-soft);
  font-weight: 500;
}

/* SIGNAL LIST - numbered cards */
.signal-list {
  margin: 40px 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
  list-style: none;
  padding: 0 !important;
}

.signal-item {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  padding: 28px 28px 28px 90px;
  position: relative;
  transition: all 0.4s var(--transition);
}

.signal-item:hover {
  border-color: var(--navy);
  transform: translateX(4px);
  box-shadow: var(--shadow-soft);
}

.signal-num {
  position: absolute;
  left: 24px;
  top: 24px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--navy);
  color: var(--teal);
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 500;
  font-style: italic;
}

.signal-item:hover .signal-num {
  background: var(--teal);
  color: var(--navy);
}

.signal-title {
  font-family: var(--font-display);
  font-size: 22px;
  font-weight: 500;
  color: var(--navy);
  margin-bottom: 8px;
  line-height: 1.2;
}

.signal-desc {
  font-size: 15px;
  line-height: 1.65;
  color: var(--ink-soft);
  margin: 0 !important;
}

/* CALLOUT BOX */
.callout {
  margin: 40px 0;
  padding: 28px 32px;
  background: var(--warning-bg);
  border: 1px solid var(--warning-border);
  border-radius: var(--radius);
  display: flex;
  gap: 20px;
  align-items: flex-start;
}

.callout-icon {
  flex-shrink: 0;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--amber);
  display: grid;
  place-items: center;
  color: var(--navy);
}

.callout-content h4 {
  font-family: var(--font-display);
  font-size: 20px;
  font-weight: 500;
  color: var(--navy);
  margin-bottom: 6px;
}

.callout-content p {
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink-mid);
  margin: 0 !important;
}

.callout.info {
  background: rgba(32, 227, 227, 0.08);
  border-color: var(--teal);
}

.callout.info .callout-icon {
  background: var(--teal);
}

/* CHECKLIST - klikalna */
.checklist {
  list-style: none;
  padding: 0 !important;
  margin: 30px 0;
}

.checklist li {
  position: relative;
  padding: 14px 0 14px 38px;
  border-bottom: 1px solid var(--line);
  font-size: 16px;
  color: var(--ink-mid);
  cursor: pointer;
  user-select: none;
  transition: color 0.3s, opacity 0.3s;
}

.checklist li:last-child { border-bottom: none; }

/* Kwadracik */
.checklist li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 18px;
  width: 22px;
  height: 22px;
  border: 2px solid var(--teal);
  border-radius: 6px;
  background: transparent;
  transition: all 0.3s;
}

/* Ptaszek */
.checklist li::after {
  content: '';
  position: absolute;
  left: 7px;
  top: 22px;
  width: 8px;
  height: 12px;
  border-right: 2.5px solid var(--navy);
  border-bottom: 2.5px solid var(--navy);
  transform: rotate(45deg) scale(0);
  transition: transform 0.25s var(--transition);
}

/* Podgląd przy najechaniu (jeśli jeszcze nieodznaczone) */
.checklist li:not(.checked):hover::before {
  background: var(--teal-soft);
}
.checklist li:not(.checked):hover::after {
  transform: rotate(45deg) scale(0.85);
  opacity: 0.4;
}

/* Stan odznaczony po kliknięciu */
.checklist li.checked::before {
  background: var(--teal);
}
.checklist li.checked::after {
  transform: rotate(45deg) scale(1);
  opacity: 1;
}
.checklist li.checked {
  color: var(--ink-soft);
  opacity: 0.7;
  text-decoration: line-through;
  text-decoration-color: var(--teal);
  text-decoration-thickness: 2px;
}

/* INLINE IMAGE */
.article-figure {
  margin: 50px -40px;
  position: relative;
}

.figure-frame {
  aspect-ratio: 16/9;
  background: linear-gradient(135deg, var(--cream-warm) 0%, var(--paper) 100%);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  display: grid;
  place-items: center;
  position: relative;
}

.figure-frame::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(var(--line) 1px, transparent 1px),
    linear-gradient(90deg, var(--line) 1px, transparent 1px);
  background-size: 30px 30px;
  opacity: 0.5;
  mask-image: radial-gradient(ellipse at center, black 30%, transparent 70%);
}

.figure-frame svg {
  position: relative;
  z-index: 2;
  width: 50%;
  max-width: 240px;
}

.figure-caption {
  font-family: var(--font-mono);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ink-soft);
  margin-top: 14px;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.figure-caption::before, .figure-caption::after {
  content: '';
  width: 30px; height: 1px;
  background: var(--line);
}

/* TAGS */
.article-tags {
  margin: 60px 0 0;
  padding-top: 30px;
  border-top: 1px solid var(--line);
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

.tags-label {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--ink-soft);
  margin-right: 8px;
}

.tag {
  display: inline-flex;
  align-items: center;
  padding: 8px 14px;
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: 100px;
  font-size: 12px;
  font-weight: 500;
  transition: all 0.3s;
}

.tag::before {
  content: '#';
  color: var(--teal);
  margin-right: 4px;
  font-weight: 700;
}

.tag:hover {
  background: var(--navy);
  color: var(--cream);
  border-color: var(--navy);
  transform: translateY(-2px);
}

/* ===== AUTHOR BOX ===== */
.author-box {
  max-width: 900px;
  margin: 80px auto;
  padding: 0 40px;
}

.author-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: 50px;
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 40px;
  align-items: center;
  position: relative;
  overflow: hidden;
}

.author-card::before {
  content: '';
  position: absolute;
  top: -50%; right: -100px;
  width: 300px; height: 300px;
  background: radial-gradient(circle, var(--teal-glow) 0%, transparent 60%);
  opacity: 0.3;
  filter: blur(40px);
}

.author-photo {
  width: 130px;
  height: 130px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--teal) 0%, #15b8b8 100%);
  display: grid;
  place-items: center;
  font-family: var(--font-display);
  font-size: 50px;
  font-weight: 500;
  color: var(--navy);
  position: relative;
  z-index: 2;
  border: 4px solid var(--cream);
  box-shadow: 0 10px 40px rgba(32, 227, 227, 0.3);
}

.author-info { position: relative; z-index: 2; }

.author-label {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--teal);
  margin-bottom: 8px;
}

.author-name {
  font-family: var(--font-display);
  font-size: 32px;
  font-weight: 500;
  color: var(--navy);
  margin-bottom: 4px;
  letter-spacing: -0.02em;
}

.author-role {
  font-size: 14px;
  color: var(--ink-soft);
  margin-bottom: 16px;
  font-weight: 500;
}

.author-bio {
  font-size: 15px;
  line-height: 1.65;
  color: var(--ink-mid);
  margin-bottom: 20px;
  max-width: 540px;
}

.author-links {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}

.author-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  background: transparent;
  border: 1px solid var(--navy);
  border-radius: 100px;
  font-size: 13px;
  font-weight: 600;
  color: var(--navy);
  transition: all 0.3s var(--transition);
}

.author-link:hover {
  background: var(--navy);
  color: var(--cream);
  transform: translateY(-2px);
}

.author-link.primary {
  background: var(--navy);
  color: var(--cream);
}

.author-link.primary:hover {
  background: var(--teal);
  color: var(--navy);
  border-color: var(--teal);
  box-shadow: 0 10px 25px var(--teal-glow);
}

/* ===== COURSE CTA ===== */
.course-cta {
  max-width: 1200px;
  margin: 80px auto;
  padding: 0 40px;
}

.cta-card {
  background: var(--navy);
  border-radius: var(--radius-lg);
  padding: 60px;
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 60px;
  align-items: center;
  position: relative;
  overflow: hidden;
  color: var(--cream);
}

.cta-card::before {
  content: '';
  position: absolute;
  bottom: -150px; left: -100px;
  width: 500px; height: 500px;
  background: radial-gradient(circle, var(--teal-glow) 0%, transparent 60%);
  opacity: 0.5;
  animation: pulse-glow 6s ease-in-out infinite;
}

@keyframes pulse-glow {
  0%, 100% { transform: scale(1); opacity: 0.5; }
  50% { transform: scale(1.1); opacity: 0.7; }
}

.cta-content { position: relative; z-index: 2; }

.cta-eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--teal);
  margin-bottom: 18px;
  display: flex;
  align-items: center;
  gap: 12px;
}

.cta-eyebrow::before {
  content: '';
  width: 28px; height: 1px;
  background: var(--teal);
}

.cta-title {
  font-family: var(--font-display);
  font-size: clamp(28px, 3.5vw, 44px);
  line-height: 1.05;
  font-weight: 400;
  letter-spacing: -0.025em;
  margin-bottom: 16px;
}

.cta-title em {
  font-style: italic;
  color: var(--teal);
}

.cta-desc {
  font-size: 15px;
  line-height: 1.7;
  opacity: 0.85;
  margin-bottom: 28px;
  max-width: 460px;
}

.cta-features {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 28px;
}

.cta-features li {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 14px;
  list-style: none;
}

.cta-features svg {
  color: var(--teal);
  flex-shrink: 0;
}

.cta-buttons {
  display: flex;
  gap: 12px;
  align-items: center;
  flex-wrap: wrap;
}

.cta-price {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-family: var(--font-display);
}

.cta-price-old {
  font-size: 18px;
  text-decoration: line-through;
  opacity: 0.5;
}

.cta-price-new {
  font-size: 32px;
  color: var(--teal);
  font-weight: 500;
}

.cta-button {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--teal);
  color: var(--navy);
  padding: 16px 28px;
  border-radius: 100px;
  font-weight: 600;
  font-size: 14px;
  transition: all 0.3s var(--transition);
}

.cta-button:hover {
  background: var(--cream);
  transform: translateY(-3px);
  box-shadow: 0 15px 40px rgba(32, 227, 227, 0.3);
}

.cta-visual {
  position: relative;
  z-index: 2;
  display: grid;
  place-items: center;
}

.cta-mockup {
  width: 100%;
  max-width: 320px;
  aspect-ratio: 4/5;
  background: linear-gradient(135deg, var(--paper) 0%, var(--cream-warm) 100%);
  border-radius: var(--radius-lg);
  padding: 24px;
  position: relative;
  transform: rotate(3deg);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  animation: bookFloat 5s ease-in-out infinite;
}

@keyframes bookFloat {
  0%, 100% { transform: rotate(3deg) translateY(0); }
  50% { transform: rotate(3deg) translateY(-10px); }
}

.cta-mockup-label {
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--teal);
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 8px;
}

.cta-mockup-label::before {
  content: '';
  width: 6px; height: 6px;
  background: var(--teal);
  border-radius: 50%;
}

.cta-mockup-title {
  font-family: var(--font-display);
  font-size: 26px;
  line-height: 1.1;
  color: var(--navy);
  font-weight: 500;
  margin-bottom: 20px;
  letter-spacing: -0.02em;
}

.cta-mockup-title em {
  font-style: italic;
  font-weight: 300;
  display: block;
}

.cta-mockup-modules {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.cta-mockup-modules div {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: var(--cream);
  border-radius: 8px;
  font-size: 11px;
  color: var(--ink-mid);
  font-weight: 500;
}

.cta-mockup-modules div::before {
  content: '';
  width: 6px; height: 6px;
  background: var(--teal);
  border-radius: 50%;
  flex-shrink: 0;
}

.cta-mockup-bat {
  position: absolute;
  bottom: -16px; right: -16px;
  width: 70px; height: 70px;
  background: var(--navy);
  border-radius: 50%;
  display: grid;
  place-items: center;
  border: 3px solid var(--cream);
  box-shadow: 0 8px 20px rgba(26, 43, 74, 0.3);
}

.cta-mockup-bat svg { width: 60%; height: 60%; }

/* ===== RELATED ARTICLES ===== */
.related {
  max-width: 1400px;
  margin: 0 auto;
  padding: 80px 40px;
}

.related-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  margin-bottom: 50px;
  flex-wrap: wrap;
  gap: 20px;
}

.related-head .section-eyebrow {
  font-family: var(--font-mono);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--teal);
  margin-bottom: 14px;
  display: flex;
  align-items: center;
  gap: 12px;
}

.related-head .section-eyebrow::before {
  content: '';
  width: 28px; height: 1px;
  background: var(--teal);
}

.related-title {
  font-family: var(--font-display);
  font-size: clamp(32px, 4vw, 52px);
  line-height: 1;
  font-weight: 400;
  letter-spacing: -0.03em;
  color: var(--navy);
}

.related-title em { font-style: italic; }

.related-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
}

.related-card {
  background: var(--paper);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  overflow: hidden;
  transition: all 0.5s var(--transition);
  cursor: pointer;
  display: flex;
  flex-direction: column;
}

.related-card:hover {
  transform: translateY(-8px);
  box-shadow: var(--shadow-hover);
  border-color: var(--navy);
}

.related-image {
  aspect-ratio: 16/10;
  position: relative;
  display: grid;
  place-items: center;
  overflow: hidden;
}

.related-image[data-color="teal"] {
  background: linear-gradient(135deg, var(--teal) 0%, #18c4c4 100%);
}

.related-image[data-color="navy"] {
  background: linear-gradient(135deg, var(--navy) 0%, var(--navy-deep) 100%);
}

.related-image[data-color="cream"] {
  background: linear-gradient(135deg, var(--cream-warm) 0%, #ede5d0 100%);
}

.related-image svg {
  width: 50%; height: 50%;
  transition: transform 0.6s var(--transition);
}

.related-card:hover .related-image svg {
  transform: scale(1.08) rotate(-3deg);
}

.related-cat-badge {
  position: absolute;
  top: 16px; left: 16px;
  background: var(--cream);
  color: var(--navy);
  padding: 6px 12px;
  border-radius: 100px;
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 500;
}

.related-body {
  padding: 24px;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.related-meta {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--ink-soft);
  margin-bottom: 12px;
}

.related-card-title {
  font-family: var(--font-display);
  font-size: 22px;
  line-height: 1.15;
  font-weight: 500;
  letter-spacing: -0.02em;
  color: var(--navy);
}

/* =====================================================
   NEWSLETTER / EBOOK - WERSJA SPÓJNA Z INNYMI STRONAMI
   (navy, dwie kolumny: tekst + okładka ebooka 3D)
   ===================================================== */
.newsletter {
  padding: 80px 40px;
}

.newsletter-inner {
  max-width: 1200px;
  margin: 0 auto;
  background: var(--navy);
  border-radius: var(--radius-lg);
  padding: 72px 64px;
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 60px;
  align-items: center;
  text-align: left;
}

.newsletter-inner::before {
  content: '';
  position: absolute;
  top: -200px; right: -150px;
  width: 500px; height: 500px;
  background: radial-gradient(circle, var(--teal-glow) 0%, transparent 60%);
  opacity: 0.7;
  animation: pulse-glow 6s ease-in-out infinite;
}

.newsletter-content { position: relative; z-index: 2; color: var(--cream); }

.newsletter-eyebrow {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--teal);
  margin-bottom: 16px;
  display: inline-flex;
  align-items: center;
  gap: 12px;
}

.newsletter-eyebrow::before {
  content: '';
  width: 28px; height: 1px;
  background: var(--teal);
}

.newsletter-title {
  font-family: var(--font-display);
  font-size: clamp(30px, 4vw, 48px);
  line-height: 1.05;
  font-weight: 400;
  letter-spacing: -0.025em;
  color: var(--cream);
  margin-bottom: 16px;
}

.newsletter-title em {
  font-style: italic;
  color: var(--teal);
}

.newsletter-desc {
  font-size: 15px;
  line-height: 1.7;
  color: rgba(250, 248, 243, 0.84);
  max-width: 460px;
  margin: 0 0 28px;
}

.newsletter-form {
  display: flex;
  gap: 6px;
  background: rgba(255, 255, 255, 0.09);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 100px;
  padding: 6px;
  max-width: 460px;
  margin: 0;
  backdrop-filter: blur(10px);
}

.newsletter-form input {
  flex: 1;
  background: transparent;
  border: none;
  outline: none;
  padding: 13px 22px;
  color: var(--cream);
  font-family: var(--font-body);
  font-size: 14px;
}

.newsletter-form input::placeholder { color: rgba(250, 248, 243, 0.5); }

.newsletter-form button {
  background: var(--teal);
  color: var(--navy);
  padding: 13px 24px;
  border-radius: 100px;
  font-weight: 600;
  font-size: 13px;
  transition: all 0.3s var(--transition);
  display: flex;
  align-items: center;
  gap: 8px;
}

.newsletter-form button:hover {
  background: var(--cream);
  transform: translateY(-1px);
}

.newsletter-bullets {
  display: flex;
  gap: 18px;
  margin-top: 20px;
  font-size: 12px;
  color: rgba(250, 248, 243, 0.7);
  flex-wrap: wrap;
}

.newsletter-bullets span { display: flex; align-items: center; gap: 6px; }

/* Okładka ebooka 3D */
.newsletter-ebook {
  position: relative;
  z-index: 2;
  display: grid;
  place-items: center;
  perspective: 1000px;
}

.newsletter-ebook img {
  width: 240px;
  border-radius: 6px 20px 20px 6px;
  box-shadow: -10px 14px 40px rgba(0, 0, 0, 0.35);
  transform: rotateY(-14deg) rotateX(6deg);
  animation: bookFloat3d 5s ease-in-out infinite;
}

@keyframes bookFloat3d {
  0%, 100% { transform: rotateY(-14deg) rotateX(6deg) translateY(0); }
  50% { transform: rotateY(-14deg) rotateX(6deg) translateY(-10px); }
}

/* ===== FOOTER ===== */
.footer {
  background: var(--navy-deep);
  color: var(--cream);
  padding: 80px 40px 40px;
  position: relative;
  overflow: hidden;
}

.footer::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--teal), transparent);
}

.footer-inner { max-width: 1400px; margin: 0 auto; }

.footer-top {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 60px;
  padding-bottom: 60px;
  border-bottom: 1px solid rgba(250, 248, 243, 0.1);
}

.footer-brand h3 {
  font-family: var(--font-display);
  font-size: 32px;
  font-weight: 400;
  letter-spacing: -0.02em;
  margin: 20px 0 16px;
  max-width: 380px;
  line-height: 1.15;
}

.footer-brand h3 em {
  font-style: italic;
  color: var(--teal);
}

.footer-brand p {
  opacity: 0.7;
  font-size: 14px;
  max-width: 340px;
  line-height: 1.7;
}

.footer-col h4 {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--teal);
  margin-bottom: 20px;
}

.footer-col ul { list-style: none; }
.footer-col ul li { margin-bottom: 12px; }

.footer-col ul a {
  font-size: 14px;
  opacity: 0.75;
  transition: all 0.3s;
}

.footer-col ul a:hover {
  opacity: 1;
  color: var(--teal);
  padding-left: 6px;
}

.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 30px;
  font-size: 13px;
  opacity: 0.6;
  flex-wrap: wrap;
  gap: 20px;
}

.footer-tagline {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 16px;
  opacity: 1;
  color: var(--teal);
}

.socials { display: flex; gap: 12px; }

.social {
  width: 40px; height: 40px;
  border: 1px solid rgba(250, 248, 243, 0.2);
  border-radius: 50%;
  display: grid;
  place-items: center;
  transition: all 0.3s var(--transition);
}

.social:hover {
  background: var(--teal);
  border-color: var(--teal);
  color: var(--navy);
  transform: translateY(-3px);
}

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(30px); }
  to { opacity: 1; transform: translateY(0); }
}

.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.8s var(--transition), transform 0.8s var(--transition);
}

.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ===== RESPONSIVE ===== */
@media (max-width: 1024px) {
  .article-layout { grid-template-columns: 1fr; gap: 0; }
  .toc { display: none; }
  .hero-image-content { flex-direction: column; gap: 30px; padding: 40px; text-align: center; }
  .hero-bat-large { width: 140px; height: 140px; }
  .hero-image-text { font-size: 22px; }
  .author-card { grid-template-columns: 1fr; text-align: center; padding: 40px; }
  .author-photo { margin: 0 auto; }
  .cta-card { grid-template-columns: 1fr; padding: 50px 40px; }
  .related-grid { grid-template-columns: repeat(2, 1fr); }
  .newsletter-inner { grid-template-columns: 1fr; padding: 56px 40px; }
  .newsletter-ebook { display: none; }
  .footer-top { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 720px) {
  .article-hero { padding: 60px 20px 40px; }
  .article-hero-image { padding: 0 20px; margin-bottom: 40px; }
  .article-layout { padding: 0 20px 60px; }
  .article-content { font-size: 16px; }
  .article-content > p:first-child::first-letter { font-size: 56px; }
  .pull-quote { margin: 30px -20px; padding: 30px 24px; }
  .article-figure { margin: 30px -20px; }
  .signal-item { padding: 24px 20px 24px 70px; }
  .signal-num { left: 16px; top: 20px; width: 40px; height: 40px; font-size: 18px; }
  .author-box { padding: 0 20px; margin: 60px auto; }
  .author-card { padding: 30px 24px; }
  .author-photo { width: 100px; height: 100px; font-size: 38px; }
  .course-cta { padding: 0 20px; margin: 60px auto; }
  .cta-card { padding: 40px 24px; }
  .related { padding: 60px 20px; }
  .related-grid { grid-template-columns: 1fr; }
  .newsletter { padding: 60px 20px; }
  .newsletter-inner { padding: 44px 28px; }
  .newsletter-form { flex-direction: column; border-radius: 24px; }
  .newsletter-form button { width: 100%; justify-content: center; }
  .footer { padding: 60px 20px 30px; }
  .footer-top { grid-template-columns: 1fr; gap: 40px; padding-bottom: 40px; }
  .footer-bottom { flex-direction: column; align-items: flex-start; }
  .article-meta-row { gap: 16px; }
  .breadcrumbs { font-size: 11px; }
  .article-tags { gap: 8px; }
}

/* =====================================================
   UNIVERSAL EMBED MAILERLITE - nadpisanie wyglądu
   ===================================================== */
.newsletter-content .ml-embedded .ml-form-embedWrapper,
.newsletter-content .ml-embedded .ml-form-embed,
.newsletter-content .ml-form-embedWrapper {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}
.newsletter-content .ml-embedded .ml-form-embedBody,
.newsletter-content .ml-embedded .ml-form-embedBodyDefault {
  background: transparent !important;
  padding: 0 !important;
}
/* Ukryj tytuł z ML */
.newsletter-content .ml-embedded .ml-form-embedContent,
.newsletter-content .ml-embedded .ml-form-embedContent h4,
.newsletter-content .ml-embedded .ml-form-embedContent p {
  display: none !important;
}
/* Input */
.newsletter-content .ml-embedded input[type="email"] {
  background-color: rgba(255,255,255,0.1) !important;
  color: #faf8f3 !important;
  border: 1px solid rgba(255,255,255,0.2) !important;
  border-radius: 12px !important;
  font-family: 'Montserrat', sans-serif !important;
  font-size: 14px !important;
  padding: 13px 18px !important;
  width: 100% !important;
}
.newsletter-content .ml-embedded input[type="email"]::placeholder { color: rgba(250,248,243,0.5) !important; }
/* Przycisk teal */
.newsletter-content .ml-embedded .ml-form-embedSubmit button,
.newsletter-content .ml-embedded button[type="submit"],
.newsletter-content .ml-embedded .primary {
  background-color: #20e3e3 !important;
  color: #1a2b4a !important;
  border: none !important;
  border-radius: 100px !important;
  font-family: 'Montserrat', sans-serif !important;
  font-weight: 700 !important;
  font-size: 14px !important;
  padding: 13px 28px !important;
  width: 100% !important;
  cursor: pointer !important;
}
.newsletter-content .ml-embedded button[type="submit"]:hover {
  background-color: #faf8f3 !important;
  color: #1a2b4a !important;
}
/* RODO */
.newsletter-content .ml-embedded .ml-form-embedPermissions p,
.newsletter-content .ml-embedded .ml-form-embedPermissions a {
  color: rgba(250,248,243,0.65) !important;
  font-size: 12px !important;
}
/* Sukces */
.newsletter-content .ml-embedded .ml-form-successBody,
.newsletter-content .ml-embedded .ml-form-successContent {
  background: transparent !important;
  padding: 0 !important;
}
.newsletter-content .ml-embedded .ml-form-successContent h4 {
  color: #20e3e3 !important;
  font-family: 'Montserrat', sans-serif !important;
  font-size: 22px !important;
}
.newsletter-content .ml-embedded .ml-form-successContent p {
  color: rgba(250,248,243,0.84) !important;
}
</style>
</head>
<body>

<!-- READING PROGRESS BAR -->
<div class="progress-bar" id="progressBar"></div>

<!-- ANIMATED BACKGROUND -->
<div class="bg-canvas">
  <div class="orb orb-1"></div>
  <div class="orb orb-2"></div>
</div>



<!-- ARTICLE HERO -->
<header class="article-hero">
  <nav class="breadcrumbs">
    <!-- ZMIENIONE: link Blog prowadzi do netopieka.pl/blog -->
    <a href="/blog">Blog</a>
    <span class="sep">/</span>
    <a href="/category/grooming/">Grooming</a>
    <span class="sep">/</span>
    <span class="current">7 sygnałów ostrzegawczych</span>
  </nav>

  <div class="article-cat">
    <span class="article-cat-dot"></span>
    Grooming · Bezpieczeństwo dziecka
  </div>

  <h1 class="article-title-main">
    Grooming online: 7 sygnałów ostrzegawczych, które rodzic <em>musi znać</em>
  </h1>

  <p class="article-lead">
    Większość rodziców rozpoznaje grooming dopiero, gdy jest za późno. Ten przewodnik pokaże Ci sygnały, które pojawiają się znacznie wcześniej. Bez paniki, z konkretami.
  </p>

  <div class="article-meta-row">
    <div class="article-meta-author">
<img decoding="async" src="https://netopieka.pl/wp-content/uploads/2026/05/Radek_twarz.png" 
     alt="Radek Biernacki" 
style="width:42px; height:52px; border-radius:50%; object-fit:cover; object-position:center 20%; flex-shrink:0;">      Radek B.
    </div>
    <div class="article-meta-info">
      <span>
        <svg width="14" height="14" viewBox="0 0 14 14" fill="none">
          <circle cx="7" cy="7" r="6" stroke="currentColor" stroke-width="1.5"/>
          <path d="M7 4v3l2 1.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
        </svg>
        8 min czytania
      </span>
      <span>
        <svg width="14" height="14" viewBox="0 0 14 14" fill="none">
          <path d="M2 3h10v8H2z M2 3l5 4 5-4" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
        </svg>
        23 maja 2026
      </span>
    </div>
  </div>
</header>

<!-- HERO IMAGE -->
<div class="article-hero-image">
  <div class="hero-image-frame">
    <div class="hero-image-content">
      <svg class="hero-bat-large" viewBox="0 0 200 200" fill="none">
        <path d="M100 40 C70 40, 50 65, 50 95 C50 110, 56 120, 62 124 L100 102 L138 124 C144 120, 150 110, 150 95 C150 65, 130 40, 100 40 Z" fill="#1a2b4a" stroke="#20e3e3" stroke-width="1.5"/>
        <circle cx="78" cy="85" r="6" fill="#20e3e3"/>
        <circle cx="122" cy="85" r="6" fill="#20e3e3"/>
        <circle cx="78" cy="85" r="2" fill="#0f1a2f"/>
        <circle cx="122" cy="85" r="2" fill="#0f1a2f"/>
        <path d="M62 124 L52 145 L70 138 Z" fill="#1a2b4a" stroke="#20e3e3" stroke-width="1"/>
        <path d="M138 124 L148 145 L130 138 Z" fill="#1a2b4a" stroke="#20e3e3" stroke-width="1"/>
        <path d="M88 100 L92 105 M112 100 L108 105" stroke="#20e3e3" stroke-width="1.5" stroke-linecap="round"/>
      </svg>
      <div class="hero-image-text">
        Świadomy rodzic
        <em>to bezpieczne dziecko.</em>
      </div>
    </div>
  </div>
</div>

<!-- ARTICLE LAYOUT -->
<div class="article-layout">

  <!-- TABLE OF CONTENTS -->
  <aside class="toc">
    <div class="toc-label">W tym artykule</div>
    <ul>
      <li><a href="#intro" class="active">Wprowadzenie</a></li>
      <li><a href="#czym-jest">Czym jest grooming?</a></li>
      <li><a href="#sygnaly">7 sygnałów ostrzegawczych</a></li>
      <li><a href="#co-robic">Co robić, gdy widzisz sygnały</a></li>
      <li><a href="#rozmowa">Jak rozmawiać z dzieckiem</a></li>
      <li><a href="#podsumowanie">Podsumowanie</a></li>
    </ul>
    <div class="toc-share">
      <div class="toc-share-label">Udostępnij</div>
      <div class="share-buttons">
        <button class="share-btn" aria-label="Facebook">
          <svg width="14" height="14" viewBox="0 0 16 16" fill="none">
            <path d="M9 14V8.5h2L11.5 6h-2.5V4.5C9 3.7 9.3 3 10.5 3H12V1h-2c-2 0-3 1.2-3 3v2H5v2.5h2V14" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
          </svg>
        </button>
        <button class="share-btn" aria-label="Twitter">
          <svg width="14" height="14" viewBox="0 0 16 16" fill="none">
            <path d="M14 4.5c-.5.2-1 .4-1.5.4.5-.3 1-.8 1.2-1.4-.5.3-1 .5-1.6.6-.5-.5-1.2-.8-2-.8-1.5 0-2.7 1.2-2.7 2.7 0 .2 0 .4.1.6C5.2 6.5 3 5.3 1.5 3.5c-.2.4-.3.8-.3 1.3 0 .9.5 1.7 1.2 2.2-.4 0-.8-.1-1.2-.3 0 1.3.9 2.4 2.2 2.7-.2.1-.5.1-.7.1-.2 0-.3 0-.5-.1.3 1.1 1.3 1.9 2.5 1.9-1 .7-2.1 1.2-3.4 1.2H1c1.2.7 2.6 1.2 4.1 1.2 4.9 0 7.6-4.1 7.6-7.6v-.3c.5-.4 1-.8 1.3-1.3z" fill="currentColor"/>
          </svg>
        </button>
        <button class="share-btn" aria-label="Kopiuj link">
          <svg width="14" height="14" viewBox="0 0 16 16" fill="none">
            <path d="M6 10l4-4M6 6l-2 2c-1 1-1 3 0 4s3 1 4 0l1-1M10 10l2-2c1-1 1-3 0-4s-3-1-4 0l-1 1" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
          </svg>
        </button>
      </div>
    </div>
  </aside>

  <!-- ARTICLE CONTENT -->
  <article class="article-content">

    <p id="intro">Grooming to słowo, które brzmi obco, ale opisuje coś bardzo konkretnego: proces stopniowego budowania zaufania dziecka po to, by je skrzywdzić. Dorosły, który robi to świadomie, jest cierpliwy. Wie, że szybkie ruchy odstraszają. Działa miesiącami, czasem latami. I wbrew temu, co sugerują medialne nagłówki, najczęściej nie wygląda jak postać ze strasznego filmu - sprawia wrażenie miłej, wyrozumiałej osoby.</p>

    <p>Dobra wiadomość jest taka, że grooming ma swój wzorzec. Choć każda historia jest inna, sygnały ostrzegawcze powtarzają się z zaskakującą regularnością. Jeśli wiesz, czego szukać, możesz zatrzymać proces na bardzo wczesnym etapie - zanim dziecko poczuje, że "nie ma już odwrotu".</p>

    <h2 id="czym-jest">Czym jest <em>grooming</em>?</h2>

    <p>Grooming to systematyczne działanie, którego celem jest doprowadzenie dziecka do sytuacji, w której łatwiej je skrzywdzić - emocjonalnie, seksualnie albo finansowo. Sprawca nie zaczyna od propozycji. Zaczyna od zainteresowania dzieckiem jako osobą. Pyta o szkołę, hobby, marzenia. Słucha. Reaguje. Dla dziecka, które gdzieś czuje, że dorośli go nie rozumieją, taki ktoś jest jak woda na pustyni.</p>

    <p>To dlatego rodzicielskie podejście "moje dziecko by mi powiedziało" rzadko działa. Sprawca buduje relację, w której to <strong>on</strong> jest dla dziecka najważniejszą osobą. A <em>dziecko</em> staje się strażnikiem ich wspólnej tajemnicy.</p>

    <div class="pull-quote">
      Grooming nie zaczyna się od ataku. Zaczyna się od poczucia, że ktoś naprawdę rozumie Twoje dziecko. Tak naprawdę.
      <span class="pull-quote-attr">— Pierwsza zasada w pracy z rodzicami</span>
    </div>

    <h2 id="sygnaly">7 sygnałów <em>ostrzegawczych</em></h2>

    <p>Poniższe siedem sygnałów to nie checklista, w której musisz zaznaczyć wszystkie pola, by uznać sytuację za niepokojącą. Wystarczy, że pojawiają się dwa lub trzy z nich jednocześnie - to już moment, w którym warto zacząć zadawać pytania.</p>

    <ol class="signal-list">

      <li class="signal-item">
        <div class="signal-num">1</div>
        <h3 class="signal-title">Nowa, bardzo bliska "znajomość" online</h3>
        <p class="signal-desc">Dziecko dużo mówi o nowej osobie, którą poznało w grze, na Discordzie albo w komentarzach. Relacja rozwija się szybko: w ciągu kilku tygodni "ta osoba" wie o dziecku więcej niż ktokolwiek z rodziny. Dorosły, który ma czyste intencje, nie potrzebuje tej intensywności.</p>
      </li>

      <li class="signal-item">
        <div class="signal-num">2</div>
        <h3 class="signal-title">Komplementy, które wyglądają na "zrozumienie"</h3>
        <p class="signal-desc">"Jesteś inny, dojrzalszy niż twoi rówieśnicy", "mało kto by mnie tak rozumiał jak ty". To brzmi jak życzliwość, a jest precyzyjnym narzędziem - sprawca buduje w dziecku poczucie, że łączy ich coś wyjątkowego, czego inni nie pojmą.</p>
      </li>

      <li class="signal-item">
        <div class="signal-num">3</div>
        <h3 class="signal-title">Prezenty, kody do gier, doładowania</h3>
        <p class="signal-desc">Skiny w grze, V-Bucksy, doładowania na telefon, paczki z aliexpressu. Pierwsze prezenty są drobne - testują, czy dziecko je przyjmie. Z czasem rosną. Każdy stworzy poczucie zobowiązania, którego dziecko nie wie, jak spłacić.</p>
      </li>

      <li class="signal-item">
        <div class="signal-num">4</div>
        <h3 class="signal-title">"To nasza tajemnica"</h3>
        <p class="signal-desc">Najbardziej charakterystyczny sygnał ze wszystkich. Sprawca prosi dziecko, żeby nie mówiło rodzicom o ich rozmowach, prezentach albo o samej znajomości. Tłumaczy to obawą, że "dorośli źle to zrozumieją". Każda relacja, która wymaga ukrywania przed rodzicem, jest niebezpieczna - bez wyjątku.</p>
      </li>

      <li class="signal-item">
        <div class="signal-num">5</div>
        <h3 class="signal-title">Pytania o samotność</h3>
        <p class="signal-desc">"Kiedy rodziców nie ma w domu?", "śpisz sama w pokoju?", "masz rodzeństwo?". Te pytania pojawiają się stopniowo i wyglądają jak normalna ciekawość. Sprawca buduje mapę dnia dziecka, by wiedzieć, kiedy rozmowa może być najbardziej intymna i kiedy nikt nie zajrzy przez ramię.</p>
      </li>

      <li class="signal-item">
        <div class="signal-num">6</div>
        <h3 class="signal-title">Przeniesienie rozmowy na prywatne kanały</h3>
        <p class="signal-desc">Z publicznego serwera Discorda na prywatne wiadomości. Z gry na Snapchata albo Telegrama. Z platformy, która archiwizuje rozmowy, na taką, która kasuje je po przeczytaniu. Każde takie przejście zmniejsza widoczność tego, co się dzieje.</p>
      </li>

      <li class="signal-item">
        <div class="signal-num">7</div>
        <h3 class="signal-title">Stopniowe testowanie granic</h3>
        <p class="signal-desc">Najpierw żart o ciele. Potem prośba o "zwykłe" zdjęcie. Potem komentarz o wyglądzie. Każde z osobna wygląda na nic. Razem tworzą drogę, na której dziecko traci punkt odniesienia, gdzie kończy się normalność. To w tym momencie sprawca zaczyna realizować to, po co przyszedł.</p>
      </li>
    </ol>

    <div class="callout">
      <div class="callout-icon">
        <svg width="20" height="20" viewBox="0 0 20 20" fill="none">
          <path d="M10 2L2 17h16L10 2z M10 8v4 M10 14h0" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
        </svg>
      </div>
      <div class="callout-content">
        <h4>Jeden sygnał to obserwuj. Trzy to działaj.</h4>
        <p>Pojedyncze zachowania mogą mieć niewinne wytłumaczenie, ale gdy zauważasz wiele z powyższych jednocześnie, nie czekaj, aż wszystko stanie się oczywiste. Wczesna rozmowa nigdy nie zaszkodzi. Spóźniona reakcja - tak.</p>
      </div>
    </div>

    <h2 id="co-robic">Co robić, gdy <em>widzisz sygnały</em>?</h2>

    <p>Pierwszy odruch wielu rodziców to konfrontacja: zabranie telefonu, zablokowanie kont, krzyk. Rozumiem ten impuls. Robi się strasznie i chce się działać natychmiast. Problem polega na tym, że jeśli dziecko jest już w relacji ze sprawcą, taka reakcja zamknie je w sobie i sprawca wykorzysta to do ostatecznego odcięcia od rodziny ("widzisz, mówiłem, że twoi rodzice nie zrozumieją").</p>

    <p>Zamiast tego, jeśli to możliwe, daj sobie pół godziny na uspokojenie i przejdź przez taką sekwencję (kliknij, by odhaczyć):</p>

    <ul class="checklist">
      <li>Zabezpiecz dowody: zrzuty ekranu rozmów, zdjęć, profilu sprawcy. Nic nie kasuj.</li>
      <li>Nie konfrontuj się ze sprawcą online - zniknie i zatrze ślady.</li>
      <li>Zacznij rozmowę z dzieckiem od tego, że nie jest niczemu winne. To pierwsze zdanie ma ogromne znaczenie.</li>
      <li>Zadzwoń pod 800 100 100 (Telefon dla Rodziców i Nauczycieli) lub 116 111 (dla dziecka) - bezpłatnie i anonimowo. Nielegalne treści zgłosisz na Dyzurnet.pl.</li>
      <li>Jeśli były żądania zdjęć intymnych lub propozycje spotkania, zgłoś sprawę na policję.</li>
      <li>Nie obwiniaj się. Sprawcy są profesjonalistami w manipulacji. Ofiarą zostają najlepsze dzieci najlepszych rodziców.</li>
    </ul>

    <h2 id="rozmowa">Jak <em>rozmawiać</em> z dzieckiem</h2>

    <p>Najlepsza ochrona to ta, która zaczyna się długo przed problemem. Dzieci, które wiedzą, że mogą wrócić do rodzica z każdą informacją - nawet jeśli "zrobiły coś głupiego" - same przerywają grooming na bardzo wczesnym etapie. Te, które boją się ocenienia, milczą do końca.</p>

    <div class="callout info">
      <div class="callout-icon">
        <svg width="20" height="20" viewBox="0 0 20 20" fill="none">
          <circle cx="10" cy="10" r="8" stroke="currentColor" stroke-width="2"/>
          <path d="M10 6v4 M10 14h0" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
        </svg>
      </div>
      <div class="callout-content">
        <h4>Zdanie, które warto powiedzieć dziecku już dziś</h4>
        <p>"Jeśli kiedykolwiek ktoś poprosi cię w internecie o coś, co czujesz, że nie powinno mieć miejsca, możesz przyjść do mnie nawet o trzeciej w nocy. Nigdy nie dostaniesz za to kary. Obiecuję."</p>
      </div>
    </div>

    <h2 id="podsumowanie">Podsumowanie</h2>

    <p>Grooming to nie temat, który da się załatwić jedną rozmową albo jednym ustawieniem kontroli rodzicielskiej. To stała, spokojna obecność rodzica w cyfrowym życiu dziecka - taka, która nie podgląda, ale jest dostępna. Rozumiejąca, ale czujna. Bez paniki, bez wstydu i tabu.</p>

    <p>Jeśli wciąż czytasz, jesteś w lepszej pozycji niż większość rodziców w Polsce. Wiesz, czego szukać. Wiesz, że istnieje wzorzec, który można rozpoznać. I wiesz, gdzie szukać pomocy, jeśli będzie potrzebna. To naprawdę dużo. Gratuluję.</p>

    <!-- TAGS -->
    <div class="article-tags">
      <span class="tags-label">Tagi:</span>
      <a href="/tag/grooming/" class="tag">grooming</a>
      <a href="/tag/bezpieczenstwo-dziecka/" class="tag">bezpieczeństwo dziecka</a>
      <a href="/tag/rodzic-w-sieci/" class="tag">rodzic w sieci</a>
      <a href="/tag/cyberbezpieczenstwo/" class="tag">cyberbezpieczeństwo</a>
      <a href="/tag/poradnik/" class="tag">poradnik</a>
    </div>

  </article>
</div>

<!-- AUTHOR BOX -->
<section class="author-box">
  <div class="author-card">
<img decoding="async" src="https://netopieka.pl/wp-content/uploads/2026/05/Radek_twarz.png" 
     alt="Radek Biernacki" 
style="width:120px; height:150px; border-radius:50%; object-fit:cover; object-position:center 20%; border:4px solid var(--cream); box-shadow:0 10px 40px rgba(32,227,227,0.3); flex-shrink:0;">    <div class="author-info">
      <div class="author-label">O autorze</div>
      <h3 class="author-name">Radek Biernacki</h3>
      <p class="author-role">Założyciel Netopieka.pl · 11+ lat w IT</p>
      <p class="author-bio">
        Pomagam rodzicom rozumieć cyfrowy świat ich dzieci. Od ponad dekady zawodowo zajmuję się zagadnieniami informatycznymi, ale w Netopiece mówię językiem rodziców - bez żargonu i straszenia, za to konkretami. Twórca kursu Bezpieczny Start i bezpłatnego ebooka CyberRodzic vs Grooming.
      </p>
      <div class="author-links">
        <a href="/blog" class="author-link primary">
          Wszystkie artykuły
          <svg width="12" height="12" viewBox="0 0 12 12" fill="none">
            <path d="M3 6h6m0 0L6 3m3 3l-3 3" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
        </a>
        <a href="#newsletter" class="author-link">Newsletter</a>
        <a href="/pionierzy/" class="author-link">Kursy</a>
      </div>
    </div>
  </div>
</section>

<!-- COURSE CTA -->
<section class="course-cta">
  <div class="cta-card">
    <div class="cta-content">
      <div class="cta-eyebrow">Pójdź o krok dalej</div>
      <h2 class="cta-title">Bezpieczny Start: kompletny kurs <em>dla świadomego rodzica</em></h2>
      <p class="cta-desc">5 modułów, ponad 3 godziny materiału wideo i 23 PDFy. Wspólne ćwiczenia rodzic-dziecko dla wieku 7-9 lat. Wszystko, czego potrzebujesz, by zbudować w domu trwałe nawyki cyfrowego bezpieczeństwa.</p>
      <ul class="cta-features">
        <li>
          <svg width="18" height="18" viewBox="0 0 18 18" fill="none">
            <path d="M3 9l4 4 8-9" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
          5 modułów wideo: 3+ godziny treści
        </li>
        <li>
          <svg width="18" height="18" viewBox="0 0 18 18" fill="none">
            <path d="M3 9l4 4 8-9" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
          23 PDFy do wydruku i wspólnych ćwiczeń
        </li>
        <li>
          <svg width="18" height="18" viewBox="0 0 18 18" fill="none">
            <path d="M3 9l4 4 8-9" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
          Rodzinna umowa cyfrowa: gotowy szablon
        </li>
        <li>
          <svg width="18" height="18" viewBox="0 0 18 18" fill="none">
            <path d="M3 9l4 4 8-9" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
          Dostęp na zawsze, bez subskrypcji
        </li>
      </ul>
      <div class="cta-buttons">
        <div class="cta-price">
          <span class="cta-price-old">249 zł</span>
          <span class="cta-price-new">179 zł</span>
        </div>
        <a href="/pionierzy/" class="cta-button">
          Zobacz kurs
          <svg width="14" height="14" viewBox="0 0 14 14" fill="none">
            <path d="M3 7h8m0 0L7 3m4 4l-4 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
          </svg>
        </a>
      </div>
    </div>
    <div class="cta-visual">
      <div class="cta-mockup">
        <div class="cta-mockup-label">Kurs Netopieka.pl</div>
        <div class="cta-mockup-title">Bezpieczny <em>Start</em></div>
        <div class="cta-mockup-modules">
          <div>Cyfrowy plac zabaw</div>
          <div>Kto jest kim w sieci?</div>
          <div>Mój cyfrowy sekret</div>
          <div>Złe rzeczy w sieci</div>
          <div>Nasza rodzinna umowa</div>
        </div>
        <div class="cta-mockup-bat">
          <svg viewBox="0 0 60 60" fill="none">
            <path d="M30 12 C20 12, 14 20, 14 28 C14 32, 16 35, 18 36 L30 30 L42 36 C44 35, 46 32, 46 28 C46 20, 40 12, 30 12 Z" fill="#20e3e3"/>
            <circle cx="22" cy="25" r="2" fill="#1a2b4a"/>
            <circle cx="38" cy="25" r="2" fill="#1a2b4a"/>
          </svg>
        </div>
      </div>
    </div>
  </div>
</section>

<!-- POWIĄZANE MATERIAŁY -->
<section class="related">
  <div class="related-head">
    <div>
      <div class="section-eyebrow">Pogłębić temat</div>
      <h2 class="related-title">Powiązane <em>materiały</em></h2>
    </div>
  </div>
  <div class="related-grid">

    <article class="related-card" data-href="#newsletter">
      <div class="related-image" data-color="teal">
        <span class="related-cat-badge">Ebook · 54 strony</span>
        <svg viewBox="0 0 100 100" fill="none">
          <rect x="25" y="15" width="50" height="70" rx="3" fill="#1a2b4a"/>
          <rect x="30" y="25" width="40" height="3" rx="1.5" fill="#20e3e3"/>
          <rect x="30" y="33" width="30" height="3" rx="1.5" fill="#20e3e3" opacity="0.7"/>
          <rect x="30" y="45" width="35" height="3" rx="1.5" fill="#20e3e3" opacity="0.5"/>
          <rect x="30" y="52" width="40" height="3" rx="1.5" fill="#20e3e3" opacity="0.5"/>
          <rect x="30" y="59" width="25" height="3" rx="1.5" fill="#20e3e3" opacity="0.5"/>
          <circle cx="50" cy="75" r="5" fill="#20e3e3"/>
        </svg>
      </div>
      <div class="related-body">
        <div class="related-meta">PDF · Bezpłatny</div>
        <h3 class="related-card-title">CyberRodzic vs Grooming - pełny przewodnik</h3>
      </div>
    </article>

    <article class="related-card" data-href="/blog">
      <div class="related-image" data-color="navy">
        <span class="related-cat-badge">Kompendium · PDF</span>
        <svg viewBox="0 0 100 100" fill="none">
          <rect x="38" y="18" width="24" height="48" rx="3" stroke="#20e3e3" stroke-width="2.5" fill="none"/>
          <circle cx="50" cy="60" r="2" fill="#20e3e3"/>
          <path d="M30 78 L70 78" stroke="#20e3e3" stroke-width="2.5" stroke-linecap="round"/>
          <path d="M44 28 L56 28 M44 35 L56 35 M44 42 L52 42" stroke="#20e3e3" stroke-width="1.5" stroke-linecap="round" opacity="0.7"/>
        </svg>
      </div>
      <div class="related-body">
        <div class="related-meta">PDF · Bezpłatny</div>
        <h3 class="related-card-title">Zakaz telefonów w szkołach - kompendium</h3>
      </div>
    </article>

    <article class="related-card" data-href="/pionierzy/">
      <div class="related-image" data-color="cream">
        <span class="related-cat-badge">Kurs · Płatny</span>
        <svg viewBox="0 0 100 100" fill="none">
          <circle cx="50" cy="50" r="30" fill="#1a2b4a"/>
          <path d="M44 38 L62 50 L44 62 Z" fill="#20e3e3"/>
        </svg>
      </div>
      <div class="related-body">
        <div class="related-meta">5 modułów · 3+ godziny</div>
        <h3 class="related-card-title">Bezpieczny Start - kurs dla rodziców 7-9 lat</h3>
      </div>
    </article>

  </div>
</section>

<!-- =====================================================
     NEWSLETTER / EBOOK - spójna z resztą stron
     ===================================================== -->
<section class="newsletter" id="newsletter">
  <div class="newsletter-inner">
    <div class="newsletter-content">
      <div class="newsletter-eyebrow">Bezpłatny ebook</div>
      <h2 class="newsletter-title">CyberRodzic <em>vs Grooming</em></h2>
      <p class="newsletter-desc">
        Praktyczny przewodnik po najgroźniejszym zagrożeniu w sieci. Dowiedz się, jak działa grooming, jakie sygnały ignoruje 9 na 10 rodziców i co zrobić w pierwszej godzinie po wykryciu problemu.
      </p>
      <!-- MAILERLITE UNIVERSAL EMBED -->
      <div class="ml-embedded" data-form="avWKq8"></div>
      <!-- / MAILERLITE UNIVERSAL EMBED -->

      <div class="newsletter-bullets">
        <span>✓ Bez spamu</span>
        <span>✓ Wypiszesz się jednym kliknięciem</span>
        <span>✓ 54 strony konkretów</span>
      </div>
    </div>

    <!-- Okładka ebooka -->
    <div class="newsletter-ebook">
      <img decoding="async" src="https://netopieka.pl/wp-content/uploads/2025/12/CyberRodzicVsGrooming.webp"
           alt="CyberRodzic vs Grooming">
    </div>
  </div>
</section>



<script>
// === PASEK POSTĘPU CZYTANIA (odporny na brak elementów) ===
var progressBar = document.getElementById('progressBar');
function updateProgress() {
  if (!progressBar) return;
  var total = document.documentElement.scrollHeight - window.innerHeight;
  var percent = total > 0 ? (window.scrollY / total) * 100 : 0;
  progressBar.style.width = Math.min(100, Math.max(0, percent)) + '%';
}
window.addEventListener('scroll', updateProgress, { passive: true });
window.addEventListener('resize', updateProgress);
updateProgress();

// === SPIS TREŚCI - aktywna sekcja ===
var sections = document.querySelectorAll('h2[id], p[id]');
var tocLinks = document.querySelectorAll('.toc a');
if (sections.length && tocLinks.length) {
  var tocObserver = new IntersectionObserver(function(entries) {
    entries.forEach(function(entry) {
      if (entry.isIntersecting) {
        var id = entry.target.id;
        tocLinks.forEach(function(link) {
          link.classList.toggle('active', link.getAttribute('href') === '#' + id);
        });
      }
    });
  }, { rootMargin: '-100px 0px -60% 0px' });
  sections.forEach(function(section) { tocObserver.observe(section); });
}

// === CHECKLISTA - klik zaznacza / odznacza ===
document.querySelectorAll('.checklist li').forEach(function(item) {
  item.addEventListener('click', function() {
    item.classList.toggle('checked');
  });
});

// === POWIĄZANE KARTY - klikalne ===
document.querySelectorAll('.related-card').forEach(function(card) {
  card.addEventListener('click', function() {
    var href = card.dataset.href;
    if (href) {
      if (href.charAt(0) === '#') {
        var target = document.querySelector(href);
        if (target) target.scrollIntoView({ behavior: 'smooth' });
      } else {
        window.location.href = href;
      }
    }
  });
});

// === KOPIOWANIE LINKU (trzeci przycisk udostępniania) ===
document.querySelectorAll('.share-btn').forEach(function(btn, i) {
  if (i === 2) {
    btn.addEventListener('click', function() {
      navigator.clipboard.writeText(window.location.href);
      btn.style.background = 'var(--teal)';
      btn.style.borderColor = 'var(--teal)';
      setTimeout(function() {
        btn.style.background = '';
        btn.style.borderColor = '';
      }, 1500);
    });
  }
});
</script>

<!-- MAILERLITE UNIVERSAL SCRIPT -->
<script>
(function(w,d,e,u,f,l,n){w[f]=w[f]||function(){(w[f].q=w[f].q||[])
.push(arguments);},l=d.createElement(e),l.async=1,l.src=u,
n=d.getElementsByTagName(e)[0],n.parentNode.insertBefore(l,n);})
(window,document,'script','https://assets.mailerlite.com/js/universal.js','ml');
ml('account', '1473819');
</script>

</body>
</html>				</div>
				</div>
				</div>
				</div>
		<p>Artykuł <a href="https://netopieka.pl/grooming-7-sygnalow-ostrzegawczych/">Grooming: 7 sygnałów ostrzegawczych</a> pochodzi z serwisu <a href="https://netopieka.pl">Netopieka</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://netopieka.pl/grooming-7-sygnalow-ostrzegawczych/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
