Compare commits
104 Commits
session/CF
...
session/CF
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ed4ad35525 | ||
|
|
4b68cf11cf | ||
|
|
c8673ed77a | ||
|
|
1440c33fb3 | ||
|
|
fdd7acb603 | ||
|
|
6105040538 | ||
|
|
2cace245a5 | ||
|
|
28f0a8dbff | ||
|
|
92f767002b | ||
|
|
f62a39fc19 | ||
|
|
0926be8e34 | ||
|
|
e6794491d9 | ||
|
|
7282f1a13b | ||
|
|
b3f55a2b46 | ||
|
|
8f3230a2d0 | ||
|
|
00a58bb212 | ||
|
|
a81e42c8e4 | ||
|
|
c5817cada5 | ||
|
|
a9854f3917 | ||
|
|
44149cee93 | ||
|
|
ed8d0b03a9 | ||
|
|
25821ecb11 | ||
|
|
6a0fb368f4 | ||
|
|
89e93ec8e7 | ||
|
|
f5f13cac4d | ||
|
|
80cfa8df4e | ||
|
|
435c1bfe12 | ||
|
|
e5ee29f1a9 | ||
|
|
6950f914e2 | ||
|
|
f4e45cf83f | ||
|
|
ccca7ae482 | ||
|
|
8e15d1aa0c | ||
|
|
882e9141fb | ||
|
|
b1cc054df0 | ||
|
|
302a02eebd | ||
|
|
e93f5593e2 | ||
|
|
b2306f7f3e | ||
|
|
4724820873 | ||
|
|
60e63b8cd1 | ||
|
|
89c8567dcc | ||
|
|
64c71234ec | ||
|
|
64c4a51b46 | ||
|
|
a0fb62aa66 | ||
|
|
a1b3263412 | ||
|
|
42939db1b0 | ||
|
|
8061a23c87 | ||
|
|
82760e3263 | ||
|
|
82211ac5e4 | ||
|
|
65b2c757a4 | ||
|
|
6a4e8dde05 | ||
|
|
df2cb09a05 | ||
|
|
f56a0cd67d | ||
|
|
b9a62902c2 | ||
|
|
578b95ff9e | ||
|
|
a0b862acf4 | ||
|
|
3bd0476abf | ||
|
|
63495fd901 | ||
|
|
955e4bef6f | ||
|
|
8a209f76f8 | ||
|
|
30a6642e18 | ||
|
|
00194c4ce8 | ||
|
|
ea0c78adef | ||
|
|
0dfc11d0fc | ||
|
|
adf51d7bf1 | ||
|
|
a936222be1 | ||
|
|
bab74ef7e7 | ||
|
|
57320ccb51 | ||
|
|
3d8e568f8c | ||
|
|
5a840743da | ||
|
|
c287b3cf02 | ||
|
|
cc5568f0a9 | ||
|
|
bdcbc6f8a8 | ||
|
|
2affacd222 | ||
|
|
da29dbc8bc | ||
|
|
9a86cf6383 | ||
|
|
8f2132f4ff | ||
|
|
d5e599b247 | ||
|
|
48bae02b88 | ||
|
|
3cd7951467 | ||
|
|
67a350d016 | ||
|
|
f4b2511333 | ||
|
|
2954021f85 | ||
|
|
a37d5bece6 | ||
|
|
e482b06611 | ||
|
|
9dd4a68d71 | ||
|
|
fbf54a4a5a | ||
|
|
7f6d96cbe7 | ||
|
|
6ac5412493 | ||
|
|
e732b9d96e | ||
|
|
7ff71c99eb | ||
|
|
42d5c51473 | ||
|
|
18dc7ae66f | ||
|
|
ec370d2d7e | ||
|
|
b517af5c2f | ||
|
|
852640a574 | ||
|
|
09a11520e8 | ||
|
|
df72e6aaba | ||
|
|
308034e40d | ||
|
|
5e76d8745a | ||
|
|
2dfc9ed8bd | ||
|
|
b6951ec29d | ||
|
|
99350eef8a | ||
|
|
c7376db2cb | ||
|
|
ba41263e48 |
@@ -13,8 +13,8 @@ on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths-ignore:
|
||||
- '**.md'
|
||||
- 'docs/**'
|
||||
- '.session/**'
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
force_deploy:
|
||||
@@ -30,7 +30,7 @@ env:
|
||||
REMOTE_USER: root
|
||||
DEPLOY_PATH: /opt/apps/internetforkids
|
||||
HEALTH_ENDPOINT: "http://localhost:3006/health"
|
||||
PUBLIC_URL: "https://internetforkids.ong"
|
||||
PUBLIC_URL: "https://internetforkids.org"
|
||||
HEALTH_TIMEOUT: 60
|
||||
|
||||
jobs:
|
||||
@@ -163,6 +163,24 @@ jobs:
|
||||
fi
|
||||
echo "All smoke tests passed"
|
||||
|
||||
indexnow:
|
||||
name: IndexNow Ping
|
||||
runs-on: ubuntu-latest
|
||||
needs: [smoke-test]
|
||||
steps:
|
||||
- name: Notify search engines
|
||||
run: |
|
||||
KEY="40101d97ec848f6ea016fac347b1a5bc"
|
||||
for url in \
|
||||
"https://internetforkids.org/" \
|
||||
"https://internetforkids.org/en/" \
|
||||
"https://internetforkids.org/de/" \
|
||||
"https://internetforkids.org/fr/" \
|
||||
"https://internetforkids.org/sitemap.xml"; do
|
||||
curl -sf "https://api.indexnow.org/indexnow?url=${url}&key=${KEY}" || true
|
||||
done
|
||||
echo "IndexNow pings sent"
|
||||
|
||||
promote:
|
||||
name: Promote to Latest
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
public/
|
||||
resources/
|
||||
.hugo_build.lock
|
||||
.claude-session/
|
||||
|
||||
3
.gitmodules
vendored
3
.gitmodules
vendored
@@ -1,3 +0,0 @@
|
||||
[submodule "themes/congo"]
|
||||
path = themes/congo
|
||||
url = https://github.com/jpanther/congo.git
|
||||
|
||||
1
.ip-exposure-whitelist
Normal file
1
.ip-exposure-whitelist
Normal file
@@ -0,0 +1 @@
|
||||
127.05.131.05 # False positive in mermaid.min.js (numeric pattern, not IP)
|
||||
6
.session/metadata.env
Normal file
6
.session/metadata.env
Normal file
@@ -0,0 +1,6 @@
|
||||
SESSION_ISSUE_KEY=CF-2812
|
||||
PROJECT_DIR=/Users/christian.gick/Development/Apps/internetforkids
|
||||
WORKSPACE_PATH=/Users/christian.gick/.claude/workspaces/cf-2812
|
||||
BASE_BRANCH=main
|
||||
CREATED_AT=1775206558
|
||||
CLAUDE_PID=74267
|
||||
3
.session/notes.md
Normal file
3
.session/notes.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Session CF-2812
|
||||
Started: 2026-04-03 11:55
|
||||
Project: internetforkids
|
||||
0
.session/plan.md
Normal file
0
.session/plan.md
Normal file
202
assets/css/custom.css
Normal file
202
assets/css/custom.css
Normal file
@@ -0,0 +1,202 @@
|
||||
/* Internet for Kids — Newsreader typography (darioamodei.com-inspired)
|
||||
Warm, literary, research-publication feel */
|
||||
|
||||
/* Local Newsreader font — latin */
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* latin-ext (DE umlauts, FR accents) */
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
/* italic latin */
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: italic;
|
||||
font-weight: 400 500;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-italic-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
/* italic latin-ext */
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: italic;
|
||||
font-weight: 400 500;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-italic-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
:root {
|
||||
--ifk-font: 'Newsreader', 'Times New Roman', serif;
|
||||
--ifk-text: #1c1917;
|
||||
--ifk-bg: #fafaf9;
|
||||
--ifk-accent: #4d7c0f;
|
||||
--ifk-accent-hover: #3f6212;
|
||||
--ifk-secondary: #059669;
|
||||
}
|
||||
|
||||
/* Global background */
|
||||
body {
|
||||
background-color: var(--ifk-bg) !important;
|
||||
color: var(--ifk-text) !important;
|
||||
}
|
||||
|
||||
/* Override Congo's dark bg classes */
|
||||
.bg-neutral {
|
||||
background-color: var(--ifk-bg) !important;
|
||||
}
|
||||
|
||||
/* All text in Newsreader */
|
||||
body, p, li, td, th, blockquote, figcaption {
|
||||
font-family: var(--ifk-font) !important;
|
||||
font-size: 22px;
|
||||
line-height: 36px;
|
||||
color: var(--ifk-text);
|
||||
}
|
||||
|
||||
/* Headings */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: var(--ifk-font) !important;
|
||||
color: var(--ifk-text);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
h1, .article-title {
|
||||
font-size: 2.75rem;
|
||||
line-height: 1.15;
|
||||
font-weight: 600;
|
||||
margin-bottom: 1.5rem;
|
||||
letter-spacing: -0.01em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.85rem;
|
||||
line-height: 1.25;
|
||||
margin-top: 3rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.3;
|
||||
margin-top: 2.5rem;
|
||||
}
|
||||
|
||||
/* Article content — constrain width for readability */
|
||||
article .prose,
|
||||
article .content,
|
||||
.article-content {
|
||||
max-width: 800px;
|
||||
}
|
||||
|
||||
/* Paragraphs */
|
||||
article p {
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
/* Links — subtle, Amodei-style */
|
||||
article a {
|
||||
color: var(--ifk-accent);
|
||||
text-decoration: underline;
|
||||
text-decoration-thickness: 1px;
|
||||
text-underline-offset: 2px;
|
||||
}
|
||||
|
||||
article a:hover {
|
||||
color: var(--ifk-accent-hover);
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
/* Blockquotes — elegant left-border */
|
||||
blockquote {
|
||||
font-family: var(--ifk-font) !important;
|
||||
font-style: italic;
|
||||
font-size: 24px;
|
||||
line-height: 38px;
|
||||
border-left: 3px solid var(--ifk-secondary);
|
||||
padding-left: 1.5rem;
|
||||
margin: 2rem 0;
|
||||
color: var(--ifk-text);
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
/* Navigation — keep sans-serif for UI elements */
|
||||
nav, nav a, nav span,
|
||||
header, header a,
|
||||
footer, footer a, footer span,
|
||||
.breadcrumbs, .taxonomy-list,
|
||||
.article-meta, .post-meta,
|
||||
time, .reading-time {
|
||||
font-family: system-ui, -apple-system, 'Segoe UI', sans-serif !important;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
/* Header title */
|
||||
header a[href="/"] span,
|
||||
header a[rel="me"] {
|
||||
font-family: var(--ifk-font) !important;
|
||||
font-size: 1.35rem;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* Tags/categories — small sans pills */
|
||||
.taxonomy-term, [href*="/tags/"], [href*="/categories/"] {
|
||||
font-family: system-ui, -apple-system, sans-serif !important;
|
||||
font-size: 0.8rem !important;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
/* Table of contents — smaller sans */
|
||||
#TableOfContents, #TableOfContents a {
|
||||
font-family: system-ui, -apple-system, sans-serif !important;
|
||||
font-size: 0.95rem !important;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Homepage recent articles */
|
||||
.summary {
|
||||
font-family: var(--ifk-font) !important;
|
||||
font-size: 20px;
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
/* Data tables in articles — keep readable */
|
||||
.csm-table, .csm-table td, .csm-table th {
|
||||
font-family: var(--ifk-font) !important;
|
||||
font-size: 18px;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* Stats banner — override with sans for numbers */
|
||||
.ifk-stat-num {
|
||||
font-family: var(--ifk-font) !important;
|
||||
}
|
||||
|
||||
.ifk-stat-label {
|
||||
font-family: system-ui, -apple-system, sans-serif !important;
|
||||
}
|
||||
|
||||
/* Chart labels keep sans */
|
||||
.ifk-chart-card h4 {
|
||||
font-family: system-ui, -apple-system, sans-serif !important;
|
||||
}
|
||||
|
||||
/* Smooth dark mode override (if ever enabled) */
|
||||
/* Status badges keep their blue palette */
|
||||
.csm-enforced { background: var(--ifk-accent) !important; }
|
||||
.csm-passed { background: var(--ifk-secondary) !important; }
|
||||
.csm-progress { background: #86efac !important; color: #14532d !important; }
|
||||
.csm-guidelines { background: #d1fae5 !important; color: #065f46 !important; }
|
||||
328
assets/css/main.css
Normal file
328
assets/css/main.css
Normal file
@@ -0,0 +1,328 @@
|
||||
/* Custom font imports */
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: italic;
|
||||
font-weight: 400 500;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-italic-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: italic;
|
||||
font-weight: 400 500;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-italic-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* CSS Variables */
|
||||
:root {
|
||||
--ifk-font: 'Newsreader', 'Times New Roman', serif;
|
||||
--ifk-text: #1c1917;
|
||||
--ifk-bg: #fafaf9;
|
||||
--ifk-accent: #667eea;
|
||||
--ifk-accent-hover: #764ba2;
|
||||
--ifk-secondary: #667eea;
|
||||
}
|
||||
|
||||
/* Utility classes for colors */
|
||||
.text-ifk-accent { color: var(--ifk-accent); }
|
||||
.text-ifk-text { color: var(--ifk-text); }
|
||||
.bg-ifk-bg { background-color: var(--ifk-bg); }
|
||||
.hover\:text-ifk-accent:hover { color: var(--ifk-accent); }
|
||||
.hover\:text-ifk-accent-hover:hover { color: var(--ifk-accent-hover); }
|
||||
|
||||
/* Font family utility */
|
||||
.font-newsreader { font-family: var(--ifk-font); }
|
||||
|
||||
/* Tailwind-equivalent utilities */
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
.flex { display: flex; }
|
||||
.flex-1 { flex: 1 1 0%; }
|
||||
.flex-wrap { flex-wrap: wrap; }
|
||||
.inline-block { display: inline-block; }
|
||||
.grid { display: grid; }
|
||||
.grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
|
||||
.justify-between { justify-content: space-between; }
|
||||
.items-center { align-items: center; }
|
||||
.gap-4 { gap: 1rem; }
|
||||
.gap-8 { gap: 2rem; }
|
||||
.mx-auto { margin-left: auto; margin-right: auto; }
|
||||
.max-w-2xl { max-width: 42rem; }
|
||||
.max-w-3xl { max-width: 48rem; }
|
||||
.max-w-4xl { max-width: 56rem; }
|
||||
.px-4 { padding-left: 1rem; padding-right: 1rem; }
|
||||
.py-4 { padding-top: 1rem; padding-bottom: 1rem; }
|
||||
.py-12 { padding-top: 3rem; padding-bottom: 3rem; }
|
||||
.p-4 { padding: 1rem; }
|
||||
.pt-8 { padding-top: 2rem; }
|
||||
.mb-2 { margin-bottom: 0.5rem; }
|
||||
.mb-3 { margin-bottom: 0.75rem; }
|
||||
.mb-4 { margin-bottom: 1rem; }
|
||||
.mb-8 { margin-bottom: 2rem; }
|
||||
.mb-12 { margin-bottom: 3rem; }
|
||||
.mr-2 { margin-right: 0.5rem; }
|
||||
.mt-12 { margin-top: 3rem; }
|
||||
.mt-20 { margin-top: 5rem; }
|
||||
.sticky { position: sticky; }
|
||||
.top-0 { top: 0; }
|
||||
.z-40 { z-index: 40; }
|
||||
.border { border: 1px solid #e5e7eb; }
|
||||
.border-t { border-top: 1px solid #e5e7eb; }
|
||||
.border-b { border-bottom: 1px solid #e5e7eb; }
|
||||
.rounded { border-radius: 0.25rem; }
|
||||
.bg-white { background-color: #fff; }
|
||||
.bg-gray-50 { background-color: #f9fafb; }
|
||||
.text-center { text-align: center; }
|
||||
.text-left { text-align: left; }
|
||||
.text-right { text-align: right; }
|
||||
.text-xs { font-size: 0.75rem; line-height: 1rem; }
|
||||
.text-sm { font-size: 0.875rem; line-height: 1.25rem; }
|
||||
.text-lg { font-size: 1.125rem; line-height: 1.75rem; }
|
||||
.text-xl { font-size: 1.25rem; line-height: 1.75rem; }
|
||||
.text-4xl { font-size: 2.75rem; line-height: 1.15; }
|
||||
.font-semibold { font-weight: 600; }
|
||||
.uppercase { text-transform: uppercase; }
|
||||
.tracking-wide { letter-spacing: 0.025em; }
|
||||
.leading-tight { line-height: 1.25; }
|
||||
.leading-relaxed { line-height: 1.625; }
|
||||
.text-gray-600 { color: #4b5563; }
|
||||
.hover\:bg-gray-50:hover { background-color: #f9fafb; }
|
||||
@media (min-width: 768px) { .md\:grid-cols-3 { grid-template-columns: repeat(3, 1fr); } }
|
||||
|
||||
/* Global typography */
|
||||
body {
|
||||
background-color: var(--ifk-bg);
|
||||
color: var(--ifk-text);
|
||||
font-family: system-ui, -apple-system, 'Segoe UI', sans-serif;
|
||||
}
|
||||
|
||||
article, .prose {
|
||||
font-family: var(--ifk-font);
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: var(--ifk-font);
|
||||
color: var(--ifk-text);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
h1, .article-title {
|
||||
font-size: 2.75rem;
|
||||
line-height: 1.15;
|
||||
letter-spacing: -0.01em;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.85rem;
|
||||
line-height: 1.25;
|
||||
margin-top: 3rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.3;
|
||||
margin-top: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* Article content */
|
||||
article p {
|
||||
font-size: 1.375rem;
|
||||
line-height: 1.6;
|
||||
margin-bottom: 1.5rem;
|
||||
font-family: var(--ifk-font);
|
||||
}
|
||||
|
||||
/* Links */
|
||||
article a {
|
||||
color: var(--ifk-accent);
|
||||
text-decoration: underline;
|
||||
text-decoration-thickness: 1px;
|
||||
text-underline-offset: 2px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
article a:hover {
|
||||
color: var(--ifk-accent-hover);
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
/* Blockquotes */
|
||||
blockquote {
|
||||
font-family: var(--ifk-font);
|
||||
font-style: italic;
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.6;
|
||||
border-left: 3px solid var(--ifk-secondary);
|
||||
padding-left: 1.5rem;
|
||||
margin: 2rem 0;
|
||||
color: var(--ifk-text);
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
code {
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 0.9rem;
|
||||
background: #f3f4f6;
|
||||
padding: 0.1rem 0.4rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
pre {
|
||||
background: #1f2937;
|
||||
color: #f3f4f6;
|
||||
padding: 1.5rem;
|
||||
border-radius: 0.5rem;
|
||||
overflow-x: auto;
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 0.9rem;
|
||||
line-height: 1.5;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
pre code {
|
||||
background: none;
|
||||
color: inherit;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 1.5rem 0;
|
||||
font-family: var(--ifk-font);
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
th, td {
|
||||
padding: 0.75rem 1rem;
|
||||
border: 1px solid #e5e7eb;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f3f4f6;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
ul, ol {
|
||||
margin-left: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.5rem;
|
||||
font-family: var(--ifk-font);
|
||||
font-size: 1.375rem;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* Navigation */
|
||||
nav, header, footer {
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
}
|
||||
|
||||
nav a {
|
||||
text-decoration: none;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
nav a:hover {
|
||||
color: var(--ifk-accent);
|
||||
}
|
||||
|
||||
/* Article metadata */
|
||||
.article-meta, .post-meta, time, .reading-time {
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
font-size: 0.95rem;
|
||||
color: #6b7280;
|
||||
}
|
||||
|
||||
/* Tags */
|
||||
.taxonomy-term, [href*="/tags/"], [href*="/categories/"] {
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
font-size: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
color: var(--ifk-accent);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.taxonomy-term:hover, [href*="/tags/"]:hover, [href*="/categories/"]:hover {
|
||||
color: var(--ifk-accent-hover);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Table of Contents */
|
||||
#TableOfContents, #TableOfContents li, #TableOfContents a, #sidebar-toc, #sidebar-toc li, #sidebar-toc a {
|
||||
font-family: system-ui, -apple-system, sans-serif !important;
|
||||
font-size: 0.8rem !important;
|
||||
line-height: 1.6 !important;
|
||||
}
|
||||
|
||||
#TableOfContents a, #sidebar-toc a {
|
||||
color: #4b5563;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#TableOfContents a:hover, #sidebar-toc a:hover {
|
||||
color: var(--ifk-text);
|
||||
}
|
||||
|
||||
#TableOfContents a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Status badges (for shortcodes) */
|
||||
.csm-enforced { background: #667eea; color: white; }
|
||||
.csm-passed { background: #764ba2; color: white; }
|
||||
.csm-progress { background: #a5b4fc; color: #312e81; }
|
||||
.csm-guidelines { background: #e0e7ff; color: #3730a3; }
|
||||
|
||||
/* Shortcode-specific overrides */
|
||||
.ifk-stat-num { font-family: var(--ifk-font); }
|
||||
.ifk-stat-label { font-family: system-ui, -apple-system, sans-serif; }
|
||||
.ifk-chart-card h4 { font-family: system-ui, -apple-system, sans-serif; }
|
||||
|
||||
/* Responsive design */
|
||||
@media (max-width: 768px) {
|
||||
h1, .article-title {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
article p, li {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
}
|
||||
@@ -28,23 +28,23 @@ contentDir = "content/de"
|
||||
[[menus.main]]
|
||||
identifier = "about"
|
||||
name = "Über uns"
|
||||
url = "/about/"
|
||||
pageRef = "/about"
|
||||
weight = 2
|
||||
|
||||
[[menus.main]]
|
||||
identifier = "tags"
|
||||
name = "Themen"
|
||||
url = "/tags/"
|
||||
pageRef = "/tags"
|
||||
weight = 3
|
||||
|
||||
[[menus.footer]]
|
||||
identifier = "impressum"
|
||||
name = "Impressum"
|
||||
url = "/impressum/"
|
||||
pageRef = "/impressum"
|
||||
weight = 1
|
||||
|
||||
[[menus.footer]]
|
||||
identifier = "privacy"
|
||||
name = "Datenschutzerklärung"
|
||||
url = "/datenschutz/"
|
||||
pageRef = "/datenschutz"
|
||||
weight = 2
|
||||
|
||||
@@ -28,23 +28,23 @@ contentDir = "content/en"
|
||||
[[menus.main]]
|
||||
identifier = "about"
|
||||
name = "About"
|
||||
url = "/about/"
|
||||
pageRef = "/about"
|
||||
weight = 2
|
||||
|
||||
[[menus.main]]
|
||||
identifier = "tags"
|
||||
name = "Topics"
|
||||
url = "/tags/"
|
||||
pageRef = "/tags"
|
||||
weight = 3
|
||||
|
||||
[[menus.footer]]
|
||||
identifier = "impressum"
|
||||
name = "Imprint"
|
||||
url = "/imprint/"
|
||||
pageRef = "/imprint"
|
||||
weight = 1
|
||||
|
||||
[[menus.footer]]
|
||||
identifier = "privacy"
|
||||
name = "Privacy Policy"
|
||||
url = "/privacy/"
|
||||
pageRef = "/privacy"
|
||||
weight = 2
|
||||
|
||||
@@ -28,23 +28,23 @@ contentDir = "content/fr"
|
||||
[[menus.main]]
|
||||
identifier = "about"
|
||||
name = "À propos"
|
||||
url = "/about/"
|
||||
pageRef = "/about"
|
||||
weight = 2
|
||||
|
||||
[[menus.main]]
|
||||
identifier = "tags"
|
||||
name = "Sujets"
|
||||
url = "/tags/"
|
||||
pageRef = "/tags"
|
||||
weight = 3
|
||||
|
||||
[[menus.footer]]
|
||||
identifier = "impressum"
|
||||
name = "Mentions légales"
|
||||
url = "/mentions-legales/"
|
||||
pageRef = "/mentions-legales"
|
||||
weight = 1
|
||||
|
||||
[[menus.footer]]
|
||||
identifier = "privacy"
|
||||
name = "Politique de confidentialité"
|
||||
url = "/politique-de-confidentialite/"
|
||||
pageRef = "/politique-de-confidentialite"
|
||||
weight = 2
|
||||
|
||||
@@ -1,34 +1,18 @@
|
||||
colorScheme = "avocado"
|
||||
colorScheme = "light"
|
||||
defaultAppearance = "light"
|
||||
autoSwitchAppearance = false
|
||||
mainSections = [""]
|
||||
|
||||
# Blox Core config
|
||||
minimal = false
|
||||
|
||||
[header]
|
||||
layout = "basic"
|
||||
showTitle = true
|
||||
navbar = true
|
||||
|
||||
[footer]
|
||||
showCopyright = true
|
||||
showThemeAttribution = false
|
||||
showScrollToTop = true
|
||||
showAppearanceSwitcher = false
|
||||
copyright = "© Internet for Kids"
|
||||
privacyPolicy = "/privacy"
|
||||
|
||||
[homepage]
|
||||
layout = "profile"
|
||||
showRecent = true
|
||||
recentLimit = 5
|
||||
|
||||
[article]
|
||||
showDate = true
|
||||
showReadingTime = true
|
||||
showAuthor = true
|
||||
showBreadcrumbs = true
|
||||
showTableOfContents = true
|
||||
showTaxonomies = true
|
||||
|
||||
[list]
|
||||
showBreadcrumbs = true
|
||||
showTaxonomies = true
|
||||
|
||||
[taxonomy]
|
||||
showTermCount = true
|
||||
[appearance]
|
||||
color_theme = "ifk"
|
||||
font_theme = "ifk_fonts"
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: "Internet für Kinder"
|
||||
subtitle: "Kinderschutz in der digitalen Welt"
|
||||
description: "Experteneinblicke zu Kinderschutzgesetzen, Online-Sicherheit und digitalem Familienschutz weltweit."
|
||||
---
|
||||
|
||||
@@ -10,8 +11,7 @@ Der Schutz von Kindern im Internet ist eine der wichtigsten Herausforderungen un
|
||||
- **Kinderschutzgesetze** — Länderweise Analyse der Vorschriften zum Schutz junger Nutzer im Internet
|
||||
- **Online-Sicherheitstools** — Bewertungen und Anleitungen für Kindersicherungen, VPNs und Inhaltsfilter
|
||||
- **Digitale Erziehung** — Praktische Ratschläge für die Kindererziehung in einer vernetzten Welt
|
||||
- **Expertenanalysen** — Ausführliche Berichte über neue Bedrohungen und Lösungen
|
||||
|
||||
{{< child-safety-map >}}
|
||||
{{< world-map >}}
|
||||
|
||||
*Herausgegeben von [Agiliton](https://www.agiliton.eu), einem europäischen Technologieunternehmen für Datenschutz, Sicherheit und Familienschutz.*
|
||||
|
||||
@@ -3,26 +3,34 @@ title: "Über uns"
|
||||
showDate: false
|
||||
showReadingTime: false
|
||||
showAuthor: false
|
||||
description: "Über Internet für Kinder — wer wir sind und warum wir über Kinderschutz und Online-Sicherheit berichten."
|
||||
description: "Über Internet for Kids — wer wir sind und warum wir über Kinderschutz und Online-Sicherheit berichten."
|
||||
translationKey: "about"
|
||||
---
|
||||
|
||||
**Internet für Kinder** ist eine Publikation von [Agiliton](https://www.agiliton.eu), einem europäischen Technologieunternehmen mit Fokus auf Datenschutz, Sicherheit und Familienschutzlösungen.
|
||||
**Internet for Kids** ist eine Publikation von [Agiliton](https://www.agiliton.eu), einem europäischen Technologieunternehmen mit Fokus auf Datenschutz, Sicherheit und Familienschutzlösungen.
|
||||
|
||||
## Unsere Mission
|
||||
|
||||
Wir glauben, dass jeder Elternteil klare, umsetzbare Informationen verdient über:
|
||||
Jeder Elternteil verdient klare, umsetzbare Informationen über:
|
||||
|
||||
- **Kinderschutzgesetze** — welche Rechte Sie haben und was Plattformen tun müssen
|
||||
- **Online-Sicherheitstools** — Technologie, die Ihre Familie schützt
|
||||
- **Kinderschutzgesetze** — welche Rechte Familien haben und was Plattformen tun müssen
|
||||
- **Online-Sicherheitstools** — Technologie, die Familien schützt
|
||||
- **Digitale Erziehung** — praktische Ratschläge für das Aufwachsen in einer vernetzten Welt
|
||||
|
||||
## Wer wir sind
|
||||
|
||||
Hinter Internet for Kids stehen **Wibke und Christian Gick**, die Gründer von Agiliton — und Eltern zweier Kinder im Alter von 10 und 12 Jahren.
|
||||
|
||||
**Wibke** ist Journalistin mit über 25 Jahren Erfahrung in Recherche, Faktenprüfung und verständlicher Aufbereitung komplexer Themen. **Christian** ist digitaler Unternehmer mit ebenso langer Erfahrung in Softwareentwicklung, IT-Sicherheit und Infrastruktur. Seit fast 20 Jahren verheiratet, erleben beide täglich, was es bedeutet, Kinder in einer digitalen Welt zu begleiten.
|
||||
|
||||
Diese Kombination aus journalistischer Sorgfalt und technischem Tiefgang macht Internet for Kids aus. Denn Gesetze sind nur ein Teil der Lösung. Wirklicher Schutz entsteht erst, wenn technische Lösungen sorgfältig umgesetzt werden — mit tiefem Verständnis für die Technik, aber einfach genug, dass jede Familie sie nutzen kann.
|
||||
|
||||
## Warum wir das tun
|
||||
|
||||
Das Internet wurde nicht für Kinder konzipiert. Während Regierungen weltweit versuchen, mit der Regulierung Schritt zu halten, müssen Eltern sich in einer verwirrenden Landschaft aus Gesetzen, Plattformrichtlinien und technischen Lösungen zurechtfinden.
|
||||
|
||||
Wir schneiden durch den Lärm mit gut recherchierten, sachlichen Artikeln, die Ihnen helfen zu verstehen, was sich ändert und was Sie dagegen tun können.
|
||||
Wir liefern gut recherchierte, sachliche Artikel, die helfen zu verstehen, was sich ändert und was man konkret tun kann.
|
||||
|
||||
## Kontakt
|
||||
|
||||
Fragen oder Anregungen? Erreichen Sie uns unter [service@agiliton.eu](mailto:service@agiliton.eu).
|
||||
Fragen oder Anregungen? Erreichbar unter [service@agiliton.eu](mailto:service@agiliton.eu).
|
||||
|
||||
114
content/de/griechenland-social-media-verbot-unter-15.md
Normal file
114
content/de/griechenland-social-media-verbot-unter-15.md
Normal file
@@ -0,0 +1,114 @@
|
||||
---
|
||||
title: "Griechenland verbietet Social Media für unter 15-Jährige ab 2027"
|
||||
date: 2026-04-08
|
||||
description: "Griechenland kündigt ein Social-Media-Verbot für Kinder unter 15 Jahren an und reiht sich damit in eine wachsende weltweite Bewegung zum Schutz junger Menschen im Internet ein."
|
||||
tags: ["Kinderschutz", "Gesetzgebung", "Griechenland", "Social-Media-Verbot", "Altersverifikation", "Europa", "Zypern"]
|
||||
categories: ["Gesetzgebung"]
|
||||
author: "Agiliton"
|
||||
slug: "griechenland-social-media-verbot-unter-15"
|
||||
translationKey: "greece-social-media-ban"
|
||||
---
|
||||
|
||||
Griechenland hat angekündigt, Kindern unter 15 Jahren die Nutzung von Social Media zu verbieten — und die Ankündigung kam auf ungewöhnlichem Weg. Am 8. April 2026 veröffentlichte Premierminister Kyriakos Mitsotakis ein Video auf TikTok, um ein Verbot von... TikTok (und anderen Plattformen) für junge Nutzer bekannt zu geben.
|
||||
|
||||
„Wir haben beschlossen, etwas Schwieriges, aber Notwendiges zu tun — den Zugang zu Social Media für Kinder unter 15 Jahren zu verbieten", sagte der Premierminister in seiner Videobotschaft.
|
||||
|
||||
## Was genau wird verboten?
|
||||
|
||||
Ab dem **1. Januar 2027** dürfen Kinder unter 15 Jahren in Griechenland keine großen Social-Media-Plattformen mehr nutzen. Hier ist die Übersicht:
|
||||
|
||||
**Verbotene Plattformen:**
|
||||
- Facebook
|
||||
- Instagram
|
||||
- TikTok
|
||||
- Snapchat
|
||||
- X (ehemals Twitter)
|
||||
- Andere Plattformen, die auf „endloses Scrollen" und nutzergenerierte Inhalte setzen
|
||||
|
||||
**Weiterhin erlaubt:**
|
||||
- WhatsApp, Messenger, Viber (Messaging-Apps)
|
||||
- YouTube (Videoplattform)
|
||||
- Videoanruf-Apps
|
||||
|
||||
Die Unterscheidung ist klar: Apps für Kommunikation bleiben erlaubt, während Plattformen, die auf süchtig machende Feeds und Algorithmen aufgebaut sind, eingeschränkt werden.
|
||||
|
||||
## Warum macht Griechenland das?
|
||||
|
||||
Die griechische Regierung nannte drei Hauptgründe:
|
||||
|
||||
1. **Psychische Gesundheit** — Forschungsergebnisse des Imperial College London (2026) zeigen, dass Kinder, die Social Media mehr als 3 Stunden täglich nutzen, deutlich häufiger Depressionen und Angstzustände entwickeln.
|
||||
|
||||
2. **Suchterzeugendes Design** — Social-Media-Algorithmen sind gezielt darauf ausgelegt, Nutzer zum Weiterscrollen zu bringen. Premierminister Mitsotakis kritisierte „das suchterzeugende Design einiger Apps" und ihre „profitgetriebenen" Algorithmen.
|
||||
|
||||
3. **Schlafprobleme** — Mehrere Studien belegen einen Zusammenhang zwischen intensiver Social-Media-Nutzung bei jungen Menschen und schlechter Schlafqualität, was sich auf schulische Leistungen, Stimmung und körperliche Gesundheit auswirkt.
|
||||
|
||||
## Griechenland schließt sich einer weltweiten Welle an
|
||||
|
||||
Griechenland ist nicht allein. Länder auf der ganzen Welt ergreifen ähnliche Maßnahmen:
|
||||
|
||||
| Land | Altersgrenze | Status | Detail |
|
||||
|---|---|---|---|
|
||||
| **Australien** | Unter 16 | In Kraft (Dez. 2025) | Weltweit erstes Land; Bußgelder bis 49,5 Mio. AUD |
|
||||
| **Indonesien** | Unter 16 | In Kraft (März 2026) | Unternehmen wegen Nichteinhaltung vorgeladen |
|
||||
| **Frankreich** | Unter 15 | Beschlossen (Apr. 2026) | Blacklist-Ansatz durch Regulierer Arcom |
|
||||
| **Griechenland** | Unter 15 | Angekündigt (Apr. 2026) | Tritt am 1. Jan. 2027 in Kraft |
|
||||
| **Norwegen** | Unter 15 | Vorgeschlagen | Gesetzentwurf in Arbeit |
|
||||
|
||||
## Funktioniert es wirklich? Die Erfahrung aus Australien
|
||||
|
||||
Australien war im Dezember 2025 das erste Land, das ein Social-Media-Verbot für unter 16-Jährige durchsetzte. Vier Monate später sind die Ergebnisse gemischt: Studien deuten darauf hin, dass etwa **70 % der Kinder** weiterhin Wege fanden, auf die verbotenen Plattformen zuzugreifen.
|
||||
|
||||
Das wirft eine wichtige Frage auf: Können Verbote wirklich funktionieren, wenn entschlossene Teenager wissen, wie man Beschränkungen umgeht? Kritiker argumentieren, dass Verbote junge Menschen in weniger sichere Ecken des Internets drängen, anstatt sie vollständig fernzuhalten.
|
||||
|
||||
Zwei australische Teenager — Noah Jones und Macy Neyland — fechten das Verbot sogar vor Gericht an, weil es die Rechte von Kindern missachte.
|
||||
|
||||
## Das Problem mit der Altersverifikation
|
||||
|
||||
Um ein Verbot durchzusetzen, müssen Plattformen wissen, wie alt ihre Nutzer sind. Aber das Alter online zu verifizieren, ist überraschend schwierig:
|
||||
|
||||
- **Gesichtsscans** — KI kann das Alter anhand von Fotos schätzen, wirft aber ernsthafte Datenschutzbedenken auf. Wer speichert diese biometrischen Daten?
|
||||
- **Ausweiskontrollen** — Effektiv, aber viele junge Menschen haben keinen amtlichen Ausweis
|
||||
- **Datenschutz-Paradoxon** — Um Social Media zum Schutz der Privatsphäre von Kindern zu verbieten, müssen noch mehr persönliche Daten zur Altersverifikation erhoben werden
|
||||
|
||||
Griechenland nimmt zusammen mit Frankreich, Dänemark, Italien, Spanien und Zypern an einem **EU-Pilotprogramm zur Altersverifikation** teil, das Lösungen testet, die an nationale Melderegister angebunden sind.
|
||||
|
||||
## Was ist mit Zypern?
|
||||
|
||||
Als EU-Mitglied und enger Nachbar Griechenlands beobachtet Zypern die Entwicklung genau:
|
||||
|
||||
- **Aktuelle Altersgrenze**: 14 Jahre (im Rahmen der DSGVO)
|
||||
- **Aktueller Vorschlag**: Ein Gesetzentwurf zur Anhebung des Mindestalters von 14 auf 16 wird im Rechtsausschuss des Parlaments beraten
|
||||
- **EU-Ratspräsidentschaft**: Präsident Nikos Christodoulides hat die digitale Sicherheit von Kindern zur Priorität der zyprischen EU-Ratspräsidentschaft 2026 erklärt
|
||||
- **Gemeinsamer Brief**: Zypern hat zusammen mit Frankreich, Griechenland, Spanien, Dänemark und Slowenien einen Brief unterzeichnet, der ein EU-weites „digitales Volljährigkeitsalter" fordert
|
||||
- **Pilotprogramm Altersverifikation**: Zypern ist eines von sechs EU-Ländern, die Altersverifikations-Technologie testen
|
||||
|
||||
Zypern hat zudem einen eigenen Gesetzentwurf eingebracht, der **digitale Bildung als Pflichtfach** an allen Schulen vorsieht — junge Menschen sollen lernen, das Internet sicher zu nutzen, anstatt einfach nur davon ausgesperrt zu werden.
|
||||
|
||||
## Beide Seiten der Debatte
|
||||
|
||||
**Für Verbote:**
|
||||
- Schutz vor süchtig machenden Algorithmen, die auf maximale Nutzungsdauer ausgelegt sind
|
||||
- Weniger Kontakt mit schädlichen Inhalten, Cybermobbing und unrealistischen Vergleichen
|
||||
- Kinder bekommen Zeit, emotionale Widerstandsfähigkeit zu entwickeln, bevor sie Social Media nutzen
|
||||
|
||||
**Gegen Verbote:**
|
||||
- Schwer durchzusetzen (Australiens 70-%-Umgehungsrate)
|
||||
- Plattformen für Unterstützungsgemeinschaften, Kreativität und gesellschaftliches Engagement gehen verloren
|
||||
- Altersverifikation schafft neue Datenschutzrisiken
|
||||
- Teenager könnten auf unregulierte oder weniger sichere Plattformen ausweichen
|
||||
|
||||
Amnesty International bezeichnet Social-Media-Verbote als „wirkungslose Schnelllösung", während UNICEF warnt, dass altersbasierte Beschränkungen allein Kinder nicht schützen.
|
||||
|
||||
## Was das für Familien bedeutet
|
||||
|
||||
- **In Griechenland**: Ab Januar 2027 müssen Plattformen per Gesetz verhindern, dass unter 15-Jährige auf Social Media zugreifen. Eltern müssen sich nicht mehr allein auf Kinderschutzeinstellungen verlassen.
|
||||
- **In ganz Europa**: Griechenlands Entscheidung verstärkt den EU-weiten Trend. Weitere Länder werden voraussichtlich folgen.
|
||||
- **Überall**: Unabhängig von lokalen Gesetzen können Familien über gesunde Bildschirmzeiten sprechen und den Unterschied zwischen dem Austausch mit Freunden und endlosem Scrollen durch Feeds besprechen.
|
||||
|
||||
## Wie geht es weiter?
|
||||
|
||||
Griechenland wird in den kommenden Monaten die detaillierte Gesetzgebung ausarbeiten. Das Verbot soll am **1. Januar 2027** in Kraft treten. Die wichtigsten offenen Fragen sind, wie die Altersverifikation in der Praxis funktionieren wird und welche Strafen Plattformen bei Nichteinhaltung drohen.
|
||||
|
||||
---
|
||||
|
||||
*Einen umfassenden Überblick über Kinderschutzgesetze weltweit gibt es in unserer [globalen Übersicht](/de/kinderschutzgesetze-2026-weltweiter-ueberblick/). Wie Social-Media-Plattformen gezielt süchtig machen, erklärt unser Artikel über [Tech-Konzerne und das Sucht-Geschäftsmodell](/de/tech-konzerne-sucht-als-geschaeftsmodell/).*
|
||||
@@ -13,7 +13,10 @@ Regierungen auf der ganzen Welt ergreifen beispiellose Maßnahmen zum Schutz von
|
||||
|
||||
Hier erfahren Sie, was Sie über die wichtigsten Kinderschutzgesetze wissen müssen, die in diesem Jahr in Kraft treten.
|
||||
|
||||
{{< child-safety-map >}}
|
||||
{{< stats-banner >}}
|
||||
|
||||
{{< world-map >}}
|
||||
|
||||
|
||||
## Australien: Das erste Land mit Social-Media-Verbot für unter 16-Jährige
|
||||
|
||||
@@ -69,6 +72,8 @@ Ein erster Prototyp wurde im Juli 2025 veröffentlicht, eine zweite Version im O
|
||||
|
||||
**Was das für Eltern in der EU bedeutet:** Bis Ende 2026 werden Plattformen, die in Europa tätig sind, einer strengeren Durchsetzung der Altersverifikation ausgesetzt sein. Die Digitale-Identität-Wallet könnte zum Standard werden, mit dem Ihre Kinder ihr Alter online nachweisen — ohne persönliche Daten herauszugeben.
|
||||
|
||||
{{< child-safety-map >}}
|
||||
|
||||
## Deutschland: Stärkung des Jugendschutzgesetzes
|
||||
|
||||
Deutschland steht seit langem an der Spitze des Kinderschutzes durch sein *Jugendschutzgesetz* (JuSchG). Die Novelle von 2021, die den Geltungsbereich des Gesetzes auf Online-Plattformen ausdehnte, wird mit zunehmender Strenge durchgesetzt. Plattformen müssen nun:
|
||||
@@ -87,6 +92,8 @@ Brasilien hat das *Estatuto Digital da Criança e do Adolescente* (Digitales Kin
|
||||
- Anforderungen an altersgerechtes Design in digitalen Diensten
|
||||
- Verstärkte Datenschutzmaßnahmen für personenbezogene Daten von Kindern
|
||||
|
||||
{{< law-charts >}}
|
||||
|
||||
## Was Eltern jetzt tun können
|
||||
|
||||
Während die Gesetzgebung aufholt, müssen Eltern nicht auf das Inkrafttreten neuer Gesetze warten. Hier sind praktische Schritte, die Sie heute unternehmen können:
|
||||
@@ -109,7 +116,6 @@ Die Gesetze sind nicht perfekt. Es gibt berechtigte Bedenken hinsichtlich des Da
|
||||
|
||||
Während diese Gesetze in Kraft treten, wird der wirksamste Schutz immer eine Kombination aus kluger Gesetzgebung, verantwortungsvollem Plattformdesign und engagierter Elternschaft sein. Technologie kann dabei helfen, die Lücke zu schließen.
|
||||
|
||||
{{< vpn-cta >}}
|
||||
|
||||
## Häufig gestellte Fragen
|
||||
|
||||
|
||||
130
content/de/tech-konzerne-sucht-als-geschaeftsmodell.md
Normal file
130
content/de/tech-konzerne-sucht-als-geschaeftsmodell.md
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: "Wie Tech-Konzerne Sucht zum Geschäftsmodell gemacht haben"
|
||||
date: 2026-04-06
|
||||
description: "Instagram, TikTok und andere Plattformen nutzen gezielte Designmuster, um Kinder zum Weiterscrollen zu bringen. Gerichte und Regulierungsbehörden beginnen, sie zur Verantwortung zu ziehen."
|
||||
tags: ["social-media", "sucht", "kinderschutz", "meta", "tiktok"]
|
||||
categories: ["legislation"]
|
||||
author: "Agiliton"
|
||||
slug: "tech-konzerne-sucht-als-geschaeftsmodell"
|
||||
translationKey: "tech-addiction-business-model"
|
||||
---
|
||||
|
||||
Fast die Hälfte aller Jugendlichen gibt an, sich süchtig nach sozialen Medien zu fühlen. Das ist kein Zufall. Die Plattformen, die sie täglich nutzen — Instagram, TikTok, Snapchat, YouTube — wurden so gestaltet, dass man sie nur schwer weglegen kann. Im Jahr 2026 beginnen Gerichte und Regulierungsbehörden weltweit, dies als das zu behandeln, was es ist: eine bewusste Geschäftsstrategie, die auf der Aufmerksamkeit von Kindern aufbaut.
|
||||
|
||||
Hier erfahren Eltern, wie diese Plattformen funktionieren, was die Forschung zeigt und was dagegen unternommen wird.
|
||||
|
||||
{{< addiction-chart >}}
|
||||
|
||||
## Das Sucht-Handbuch der Plattformen
|
||||
|
||||
Social-Media-Plattformen nutzen eine Reihe gut dokumentierter Designmuster, die ausnutzen, wie das menschliche Gehirn Belohnungen und Erwartungen verarbeitet. Das sind keine Fehler oder Nebeneffekte — es sind zentrale Produktmerkmale.
|
||||
|
||||
**Endloses Scrollen** beseitigt natürliche Haltepunkte. Anders als ein Buch mit Kapiteln oder eine Fernsehsendung mit Episoden endet ein Social-Media-Feed nie. Nutzer scrollen weiter, weil immer etwas Neues direkt darunter wartet.
|
||||
|
||||
**Variable Belohnungen** funktionieren nach dem gleichen psychologischen Prinzip wie Spielautomaten. Likes, Kommentare und Shares kommen unvorhersehbar und lösen Dopaminreaktionen aus, die Nutzer immer wieder zurückbringen. Der ehemalige Google-Designethiker Tristan Harris hat es direkt formuliert: „Mehrere Milliarden Menschen haben einen Spielautomaten in der Tasche."
|
||||
|
||||
**Autoplay und Empfehlungen** sorgen dafür, dass Inhalte ohne jede Nutzeraktion weiterlaufen. Personalisierte Algorithmen lernen, was jeden einzelnen Nutzer am längsten beschäftigt hält, und liefern automatisch mehr davon.
|
||||
|
||||
**Streaks und Benachrichtigungen** erzeugen künstliche Dringlichkeit. Snapchat-Streaks bestrafen Nutzer, die auch nur kurz aufhören. Push-Benachrichtigungen wie „Deine Freunde schauen gerade" lösen Angst aus, etwas zu verpassen, und ziehen Nutzer zurück in die App.
|
||||
|
||||
**Personalisierte Empfehlungssysteme** gehen weit über einfache Vorschläge hinaus. Sie erstellen detaillierte Verhaltensprofile jedes Nutzers — auch Minderjähriger — und nutzen diese Profile, um die auf der Plattform verbrachte Zeit zu maximieren.
|
||||
|
||||
Diese Muster sind nicht zufällig. Sie sind das Produkt. Je länger Nutzer bleiben, desto mehr Werbung sehen sie und desto mehr Umsatz generiert die Plattform.
|
||||
|
||||
## Sie wussten Bescheid
|
||||
|
||||
Interne Dokumente großer Plattformen haben offenbart, dass Unternehmen wussten, dass ihre Produkte jungen Nutzern schaden können — und trotzdem genauso weitermachten.
|
||||
|
||||
2021 zeigte geleakte interne Forschung von Meta, dass das Unternehmen wusste, dass Instagram mit Körperbildproblemen und Depressionen bei Mädchen im Teenageralter zusammenhängt. Das Unternehmen machte diese Erkenntnisse nicht öffentlich und änderte das Produkt nicht wesentlich.
|
||||
|
||||
2023 veröffentlichte der [US-Gesundheitsbeauftragte](https://www.hhs.gov/surgeongeneral/reports-and-publications/youth-mental-health/social-media/index.html) Vivek Murthy eine formelle Warnung zu sozialen Medien und psychischer Gesundheit Jugendlicher. Er warnte, dass die aktuelle Beweislage zeigt, dass Social Media ein „tiefgreifendes Risiko" für Kinder und Jugendliche darstellt. Später forderte er Warnhinweise auf Social-Media-Plattformen — ein Schritt, der die Zustimmung des Kongresses erfordern würde.
|
||||
|
||||
Eine [von Meta geförderte Studie](https://techcrunch.com/2026/02/17/metas-own-research-found-parental-supervision-doesnt-really-help-curb-teens-compulsive-social-media-use/) aus dem Jahr 2026 ergab, dass traumatisierte Kinder am anfälligsten für Social-Media-Abhängigkeit sind und dass Kindersicherungen weitgehend unwirksam sind, sobald eine Abhängigkeit besteht.
|
||||
|
||||
Die [American Psychological Association](https://www.apa.org/topics/social-media-internet/health-advisory-adolescent-social-media-use) hat ihre eigene Gesundheitswarnung zum Social-Media-Konsum von Jugendlichen herausgegeben und die Bedenken des Gesundheitsbeauftragten zu den Auswirkungen auf sich entwickelnde Gehirne bestätigt.
|
||||
|
||||
{{< addiction-stat num="5h" color="#667eea" label="Durchschnittliche tägliche Social-Media-Nutzung bei Jugendlichen — Gallup/Pew Research" >}}
|
||||
|
||||
## Die Zahlen
|
||||
|
||||
Das Ausmaß des Problems ist kaum zu überschätzen.
|
||||
|
||||
- **95 %** der Kinder zwischen 10 und 17 Jahren nutzen regelmäßig soziale Medien
|
||||
- Jugendliche verbringen durchschnittlich **5 Stunden pro Tag** auf Social-Media-Plattformen
|
||||
- **47 %** der Jugendlichen geben an, sich süchtig nach sozialen Medien zu fühlen
|
||||
- Die Nutzung sozialer Medien für **3 oder mehr Stunden täglich** ist laut einer Studie in [JAMA Psychiatry](https://jamanetwork.com/journals/jamapsychiatry/fullarticle/2749480) mit deutlich höheren Raten von Angststörungen und Depressionen verbunden
|
||||
- Kinder mit Social-Media-Sucht haben laut Forschung der [Weill Cornell Medicine](https://news.weill.cornell.edu/news/2025/06/study-finds-addictive-screen-use-not-total-screen-time-linked-to-youth-suicide-risk) ein **2- bis 3-fach höheres Risiko** für Suizidgedanken
|
||||
- **45 %** der US-Jugendlichen berichten, dass Social Media ihren Schlaf negativ beeinflusst
|
||||
|
||||
{{< addiction-stat num="2-3x" color="#ef4444" label="Höheres Risiko für Suizidgedanken bei Social-Media-Abhängigkeit — Weill Cornell Medicine" >}}
|
||||
|
||||
Der [World Happiness Report 2026](https://www.worldhappiness.report/ed/2026/social-media-is-harming-adolescents-at-a-scale-large-enough-to-cause-changes-at-the-population-level/) dokumentierte, dass soziale Medien „Jugendliche in einem Ausmaß schädigen, das groß genug ist, um Veränderungen auf Bevölkerungsebene zu verursachen" — eine der deutlichsten Aussagen einer großen globalen Forschungsinitiative bisher.
|
||||
|
||||
## Die Gerichte holen auf
|
||||
|
||||
2026 ist ein Wendepunkt in der rechtlichen Verantwortlichkeit von Social-Media-Unternehmen geworden.
|
||||
|
||||
In einem wegweisenden Prozess in Los Angeles (Januar–März 2026) befand eine Jury **Meta und Google für schuldig** an Schäden durch süchtig machendes Design und sprach einem 20-jährigen Kläger **6 Millionen Dollar** Schadenersatz zu. TikTok und Snap einigten sich kurz vor dem Urteil außergerichtlich, um einem Juryurteil zu entgehen.
|
||||
|
||||
In New Mexico wurde Meta zur Zahlung von **375 Millionen Dollar** in einem Vergleich verurteilt, weil das Unternehmen wissentlich die psychische Gesundheit von Kindern durch seine Plattformen geschädigt hatte.
|
||||
|
||||
Anfang 2026 sind über **2.400 Klagen** in einem gebündelten Bundesverfahren (MDL) gegen Social-Media-Unternehmen anhängig — gegenüber rund 1.200 Fällen ein Jahr zuvor. Eine überparteiliche Koalition von **32 Generalstaatsanwälten** hat eine Bundesklage eingereicht, und einzelne Bundesstaaten wie Minnesota und Kalifornien verfolgen eigene Fälle.
|
||||
|
||||
Die Klagen konzentrieren sich gezielt auf **süchtig machende Designelemente** — endloses Scrollen, Verhaltenstracking, algorithmische Manipulation — und nicht auf Inhalte Dritter. Diese Unterscheidung ist wichtig: Sie zielt auf das Geschäftsmodell selbst ab.
|
||||
|
||||
{{< addiction-stat num="3h+" color="#764ba2" label="Tägliche Nutzungsschwelle, ab der Angst und Depression deutlich zunehmen — JAMA Psychiatry" >}}
|
||||
|
||||
## Europa geht bei der Regulierung voran
|
||||
|
||||
Die Europäische Union hat die bisher direktesten regulatorischen Maßnahmen gegen süchtig machendes Design ergriffen.
|
||||
|
||||
Im Februar 2026 stellte die [Europäische Kommission](https://digital-strategy.ec.europa.eu/en/news/commission-preliminarily-finds-tiktoks-addictive-design-breach-digital-services-act) vorläufig fest, dass **TikTok gegen den Digital Services Act (DSA) verstoßen** hat — und zwar ausdrücklich wegen seiner süchtig machenden Designarchitektur. Dies war das erste Mal, dass die EU direkt die Kombination aus endlosem Scrollen, Autoplay, Push-Benachrichtigungen und personalisierten Empfehlungen als systemisches Risiko für Minderjährige und vulnerable Erwachsene eingestuft hat. TikTok drohen Geldbußen von bis zu **6 % des weltweiten Jahresumsatzes**.
|
||||
|
||||
Im Oktober 2025 stellte die Kommission fest, dass sowohl TikTok als auch Meta systematisch Forschern den Zugang verwehrt haben, um zu untersuchen, wie Inhalte Kinder auf ihren Plattformen erreichen — ein Verstoß gegen die Transparenzanforderungen des DSA. Die kombinierten potenziellen Geldbußen könnten rund **20 Milliarden Dollar** erreichen.
|
||||
|
||||
Recherchen von [Amnesty International](https://www.amnesty.org/en/latest/news/2025/10/tiktok-steering-children-towards-depressive-and-suicidal-content/) in Frankreich ergaben, dass TikToks Algorithmus Kinder, die Interesse an psychischen Gesundheitsthemen zeigen, in Spiralen von Inhalten zieht, die Selbstverletzung und Suizid verharmlosen.
|
||||
|
||||
Das Vorgehen der EU spiegelt einen wachsenden politischen Konsens in Europa wider, dass süchtig machendes Plattformdesign kein Nebeneffekt, sondern eine zentrale Geschäftsstrategie ist — und dass die Regulierung das Geschäftsmodell selbst ins Visier nehmen muss, nicht nur die Inhalte, die es verstärkt.
|
||||
|
||||
## Was Eltern jetzt tun können
|
||||
|
||||
Während Gesetzgebung und Gerichtsentscheidungen aufholen, bleiben Eltern die erste Verteidigungslinie. Hier sind fünf praktische Schritte:
|
||||
|
||||
1. **Datenschutz- und Sicherheitseinstellungen prüfen** — auf jeder Plattform, die Kinder nutzen. Viele Dienste haben als Reaktion auf regulatorischen Druck damit begonnen, verbesserte Kindersicherungen einzuführen.
|
||||
|
||||
2. **Mit Kindern sprechen** — darüber, wie diese Plattformen gestaltet sind, um zum Weiterscrollen zu verleiten. Das Verständnis der Mechanismen von endlosem Scrollen und variablen Belohnungen hilft jungen Menschen zu erkennen, wann sie manipuliert werden.
|
||||
|
||||
3. **Inhaltsfilter einsetzen**, die ungeeignete Inhalte auf Netzwerkebene blockieren. Lösungen wie VPN-basierte Inhaltsfilterung können jedes Gerät im Haushalt schützen, ohne dass eine App-für-App-Konfiguration erforderlich ist.
|
||||
|
||||
4. **Klare Bildschirmzeitgrenzen setzen** und diese konsequent durchsetzen. Forschung zeigt, dass das Risiko psychischer Gesundheitsschäden nach 3 Stunden täglicher Nutzung deutlich steigt.
|
||||
|
||||
5. **Auf Anzeichen von Abhängigkeit achten**: Reizbarkeit ohne Handy-Zugang, Interessenverlust an Offline-Aktivitäten, gestörter Schlaf und sinkende Schulleistungen sind Warnsignale.
|
||||
|
||||
## Der Weg nach vorn
|
||||
|
||||
2026 markiert einen grundlegenden Wandel im Umgang der Gesellschaft mit Social-Media-Sucht bei Kindern. Erstmals machen Gerichte Plattformen finanziell für süchtig machendes Design haftbar. Regulierungsbehörden in Europa behandeln dieses Design als Rechtsverstoß. Und der wissenschaftliche Konsens — vom Gesundheitsbeauftragten bis zum World Happiness Report — ist eindeutig: Diese Plattformen verursachen messbaren Schaden an jungen Menschen auf Bevölkerungsebene.
|
||||
|
||||
Die Ära, in der süchtig machendes Design als neutrales Produktmerkmal behandelt wird, geht zu Ende. Was als Nächstes kommt, hängt von anhaltendem rechtlichen Druck, stärkerer Regulierung und informierter Elternschaft ab. Technologie hat dieses Problem geschaffen. Rechenschaftspflicht, Transparenz und engagierte Familien können helfen, es zu lösen.
|
||||
|
||||
**Weiterführend:** Wie [Länder weltweit mit neuen Kinderschutzgesetzen reagieren](/de/kinderschutzgesetze-2026-weltweiter-ueberblick/), und wie [Frankreich soziale Medien für Kinder unter 15 verbietet](/de/frankreich-social-media-verbot-unter-15/).
|
||||
|
||||
{{< faq >}}
|
||||
Ist Social Media wirklich süchtig machend oder ist das eine Übertreibung?
|
||||
In Fachzeitschriften wie JAMA Psychiatry veröffentlichte Forschung und Studien von Institutionen wie der Weill Cornell Medicine zeigen, dass problematischer Social-Media-Konsum zentrale Merkmale von Verhaltenssucht aufweist: Verlangen, Entzugserscheinungen, Kontrollverlust und fortgesetzte Nutzung trotz negativer Folgen. Der US-Gesundheitsbeauftragte hat formell vor dem Risiko für Jugendliche gewarnt. Zwar wird nicht jeder Nutzer abhängig, aber 47 % der Jugendlichen geben an, sich süchtig zu fühlen.
|
||||
~~~
|
||||
Welche Plattformen gelten als die süchtig machendsten für Kinder?
|
||||
TikTok, Instagram, Snapchat und YouTube werden in Forschung und Gerichtsverfahren am häufigsten genannt. TikTok ist insbesondere von der EU wegen seiner Kombination aus endlosem Scrollen, Autoplay und personalisierten Empfehlungen regulatorisch ins Visier genommen worden. Im LA-Prozess 2026 wurden Meta (Instagram, Facebook) und Google (YouTube) für schuldig befunden.
|
||||
~~~
|
||||
Können Kindersicherungen Social-Media-Sucht verhindern?
|
||||
Kindersicherungen können helfen, die Exposition zu begrenzen, besonders bei jüngeren Kindern. Eine 2026 von Meta geförderte Studie ergab jedoch, dass Kindersicherungen weitgehend unwirksam sind, sobald eine Abhängigkeit besteht. Experten empfehlen, technische Kontrollen mit offenen Gesprächen über das Plattformdesign zu kombinieren und klare Grenzen zu setzen, bevor intensiver Konsum beginnt.
|
||||
~~~
|
||||
Was unternimmt die EU gegen süchtig machendes Social-Media-Design?
|
||||
Die Europäische Kommission hat den Digital Services Act (DSA) genutzt, um süchtig machendes Plattformdesign direkt anzugehen. Im Februar 2026 erhielt TikTok einen vorläufigen Verstoßbescheid speziell wegen seiner süchtig machenden Funktionen — das erste Mal, dass die EU Designmuster wie endloses Scrollen und Autoplay als systemische Risiken einstufte. Mögliche Geldbußen können 6 % des weltweiten Umsatzes einer Plattform erreichen.
|
||||
~~~
|
||||
Wie viel Bildschirmzeit ist zu viel für Kinder?
|
||||
In JAMA Psychiatry veröffentlichte Forschung ergab, dass die Nutzung sozialer Medien für 3 oder mehr Stunden pro Tag mit deutlich höheren Raten von Angststörungen und Depressionen bei Jugendlichen verbunden ist. Sowohl der US-Gesundheitsbeauftragte als auch die American Psychological Association empfehlen, dass Eltern klare Grenzen setzen und Nutzungsmuster überwachen, insbesondere rund um die Schlafenszeit.
|
||||
{{< /faq >}}
|
||||
|
||||
---
|
||||
|
||||
*Dieser Artikel spiegelt den Stand der Rechtsprechung, Regulierung und Forschung von April 2026 wider. Für Hintergründe zu Kinderschutzgesetzen weltweit siehe unseren [globalen Überblick](/de/kinderschutzgesetze-2026-weltweiter-ueberblick/).*
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: "Internet for Kids"
|
||||
subtitle: "Protecting Children in a Digital World"
|
||||
description: "Expert insights on child protection laws, online safety, and digital family protection worldwide."
|
||||
---
|
||||
|
||||
@@ -10,8 +11,7 @@ Protecting children online is one of the most important challenges of our time.
|
||||
- **Child Protection Laws** — Country-by-country analysis of regulations that protect young users online
|
||||
- **Online Safety Tools** — Reviews and guides for parental controls, VPNs, and content filters
|
||||
- **Digital Parenting** — Practical advice for raising children in a connected world
|
||||
- **Expert Analysis** — In-depth reporting on emerging threats and solutions
|
||||
|
||||
{{< child-safety-map >}}
|
||||
{{< world-map >}}
|
||||
|
||||
*Published by [Agiliton](https://www.agiliton.eu), a European technology company focused on privacy, security, and family protection.*
|
||||
|
||||
@@ -13,15 +13,23 @@ translationKey: "about"
|
||||
|
||||
We believe every parent deserves clear, actionable information about:
|
||||
|
||||
- **Child protection laws** — what rights you have and what platforms must do
|
||||
- **Online safety tools** — technology that helps protect your family
|
||||
- **Child protection laws** — what rights families have and what platforms must do
|
||||
- **Online safety tools** — technology that helps protect families
|
||||
- **Digital parenting** — practical advice for raising children in a connected world
|
||||
|
||||
## Who We Are
|
||||
|
||||
Internet for Kids is founded by **Wibke and Christian Gick**, the people behind Agiliton — and parents of two children, aged 10 and 12.
|
||||
|
||||
**Wibke** is a journalist with more than 25 years of experience in research, fact-checking, and making complex topics accessible. **Christian** is a digital entrepreneur with equally deep experience in software engineering, IT security, and infrastructure. Married for almost 20 years, they both know firsthand what it means to raise children in a digital world.
|
||||
|
||||
This combination of journalistic rigor and deep technical expertise is what sets Internet for Kids apart. Laws are only one part of the story. Real protection requires technical solutions that are carefully implemented — with deep understanding of the technology, but simple enough for every family to use.
|
||||
|
||||
## Why We Do This
|
||||
|
||||
The internet was not designed with children in mind. As governments around the world rush to catch up with regulation, parents are left navigating a confusing landscape of laws, platform policies, and technical solutions.
|
||||
|
||||
We cut through the noise with well-researched, factual articles that help you understand what is changing and what you can do about it.
|
||||
We cut through the noise with well-researched, factual articles that help understand what is changing and what can be done about it.
|
||||
|
||||
## Contact
|
||||
|
||||
|
||||
@@ -13,7 +13,10 @@ Governments around the world are taking unprecedented action to protect children
|
||||
|
||||
Here is what you need to know about the most important child protection laws taking effect this year.
|
||||
|
||||
{{< child-safety-map >}}
|
||||
{{< stats-banner >}}
|
||||
|
||||
{{< world-map >}}
|
||||
|
||||
|
||||
## Australia: The First Country to Ban Social Media for Under-16s
|
||||
|
||||
@@ -69,6 +72,8 @@ A first prototype was published in July 2025, with a second version in October 2
|
||||
|
||||
**What this means for parents in the EU:** By the end of 2026, platforms operating in Europe will face stricter enforcement of age verification. The Digital Identity Wallet could become the standard way your children prove their age online — without handing over personal data.
|
||||
|
||||
{{< child-safety-map >}}
|
||||
|
||||
## Germany: Strengthening the JuSchG
|
||||
|
||||
Germany has been at the forefront of child protection through its *Jugendschutzgesetz* (Youth Protection Act). The 2021 amendments, which extended the law's reach to online platforms, continue to be enforced with increasing rigor. Platforms must now:
|
||||
@@ -87,6 +92,8 @@ Brazil enacted the *Estatuto Digital da Criança e do Adolescente* (Digital Chil
|
||||
- Requirements for age-appropriate design in digital services
|
||||
- Enhanced data protection measures for children's personal information
|
||||
|
||||
{{< law-charts >}}
|
||||
|
||||
## What Parents Can Do Right Now
|
||||
|
||||
While governments are catching up, parents do not have to wait for legislation to take effect. Here are practical steps you can take today:
|
||||
@@ -109,7 +116,6 @@ The laws are not perfect. There are legitimate concerns about age verification p
|
||||
|
||||
As these laws take effect, the most effective protection will always be a combination of smart legislation, responsible platform design, and engaged parenting. Technology can help bridge the gap.
|
||||
|
||||
{{< vpn-cta >}}
|
||||
|
||||
## Frequently Asked Questions
|
||||
|
||||
|
||||
114
content/en/greece-social-media-ban-under-15.md
Normal file
114
content/en/greece-social-media-ban-under-15.md
Normal file
@@ -0,0 +1,114 @@
|
||||
---
|
||||
title: "Greece to Ban Social Media for Under-15s from 2027"
|
||||
date: 2026-04-08
|
||||
description: "Greece announces a ban on social media for children under 15, joining a growing global movement to protect young people online. The ban takes effect January 2027."
|
||||
tags: ["child protection", "legislation", "Greece", "social media ban", "age verification", "Europe", "Cyprus"]
|
||||
categories: ["legislation"]
|
||||
author: "Agiliton"
|
||||
slug: "greece-social-media-ban-under-15"
|
||||
translationKey: "greece-social-media-ban"
|
||||
---
|
||||
|
||||
Greece has announced it will ban children under 15 from using social media — and the announcement came in an unusual way. On April 8, 2026, Prime Minister Kyriakos Mitsotakis posted a video on TikTok to announce a ban on... TikTok (and other platforms) for young users.
|
||||
|
||||
"We decided to proceed with something difficult but necessary — banning access to social media for children under 15," the Prime Minister said in his video message.
|
||||
|
||||
## What Exactly Is Being Banned?
|
||||
|
||||
Starting **January 1, 2027**, children under 15 in Greece will no longer be allowed to use major social media platforms. Here is what is affected:
|
||||
|
||||
**Banned platforms:**
|
||||
- Facebook
|
||||
- Instagram
|
||||
- TikTok
|
||||
- Snapchat
|
||||
- X (formerly Twitter)
|
||||
- Other platforms that rely on "endless scrolling" and user-generated content
|
||||
|
||||
**Still allowed:**
|
||||
- WhatsApp, Messenger, Viber (messaging apps)
|
||||
- YouTube (video platform)
|
||||
- Video calling apps
|
||||
|
||||
The distinction is clear: apps designed for communication stay, while platforms built around addictive feeds and algorithms get restricted.
|
||||
|
||||
## Why Is Greece Doing This?
|
||||
|
||||
The Greek government cited three main reasons:
|
||||
|
||||
1. **Mental health concerns** — Research from Imperial College London (2026) found that children using social media more than 3 hours daily are significantly more likely to develop depression and anxiety.
|
||||
|
||||
2. **Addictive design** — Social media algorithms are specifically engineered to keep users scrolling. Prime Minister Mitsotakis called out "the addictive design of some apps" and their "profit-driven" algorithms.
|
||||
|
||||
3. **Sleep problems** — Multiple studies link heavy social media use among young people to poor sleep quality, which affects school performance, mood, and physical health.
|
||||
|
||||
## Greece Joins a Growing Global Wave
|
||||
|
||||
Greece is not alone. Countries around the world are taking similar steps:
|
||||
|
||||
| Country | Age Limit | Status | Key Detail |
|
||||
|---|---|---|---|
|
||||
| **Australia** | Under 16 | Enforced (Dec 2025) | First country globally; fines up to AUD 49.5M |
|
||||
| **Indonesia** | Under 16 | Enforced (Mar 2026) | Companies summoned for non-compliance |
|
||||
| **France** | Under 15 | Passed (Apr 2026) | Arcom regulator blacklist approach |
|
||||
| **Greece** | Under 15 | Announced (Apr 2026) | Takes effect Jan 2027 |
|
||||
| **Norway** | Under 15 | Proposed | Bill in progress |
|
||||
|
||||
## Does It Actually Work? The Australian Experience
|
||||
|
||||
Australia became the first country to enforce a social media ban for under-16s in December 2025. Four months later, the results are mixed: studies suggest that around **70% of children** still found ways to access banned platforms.
|
||||
|
||||
This raises an important question: can bans really work when determined teenagers know how to get around restrictions? Critics argue that bans push young people to less-safe corners of the internet rather than keeping them off it entirely.
|
||||
|
||||
Two Australian teenagers — Noah Jones and Macy Neyland — are even challenging the ban in court, arguing it disregards children's rights.
|
||||
|
||||
## The Age Verification Problem
|
||||
|
||||
To enforce a ban, platforms need to know how old their users are. But verifying age online is surprisingly difficult:
|
||||
|
||||
- **Face scans** — AI can estimate age from photos, but raises serious privacy concerns. Who stores this biometric data?
|
||||
- **ID checks** — Effective, but many young people do not have government-issued ID
|
||||
- **Privacy paradox** — Banning social media to protect children's privacy requires collecting even more personal data to verify ages
|
||||
|
||||
Greece, along with France, Denmark, Italy, Spain, and Cyprus, is part of an **EU age verification pilot program** testing solutions that link to national population registries.
|
||||
|
||||
## What About Cyprus?
|
||||
|
||||
As an EU member state and close neighbor of Greece, Cyprus is watching closely:
|
||||
|
||||
- **Current age limit**: 14 (under GDPR framework)
|
||||
- **Active proposal**: A bill to raise the minimum age from 14 to 16 is being debated in the House Legal Affairs Committee
|
||||
- **EU presidency priority**: President Nikos Christodoulides has declared child digital safety a priority for Cyprus's 2026 EU presidency
|
||||
- **Joint letter**: Cyprus co-signed a letter with France, Greece, Spain, Denmark, and Slovenia calling for an EU-wide "digital age of majority"
|
||||
- **Age verification pilot**: Cyprus is one of six EU countries testing age verification technology
|
||||
|
||||
Cyprus has also introduced a separate bill to make **digital citizenship education mandatory** in all schools — teaching young people to use the internet safely rather than simply banning them from parts of it.
|
||||
|
||||
## Both Sides of the Debate
|
||||
|
||||
**In favor of bans:**
|
||||
- Protects children from addictive algorithms designed to maximize engagement
|
||||
- Reduces exposure to harmful content, cyberbullying, and unrealistic comparisons
|
||||
- Gives children time to develop emotional resilience before entering social media
|
||||
|
||||
**Against bans:**
|
||||
- Difficult to enforce (Australia's 70% circumvention rate)
|
||||
- Removes platforms young people use for support communities, creativity, and civic engagement
|
||||
- Age verification creates new privacy risks
|
||||
- May push teens to unregulated or underground platforms
|
||||
|
||||
Amnesty International has called social media bans an "ineffective quick-fix," while UNICEF warns that age-based restrictions alone will not keep children safe.
|
||||
|
||||
## What This Means for Families
|
||||
|
||||
- **In Greece**: From January 2027, platforms will be legally required to prevent under-15s from accessing social media. Parents will not need to rely solely on parental controls.
|
||||
- **Across Europe**: Greece's decision adds momentum to the EU-wide push. More countries are likely to follow.
|
||||
- **Everywhere**: Regardless of local laws, families can discuss healthy screen time habits and the difference between messaging friends and endlessly scrolling feeds.
|
||||
|
||||
## What Happens Next
|
||||
|
||||
Greece will draft the detailed legislation in the coming months, with the ban scheduled to take effect on **January 1, 2027**. The key open questions are how age verification will work in practice and what penalties platforms will face for non-compliance.
|
||||
|
||||
---
|
||||
|
||||
*For a broader look at child protection laws worldwide, see our [global overview](/en/child-protection-laws-2026-global-overview/). For background on how social media platforms are designed to be addictive, read our article on [tech companies and the addiction business model](/en/tech-companies-addiction-business-model/).*
|
||||
130
content/en/tech-companies-addiction-business-model.md
Normal file
130
content/en/tech-companies-addiction-business-model.md
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: "How Tech Companies Turned Addiction Into a Business Model"
|
||||
date: 2026-04-06
|
||||
description: "Instagram, TikTok, and other platforms use deliberate design patterns to keep children scrolling. Courts and regulators are starting to hold them accountable."
|
||||
tags: ["social-media", "addiction", "child-protection", "meta", "tiktok"]
|
||||
categories: ["legislation"]
|
||||
author: "Agiliton"
|
||||
slug: "tech-companies-addiction-business-model"
|
||||
translationKey: "tech-addiction-business-model"
|
||||
---
|
||||
|
||||
Nearly half of all teenagers say they feel addicted to social media. That is not an accident. The platforms they use every day — Instagram, TikTok, Snapchat, YouTube — were designed to be difficult to put down. In 2026, courts and regulators around the world are beginning to treat this as what it is: a deliberate business strategy built on the attention of children.
|
||||
|
||||
Here is what parents need to know about how these platforms work, what the evidence shows, and what is being done about it.
|
||||
|
||||
{{< addiction-chart >}}
|
||||
|
||||
## The Addiction Playbook
|
||||
|
||||
Social media platforms use a set of well-documented design patterns that exploit how the human brain processes reward and anticipation. These are not bugs or side effects — they are core product features.
|
||||
|
||||
**Infinite scroll** removes natural stopping points. Unlike a book with chapters or a TV show with episodes, a social media feed never ends. Users keep scrolling because there is always something new just below the fold.
|
||||
|
||||
**Variable rewards** operate on the same psychological principle as slot machines. Likes, comments, and shares arrive unpredictably, triggering dopamine responses that keep users coming back. Former Google design ethicist Tristan Harris has described it bluntly: "Several billion people have a slot machine in their pocket."
|
||||
|
||||
**Autoplay and recommendations** ensure that content continues without any action from the user. Personalized algorithms learn what keeps each individual engaged longest and serve more of it automatically.
|
||||
|
||||
**Streaks and notifications** create artificial urgency. Snapchat streaks punish users who stop engaging, even briefly. Push notifications like "your friends are watching" trigger fear of missing out and pull users back into the app.
|
||||
|
||||
**Personalized recommender systems** go further than simple suggestions. They build detailed behavioral profiles of each user — including minors — and use those profiles to maximize time spent on the platform.
|
||||
|
||||
These patterns are not incidental. They are the product. The longer users stay, the more ads they see, and the more revenue the platform generates.
|
||||
|
||||
## They Knew
|
||||
|
||||
Internal documents from major platforms have revealed that companies were aware their products could harm young users — and continued operating the same way.
|
||||
|
||||
In 2021, leaked internal research from Meta showed that the company knew Instagram was linked to body image issues and depression among teenage girls. The company did not make these findings public or change the product significantly.
|
||||
|
||||
In 2023, the [U.S. Surgeon General](https://www.hhs.gov/surgeongeneral/reports-and-publications/youth-mental-health/social-media/index.html) Vivek Murthy issued a formal advisory on social media and youth mental health, warning that current evidence indicates social media poses "a profound risk of harm" to children and adolescents. He later called for warning labels on social media platforms — a step that would require Congressional action.
|
||||
|
||||
A [Meta-sponsored study](https://techcrunch.com/2026/02/17/metas-own-research-found-parental-supervision-doesnt-really-help-curb-teens-compulsive-social-media-use/) published in 2026 found that trauma-exposed children are the most vulnerable to social media dependency, and that parental controls are largely ineffective once dependency is established.
|
||||
|
||||
The [American Psychological Association](https://www.apa.org/topics/social-media-internet/health-advisory-adolescent-social-media-use) has issued its own health advisory on adolescent social media use, echoing the Surgeon General's concerns about the impact on developing minds.
|
||||
|
||||
{{< addiction-stat num="5h" color="#667eea" label="Average daily social media use among teenagers — Gallup/Pew Research" >}}
|
||||
|
||||
## The Numbers
|
||||
|
||||
The scale of the problem is difficult to overstate.
|
||||
|
||||
- **95%** of children aged 10–17 use social media regularly
|
||||
- Teenagers spend an average of **5 hours per day** on social media platforms
|
||||
- **47%** of teenagers report feeling addicted to social media
|
||||
- Using social media for **3 or more hours daily** is linked to significantly higher rates of anxiety and depression, according to research published in [JAMA Psychiatry](https://jamanetwork.com/journals/jamapsychiatry/fullarticle/2749480)
|
||||
- Children with social media addiction are **2–3 times more likely** to experience suicidal ideation, according to research from [Weill Cornell Medicine](https://news.weill.cornell.edu/news/2025/06/study-finds-addictive-screen-use-not-total-screen-time-linked-to-youth-suicide-risk)
|
||||
- **45%** of U.S. teens report that social media negatively affects their sleep
|
||||
|
||||
{{< addiction-stat num="2-3x" color="#ef4444" label="Higher risk of suicidal ideation with social media addiction — Weill Cornell Medicine" >}}
|
||||
|
||||
The 2026 [World Happiness Report](https://www.worldhappiness.report/ed/2026/social-media-is-harming-adolescents-at-a-scale-large-enough-to-cause-changes-at-the-population-level/) documented that social media is "harming adolescents at a scale large enough to cause changes at the population level" — one of the strongest statements from a major global research initiative to date.
|
||||
|
||||
## Courts Are Catching Up
|
||||
|
||||
2026 has become a turning point in legal accountability for social media companies.
|
||||
|
||||
In a landmark trial in Los Angeles (January–March 2026), a jury found **Meta and Google liable** for harm caused by addictive design and awarded **$6 million** in damages to a 20-year-old plaintiff. TikTok and Snap settled on the eve of the verdict to avoid jury judgment.
|
||||
|
||||
In New Mexico, Meta was ordered to pay **$375 million** in a settlement over knowingly harming children's mental health through its platforms.
|
||||
|
||||
As of early 2026, over **2,400 lawsuits** are pending in a federal multidistrict litigation (MDL) against social media companies — up from around 1,200 cases a year earlier. A bipartisan coalition of **32 state attorneys general** has filed a federal complaint, and individual states including Minnesota and California have pursued their own cases.
|
||||
|
||||
The legal claims focus specifically on **addictive design elements** — infinite scrolling, behavioral tracking, algorithmic manipulation — rather than on third-party content. This distinction matters: it targets the business model itself.
|
||||
|
||||
{{< addiction-stat num="3h+" color="#764ba2" label="Daily use threshold where anxiety and depression increase significantly — JAMA Psychiatry" >}}
|
||||
|
||||
## Europe Leads on Regulation
|
||||
|
||||
The European Union has taken the most direct regulatory action against addictive design to date.
|
||||
|
||||
In February 2026, the [European Commission](https://digital-strategy.ec.europa.eu/en/news/commission-preliminarily-finds-tiktoks-addictive-design-breach-digital-services-act) issued a preliminary finding that **TikTok breached the Digital Services Act (DSA)** specifically because of its addictive design architecture. This was the first time the EU directly targeted the combination of infinite scroll, autoplay, push notifications, and personalized recommendations as a systemic risk to minors and vulnerable adults. TikTok faces potential fines of up to **6% of its worldwide annual turnover**.
|
||||
|
||||
In October 2025, the Commission found that both TikTok and Meta had systematically blocked researchers from studying how content reaches children on their platforms — a violation of DSA transparency requirements. The combined potential fines could reach approximately **$20 billion**.
|
||||
|
||||
Research by [Amnesty International](https://www.amnesty.org/en/latest/news/2025/10/tiktok-steering-children-towards-depressive-and-suicidal-content/) in France found that TikTok's algorithm draws children who show interest in mental health topics into spirals of content romanticizing self-harm and suicide.
|
||||
|
||||
The EU's action reflects a growing political consensus in Europe that addictive platform design is not a side effect but a core business strategy — and that regulation must target the business model itself, not just the content it amplifies.
|
||||
|
||||
## What Parents Can Do Right Now
|
||||
|
||||
While legislation and court decisions are catching up, parents remain the first line of defense. Here are five practical steps:
|
||||
|
||||
1. **Review privacy and safety settings** on every platform your children use. Many services have begun rolling out enhanced parental controls in response to regulatory pressure.
|
||||
|
||||
2. **Talk to your children** about how these platforms are designed to keep them scrolling. Understanding the mechanics of infinite scroll and variable rewards helps young people recognize when they are being manipulated.
|
||||
|
||||
3. **Use content filtering tools** that block inappropriate content at the network level. Solutions like VPN-based content filtering can protect every device in your household without requiring app-by-app configuration.
|
||||
|
||||
4. **Set clear screen time boundaries** and enforce them consistently. Research shows that the risk of mental health harm increases significantly after 3 hours of daily use.
|
||||
|
||||
5. **Watch for signs of dependency**: irritability when unable to access the phone, loss of interest in offline activities, disrupted sleep, and declining school performance are all warning signs.
|
||||
|
||||
## The Road Ahead
|
||||
|
||||
2026 marks a fundamental shift in how society treats social media addiction among children. For the first time, courts are holding platforms financially liable for addictive design. Regulators in Europe are treating that design as a legal violation. And the scientific consensus — from the Surgeon General to the World Happiness Report — is clear: these platforms are causing measurable harm to young people at a population level.
|
||||
|
||||
The era of treating addictive design as a neutral product feature is ending. What comes next will depend on continued legal pressure, stronger regulation, and informed parenting. Technology created this problem. Accountability, transparency, and engaged families can help solve it.
|
||||
|
||||
**Related reading:** See how [countries around the world are responding with new child protection laws](/en/child-protection-laws-2026-global-overview/), and how [France is banning social media for children under 15](/en/france-social-media-ban-under-15/).
|
||||
|
||||
{{< faq >}}
|
||||
Is social media actually addictive, or is that an exaggeration?
|
||||
Research published in peer-reviewed journals including JAMA Psychiatry and studies from institutions like Weill Cornell Medicine show that problematic social media use shares key features with behavioral addictions: cravings, withdrawal symptoms, loss of control, and continued use despite negative consequences. The U.S. Surgeon General has formally warned about the risk of harm to adolescents. While not every user becomes dependent, 47% of teenagers report feeling addicted.
|
||||
~~~
|
||||
Which platforms are considered the most addictive for children?
|
||||
TikTok, Instagram, Snapchat, and YouTube are most frequently cited in research and legal proceedings. TikTok in particular has faced regulatory action from the EU specifically for its combination of infinite scroll, autoplay, and personalized recommendations. The LA trial in 2026 resulted in findings against Meta (Instagram, Facebook) and Google (YouTube).
|
||||
~~~
|
||||
Can parental controls prevent social media addiction?
|
||||
Parental controls can help limit exposure, especially for younger children. However, a 2026 Meta-sponsored study found that parental controls are largely ineffective once dependency is already established. Experts recommend combining technical controls with open conversations about how platforms are designed and setting clear boundaries before heavy use begins.
|
||||
~~~
|
||||
What is the EU doing about addictive social media design?
|
||||
The European Commission has used the Digital Services Act (DSA) to directly target addictive platform design. In February 2026, TikTok received a preliminary finding of violation specifically for its addictive features — the first time the EU treated design patterns like infinite scroll and autoplay as systemic risks. Potential fines can reach 6% of a platform's global turnover.
|
||||
~~~
|
||||
How much screen time is too much for children?
|
||||
Research published in JAMA Psychiatry found that using social media for 3 or more hours per day is associated with significantly higher rates of anxiety and depression in adolescents. The U.S. Surgeon General and the American Psychological Association both recommend that parents set clear limits and monitor usage patterns, particularly around sleep time.
|
||||
{{< /faq >}}
|
||||
|
||||
---
|
||||
|
||||
*This article reflects the state of litigation, regulation, and research as of April 2026. For background on child protection laws worldwide, see our [global overview](/en/child-protection-laws-2026-global-overview/).*
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: "Internet pour les enfants"
|
||||
subtitle: "Protéger les enfants dans un monde numérique"
|
||||
description: "Analyses d'experts sur les lois de protection de l'enfance, la sécurité en ligne et la protection numérique des familles dans le monde entier."
|
||||
---
|
||||
|
||||
@@ -10,8 +11,7 @@ Protéger les enfants en ligne est l'un des défis les plus importants de notre
|
||||
- **Lois de protection de l'enfance** — Analyse pays par pays des réglementations qui protègent les jeunes utilisateurs en ligne
|
||||
- **Outils de sécurité en ligne** — Tests et guides pour le contrôle parental, les VPN et les filtres de contenu
|
||||
- **Parentalité numérique** — Conseils pratiques pour élever des enfants dans un monde connecté
|
||||
- **Analyses d'experts** — Reportages approfondis sur les menaces émergentes et les solutions
|
||||
|
||||
{{< child-safety-map >}}
|
||||
{{< world-map >}}
|
||||
|
||||
*Publié par [Agiliton](https://www.agiliton.eu), une entreprise technologique européenne spécialisée dans la confidentialité, la sécurité et la protection des familles.*
|
||||
|
||||
@@ -3,25 +3,33 @@ title: "À propos"
|
||||
showDate: false
|
||||
showReadingTime: false
|
||||
showAuthor: false
|
||||
description: "À propos d'Internet pour les enfants — qui nous sommes et pourquoi nous couvrons la protection de l'enfance et la sécurité en ligne."
|
||||
description: "À propos d'Internet for Kids — qui nous sommes et pourquoi nous couvrons la protection de l'enfance et la sécurité en ligne."
|
||||
translationKey: "about"
|
||||
---
|
||||
|
||||
**Internet pour les enfants** est une publication d'[Agiliton](https://www.agiliton.eu), une entreprise technologique européenne spécialisée dans les solutions de confidentialité, de sécurité et de protection des familles.
|
||||
**Internet for Kids** est une publication d'[Agiliton](https://www.agiliton.eu), une entreprise technologique européenne spécialisée dans les solutions de confidentialité, de sécurité et de protection des familles.
|
||||
|
||||
## Notre mission
|
||||
|
||||
Nous pensons que chaque parent mérite des informations claires et exploitables sur :
|
||||
Chaque parent mérite des informations claires et exploitables sur :
|
||||
|
||||
- **Les lois de protection de l'enfance** — quels sont vos droits et ce que les plateformes doivent faire
|
||||
- **Les outils de sécurité en ligne** — la technologie qui aide à protéger votre famille
|
||||
- **Les lois de protection de l'enfance** — quels droits ont les familles et ce que les plateformes doivent faire
|
||||
- **Les outils de sécurité en ligne** — la technologie qui aide à protéger les familles
|
||||
- **La parentalité numérique** — des conseils pratiques pour élever des enfants dans un monde connecté
|
||||
|
||||
## Qui nous sommes
|
||||
|
||||
Internet for Kids est fondé par **Wibke et Christian Gick**, les créateurs d'Agiliton — et parents de deux enfants de 10 et 12 ans.
|
||||
|
||||
**Wibke** est journaliste avec plus de 25 ans d'expérience en recherche, vérification des faits et vulgarisation de sujets complexes. **Christian** est entrepreneur numérique avec une expérience tout aussi approfondie en ingénierie logicielle, sécurité informatique et infrastructure. Mariés depuis près de 20 ans, ils savent de première main ce que signifie élever des enfants dans un monde numérique.
|
||||
|
||||
Cette combinaison de rigueur journalistique et d'expertise technique approfondie est ce qui distingue Internet for Kids. Les lois ne sont qu'une partie de la solution. Une véritable protection nécessite des solutions techniques soigneusement mises en œuvre — avec une compréhension profonde de la technologie, mais suffisamment simples pour que chaque famille puisse les utiliser.
|
||||
|
||||
## Pourquoi nous faisons cela
|
||||
|
||||
Internet n'a pas été conçu en pensant aux enfants. Alors que les gouvernements du monde entier se précipitent pour rattraper la réglementation, les parents doivent naviguer dans un paysage confus de lois, de politiques de plateformes et de solutions techniques.
|
||||
|
||||
Nous coupons à travers le bruit avec des articles bien documentés et factuels qui vous aident à comprendre ce qui change et ce que vous pouvez faire.
|
||||
Nous proposons des articles bien documentés et factuels qui aident à comprendre ce qui change et ce qui peut être fait.
|
||||
|
||||
## Contact
|
||||
|
||||
|
||||
130
content/fr/entreprises-tech-addiction-modele-economique.md
Normal file
130
content/fr/entreprises-tech-addiction-modele-economique.md
Normal file
@@ -0,0 +1,130 @@
|
||||
---
|
||||
title: "Comment les géants de la tech ont transformé l'addiction en modèle économique"
|
||||
date: 2026-04-06
|
||||
description: "Instagram, TikTok et d'autres plateformes utilisent des mécanismes de design délibérés pour garder les enfants connectés. Les tribunaux et régulateurs commencent à les tenir responsables."
|
||||
tags: ["réseaux-sociaux", "addiction", "protection-enfance", "meta", "tiktok"]
|
||||
categories: ["legislation"]
|
||||
author: "Agiliton"
|
||||
slug: "entreprises-tech-addiction-modele-economique"
|
||||
translationKey: "tech-addiction-business-model"
|
||||
---
|
||||
|
||||
Près de la moitié des adolescents déclarent se sentir dépendants des réseaux sociaux. Ce n'est pas un hasard. Les plateformes qu'ils utilisent chaque jour — Instagram, TikTok, Snapchat, YouTube — ont été conçues pour être difficiles à lâcher. En 2026, les tribunaux et les régulateurs du monde entier commencent à traiter cela pour ce que c'est : une stratégie commerciale délibérée construite sur l'attention des enfants.
|
||||
|
||||
Voici ce que les parents doivent savoir sur le fonctionnement de ces plateformes, ce que montrent les données et ce qui est fait pour y remédier.
|
||||
|
||||
{{< addiction-chart >}}
|
||||
|
||||
## Le manuel de l'addiction
|
||||
|
||||
Les plateformes de réseaux sociaux utilisent un ensemble de mécanismes de design bien documentés qui exploitent la façon dont le cerveau humain traite la récompense et l'anticipation. Ce ne sont pas des bugs ou des effets secondaires — ce sont des fonctionnalités centrales du produit.
|
||||
|
||||
**Le défilement infini** supprime les points d'arrêt naturels. Contrairement à un livre avec des chapitres ou une émission de télévision avec des épisodes, un fil de réseaux sociaux ne se termine jamais. Les utilisateurs continuent de défiler parce qu'il y a toujours quelque chose de nouveau juste en dessous.
|
||||
|
||||
**Les récompenses variables** fonctionnent selon le même principe psychologique que les machines à sous. Les likes, commentaires et partages arrivent de manière imprévisible, déclenchant des réponses dopaminergiques qui ramènent les utilisateurs. L'ancien éthicien du design chez Google, Tristan Harris, l'a formulé sans détour : « Plusieurs milliards de personnes ont une machine à sous dans leur poche. »
|
||||
|
||||
**La lecture automatique et les recommandations** garantissent que le contenu continue sans aucune action de l'utilisateur. Les algorithmes personnalisés apprennent ce qui maintient chaque individu engagé le plus longtemps et en servent automatiquement davantage.
|
||||
|
||||
**Les séries et les notifications** créent une urgence artificielle. Les Streaks de Snapchat punissent les utilisateurs qui cessent de s'engager, même brièvement. Les notifications push comme « vos amis regardent » déclenchent la peur de manquer quelque chose et ramènent les utilisateurs dans l'application.
|
||||
|
||||
**Les systèmes de recommandation personnalisés** vont bien au-delà de simples suggestions. Ils construisent des profils comportementaux détaillés de chaque utilisateur — y compris les mineurs — et utilisent ces profils pour maximiser le temps passé sur la plateforme.
|
||||
|
||||
Ces mécanismes ne sont pas accidentels. Ils sont le produit. Plus les utilisateurs restent longtemps, plus ils voient de publicités et plus la plateforme génère de revenus.
|
||||
|
||||
## Ils savaient
|
||||
|
||||
Des documents internes de grandes plateformes ont révélé que les entreprises savaient que leurs produits pouvaient nuire aux jeunes utilisateurs — et ont continué à fonctionner de la même manière.
|
||||
|
||||
En 2021, des recherches internes de Meta qui avaient fuité montraient que l'entreprise savait qu'Instagram était lié à des problèmes d'image corporelle et à la dépression chez les adolescentes. L'entreprise n'a pas rendu ces résultats publics ni modifié significativement le produit.
|
||||
|
||||
En 2023, le [directeur de la santé publique américain](https://www.hhs.gov/surgeongeneral/reports-and-publications/youth-mental-health/social-media/index.html) Vivek Murthy a émis un avis formel sur les réseaux sociaux et la santé mentale des jeunes, avertissant que les preuves actuelles indiquent que les réseaux sociaux posent « un risque profond de préjudice » aux enfants et adolescents. Il a ensuite appelé à l'apposition d'avertissements sanitaires sur les plateformes de réseaux sociaux — une mesure qui nécessiterait l'action du Congrès.
|
||||
|
||||
Une [étude financée par Meta](https://techcrunch.com/2026/02/17/metas-own-research-found-parental-supervision-doesnt-really-help-curb-teens-compulsive-social-media-use/) publiée en 2026 a révélé que les enfants exposés à des traumatismes sont les plus vulnérables à la dépendance aux réseaux sociaux, et que les contrôles parentaux sont largement inefficaces une fois la dépendance établie.
|
||||
|
||||
L'[American Psychological Association](https://www.apa.org/topics/social-media-internet/health-advisory-adolescent-social-media-use) a publié son propre avis sanitaire sur l'utilisation des réseaux sociaux par les adolescents, faisant écho aux préoccupations du directeur de la santé publique concernant l'impact sur les cerveaux en développement.
|
||||
|
||||
{{< addiction-stat num="5h" color="#667eea" label="Utilisation quotidienne moyenne des réseaux sociaux chez les adolescents — Gallup/Pew Research" >}}
|
||||
|
||||
## Les chiffres
|
||||
|
||||
L'ampleur du problème est difficile à surestimer.
|
||||
|
||||
- **95 %** des enfants de 10 à 17 ans utilisent régulièrement les réseaux sociaux
|
||||
- Les adolescents passent en moyenne **5 heures par jour** sur les plateformes de réseaux sociaux
|
||||
- **47 %** des adolescents déclarent se sentir dépendants des réseaux sociaux
|
||||
- L'utilisation des réseaux sociaux pendant **3 heures ou plus par jour** est associée à des taux significativement plus élevés d'anxiété et de dépression, selon une recherche publiée dans [JAMA Psychiatry](https://jamanetwork.com/journals/jamapsychiatry/fullarticle/2749480)
|
||||
- Les enfants dépendants des réseaux sociaux ont un risque **2 à 3 fois plus élevé** d'idéation suicidaire, selon les recherches de [Weill Cornell Medicine](https://news.weill.cornell.edu/news/2025/06/study-finds-addictive-screen-use-not-total-screen-time-linked-to-youth-suicide-risk)
|
||||
- **45 %** des adolescents américains rapportent que les réseaux sociaux affectent négativement leur sommeil
|
||||
|
||||
{{< addiction-stat num="2-3x" color="#ef4444" label="Risque accru d'idéation suicidaire en cas de dépendance aux réseaux sociaux — Weill Cornell Medicine" >}}
|
||||
|
||||
Le [World Happiness Report 2026](https://www.worldhappiness.report/ed/2026/social-media-is-harming-adolescents-at-a-scale-large-enough-to-cause-changes-at-the-population-level/) a documenté que les réseaux sociaux « nuisent aux adolescents à une échelle suffisamment grande pour provoquer des changements au niveau de la population » — l'une des déclarations les plus fortes d'une grande initiative de recherche mondiale à ce jour.
|
||||
|
||||
## Les tribunaux rattrapent leur retard
|
||||
|
||||
2026 est devenu un tournant dans la responsabilité juridique des entreprises de réseaux sociaux.
|
||||
|
||||
Lors d'un procès historique à Los Angeles (janvier–mars 2026), un jury a jugé **Meta et Google responsables** des dommages causés par un design addictif et a accordé **6 millions de dollars** de dommages et intérêts à un plaignant de 20 ans. TikTok et Snap ont conclu un accord à la veille du verdict pour éviter le jugement du jury.
|
||||
|
||||
Au Nouveau-Mexique, Meta a été condamné à payer **375 millions de dollars** dans un règlement pour avoir sciemment nui à la santé mentale des enfants via ses plateformes.
|
||||
|
||||
Début 2026, plus de **2 400 poursuites** sont en attente dans un litige fédéral multidistrict (MDL) contre les entreprises de réseaux sociaux — contre environ 1 200 affaires un an plus tôt. Une coalition bipartisane de **32 procureurs généraux d'État** a déposé une plainte fédérale, et des États individuels dont le Minnesota et la Californie poursuivent leurs propres affaires.
|
||||
|
||||
Les plaintes se concentrent spécifiquement sur les **éléments de design addictif** — défilement infini, suivi comportemental, manipulation algorithmique — plutôt que sur les contenus tiers. Cette distinction est importante : elle cible le modèle économique lui-même.
|
||||
|
||||
{{< addiction-stat num="3h+" color="#764ba2" label="Seuil d'utilisation quotidienne au-delà duquel anxiété et dépression augmentent significativement — JAMA Psychiatry" >}}
|
||||
|
||||
## L'Europe en tête sur la réglementation
|
||||
|
||||
L'Union européenne a pris les mesures réglementaires les plus directes contre le design addictif à ce jour.
|
||||
|
||||
En février 2026, la [Commission européenne](https://digital-strategy.ec.europa.eu/en/news/commission-preliminarily-finds-tiktoks-addictive-design-breach-digital-services-act) a émis une constatation préliminaire selon laquelle **TikTok a enfreint le Digital Services Act (DSA)** spécifiquement en raison de son architecture de design addictif. C'était la première fois que l'UE ciblait directement la combinaison du défilement infini, de la lecture automatique, des notifications push et des recommandations personnalisées comme un risque systémique pour les mineurs et les adultes vulnérables. TikTok s'expose à des amendes potentielles allant jusqu'à **6 % de son chiffre d'affaires annuel mondial**.
|
||||
|
||||
En octobre 2025, la Commission a constaté que TikTok et Meta avaient systématiquement bloqué les chercheurs qui tentaient d'étudier comment le contenu atteint les enfants sur leurs plateformes — une violation des exigences de transparence du DSA. Les amendes potentielles combinées pourraient atteindre environ **20 milliards de dollars**.
|
||||
|
||||
Les recherches d'[Amnesty International](https://www.amnesty.org/en/latest/news/2025/10/tiktok-steering-children-towards-depressive-and-suicidal-content/) en France ont révélé que l'algorithme de TikTok entraîne les enfants qui s'intéressent aux sujets de santé mentale dans des spirales de contenus romantisant l'automutilation et le suicide.
|
||||
|
||||
L'action de l'UE reflète un consensus politique croissant en Europe selon lequel le design addictif des plateformes n'est pas un effet secondaire mais une stratégie commerciale centrale — et que la réglementation doit cibler le modèle économique lui-même, pas seulement les contenus qu'il amplifie.
|
||||
|
||||
## Ce que les parents peuvent faire maintenant
|
||||
|
||||
Pendant que la législation et les décisions judiciaires rattrapent leur retard, les parents restent la première ligne de défense. Voici cinq mesures pratiques :
|
||||
|
||||
1. **Vérifiez les paramètres de confidentialité et de sécurité** sur chaque plateforme utilisée par vos enfants. De nombreux services ont commencé à déployer des contrôles parentaux renforcés en réponse à la pression réglementaire.
|
||||
|
||||
2. **Parlez à vos enfants** de la façon dont ces plateformes sont conçues pour les garder connectés. Comprendre les mécanismes du défilement infini et des récompenses variables aide les jeunes à reconnaître quand ils sont manipulés.
|
||||
|
||||
3. **Utilisez des outils de filtrage de contenu** qui bloquent le contenu inapproprié au niveau du réseau. Des solutions comme le filtrage de contenu basé sur un VPN peuvent protéger chaque appareil de votre foyer sans configuration application par application.
|
||||
|
||||
4. **Fixez des limites claires de temps d'écran** et appliquez-les de manière cohérente. La recherche montre que le risque de dommages à la santé mentale augmente significativement après 3 heures d'utilisation quotidienne.
|
||||
|
||||
5. **Surveillez les signes de dépendance** : irritabilité en l'absence d'accès au téléphone, perte d'intérêt pour les activités hors ligne, sommeil perturbé et baisse des résultats scolaires sont autant de signaux d'alerte.
|
||||
|
||||
## La route à suivre
|
||||
|
||||
2026 marque un changement fondamental dans la façon dont la société traite l'addiction aux réseaux sociaux chez les enfants. Pour la première fois, les tribunaux tiennent les plateformes financièrement responsables du design addictif. Les régulateurs en Europe traitent ce design comme une infraction légale. Et le consensus scientifique — du directeur de la santé publique au World Happiness Report — est clair : ces plateformes causent des dommages mesurables aux jeunes à l'échelle de la population.
|
||||
|
||||
L'ère où le design addictif était traité comme une fonctionnalité neutre du produit touche à sa fin. Ce qui vient ensuite dépendra d'une pression juridique continue, d'une réglementation plus forte et d'une parentalité informée. La technologie a créé ce problème. La responsabilité, la transparence et des familles engagées peuvent aider à le résoudre.
|
||||
|
||||
**Pour aller plus loin :** Découvrez comment [les pays du monde entier réagissent avec de nouvelles lois de protection de l'enfance](/fr/lois-protection-enfance-2026-panorama-mondial/), et comment [la France interdit les réseaux sociaux aux moins de 15 ans](/fr/france-interdit-reseaux-sociaux-moins-de-15-ans/).
|
||||
|
||||
{{< faq >}}
|
||||
Les réseaux sociaux sont-ils vraiment addictifs ou est-ce une exagération ?
|
||||
Les recherches publiées dans des revues à comité de lecture comme JAMA Psychiatry et les études d'institutions comme Weill Cornell Medicine montrent que l'utilisation problématique des réseaux sociaux partage des caractéristiques clés avec les addictions comportementales : envies, symptômes de sevrage, perte de contrôle et utilisation continue malgré des conséquences négatives. Le directeur de la santé publique américain a formellement mis en garde contre le risque pour les adolescents. Bien que tous les utilisateurs ne deviennent pas dépendants, 47 % des adolescents déclarent se sentir accros.
|
||||
~~~
|
||||
Quelles plateformes sont considérées comme les plus addictives pour les enfants ?
|
||||
TikTok, Instagram, Snapchat et YouTube sont les plus fréquemment cités dans la recherche et les procédures judiciaires. TikTok en particulier a fait l'objet de mesures réglementaires de l'UE spécifiquement pour sa combinaison de défilement infini, lecture automatique et recommandations personnalisées. Le procès de Los Angeles en 2026 a abouti à des jugements contre Meta (Instagram, Facebook) et Google (YouTube).
|
||||
~~~
|
||||
Les contrôles parentaux peuvent-ils prévenir l'addiction aux réseaux sociaux ?
|
||||
Les contrôles parentaux peuvent aider à limiter l'exposition, en particulier pour les plus jeunes enfants. Cependant, une étude financée par Meta en 2026 a révélé que les contrôles parentaux sont largement inefficaces une fois la dépendance établie. Les experts recommandent de combiner les contrôles techniques avec des conversations ouvertes sur la conception des plateformes et de fixer des limites claires avant le début d'une utilisation intensive.
|
||||
~~~
|
||||
Que fait l'UE contre le design addictif des réseaux sociaux ?
|
||||
La Commission européenne a utilisé le Digital Services Act (DSA) pour cibler directement le design addictif des plateformes. En février 2026, TikTok a reçu une constatation préliminaire de violation spécifiquement pour ses fonctionnalités addictives — la première fois que l'UE traitait des mécanismes comme le défilement infini et la lecture automatique comme des risques systémiques. Les amendes potentielles peuvent atteindre 6 % du chiffre d'affaires mondial d'une plateforme.
|
||||
~~~
|
||||
Combien de temps d'écran est trop pour les enfants ?
|
||||
Les recherches publiées dans JAMA Psychiatry ont montré que l'utilisation des réseaux sociaux pendant 3 heures ou plus par jour est associée à des taux significativement plus élevés d'anxiété et de dépression chez les adolescents. Le directeur de la santé publique américain et l'American Psychological Association recommandent tous deux que les parents fixent des limites claires et surveillent les habitudes d'utilisation, en particulier autour de l'heure du coucher.
|
||||
{{< /faq >}}
|
||||
|
||||
---
|
||||
|
||||
*Cet article reflète l'état des litiges, de la réglementation et de la recherche en avril 2026. Pour un aperçu des lois de protection de l'enfance dans le monde, consultez notre [panorama mondial](/fr/lois-protection-enfance-2026-panorama-mondial/).*
|
||||
114
content/fr/grece-interdiction-reseaux-sociaux-moins-de-15-ans.md
Normal file
114
content/fr/grece-interdiction-reseaux-sociaux-moins-de-15-ans.md
Normal file
@@ -0,0 +1,114 @@
|
||||
---
|
||||
title: "La Grèce interdit les réseaux sociaux aux moins de 15 ans à partir de 2027"
|
||||
date: 2026-04-08
|
||||
description: "La Grèce annonce l'interdiction des réseaux sociaux pour les enfants de moins de 15 ans, rejoignant un mouvement mondial croissant pour protéger les jeunes en ligne."
|
||||
tags: ["protection de l'enfance", "législation", "Grèce", "interdiction réseaux sociaux", "vérification d'âge", "Europe", "Chypre"]
|
||||
categories: ["législation"]
|
||||
author: "Agiliton"
|
||||
slug: "grece-interdiction-reseaux-sociaux-moins-de-15-ans"
|
||||
translationKey: "greece-social-media-ban"
|
||||
---
|
||||
|
||||
La Grèce a annoncé qu'elle interdirait aux enfants de moins de 15 ans d'utiliser les réseaux sociaux — et l'annonce a été faite de manière inattendue. Le 8 avril 2026, le Premier ministre Kyriakos Mitsotakis a publié une vidéo sur TikTok pour annoncer l'interdiction de... TikTok (et d'autres plateformes) pour les jeunes utilisateurs.
|
||||
|
||||
« Nous avons décidé de procéder à quelque chose de difficile mais nécessaire — interdire l'accès aux réseaux sociaux pour les enfants de moins de 15 ans », a déclaré le Premier ministre dans son message vidéo.
|
||||
|
||||
## Qu'est-ce qui est exactement interdit ?
|
||||
|
||||
À partir du **1er janvier 2027**, les enfants de moins de 15 ans en Grèce ne pourront plus utiliser les principales plateformes de réseaux sociaux. Voici ce qui est concerné :
|
||||
|
||||
**Plateformes interdites :**
|
||||
- Facebook
|
||||
- Instagram
|
||||
- TikTok
|
||||
- Snapchat
|
||||
- X (anciennement Twitter)
|
||||
- Autres plateformes reposant sur le « défilement infini » et le contenu généré par les utilisateurs
|
||||
|
||||
**Toujours autorisés :**
|
||||
- WhatsApp, Messenger, Viber (applications de messagerie)
|
||||
- YouTube (plateforme vidéo)
|
||||
- Applications d'appels vidéo
|
||||
|
||||
La distinction est claire : les applications de communication restent accessibles, tandis que les plateformes construites autour de fils d'actualité addictifs et d'algorithmes sont restreintes.
|
||||
|
||||
## Pourquoi la Grèce prend-elle cette mesure ?
|
||||
|
||||
Le gouvernement grec a avancé trois raisons principales :
|
||||
|
||||
1. **Santé mentale** — Des recherches de l'Imperial College London (2026) montrent que les enfants utilisant les réseaux sociaux plus de 3 heures par jour sont nettement plus susceptibles de développer une dépression et de l'anxiété.
|
||||
|
||||
2. **Design addictif** — Les algorithmes des réseaux sociaux sont spécifiquement conçus pour inciter les utilisateurs à continuer de défiler. Le Premier ministre Mitsotakis a dénoncé « le design addictif de certaines applications » et leurs algorithmes « motivés par le profit ».
|
||||
|
||||
3. **Troubles du sommeil** — Plusieurs études établissent un lien entre une utilisation intensive des réseaux sociaux chez les jeunes et une mauvaise qualité de sommeil, ce qui affecte les résultats scolaires, l'humeur et la santé physique.
|
||||
|
||||
## La Grèce rejoint une vague mondiale
|
||||
|
||||
La Grèce n'est pas seule. Des pays du monde entier prennent des mesures similaires :
|
||||
|
||||
| Pays | Âge limite | Statut | Détail |
|
||||
|---|---|---|---|
|
||||
| **Australie** | Moins de 16 ans | En vigueur (déc. 2025) | Premier pays au monde ; amendes jusqu'à 49,5 M AUD |
|
||||
| **Indonésie** | Moins de 16 ans | En vigueur (mars 2026) | Entreprises convoquées pour non-conformité |
|
||||
| **France** | Moins de 15 ans | Voté (avr. 2026) | Approche par liste noire du régulateur Arcom |
|
||||
| **Grèce** | Moins de 15 ans | Annoncé (avr. 2026) | Entre en vigueur le 1er janv. 2027 |
|
||||
| **Norvège** | Moins de 15 ans | Proposé | Projet de loi en cours |
|
||||
|
||||
## Est-ce que ça fonctionne vraiment ? L'expérience australienne
|
||||
|
||||
L'Australie est devenue le premier pays à appliquer une interdiction des réseaux sociaux pour les moins de 16 ans en décembre 2025. Quatre mois plus tard, les résultats sont mitigés : des études suggèrent qu'environ **70 % des enfants** ont encore trouvé des moyens d'accéder aux plateformes interdites.
|
||||
|
||||
Cela soulève une question importante : les interdictions peuvent-elles vraiment fonctionner quand des adolescents déterminés savent contourner les restrictions ? Les critiques estiment que les interdictions poussent les jeunes vers des coins moins sûrs d'internet plutôt que de les en éloigner complètement.
|
||||
|
||||
Deux adolescents australiens — Noah Jones et Macy Neyland — contestent même l'interdiction devant les tribunaux, estimant qu'elle bafoue les droits des enfants.
|
||||
|
||||
## Le problème de la vérification d'âge
|
||||
|
||||
Pour appliquer une interdiction, les plateformes doivent connaître l'âge de leurs utilisateurs. Mais vérifier l'âge en ligne est étonnamment difficile :
|
||||
|
||||
- **Scans faciaux** — L'IA peut estimer l'âge à partir de photos, mais cela soulève de graves préoccupations en matière de vie privée. Qui stocke ces données biométriques ?
|
||||
- **Vérification d'identité** — Efficace, mais de nombreux jeunes ne disposent pas de pièce d'identité officielle
|
||||
- **Paradoxe de la vie privée** — Interdire les réseaux sociaux pour protéger la vie privée des enfants nécessite de collecter encore plus de données personnelles pour vérifier l'âge
|
||||
|
||||
La Grèce, aux côtés de la France, du Danemark, de l'Italie, de l'Espagne et de Chypre, participe à un **programme pilote européen de vérification d'âge** testant des solutions liées aux registres de population nationaux.
|
||||
|
||||
## Et Chypre ?
|
||||
|
||||
En tant que membre de l'UE et voisin proche de la Grèce, Chypre suit attentivement la situation :
|
||||
|
||||
- **Âge limite actuel** : 14 ans (dans le cadre du RGPD)
|
||||
- **Proposition en cours** : un projet de loi visant à relever l'âge minimum de 14 à 16 ans est débattu à la Commission des affaires juridiques du Parlement
|
||||
- **Priorité de la présidence de l'UE** : le président Nikos Christodoulides a déclaré la sécurité numérique des enfants priorité de la présidence chypriote de l'UE en 2026
|
||||
- **Lettre conjointe** : Chypre a cosigné une lettre avec la France, la Grèce, l'Espagne, le Danemark et la Slovénie demandant un « âge de majorité numérique » à l'échelle de l'UE
|
||||
- **Programme pilote de vérification d'âge** : Chypre fait partie des six pays de l'UE testant la technologie de vérification d'âge
|
||||
|
||||
Chypre a également introduit un projet de loi distinct rendant **l'éducation à la citoyenneté numérique obligatoire** dans toutes les écoles — apprendre aux jeunes à utiliser internet en toute sécurité plutôt que simplement les en interdire l'accès.
|
||||
|
||||
## Les deux côtés du débat
|
||||
|
||||
**En faveur des interdictions :**
|
||||
- Protection contre les algorithmes addictifs conçus pour maximiser le temps d'utilisation
|
||||
- Réduction de l'exposition aux contenus nuisibles, au cyberharcèlement et aux comparaisons irréalistes
|
||||
- Les enfants ont le temps de développer leur résilience émotionnelle avant d'entrer sur les réseaux sociaux
|
||||
|
||||
**Contre les interdictions :**
|
||||
- Difficiles à appliquer (taux de contournement de 70 % en Australie)
|
||||
- Suppression de plateformes utilisées par les jeunes pour le soutien mutuel, la créativité et l'engagement civique
|
||||
- La vérification d'âge crée de nouveaux risques pour la vie privée
|
||||
- Les adolescents pourraient se tourner vers des plateformes non réglementées ou moins sûres
|
||||
|
||||
Amnesty International qualifie les interdictions de réseaux sociaux de « solution rapide inefficace », tandis que l'UNICEF avertit que les restrictions basées sur l'âge seules ne protégeront pas les enfants.
|
||||
|
||||
## Ce que cela signifie pour les familles
|
||||
|
||||
- **En Grèce** : à partir de janvier 2027, les plateformes seront légalement tenues d'empêcher les moins de 15 ans d'accéder aux réseaux sociaux. Les parents n'auront plus à compter uniquement sur le contrôle parental.
|
||||
- **En Europe** : la décision de la Grèce renforce la dynamique européenne. D'autres pays devraient suivre.
|
||||
- **Partout** : indépendamment des lois locales, les familles peuvent discuter des habitudes saines en matière de temps d'écran et de la différence entre échanger avec des amis et défiler sans fin dans des fils d'actualité.
|
||||
|
||||
## Quelle est la suite ?
|
||||
|
||||
La Grèce élaborera la législation détaillée dans les mois à venir. L'interdiction doit entrer en vigueur le **1er janvier 2027**. Les principales questions en suspens portent sur le fonctionnement pratique de la vérification d'âge et les sanctions auxquelles les plateformes s'exposeront en cas de non-conformité.
|
||||
|
||||
---
|
||||
|
||||
*Pour un aperçu plus large des lois de protection de l'enfance dans le monde, consultez notre [panorama mondial](/fr/lois-protection-enfance-2026-panorama-mondial/). Pour comprendre comment les plateformes de réseaux sociaux sont conçues pour créer une dépendance, lisez notre article sur [les entreprises tech et le modèle économique de l'addiction](/fr/entreprises-tech-addiction-modele-economique/).*
|
||||
@@ -13,7 +13,10 @@ Les gouvernements du monde entier prennent des mesures sans précédent pour pro
|
||||
|
||||
Voici ce que vous devez savoir sur les lois de protection de l'enfance les plus importantes qui entrent en vigueur cette année.
|
||||
|
||||
{{< child-safety-map >}}
|
||||
{{< stats-banner >}}
|
||||
|
||||
{{< world-map >}}
|
||||
|
||||
|
||||
## Australie : le premier pays à interdire les réseaux sociaux aux moins de 16 ans
|
||||
|
||||
@@ -69,6 +72,8 @@ Un premier prototype a été publié en juillet 2025, avec une deuxième version
|
||||
|
||||
**Ce que cela signifie pour les parents dans l'UE :** D'ici fin 2026, les plateformes opérant en Europe feront face à une application plus stricte de la vérification d'âge. Le portefeuille d'identité numérique pourrait devenir le moyen standard pour vos enfants de prouver leur âge en ligne — sans divulguer de données personnelles.
|
||||
|
||||
{{< child-safety-map >}}
|
||||
|
||||
## Allemagne : renforcement du JuSchG
|
||||
|
||||
L'Allemagne est à l'avant-garde de la protection de l'enfance grâce à sa *Jugendschutzgesetz* (loi sur la protection de la jeunesse). Les amendements de 2021, qui ont étendu la portée de la loi aux plateformes en ligne, continuent d'être appliqués avec une rigueur croissante. Les plateformes doivent désormais :
|
||||
@@ -87,6 +92,8 @@ Le Brésil a promulgué le *Estatuto Digital da Criança e do Adolescente* (Stat
|
||||
- Des exigences de conception adaptée à l'âge dans les services numériques
|
||||
- Des mesures renforcées de protection des données personnelles des enfants
|
||||
|
||||
{{< law-charts >}}
|
||||
|
||||
## Ce que les parents peuvent faire dès maintenant
|
||||
|
||||
Alors que les gouvernements rattrapent leur retard, les parents n'ont pas besoin d'attendre l'entrée en vigueur des lois. Voici les mesures pratiques que vous pouvez prendre dès aujourd'hui :
|
||||
@@ -109,7 +116,6 @@ Les lois ne sont pas parfaites. Il existe des préoccupations légitimes concern
|
||||
|
||||
À mesure que ces lois entrent en vigueur, la protection la plus efficace sera toujours une combinaison de législation intelligente, de conception responsable des plateformes et de parentalité engagée. La technologie peut combler le fossé.
|
||||
|
||||
{{< vpn-cta >}}
|
||||
|
||||
## Questions fréquemment posées
|
||||
|
||||
|
||||
101
data/countries.json
Normal file
101
data/countries.json
Normal file
@@ -0,0 +1,101 @@
|
||||
[
|
||||
{"iso3": "AUS", "isoNum": "036", "flag": "🇦🇺", "status": "enforced", "year": 2024, "ageLimitSocial": 16,
|
||||
"en": {"name": "Australia", "law": "Social Media Minimum Age Act 2024", "detail": "Social media ban for under-16s. Fines up to AUD 49.5M."},
|
||||
"de": {"name": "Australien", "law": "Social Media Minimum Age Act 2024", "detail": "Social-Media-Verbot für unter 16-Jährige. Bußgelder bis 49,5 Mio. AUD."},
|
||||
"fr": {"name": "Australie", "law": "Social Media Minimum Age Act 2024", "detail": "Interdiction des réseaux sociaux pour les moins de 16 ans. Amendes jusqu'à 49,5 M AUD."}},
|
||||
|
||||
{"iso3": "GBR", "isoNum": "826", "flag": "🇬🇧", "status": "enforced", "year": 2023, "ageLimitSocial": 13,
|
||||
"en": {"name": "United Kingdom", "law": "Online Safety Act 2023", "detail": "Comprehensive online safety regime. Age verification required."},
|
||||
"de": {"name": "Vereinigtes Königreich", "law": "Online Safety Act 2023", "detail": "Umfassendes Online-Sicherheitsregime. Altersverifikation erforderlich."},
|
||||
"fr": {"name": "Royaume-Uni", "law": "Online Safety Act 2023", "detail": "Régime complet de sécurité en ligne. Vérification d'âge obligatoire."}},
|
||||
|
||||
{"iso3": "DEU", "isoNum": "276", "flag": "🇩🇪", "status": "guidelines", "year": 2021, "ageLimitSocial": 13,
|
||||
"en": {"name": "Germany", "law": "Jugendschutzgesetz (JuSchG)", "detail": "Traditional youth protection law with limited digital extension. No dedicated social media regulation."},
|
||||
"de": {"name": "Deutschland", "law": "Jugendschutzgesetz (JuSchG)", "detail": "Klassisches Jugendschutzgesetz mit begrenzter digitaler Erweiterung. Keine spezifische Social-Media-Regulierung."},
|
||||
"fr": {"name": "Allemagne", "law": "Jugendschutzgesetz (JuSchG)", "detail": "Loi traditionnelle de protection de la jeunesse avec extension numérique limitée. Pas de réglementation spécifique des réseaux sociaux."}},
|
||||
|
||||
{"iso3": "CHN", "isoNum": "156", "flag": "🇨🇳", "status": "enforced", "year": 2021, "ageLimitSocial": 14,
|
||||
"en": {"name": "China", "law": "Minor Protection Law", "detail": "1hr/day gaming for minors. Real-name verification mandatory."},
|
||||
"de": {"name": "China", "law": "Minderjährigenschutzgesetz", "detail": "1 Std./Tag Gaming für Minderjährige. Echtnamen-Verifizierung verpflichtend."},
|
||||
"fr": {"name": "Chine", "law": "Loi sur la protection des mineurs", "detail": "1h/jour de jeux vidéo pour les mineurs. Vérification d'identité obligatoire."}},
|
||||
|
||||
{"iso3": "KOR", "isoNum": "410", "flag": "🇰🇷", "status": "enforced", "year": 2020, "ageLimitSocial": 14,
|
||||
"en": {"name": "South Korea", "law": "Youth Protection Act", "detail": "Long-standing youth protection framework. Real-name verification."},
|
||||
"de": {"name": "Südkorea", "law": "Jugendschutzgesetz", "detail": "Langjähriger Jugendschutzrahmen. Echtnamen-Verifizierung für Online-Dienste."},
|
||||
"fr": {"name": "Corée du Sud", "law": "Loi sur la protection de la jeunesse", "detail": "Cadre de protection de la jeunesse établi de longue date. Vérification d'identité."}},
|
||||
|
||||
{"iso3": "IRL", "isoNum": "372", "flag": "🇮🇪", "status": "enforced", "year": 2022, "ageLimitSocial": 13,
|
||||
"en": {"name": "Ireland", "law": "Online Safety and Media Regulation Act", "detail": "Coimisiún na Meán regulates online safety with binding codes."},
|
||||
"de": {"name": "Irland", "law": "Online Safety and Media Regulation Act", "detail": "Coimisiún na Meán reguliert Online-Sicherheit mit verbindlichen Kodizes."},
|
||||
"fr": {"name": "Irlande", "law": "Online Safety and Media Regulation Act", "detail": "Coimisiún na Meán régule la sécurité en ligne avec des codes contraignants."}},
|
||||
|
||||
{"iso3": "NLD", "isoNum": "528", "flag": "🇳🇱", "status": "enforced", "year": 2024, "ageLimitSocial": 16,
|
||||
"en": {"name": "Netherlands", "law": "DSA + Children's Code", "detail": "Dutch DPA actively enforcing children's data protection."},
|
||||
"de": {"name": "Niederlande", "law": "DSA + Kinderkodex", "detail": "Datenschutzbehörde setzt Kinderdatenschutz aktiv durch."},
|
||||
"fr": {"name": "Pays-Bas", "law": "DSA + Code de l'enfance", "detail": "Autorité de protection des données applique activement la protection des données des enfants."}},
|
||||
|
||||
{"iso3": "SWE", "isoNum": "752", "flag": "🇸🇪", "status": "enforced", "year": 2024, "ageLimitSocial": 13,
|
||||
"en": {"name": "Sweden", "law": "DSA + National Youth Guidelines", "detail": "EU DSA framework plus national youth protection guidelines."},
|
||||
"de": {"name": "Schweden", "law": "DSA + Nationale Jugendrichtlinien", "detail": "EU-DSA-Rahmen plus nationale Jugendschutzrichtlinien."},
|
||||
"fr": {"name": "Suède", "law": "DSA + Directives nationales jeunesse", "detail": "Cadre DSA de l'UE plus directives nationales de protection de la jeunesse."}},
|
||||
|
||||
{"iso3": "GRC", "isoNum": "300", "flag": "🇬🇷", "status": "passed", "year": 2026, "ageLimitSocial": 15,
|
||||
"en": {"name": "Greece", "law": "Social Media Ban for Minors", "detail": "Ban on social media for under-15s announced April 2026. Takes effect January 2027."},
|
||||
"de": {"name": "Griechenland", "law": "Social-Media-Verbot für Minderjährige", "detail": "Social-Media-Verbot für unter 15-Jährige angekündigt April 2026. Tritt Januar 2027 in Kraft."},
|
||||
"fr": {"name": "Grèce", "law": "Interdiction des réseaux sociaux pour les mineurs", "detail": "Interdiction des réseaux sociaux pour les moins de 15 ans annoncée en avril 2026. Entre en vigueur en janvier 2027."}},
|
||||
|
||||
{"iso3": "IDN", "isoNum": "360", "flag": "🇮🇩", "status": "enforced", "year": 2026, "ageLimitSocial": 16,
|
||||
"en": {"name": "Indonesia", "law": "Social Media Age Restriction", "detail": "Social media ban for under-16s enforced since March 2026."},
|
||||
"de": {"name": "Indonesien", "law": "Altersbeschränkung für Social Media", "detail": "Social-Media-Verbot für unter 16-Jährige seit März 2026 in Kraft."},
|
||||
"fr": {"name": "Indonésie", "law": "Restriction d'âge réseaux sociaux", "detail": "Interdiction des réseaux sociaux pour les moins de 16 ans en vigueur depuis mars 2026."}},
|
||||
|
||||
{"iso3": "CYP", "isoNum": "196", "flag": "🇨🇾", "status": "progress", "year": 2026, "ageLimitSocial": 14,
|
||||
"en": {"name": "Cyprus", "law": "DSA + Age Limit Reform", "detail": "Bill to raise age limit from 14 to 16 in debate. EU age verification pilot participant."},
|
||||
"de": {"name": "Zypern", "law": "DSA + Altersgrenze-Reform", "detail": "Gesetzentwurf zur Anhebung der Altersgrenze von 14 auf 16 in Beratung. Teilnehmer am EU-Pilotprogramm."},
|
||||
"fr": {"name": "Chypre", "law": "DSA + Réforme de l'âge limite", "detail": "Projet de loi pour relever l'âge de 14 à 16 ans en débat. Participant au programme pilote européen."}},
|
||||
|
||||
{"iso3": "FRA", "isoNum": "250", "flag": "🇫🇷", "status": "passed", "year": 2026, "ageLimitSocial": 15,
|
||||
"en": {"name": "France", "law": "Loi SREN + Social Media Ban", "detail": "Senate votes to ban social media for under-15s (April 2026). Arcom blacklist."},
|
||||
"de": {"name": "Frankreich", "law": "Loi SREN + Social-Media-Verbot", "detail": "Senat stimmt für Social-Media-Verbot unter 15 (April 2026). Arcom-Blacklist."},
|
||||
"fr": {"name": "France", "law": "Loi SREN + Interdiction réseaux sociaux", "detail": "Le Sénat vote l'interdiction des réseaux sociaux pour les moins de 15 ans (avril 2026)."}},
|
||||
|
||||
{"iso3": "BRA", "isoNum": "076", "flag": "🇧🇷", "status": "passed", "year": 2025, "ageLimitSocial": 12,
|
||||
"en": {"name": "Brazil", "law": "ECA Digital", "detail": "Loot box ban for minors. Age-appropriate design requirements."},
|
||||
"de": {"name": "Brasilien", "law": "ECA Digital", "detail": "Lootbox-Verbot für Minderjährige. Altersgerechtes Design."},
|
||||
"fr": {"name": "Brésil", "law": "ECA Digital", "detail": "Interdiction des loot boxes pour les mineurs. Exigences de design adapté à l'âge."}},
|
||||
|
||||
{"iso3": "IND", "isoNum": "356", "flag": "🇮🇳", "status": "passed", "year": 2023, "ageLimitSocial": 18,
|
||||
"en": {"name": "India", "law": "DPDP Act 2023", "detail": "Verifiable parental consent for under-18s."},
|
||||
"de": {"name": "Indien", "law": "DPDP Act 2023", "detail": "Verifizierbare elterliche Einwilligung für unter 18-Jährige."},
|
||||
"fr": {"name": "Inde", "law": "DPDP Act 2023", "detail": "Consentement parental vérifiable pour les moins de 18 ans."}},
|
||||
|
||||
{"iso3": "ITA", "isoNum": "380", "flag": "🇮🇹", "status": "passed", "year": 2025, "ageLimitSocial": 14,
|
||||
"en": {"name": "Italy", "law": "DSA + Parental Consent Law", "detail": "Digital age of consent set to 14."},
|
||||
"de": {"name": "Italien", "law": "DSA + Einwilligungsgesetz", "detail": "Digitales Einwilligungsalter auf 14 festgelegt."},
|
||||
"fr": {"name": "Italie", "law": "DSA + Loi sur le consentement parental", "detail": "Âge de consentement numérique fixé à 14 ans."}},
|
||||
|
||||
{"iso3": "ESP", "isoNum": "724", "flag": "🇪🇸", "status": "passed", "year": 2025, "ageLimitSocial": 14,
|
||||
"en": {"name": "Spain", "law": "Child Protection in Digital Environments", "detail": "Comprehensive child digital protection law."},
|
||||
"de": {"name": "Spanien", "law": "Organisches Kinderschutzgesetz", "detail": "Umfassendes digitales Kinderschutzgesetz."},
|
||||
"fr": {"name": "Espagne", "law": "Protection de l'enfance dans les environnements numériques", "detail": "Loi complète de protection numérique de l'enfance."}},
|
||||
|
||||
{"iso3": "NOR", "isoNum": "578", "flag": "🇳🇴", "status": "passed", "year": 2025, "ageLimitSocial": 15,
|
||||
"en": {"name": "Norway", "law": "Social Media Age Limit", "detail": "Proposed social media age limit of 15."},
|
||||
"de": {"name": "Norwegen", "law": "Social-Media-Altersgrenze", "detail": "Geplante Altersgrenze von 15 Jahren."},
|
||||
"fr": {"name": "Norvège", "law": "Limite d'âge réseaux sociaux", "detail": "Limite d'âge proposée à 15 ans."}},
|
||||
|
||||
{"iso3": "USA", "isoNum": "840", "flag": "🇺🇸", "status": "progress", "year": 2026, "ageLimitSocial": 13,
|
||||
"en": {"name": "United States", "law": "KOSA + COPPA Update", "detail": "KOSA passed Senate 91-3. COPPA update by Apr 2026."},
|
||||
"de": {"name": "Vereinigte Staaten", "law": "KOSA + COPPA-Update", "detail": "KOSA im Senat angenommen. COPPA-Update bis Apr. 2026."},
|
||||
"fr": {"name": "États-Unis", "law": "KOSA + Mise à jour COPPA", "detail": "KOSA adopté au Sénat 91-3. Mise à jour COPPA prévue avr. 2026."}},
|
||||
|
||||
{"iso3": "CAN", "isoNum": "124", "flag": "🇨🇦", "status": "progress", "year": 2026, "ageLimitSocial": 13,
|
||||
"en": {"name": "Canada", "law": "Online Harms Act (C-63)", "detail": "Proposed duty of care for platforms."},
|
||||
"de": {"name": "Kanada", "law": "Online Harms Act (C-63)", "detail": "Sorgfaltspflicht für Plattformen in Prüfung."},
|
||||
"fr": {"name": "Canada", "law": "Online Harms Act (C-63)", "detail": "Devoir de diligence proposé pour les plateformes."}},
|
||||
|
||||
{"iso3": "JPN", "isoNum": "392", "flag": "🇯🇵", "status": "guidelines", "year": 2024, "ageLimitSocial": 13,
|
||||
"en": {"name": "Japan", "law": "Act on Regulation of Soliciting Children", "detail": "Platform self-regulation encouraged."},
|
||||
"de": {"name": "Japan", "law": "Regulierung der Kontaktaufnahme", "detail": "Selbstregulierung der Plattformen empfohlen."},
|
||||
"fr": {"name": "Japon", "law": "Loi sur la régulation de la sollicitation des enfants", "detail": "Autorégulation des plateformes encouragée."}}
|
||||
]
|
||||
5
go.mod
Normal file
5
go.mod
Normal file
@@ -0,0 +1,5 @@
|
||||
module github.com/christian/internetforkids
|
||||
|
||||
go 1.26.1
|
||||
|
||||
require github.com/HugoBlox/hugo-blox-builder/modules/blox-core v0.4.1 // indirect
|
||||
2
go.sum
Normal file
2
go.sum
Normal file
@@ -0,0 +1,2 @@
|
||||
github.com/HugoBlox/hugo-blox-builder/modules/blox-core v0.4.1 h1:LAIEtt5FVZVJoKVmZ+rB/M5exoek52ksCEK12HWssIo=
|
||||
github.com/HugoBlox/hugo-blox-builder/modules/blox-core v0.4.1/go.mod h1:So8+V2U+TNxlXmcpZfdDX0muLh3PdJ7z92h30sv3bZg=
|
||||
12
hugo.toml
12
hugo.toml
@@ -1,16 +1,22 @@
|
||||
baseURL = "https://internetforkids.ong/"
|
||||
baseURL = "https://internetforkids.org/"
|
||||
title = "Internet for Kids"
|
||||
theme = "congo"
|
||||
|
||||
defaultContentLanguage = "en"
|
||||
defaultContentLanguageInSubdir = true
|
||||
|
||||
enableRobotsTXT = true
|
||||
|
||||
[module]
|
||||
[[module.imports]]
|
||||
path = "github.com/HugoBlox/hugo-blox-builder/modules/blox-core"
|
||||
|
||||
[minify]
|
||||
disableJS = true
|
||||
|
||||
[markup]
|
||||
[markup.goldmark]
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = false
|
||||
unsafe = true
|
||||
[markup.highlight]
|
||||
style = "monokai"
|
||||
|
||||
|
||||
17
i18n/de.toml
Normal file
17
i18n/de.toml
Normal file
@@ -0,0 +1,17 @@
|
||||
[recent_posts]
|
||||
other = "Neueste Artikel"
|
||||
|
||||
[read_more]
|
||||
other = "Weiterlesen"
|
||||
|
||||
[table_of_contents]
|
||||
other = "Inhaltsverzeichnis"
|
||||
|
||||
[tags]
|
||||
other = "Schlagwörter"
|
||||
|
||||
[previous]
|
||||
other = "Vorheriger"
|
||||
|
||||
[next]
|
||||
other = "Nächster"
|
||||
17
i18n/en.toml
Normal file
17
i18n/en.toml
Normal file
@@ -0,0 +1,17 @@
|
||||
[recent_posts]
|
||||
other = "Recent Articles"
|
||||
|
||||
[read_more]
|
||||
other = "Read more"
|
||||
|
||||
[table_of_contents]
|
||||
other = "Table of Contents"
|
||||
|
||||
[tags]
|
||||
other = "Tags"
|
||||
|
||||
[previous]
|
||||
other = "Previous"
|
||||
|
||||
[next]
|
||||
other = "Next"
|
||||
17
i18n/fr.toml
Normal file
17
i18n/fr.toml
Normal file
@@ -0,0 +1,17 @@
|
||||
[recent_posts]
|
||||
other = "Articles récents"
|
||||
|
||||
[read_more]
|
||||
other = "Lire la suite"
|
||||
|
||||
[table_of_contents]
|
||||
other = "Table des matières"
|
||||
|
||||
[tags]
|
||||
other = "Mots-clés"
|
||||
|
||||
[previous]
|
||||
other = "Précédent"
|
||||
|
||||
[next]
|
||||
other = "Suivant"
|
||||
58
layouts/_default/baseof.html
Normal file
58
layouts/_default/baseof.html
Normal file
@@ -0,0 +1,58 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ .Language.LanguageCode | default "en" }}" dir="{{ .Language.LanguageDirection | default "ltr" }}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="{{ .Description | default .Summary | plainify | truncate 160 }}">
|
||||
<meta name="author" content="{{ .Params.author | default "Internet for Kids" }}">
|
||||
|
||||
<title>{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} — {{ .Site.Title }}{{ end }}</title>
|
||||
|
||||
{{ partial "extend-head.html" . }}
|
||||
|
||||
{{/* Main stylesheet with Newsreader + custom colors */}}
|
||||
<link rel="stylesheet" href="{{ "css/main.css" | relURL }}?v={{ now.Unix }}">
|
||||
</head>
|
||||
<body style="background-color:var(--ifk-bg);color:var(--ifk-text)">
|
||||
<header style="border-bottom:1px solid #e5e7eb;background:white;position:sticky;top:0;z-index:40">
|
||||
<nav style="max-width:64rem;margin:0 auto;padding:1rem;display:flex;justify-content:space-between;align-items:center">
|
||||
<a href="{{ "/" | relLangURL }}" style="font-family:var(--ifk-font);font-size:1.35rem;font-weight:600;color:var(--ifk-text);text-decoration:none">
|
||||
Internet for Kids
|
||||
</a>
|
||||
<div style="display:flex;align-items:center;gap:1.5rem;font-family:system-ui,-apple-system,sans-serif;font-size:0.95rem">
|
||||
{{ range .Site.Menus.main }}
|
||||
{{ if ne .Identifier "locale" }}
|
||||
<a href="{{ .URL | relLangURL }}" style="color:#4b5563;text-decoration:none">{{ .Name }}</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ partial "language-switcher.html" . }}
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main style="flex:1">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</main>
|
||||
|
||||
<footer style="border-top:1px solid #e5e7eb;background:white;margin-top:5rem">
|
||||
<div style="max-width:64rem;margin:0 auto;padding:3rem 1rem">
|
||||
<div style="display:flex;gap:2rem;flex-wrap:wrap;margin-bottom:2rem">
|
||||
{{ range .Site.Menus.footer }}
|
||||
<a href="{{ .URL | relLangURL }}" style="color:#6b7280;text-decoration:none;font-family:system-ui,sans-serif;font-size:0.875rem">
|
||||
{{ .Name }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div style="border-top:1px solid #e5e7eb;padding-top:2rem;text-align:center;font-size:0.85rem;color:#6b7280;font-family:system-ui,sans-serif">
|
||||
<p>
|
||||
© {{ now.Year }} Internet for Kids | Powered by <a href="https://go.agiliton.eu/vpn-app" style="color:var(--ifk-accent);text-decoration:none">Agiliton VPN</a>
|
||||
</p>
|
||||
{{ partial "extend-footer.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
{{ partial "rybbit.html" . }}
|
||||
{{ partial "structured-data.html" . }}
|
||||
</body>
|
||||
</html>
|
||||
33
layouts/_default/home.html
Normal file
33
layouts/_default/home.html
Normal file
@@ -0,0 +1,33 @@
|
||||
{{ define "main" }}
|
||||
<article class="prose max-w-3xl mx-auto py-12 px-4">
|
||||
<h1 style="font-family:var(--ifk-font);font-size:2.75rem;font-weight:600;line-height:1.15;letter-spacing:-0.01em;margin-bottom:1.5rem">
|
||||
{{ with .Params.subtitle }}{{ . }}{{ else }}{{ .Title }}{{ end }}
|
||||
</h1>
|
||||
<div class="home-content">{{ .Content }}</div>
|
||||
|
||||
<div class="mt-12">
|
||||
<h2>{{ i18n "recent_posts" | default "Recent Articles" }}</h2>
|
||||
<div class="grid gap-8">
|
||||
{{ range first 5 .Site.RegularPages }}
|
||||
<article class="border-b pb-8">
|
||||
<h3 class="text-2xl font-newsreader mb-2">
|
||||
<a href="{{ .Permalink }}" class="text-ifk-accent hover:text-ifk-accent-hover">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
</h3>
|
||||
<div class="text-sm text-gray-600 mb-4">
|
||||
<time datetime="{{ .Date.Format "2006-01-02" }}">{{ .Date.Format "January 2, 2006" }}</time>
|
||||
{{ with .Params.author }}— {{ . }}{{ end }}
|
||||
</div>
|
||||
<p class="text-lg font-newsreader leading-relaxed">
|
||||
{{ .Summary }}
|
||||
</p>
|
||||
<a href="{{ .Permalink }}" class="inline-block mt-4 text-ifk-accent hover:text-ifk-accent-hover font-medium">
|
||||
{{ i18n "read_more" | default "Read more" }} →
|
||||
</a>
|
||||
</article>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
{{ end }}
|
||||
35
layouts/_default/list.html
Normal file
35
layouts/_default/list.html
Normal file
@@ -0,0 +1,35 @@
|
||||
{{ define "main" }}
|
||||
<div class="max-w-3xl mx-auto py-12 px-4">
|
||||
<header class="mb-12">
|
||||
<h1 class="text-4xl font-newsreader font-semibold mb-4">{{ .Title }}</h1>
|
||||
{{ with .Description }}
|
||||
<p class="text-lg text-gray-600">{{ . }}</p>
|
||||
{{ end }}
|
||||
</header>
|
||||
|
||||
<div class="space-y-8">
|
||||
{{ range .Paginator.Pages }}
|
||||
<article class="pb-8 border-b last:border-b-0">
|
||||
<h2 class="text-2xl font-newsreader font-semibold mb-2">
|
||||
<a href="{{ .Permalink }}" class="text-ifk-accent hover:text-ifk-accent-hover">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
</h2>
|
||||
<div class="text-sm text-gray-600 mb-3">
|
||||
<time datetime="{{ .Date.Format "2006-01-02" }}">{{ .Date.Format "January 2, 2006" }}</time>
|
||||
{{ with .Params.author }}— {{ . }}{{ end }}
|
||||
{{ if .ReadingTime }}— {{ .ReadingTime }} min read{{ end }}
|
||||
</div>
|
||||
<p class="text-lg font-newsreader leading-relaxed mb-3">
|
||||
{{ .Summary }}
|
||||
</p>
|
||||
<a href="{{ .Permalink }}" class="inline-block text-ifk-accent hover:text-ifk-accent-hover font-medium">
|
||||
{{ i18n "read_more" | default "Read more" }} →
|
||||
</a>
|
||||
</article>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ template "_internal/pagination.html" . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
102
layouts/_default/single.html
Normal file
102
layouts/_default/single.html
Normal file
@@ -0,0 +1,102 @@
|
||||
{{ define "main" }}
|
||||
<div style="max-width:64rem;margin:0 auto;padding:3rem 1rem;display:grid;grid-template-columns:1fr 240px;gap:3rem">
|
||||
|
||||
{{/* Main article column */}}
|
||||
<article>
|
||||
<header style="margin-bottom:2rem">
|
||||
<h1 style="font-family:var(--ifk-font);font-size:2.75rem;font-weight:600;line-height:1.15;letter-spacing:-0.01em;margin-bottom:1rem">
|
||||
{{ .Title }}
|
||||
</h1>
|
||||
<div style="color:#6b7280;font-family:system-ui,-apple-system,sans-serif;font-size:0.95rem;display:flex;gap:1rem;flex-wrap:wrap;align-items:center">
|
||||
{{ if .Date }}
|
||||
<time datetime="{{ .Date.Format "2006-01-02" }}">
|
||||
{{ .Date.Format "January 2, 2006" }}
|
||||
</time>
|
||||
{{ end }}
|
||||
{{ with .Params.author }}
|
||||
<span>{{ . }}</span>
|
||||
{{ end }}
|
||||
{{ if .ReadingTime }}
|
||||
<span>{{ .ReadingTime }} min read</span>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ with .Params.tags }}
|
||||
<div style="margin-top:0.75rem;display:flex;gap:0.5rem;flex-wrap:wrap">
|
||||
{{ range . }}
|
||||
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}" style="font-family:system-ui,sans-serif;font-size:0.75rem;text-transform:uppercase;letter-spacing:0.05em;color:var(--ifk-accent);text-decoration:none;border:1px solid #e5e7eb;padding:0.2rem 0.6rem;border-radius:4px">
|
||||
{{ . }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</header>
|
||||
|
||||
<div class="article-body" style="font-family:var(--ifk-font);font-size:1.375rem;line-height:1.65">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
{{ if or .NextInSection .PrevInSection }}
|
||||
<nav style="margin-top:3rem;padding-top:2rem;border-top:1px solid #e5e7eb;display:flex;justify-content:space-between;gap:1rem">
|
||||
{{ with .PrevInSection }}
|
||||
<a href="{{ .Permalink }}" style="flex:1;padding:1rem;border:1px solid #e5e7eb;border-radius:6px;text-decoration:none;color:var(--ifk-text)">
|
||||
<div style="font-size:0.75rem;font-family:system-ui,sans-serif;text-transform:uppercase;color:#6b7280;margin-bottom:0.25rem">← {{ i18n "previous" | default "Previous" }}</div>
|
||||
<div style="font-family:var(--ifk-font);font-size:1.1rem">{{ .Title }}</div>
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ with .NextInSection }}
|
||||
<a href="{{ .Permalink }}" style="flex:1;padding:1rem;border:1px solid #e5e7eb;border-radius:6px;text-decoration:none;color:var(--ifk-text);text-align:right">
|
||||
<div style="font-size:0.75rem;font-family:system-ui,sans-serif;text-transform:uppercase;color:#6b7280;margin-bottom:0.25rem">{{ i18n "next" | default "Next" }} →</div>
|
||||
<div style="font-family:var(--ifk-font);font-size:1.1rem">{{ .Title }}</div>
|
||||
</a>
|
||||
{{ end }}
|
||||
</nav>
|
||||
{{ end }}
|
||||
</article>
|
||||
|
||||
{{/* Sidebar */}}
|
||||
<aside style="font-family:system-ui,-apple-system,sans-serif">
|
||||
{{/* Table of Contents */}}
|
||||
{{ if .TableOfContents }}
|
||||
<div style="position:sticky;top:5rem">
|
||||
<h3 style="font-size:0.75rem;text-transform:uppercase;letter-spacing:0.08em;color:#6b7280;font-weight:600;margin-bottom:0.75rem">
|
||||
{{ i18n "table_of_contents" | default "Contents" }}
|
||||
</h3>
|
||||
<div id="sidebar-toc" style="font-size:0.8rem;line-height:1.6;border-left:2px solid #e5e7eb;padding-left:0.75rem">
|
||||
{{ .TableOfContents }}
|
||||
</div>
|
||||
|
||||
{{/* Recent articles */}}
|
||||
{{ $pages := where .Site.RegularPages "Section" .Section }}
|
||||
{{ $recent := first 5 $pages }}
|
||||
{{ if gt (len $recent) 1 }}
|
||||
<h3 style="font-size:0.75rem;text-transform:uppercase;letter-spacing:0.08em;color:#6b7280;font-weight:600;margin-top:2rem;margin-bottom:0.75rem">
|
||||
{{ i18n "recent_articles" | default "Recent" }}
|
||||
</h3>
|
||||
<div style="font-size:0.85rem;line-height:1.6">
|
||||
{{ range $recent }}
|
||||
{{ if ne .Permalink $.Permalink }}
|
||||
<a href="{{ .Permalink }}" style="display:block;color:var(--ifk-text);text-decoration:none;padding:0.4rem 0;border-bottom:1px solid #f3f4f6">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</aside>
|
||||
|
||||
</div>
|
||||
|
||||
<style>
|
||||
@media (max-width: 768px) {
|
||||
div[style*="grid-template-columns:1fr 240px"] {
|
||||
display: block !important;
|
||||
}
|
||||
div[style*="grid-template-columns:1fr 240px"] > aside {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
{{ end }}
|
||||
15
layouts/_default/terms.html
Normal file
15
layouts/_default/terms.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{{ define "main" }}
|
||||
<div style="max-width:48rem;margin:0 auto;padding:3rem 1rem">
|
||||
<h1 style="font-family:var(--ifk-font);font-size:2.75rem;font-weight:600;margin-bottom:2rem">
|
||||
{{ .Title }}
|
||||
</h1>
|
||||
<div style="display:flex;flex-wrap:wrap;gap:0.75rem">
|
||||
{{ range .Pages }}
|
||||
<a href="{{ .Permalink }}" style="display:inline-flex;align-items:center;gap:0.5rem;padding:0.5rem 1.25rem;background:#f8fafc;border:1px solid #e2e8f0;border-radius:999px;text-decoration:none;color:var(--ifk-text);font-family:system-ui,sans-serif;font-size:0.9rem;transition:all 0.15s">
|
||||
<span style="font-weight:600">{{ .Title }}</span>
|
||||
<span style="background:var(--ifk-accent);color:#fff;font-size:0.7rem;font-weight:700;padding:0.15rem 0.5rem;border-radius:999px;min-width:1.25rem;text-align:center">{{ len .Pages }}</span>
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -1,9 +1,23 @@
|
||||
{{ if .IsTranslated }}
|
||||
<nav class="language-switcher" aria-label="Language">
|
||||
{{ range .Translations }}
|
||||
<a href="{{ .Permalink }}" lang="{{ .Language.Lang }}" hreflang="{{ .Language.Lang }}">
|
||||
<div class="lang-switch" style="position:relative">
|
||||
<button onclick="this.parentElement.classList.toggle('open')" style="background:none;border:1px solid #e5e7eb;border-radius:6px;padding:0.35rem 0.75rem;cursor:pointer;font-family:system-ui,-apple-system,sans-serif;font-size:0.875rem;color:#4b5563;display:flex;align-items:center;gap:0.4rem">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor" style="opacity:0.6"><path d="M4.545 6.714L4.11 8H3l1.862-5h1.284L8 8H6.833l-.435-1.286H4.545zm1.634-.736L5.5 3.956h-.049l-.679 2.022H6.18z"/><path d="M0 2a2 2 0 012-2h7a2 2 0 012 2v3h3a2 2 0 012 2v7a2 2 0 01-2 2H7a2 2 0 01-2-2v-3H2A2 2 0 010 9V2zm2-1A1 1 0 001 2v7a1 1 0 001 1h7a1 1 0 001-1V2A1 1 0 009 1H2zm7.138 9.995c.193.301.402.583.63.846-.748.575-1.673 1.001-2.768 1.292.178.217.451.635.555.867 1.125-.359 2.08-.844 2.886-1.494.777.665 1.739 1.165 2.93 1.472.133-.254.414-.673.629-.89-1.125-.253-2.057-.694-2.82-1.284.681-.747 1.222-1.651 1.621-2.757H14V8h-3v1.047h.765c-.318.844-.74 1.546-1.272 2.13a6.066 6.066 0 01-.415-.492 1.988 1.988 0 01-.94.31z"/></svg>
|
||||
{{ .Language.LanguageName }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</nav>
|
||||
<svg width="10" height="10" viewBox="0 0 10 10" fill="currentColor" style="opacity:0.5"><path d="M2 3.5L5 7l3-3.5H2z"/></svg>
|
||||
</button>
|
||||
<div class="lang-dropdown" style="display:none;position:absolute;right:0;top:calc(100% + 4px);background:white;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.1);overflow:hidden;min-width:140px;z-index:50">
|
||||
<a href="{{ .Permalink }}" style="display:block;padding:0.5rem 1rem;font-size:0.875rem;font-family:system-ui,sans-serif;color:#4d7c0f;background:#f0fdf4;text-decoration:none;font-weight:500">
|
||||
{{ .Language.LanguageName }} ✓
|
||||
</a>
|
||||
{{ range .Translations }}
|
||||
<a href="{{ .Permalink }}" lang="{{ .Language.Lang }}" hreflang="{{ .Language.Lang }}" style="display:block;padding:0.5rem 1rem;font-size:0.875rem;font-family:system-ui,sans-serif;color:#374151;text-decoration:none">
|
||||
{{ .Language.LanguageName }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<style>
|
||||
.lang-switch.open .lang-dropdown { display:block !important; }
|
||||
.lang-dropdown a:hover { background:#f9fafb; }
|
||||
</style>
|
||||
{{ end }}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
Agiliton VPN provides content filtering, device protection, and safe browsing for the whole family.
|
||||
{{ end }}
|
||||
</p>
|
||||
<a href="https://go.agiliton.eu/vpn" style="display: inline-block; background: #fff; color: #1a365d; padding: 0.75rem 2rem; border-radius: 8px; text-decoration: none; font-weight: 600;">
|
||||
<a href="https://go.agiliton.eu/vpn-app" style="display: inline-block; background: #fff; color: #1a365d; padding: 0.75rem 2rem; border-radius: 8px; text-decoration: none; font-weight: 600;">
|
||||
{{ if eq .Language.Lang "de" }}Mehr erfahren{{ else }}Learn More{{ end }}
|
||||
</a>
|
||||
</aside>
|
||||
|
||||
36
layouts/shortcodes/addiction-chart.html
Normal file
36
layouts/shortcodes/addiction-chart.html
Normal file
@@ -0,0 +1,36 @@
|
||||
{{/* Horizontal bar chart — teen social media usage percentages */}}
|
||||
{{ $lang := .Page.Language.Lang }}
|
||||
<div style="background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:1.5rem;text-align:center;margin:2rem 0">
|
||||
<h4 style="margin:0 0 1rem;font-size:0.9rem;color:#334155;font-family:system-ui,sans-serif">{{ if eq $lang "de" }}Jugendliche & Social Media{{ else if eq $lang "fr" }}Adolescents & réseaux sociaux{{ else }}Teens & Social Media{{ end }}</h4>
|
||||
<canvas id="addiction-usage-chart"></canvas>
|
||||
</div>
|
||||
<script src="{{ "js/chart.umd.min.js" | relURL }}"></script>
|
||||
<script>
|
||||
(function() {
|
||||
const lang = '{{ $lang }}';
|
||||
const labels = {
|
||||
en: ['Use social media\nregularly', 'Feel addicted', 'Sleep negatively\naffected', '3+ hours/day'],
|
||||
de: ['Nutzen Social Media\nregelmäßig', 'Fühlen sich\nsüchtig', 'Schlaf negativ\nbeeinflusst', '3+ Stunden/Tag'],
|
||||
fr: ['Utilisent les\nréseaux sociaux', 'Se sentent\ndépendants', 'Sommeil\nnégativement affecté', '3+ heures/jour']
|
||||
};
|
||||
new Chart(document.getElementById('addiction-usage-chart'), {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: labels[lang] || labels.en,
|
||||
datasets: [{
|
||||
data: [95, 47, 45, 63],
|
||||
backgroundColor: ['#667eea', '#764ba2', '#a78bfa', '#c4b5fd'],
|
||||
borderRadius: 6, barThickness: 28
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
indexAxis: 'y', responsive: true, maintainAspectRatio: true,
|
||||
plugins: { legend: { display: false }, tooltip: { callbacks: { label: function(ctx) { return ctx.raw + '%'; } } } },
|
||||
scales: {
|
||||
x: { max: 100, ticks: { callback: function(v) { return v + '%'; }, font: { size: 11, family: 'system-ui' } }, grid: { color: '#f1f5f9' } },
|
||||
y: { ticks: { font: { size: 11, family: 'system-ui' }, autoSkip: false }, grid: { display: false } }
|
||||
}
|
||||
}
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
5
layouts/shortcodes/addiction-stat.html
Normal file
5
layouts/shortcodes/addiction-stat.html
Normal file
@@ -0,0 +1,5 @@
|
||||
{{/* Single stat card — usage: {{< addiction-stat num="5h" color="#667eea" label="..." >}} */}}
|
||||
<div style="background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:1.25rem 1.5rem;margin:2rem 0;display:flex;align-items:center;gap:1.25rem">
|
||||
<div style="font-size:2.5rem;font-weight:800;line-height:1;color:{{ .Get "color" }};font-family:system-ui,sans-serif;min-width:4rem;text-align:center">{{ .Get "num" }}</div>
|
||||
<div style="font-size:0.95rem;color:#475569;line-height:1.4;font-family:system-ui,sans-serif">{{ .Get "label" }}</div>
|
||||
</div>
|
||||
@@ -1,75 +1,31 @@
|
||||
{{ $lang := .Page.Language.Lang }}
|
||||
{{ $countries := hugo.Data.countries }}
|
||||
|
||||
{{ $statusClass := dict "enforced" "csm-enforced" "passed" "csm-passed" "progress" "csm-progress" "guidelines" "csm-guidelines" }}
|
||||
{{ $statusLabel := dict
|
||||
"enforced" (dict "en" "Enforced" "de" "In Kraft" "fr" "En vigueur")
|
||||
"passed" (dict "en" "Passed" "de" "Verabschiedet" "fr" "Adopté")
|
||||
"progress" (dict "en" "In Progress" "de" "In Bearbeitung" "fr" "En cours")
|
||||
"guidelines" (dict "en" "Guidelines" "de" "Richtlinien" "fr" "Directives")
|
||||
}}
|
||||
|
||||
<style>
|
||||
.csm-container {
|
||||
max-width: 100%;
|
||||
margin: 2rem 0;
|
||||
}
|
||||
.csm-container h3 {
|
||||
text-align: center;
|
||||
margin-bottom: 0.5rem;
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
.csm-subtitle {
|
||||
text-align: center;
|
||||
color: #666;
|
||||
font-size: 0.85rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.csm-table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
.csm-table th {
|
||||
background: #1e40af;
|
||||
color: white;
|
||||
padding: 0.75rem 1rem;
|
||||
text-align: left;
|
||||
font-weight: 600;
|
||||
}
|
||||
.csm-table td {
|
||||
padding: 0.65rem 1rem;
|
||||
border-bottom: 1px solid #e2e8f0;
|
||||
vertical-align: top;
|
||||
}
|
||||
.csm-table tr:hover {
|
||||
background: #f0fdf4;
|
||||
}
|
||||
.csm-status {
|
||||
display: inline-block;
|
||||
padding: 0.15rem 0.5rem;
|
||||
border-radius: 4px;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 600;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.csm-enforced { background: #1e40af; color: white; }
|
||||
.csm-passed { background: #3b82f6; color: white; }
|
||||
.csm-progress { background: #93c5fd; color: #1e3a5f; }
|
||||
.csm-guidelines { background: #dbeafe; color: #1e3a5f; }
|
||||
.csm-legend {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 1rem;
|
||||
justify-content: center;
|
||||
margin-top: 1.5rem;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
.csm-legend-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.35rem;
|
||||
}
|
||||
.csm-legend-swatch {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
border-radius: 3px;
|
||||
border: 1px solid rgba(0,0,0,0.1);
|
||||
}
|
||||
@media (max-width: 640px) {
|
||||
.csm-table { font-size: 0.85rem; }
|
||||
.csm-table th, .csm-table td { padding: 0.5rem; }
|
||||
}
|
||||
.csm-container { max-width: 100%; margin: 2rem 0; }
|
||||
.csm-container h3 { text-align: center; margin-bottom: 0.5rem; font-size: 1.25rem; }
|
||||
.csm-subtitle { text-align: center; color: #666; font-size: 0.85rem; margin-bottom: 1rem; }
|
||||
.csm-table { width: 100%; border-collapse: collapse; font-size: 0.95rem; }
|
||||
.csm-table th { background: #667eea; color: white; padding: 0.75rem 1rem; text-align: left; font-weight: 600; }
|
||||
.csm-table td { padding: 0.65rem 1rem; border-bottom: 1px solid #e2e8f0; vertical-align: top; }
|
||||
.csm-table tr:hover { background: #f0fdf4; }
|
||||
.csm-status { display: inline-block; padding: 0.15rem 0.5rem; border-radius: 4px; font-size: 0.8rem; font-weight: 600; white-space: nowrap; }
|
||||
.csm-enforced { background: #667eea; color: white; }
|
||||
.csm-passed { background: #764ba2; color: white; }
|
||||
.csm-progress { background: #a5b4fc; color: #312e81; }
|
||||
.csm-guidelines { background: #e0e7ff; color: #312e81; }
|
||||
.csm-legend { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; margin-top: 1.5rem; font-size: 0.8rem; }
|
||||
.csm-legend-item { display: flex; align-items: center; gap: 0.35rem; }
|
||||
.csm-legend-swatch { width: 14px; height: 14px; border-radius: 3px; border: 1px solid rgba(0,0,0,0.1); }
|
||||
@media (max-width: 640px) { .csm-table { font-size: 0.85rem; } .csm-table th, .csm-table td { padding: 0.5rem; } }
|
||||
</style>
|
||||
|
||||
<div class="csm-container">
|
||||
@@ -86,68 +42,24 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{ if eq $lang "de" }}
|
||||
<tr><td>🇦🇺 Australien</td><td>Social Media Minimum Age Act 2024</td><td><span class="csm-status csm-enforced">In Kraft</span></td><td>Social-Media-Verbot für unter 16-Jährige. Bußgelder bis 49,5 Mio. AUD.</td></tr>
|
||||
<tr><td>🇬🇧 Vereinigtes Königreich</td><td>Online Safety Act 2023</td><td><span class="csm-status csm-enforced">In Kraft</span></td><td>Umfassendes Online-Sicherheitsregime. Altersverifikation erforderlich.</td></tr>
|
||||
<tr><td>🇩🇪 Deutschland</td><td>Jugendschutzgesetz (JuSchG)</td><td><span class="csm-status csm-enforced">In Kraft</span></td><td>Auf Online-Plattformen ausgeweitet. BzKJ überwacht aktiv die Einhaltung.</td></tr>
|
||||
<tr><td>🇨🇳 China</td><td>Minderjährigenschutzgesetz</td><td><span class="csm-status csm-enforced">In Kraft</span></td><td>1 Std./Tag Gaming für Minderjährige. Echtnamen-Verifizierung verpflichtend.</td></tr>
|
||||
<tr><td>🇰🇷 Südkorea</td><td>Jugendschutzgesetz</td><td><span class="csm-status csm-enforced">In Kraft</span></td><td>Langjähriger Jugendschutzrahmen. Echtnamen-Verifizierung für Online-Dienste.</td></tr>
|
||||
<tr><td>🇮🇪 Irland</td><td>Online Safety and Media Regulation Act</td><td><span class="csm-status csm-enforced">In Kraft</span></td><td>Coimisiún na Meán reguliert Online-Sicherheit mit verbindlichen Kodizes.</td></tr>
|
||||
<tr><td>🇳🇱 Niederlande</td><td>DSA + Kinderkodex</td><td><span class="csm-status csm-enforced">In Kraft</span></td><td>Datenschutzbehörde setzt Kinderdatenschutz aktiv durch.</td></tr>
|
||||
<tr><td>🇸🇪 Schweden</td><td>DSA + Nationale Jugendrichtlinien</td><td><span class="csm-status csm-enforced">In Kraft</span></td><td>EU-DSA-Rahmen plus nationale Jugendschutzrichtlinien.</td></tr>
|
||||
<tr><td>🇫🇷 Frankreich</td><td>Loi SREN + Social-Media-Verbot</td><td><span class="csm-status csm-passed">Verabschiedet</span></td><td>Senat stimmt für Social-Media-Verbot unter 15 (April 2026). Arcom-Blacklist. Vermittlung läuft.</td></tr>
|
||||
<tr><td>🇧🇷 Brasilien</td><td>ECA Digital</td><td><span class="csm-status csm-passed">Verabschiedet</span></td><td>Lootbox-Verbot für Minderjährige. Altersgerechtes Design.</td></tr>
|
||||
<tr><td>🇮🇳 Indien</td><td>DPDP Act 2023</td><td><span class="csm-status csm-passed">Verabschiedet</span></td><td>Verifizierbare elterliche Einwilligung für unter 18-Jährige.</td></tr>
|
||||
<tr><td>🇮🇹 Italien</td><td>DSA + Einwilligungsgesetz</td><td><span class="csm-status csm-passed">Verabschiedet</span></td><td>Digitales Einwilligungsalter auf 14 festgelegt.</td></tr>
|
||||
<tr><td>🇪🇸 Spanien</td><td>Organisches Kinderschutzgesetz</td><td><span class="csm-status csm-passed">Verabschiedet</span></td><td>Umfassendes digitales Kinderschutzgesetz.</td></tr>
|
||||
<tr><td>🇳🇴 Norwegen</td><td>Social-Media-Altersgrenze</td><td><span class="csm-status csm-passed">Verabschiedet</span></td><td>Geplante Altersgrenze von 15 Jahren.</td></tr>
|
||||
<tr><td>🇺🇸 Vereinigte Staaten</td><td>KOSA + COPPA-Update</td><td><span class="csm-status csm-progress">In Bearbeitung</span></td><td>KOSA im Senat angenommen. COPPA-Update bis Apr. 2026.</td></tr>
|
||||
<tr><td>🇨🇦 Kanada</td><td>Online Harms Act (C-63)</td><td><span class="csm-status csm-progress">In Bearbeitung</span></td><td>Sorgfaltspflicht für Plattformen in Prüfung.</td></tr>
|
||||
<tr><td>🇯🇵 Japan</td><td>Regulierung der Kontaktaufnahme</td><td><span class="csm-status csm-guidelines">Richtlinien</span></td><td>Selbstregulierung der Plattformen empfohlen.</td></tr>
|
||||
{{ else if eq $lang "fr" }}
|
||||
<tr><td>🇦🇺 Australie</td><td>Social Media Minimum Age Act 2024</td><td><span class="csm-status csm-enforced">En vigueur</span></td><td>Interdiction des réseaux sociaux pour les moins de 16 ans. Amendes jusqu'à 49,5 M AUD.</td></tr>
|
||||
<tr><td>🇬🇧 Royaume-Uni</td><td>Online Safety Act 2023</td><td><span class="csm-status csm-enforced">En vigueur</span></td><td>Régime complet de sécurité en ligne. Vérification d'âge obligatoire.</td></tr>
|
||||
<tr><td>🇩🇪 Allemagne</td><td>Jugendschutzgesetz (JuSchG)</td><td><span class="csm-status csm-enforced">En vigueur</span></td><td>Loi sur la protection de la jeunesse étendue aux plateformes en ligne. Surveillance BzKJ.</td></tr>
|
||||
<tr><td>🇨🇳 Chine</td><td>Loi sur la protection des mineurs</td><td><span class="csm-status csm-enforced">En vigueur</span></td><td>1h/jour de jeux vidéo pour les mineurs. Vérification d'identité obligatoire.</td></tr>
|
||||
<tr><td>🇰🇷 Corée du Sud</td><td>Loi sur la protection de la jeunesse</td><td><span class="csm-status csm-enforced">En vigueur</span></td><td>Cadre de protection de la jeunesse établi de longue date. Vérification d'identité.</td></tr>
|
||||
<tr><td>🇮🇪 Irlande</td><td>Online Safety and Media Regulation Act</td><td><span class="csm-status csm-enforced">En vigueur</span></td><td>Coimisiún na Meán régule la sécurité en ligne avec des codes contraignants.</td></tr>
|
||||
<tr><td>🇳🇱 Pays-Bas</td><td>DSA + Code de l'enfance</td><td><span class="csm-status csm-enforced">En vigueur</span></td><td>Autorité de protection des données applique activement la protection des données des enfants.</td></tr>
|
||||
<tr><td>🇸🇪 Suède</td><td>DSA + Directives nationales jeunesse</td><td><span class="csm-status csm-enforced">En vigueur</span></td><td>Cadre DSA de l'UE plus directives nationales de protection de la jeunesse.</td></tr>
|
||||
<tr><td>🇫🇷 France</td><td>Loi SREN + Interdiction réseaux sociaux</td><td><span class="csm-status csm-passed">Adopté</span></td><td>Le Sénat vote l'interdiction des réseaux sociaux pour les moins de 15 ans (avril 2026). Liste noire Arcom. Conciliation en cours.</td></tr>
|
||||
<tr><td>🇧🇷 Brésil</td><td>ECA Digital</td><td><span class="csm-status csm-passed">Adopté</span></td><td>Interdiction des loot boxes pour les mineurs. Exigences de design adapté à l'âge.</td></tr>
|
||||
<tr><td>🇮🇳 Inde</td><td>DPDP Act 2023</td><td><span class="csm-status csm-passed">Adopté</span></td><td>Consentement parental vérifiable pour les moins de 18 ans.</td></tr>
|
||||
<tr><td>🇮🇹 Italie</td><td>DSA + Loi sur le consentement parental</td><td><span class="csm-status csm-passed">Adopté</span></td><td>Âge de consentement numérique fixé à 14 ans.</td></tr>
|
||||
<tr><td>🇪🇸 Espagne</td><td>Protection de l'enfance dans les environnements numériques</td><td><span class="csm-status csm-passed">Adopté</span></td><td>Loi complète de protection numérique de l'enfance.</td></tr>
|
||||
<tr><td>🇳🇴 Norvège</td><td>Limite d'âge réseaux sociaux</td><td><span class="csm-status csm-passed">Adopté</span></td><td>Limite d'âge proposée à 15 ans.</td></tr>
|
||||
<tr><td>🇺🇸 États-Unis</td><td>KOSA + Mise à jour COPPA</td><td><span class="csm-status csm-progress">En cours</span></td><td>KOSA adopté au Sénat 91-3. Mise à jour COPPA prévue avr. 2026.</td></tr>
|
||||
<tr><td>🇨🇦 Canada</td><td>Online Harms Act (C-63)</td><td><span class="csm-status csm-progress">En cours</span></td><td>Devoir de diligence proposé pour les plateformes.</td></tr>
|
||||
<tr><td>🇯🇵 Japon</td><td>Loi sur la régulation de la sollicitation des enfants</td><td><span class="csm-status csm-guidelines">Directives</span></td><td>Autorégulation des plateformes encouragée.</td></tr>
|
||||
{{ else }}
|
||||
<tr><td>🇦🇺 Australia</td><td>Social Media Minimum Age Act 2024</td><td><span class="csm-status csm-enforced">Enforced</span></td><td>Social media ban for under-16s. Fines up to AUD 49.5M.</td></tr>
|
||||
<tr><td>🇬🇧 United Kingdom</td><td>Online Safety Act 2023</td><td><span class="csm-status csm-enforced">Enforced</span></td><td>Comprehensive online safety regime. Age verification required.</td></tr>
|
||||
<tr><td>🇩🇪 Germany</td><td>Jugendschutzgesetz (JuSchG)</td><td><span class="csm-status csm-enforced">Enforced</span></td><td>Youth Protection Act extended to online platforms. BzKJ monitoring.</td></tr>
|
||||
<tr><td>🇨🇳 China</td><td>Minor Protection Law</td><td><span class="csm-status csm-enforced">Enforced</span></td><td>1hr/day gaming for minors. Real-name verification mandatory.</td></tr>
|
||||
<tr><td>🇰🇷 South Korea</td><td>Youth Protection Act</td><td><span class="csm-status csm-enforced">Enforced</span></td><td>Long-standing youth protection framework. Real-name verification.</td></tr>
|
||||
<tr><td>🇮🇪 Ireland</td><td>Online Safety and Media Regulation Act</td><td><span class="csm-status csm-enforced">Enforced</span></td><td>Coimisiún na Meán regulates online safety with binding codes.</td></tr>
|
||||
<tr><td>🇳🇱 Netherlands</td><td>DSA + Children's Code</td><td><span class="csm-status csm-enforced">Enforced</span></td><td>Dutch DPA actively enforcing children's data protection.</td></tr>
|
||||
<tr><td>🇸🇪 Sweden</td><td>DSA + National Youth Guidelines</td><td><span class="csm-status csm-enforced">Enforced</span></td><td>EU DSA framework plus national youth protection guidelines.</td></tr>
|
||||
<tr><td>🇫🇷 France</td><td>Loi SREN + Social Media Ban</td><td><span class="csm-status csm-passed">Passed</span></td><td>Senate votes to ban social media for under-15s (April 2026). Arcom blacklist. Reconciliation pending.</td></tr>
|
||||
<tr><td>🇧🇷 Brazil</td><td>ECA Digital</td><td><span class="csm-status csm-passed">Passed</span></td><td>Loot box ban for minors. Age-appropriate design requirements.</td></tr>
|
||||
<tr><td>🇮🇳 India</td><td>DPDP Act 2023</td><td><span class="csm-status csm-passed">Passed</span></td><td>Verifiable parental consent for under-18s.</td></tr>
|
||||
<tr><td>🇮🇹 Italy</td><td>DSA + Parental Consent Law</td><td><span class="csm-status csm-passed">Passed</span></td><td>Digital age of consent set to 14.</td></tr>
|
||||
<tr><td>🇪🇸 Spain</td><td>Child Protection in Digital Environments</td><td><span class="csm-status csm-passed">Passed</span></td><td>Comprehensive child digital protection law.</td></tr>
|
||||
<tr><td>🇳🇴 Norway</td><td>Social Media Age Limit</td><td><span class="csm-status csm-passed">Passed</span></td><td>Proposed social media age limit of 15.</td></tr>
|
||||
<tr><td>🇺🇸 United States</td><td>KOSA + COPPA Update</td><td><span class="csm-status csm-progress">In Progress</span></td><td>KOSA passed Senate 91-3. COPPA update by Apr 2026.</td></tr>
|
||||
<tr><td>🇨🇦 Canada</td><td>Online Harms Act (C-63)</td><td><span class="csm-status csm-progress">In Progress</span></td><td>Proposed duty of care for platforms.</td></tr>
|
||||
<tr><td>🇯🇵 Japan</td><td>Act on Regulation of Soliciting Children</td><td><span class="csm-status csm-guidelines">Guidelines</span></td><td>Platform self-regulation encouraged.</td></tr>
|
||||
{{ range $countries }}
|
||||
{{ $loc := index . $lang | default (index . "en") }}
|
||||
{{ $cls := index $statusClass .status }}
|
||||
{{ $lbl := index (index $statusLabel .status) $lang | default (index (index $statusLabel .status) "en") }}
|
||||
<tr>
|
||||
<td>{{ .flag }} {{ $loc.name }}</td>
|
||||
<td>{{ $loc.law }}</td>
|
||||
<td><span class="csm-status {{ $cls }}">{{ $lbl }}</span></td>
|
||||
<td>{{ $loc.detail }}</td>
|
||||
</tr>
|
||||
{{ end }}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="csm-legend">
|
||||
<div class="csm-legend-item"><div class="csm-legend-swatch" style="background:#1e40af"></div>{{ if eq $lang "de" }}Gesetz in Kraft{{ else if eq $lang "fr" }}Loi en vigueur{{ else }}Law Enforced{{ end }}</div>
|
||||
<div class="csm-legend-item"><div class="csm-legend-swatch" style="background:#3b82f6"></div>{{ if eq $lang "de" }}Verabschiedet{{ else if eq $lang "fr" }}Adopté{{ else }}Passed{{ end }}</div>
|
||||
<div class="csm-legend-item"><div class="csm-legend-swatch" style="background:#93c5fd"></div>{{ if eq $lang "de" }}In Bearbeitung{{ else if eq $lang "fr" }}En cours{{ else }}In Progress{{ end }}</div>
|
||||
<div class="csm-legend-item"><div class="csm-legend-swatch" style="background:#dbeafe"></div>{{ if eq $lang "de" }}Richtlinien{{ else if eq $lang "fr" }}Directives{{ else }}Guidelines{{ end }}</div>
|
||||
<div class="csm-legend-item"><div class="csm-legend-swatch" style="background:#667eea"></div>{{ if eq $lang "de" }}Gesetz in Kraft{{ else if eq $lang "fr" }}Loi en vigueur{{ else }}Law Enforced{{ end }}</div>
|
||||
<div class="csm-legend-item"><div class="csm-legend-swatch" style="background:#764ba2"></div>{{ if eq $lang "de" }}Verabschiedet{{ else if eq $lang "fr" }}Adopté{{ else }}Passed{{ end }}</div>
|
||||
<div class="csm-legend-item"><div class="csm-legend-swatch" style="background:#a5b4fc"></div>{{ if eq $lang "de" }}In Bearbeitung{{ else if eq $lang "fr" }}En cours{{ else }}In Progress{{ end }}</div>
|
||||
<div class="csm-legend-item"><div class="csm-legend-swatch" style="background:#e0e7ff"></div>{{ if eq $lang "de" }}Richtlinien{{ else if eq $lang "fr" }}Directives{{ else }}Guidelines{{ end }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
{{/* FAQ shortcode — renders as expandable details + outputs FAQPage schema for AI search */}}
|
||||
{{ $items := .Inner | split "---" }}
|
||||
{{ $raw := .Inner }}
|
||||
{{ $items := split $raw "~~~" }}
|
||||
<div class="faq-section">
|
||||
{{ range $items }}
|
||||
{{ $parts := . | split "?" }}
|
||||
{{ $trimmed := trim . "\n\r\t " }}
|
||||
{{ if $trimmed }}
|
||||
{{ $parts := split $trimmed "?" }}
|
||||
{{ if gt (len $parts) 1 }}
|
||||
<details class="faq-item" style="margin-bottom: 0.75rem; border: 1px solid #e2e8f0; border-radius: 8px; padding: 0;">
|
||||
<summary style="padding: 0.75rem 1rem; cursor: pointer; font-weight: 600; list-style: none;">{{ index $parts 0 | markdownify }}?</summary>
|
||||
@@ -10,4 +13,5 @@
|
||||
</details>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
126
layouts/shortcodes/law-charts.html
Normal file
126
layouts/shortcodes/law-charts.html
Normal file
@@ -0,0 +1,126 @@
|
||||
{{ $lang := .Page.Language.Lang }}
|
||||
{{ $countries := hugo.Data.countries }}
|
||||
|
||||
<style>
|
||||
.ifk-charts { margin: 2rem 0; }
|
||||
.ifk-charts h3 { text-align: center; margin-bottom: 1.5rem; font-size: 1.25rem; }
|
||||
.ifk-chart-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; }
|
||||
.ifk-chart-card {
|
||||
background: #fafbfc; border: 1px solid #e2e8f0; border-radius: 10px;
|
||||
padding: 1.25rem; text-align: center;
|
||||
}
|
||||
.ifk-chart-card h4 { margin: 0 0 1rem; font-size: 0.95rem; color: #334155; }
|
||||
.ifk-chart-card canvas { max-height: 280px; }
|
||||
@media (max-width: 640px) {
|
||||
.ifk-chart-grid { grid-template-columns: 1fr; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="ifk-charts">
|
||||
<h3>{{ if eq $lang "de" }}Analyse der Kinderschutzgesetze{{ else if eq $lang "fr" }}Analyse des lois de protection{{ else }}Child Protection Law Analysis{{ end }}</h3>
|
||||
<div class="ifk-chart-grid">
|
||||
<div class="ifk-chart-card">
|
||||
<h4>{{ if eq $lang "de" }}Gesetzgebungsstatus{{ else if eq $lang "fr" }}Statut législatif{{ else }}Legislative Status{{ end }}</h4>
|
||||
<canvas id="ifk-chart-status"></canvas>
|
||||
</div>
|
||||
<div class="ifk-chart-card">
|
||||
<h4>{{ if eq $lang "de" }}Mindestalter für soziale Medien{{ else if eq $lang "fr" }}Âge minimum réseaux sociaux{{ else }}Social Media Age Limits{{ end }}</h4>
|
||||
<canvas id="ifk-chart-age"></canvas>
|
||||
</div>
|
||||
<div class="ifk-chart-card" style="grid-column: 1 / -1;">
|
||||
<h4>{{ if eq $lang "de" }}Zeitachse der Gesetzgebung{{ else if eq $lang "fr" }}Chronologie législative{{ else }}Legislation Timeline{{ end }}</h4>
|
||||
<canvas id="ifk-chart-timeline"></canvas>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{{ "js/chart.umd.min.js" | relURL }}"></script>
|
||||
<script>
|
||||
function ifkInitCharts() {
|
||||
if (typeof Chart === 'undefined') { setTimeout(ifkInitCharts, 100); return; }
|
||||
var LANG = "{{ $lang }}";
|
||||
var countries = {{ $countries | jsonify | safeJS }};
|
||||
|
||||
var statusLabels = {
|
||||
en: { enforced: 'Enforced', passed: 'Passed', progress: 'In Progress', guidelines: 'Guidelines' },
|
||||
de: { enforced: 'In Kraft', passed: 'Verabschiedet', progress: 'In Bearbeitung', guidelines: 'Richtlinien' },
|
||||
fr: { enforced: 'En vigueur', passed: 'Adopté', progress: 'En cours', guidelines: 'Directives' }
|
||||
};
|
||||
var labels = statusLabels[LANG] || statusLabels.en;
|
||||
|
||||
/* Pie: status distribution */
|
||||
var counts = { enforced: 0, passed: 0, progress: 0, guidelines: 0 };
|
||||
countries.forEach(function(c) { counts[c.status]++; });
|
||||
|
||||
new Chart(document.getElementById('ifk-chart-status'), {
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
labels: [labels.enforced, labels.passed, labels.progress, labels.guidelines],
|
||||
datasets: [{
|
||||
data: [counts.enforced, counts.passed, counts.progress, counts.guidelines],
|
||||
backgroundColor: ['#667eea', '#764ba2', '#a5b4fc', '#e0e7ff'],
|
||||
borderWidth: 2, borderColor: '#fff'
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
plugins: {
|
||||
legend: { position: 'bottom', labels: { padding: 16, usePointStyle: true } }
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/* Horizontal bar: age limits */
|
||||
var sorted = countries.slice().sort(function(a, b) { return b.ageLimitSocial - a.ageLimitSocial; });
|
||||
var colors = { enforced: '#667eea', passed: '#764ba2', progress: '#a5b4fc', guidelines: '#e0e7ff' };
|
||||
|
||||
new Chart(document.getElementById('ifk-chart-age'), {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: sorted.map(function(c) { return c.flag + ' ' + (c[LANG] || c.en).name; }),
|
||||
datasets: [{
|
||||
label: LANG === 'de' ? 'Mindestalter' : LANG === 'fr' ? 'Âge minimum' : 'Min. Age',
|
||||
data: sorted.map(function(c) { return c.ageLimitSocial; }),
|
||||
backgroundColor: sorted.map(function(c) { return colors[c.status]; }),
|
||||
borderRadius: 4
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
indexAxis: 'y', responsive: true,
|
||||
scales: {
|
||||
x: { min: 0, max: 20, title: { display: true, text: LANG === 'de' ? 'Jahre' : LANG === 'fr' ? 'Ans' : 'Years' } }
|
||||
},
|
||||
plugins: { legend: { display: false } }
|
||||
}
|
||||
});
|
||||
|
||||
/* Bar: timeline by year */
|
||||
var yearCounts = {};
|
||||
countries.forEach(function(c) {
|
||||
if (!yearCounts[c.year]) yearCounts[c.year] = { enforced: 0, passed: 0, progress: 0, guidelines: 0 };
|
||||
yearCounts[c.year][c.status]++;
|
||||
});
|
||||
var years = Object.keys(yearCounts).sort();
|
||||
|
||||
new Chart(document.getElementById('ifk-chart-timeline'), {
|
||||
type: 'bar',
|
||||
data: {
|
||||
labels: years,
|
||||
datasets: [
|
||||
{ label: labels.enforced, data: years.map(function(y) { return yearCounts[y].enforced; }), backgroundColor: '#667eea', borderRadius: 4 },
|
||||
{ label: labels.passed, data: years.map(function(y) { return yearCounts[y].passed; }), backgroundColor: '#764ba2', borderRadius: 4 },
|
||||
{ label: labels.progress, data: years.map(function(y) { return yearCounts[y].progress; }), backgroundColor: '#a5b4fc', borderRadius: 4 },
|
||||
{ label: labels.guidelines, data: years.map(function(y) { return yearCounts[y].guidelines; }), backgroundColor: '#e0e7ff', borderRadius: 4 }
|
||||
]
|
||||
},
|
||||
options: {
|
||||
responsive: true,
|
||||
scales: {
|
||||
x: { stacked: true }, y: { stacked: true, beginAtZero: true, ticks: { stepSize: 1 } }
|
||||
},
|
||||
plugins: { legend: { position: 'bottom', labels: { padding: 16, usePointStyle: true } } }
|
||||
}
|
||||
});
|
||||
}
|
||||
ifkInitCharts();
|
||||
</script>
|
||||
82
layouts/shortcodes/legislation-timeline.html
Normal file
82
layouts/shortcodes/legislation-timeline.html
Normal file
@@ -0,0 +1,82 @@
|
||||
{{ $lang := .Page.Language.Lang }}
|
||||
|
||||
<style>
|
||||
.ifk-timeline-wrap { margin: 2rem 0; }
|
||||
.ifk-timeline-wrap h3 { text-align: center; margin-bottom: 1rem; font-size: 1.25rem; }
|
||||
.ifk-mermaid-container {
|
||||
background: #fafbfc; border: 1px solid #e2e8f0; border-radius: 10px;
|
||||
padding: 1.5rem; overflow-x: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="ifk-timeline-wrap">
|
||||
<h3>{{ if eq $lang "de" }}Meilensteine der Gesetzgebung{{ else if eq $lang "fr" }}Jalons législatifs{{ else }}Legislation Milestones{{ end }}</h3>
|
||||
<div class="ifk-mermaid-container">
|
||||
<pre class="mermaid">
|
||||
timeline
|
||||
{{ if eq $lang "de" -}}
|
||||
title Kinderschutzgesetze — Meilensteine
|
||||
2020 : 🇰🇷 Südkorea Jugendschutzgesetz
|
||||
2021 : 🇩🇪 JuSchG-Novelle (Online)
|
||||
: 🇨🇳 Minderjährigenschutzgesetz
|
||||
2022 : 🇮🇪 Online Safety Act
|
||||
2023 : 🇬🇧 Online Safety Act
|
||||
: 🇮🇳 DPDP Act
|
||||
2024 : 🇦🇺 Social Media Ban (unter 16)
|
||||
: 🇳🇱 DSA + Kinderkodex
|
||||
: 🇸🇪 DSA + Jugendrichtlinien
|
||||
: 🇯🇵 Regulierung Kontaktaufnahme
|
||||
2025 : 🇧🇷 ECA Digital
|
||||
: 🇮🇹 Einwilligungsgesetz (14+)
|
||||
: 🇪🇸 Digitaler Kinderschutz
|
||||
: 🇳🇴 Social-Media-Altersgrenze (15)
|
||||
2026 : 🇫🇷 Social-Media-Verbot (unter 15)
|
||||
: 🇺🇸 KOSA + COPPA-Update
|
||||
: 🇨🇦 Online Harms Act
|
||||
{{- else if eq $lang "fr" -}}
|
||||
title Lois de protection de l'enfance — Jalons
|
||||
2020 : 🇰🇷 Loi protection jeunesse
|
||||
2021 : 🇩🇪 JuSchG en ligne
|
||||
: 🇨🇳 Loi protection mineurs
|
||||
2022 : 🇮🇪 Online Safety Act
|
||||
2023 : 🇬🇧 Online Safety Act
|
||||
: 🇮🇳 DPDP Act
|
||||
2024 : 🇦🇺 Interdiction réseaux sociaux (-16)
|
||||
: 🇳🇱 DSA + Code enfance
|
||||
: 🇸🇪 DSA + Directives jeunesse
|
||||
: 🇯🇵 Régulation sollicitation
|
||||
2025 : 🇧🇷 ECA Digital
|
||||
: 🇮🇹 Consentement (14+)
|
||||
: 🇪🇸 Protection enfance numérique
|
||||
: 🇳🇴 Limite âge réseaux (15)
|
||||
2026 : 🇫🇷 Interdiction réseaux (-15)
|
||||
: 🇺🇸 KOSA + COPPA
|
||||
: 🇨🇦 Online Harms Act
|
||||
{{- else -}}
|
||||
title Child Protection Laws — Milestones
|
||||
2020 : 🇰🇷 South Korea Youth Protection Act
|
||||
2021 : 🇩🇪 Germany JuSchG Online Extension
|
||||
: 🇨🇳 China Minor Protection Law
|
||||
2022 : 🇮🇪 Ireland Online Safety Act
|
||||
2023 : 🇬🇧 UK Online Safety Act
|
||||
: 🇮🇳 India DPDP Act
|
||||
2024 : 🇦🇺 Australia Social Media Ban (under 16)
|
||||
: 🇳🇱 Netherlands DSA + Children's Code
|
||||
: 🇸🇪 Sweden DSA + Youth Guidelines
|
||||
: 🇯🇵 Japan Solicitation Regulation
|
||||
2025 : 🇧🇷 Brazil ECA Digital
|
||||
: 🇮🇹 Italy Consent Law (14+)
|
||||
: 🇪🇸 Spain Digital Child Protection
|
||||
: 🇳🇴 Norway Social Media Age (15)
|
||||
2026 : 🇫🇷 France Social Media Ban (under 15)
|
||||
: 🇺🇸 USA KOSA + COPPA Update
|
||||
: 🇨🇦 Canada Online Harms Act
|
||||
{{- end }}
|
||||
</pre>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{{ "js/mermaid.min.js" | relURL }}"></script>
|
||||
<script>
|
||||
mermaid.initialize({ startOnLoad: true, theme: 'neutral', timeline: { useMaxWidth: true } });
|
||||
</script>
|
||||
49
layouts/shortcodes/stats-banner.html
Normal file
49
layouts/shortcodes/stats-banner.html
Normal file
@@ -0,0 +1,49 @@
|
||||
{{ $lang := .Page.Language.Lang }}
|
||||
{{ $countries := hugo.Data.countries }}
|
||||
|
||||
{{ $enforced := 0 }}{{ $passed := 0 }}{{ $progress := 0 }}{{ $guidelines := 0 }}
|
||||
{{ range $countries }}
|
||||
{{ if eq .status "enforced" }}{{ $enforced = add $enforced 1 }}
|
||||
{{ else if eq .status "passed" }}{{ $passed = add $passed 1 }}
|
||||
{{ else if eq .status "progress" }}{{ $progress = add $progress 1 }}
|
||||
{{ else if eq .status "guidelines" }}{{ $guidelines = add $guidelines 1 }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<style>
|
||||
.ifk-stats {
|
||||
display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem;
|
||||
margin: 2rem 0; text-align: center;
|
||||
}
|
||||
.ifk-stat {
|
||||
background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
|
||||
border-radius: 10px; padding: 1.25rem 0.75rem;
|
||||
border: 1px solid #e2e8f0; transition: transform 0.15s;
|
||||
}
|
||||
.ifk-stat:hover { transform: translateY(-2px); }
|
||||
.ifk-stat-num { font-size: 2rem; font-weight: 800; line-height: 1.1; }
|
||||
.ifk-stat-label { font-size: 0.75rem; color: #64748b; margin-top: 0.25rem; font-weight: 500; text-transform: uppercase; letter-spacing: 0.05em; }
|
||||
@media (max-width: 480px) {
|
||||
.ifk-stats { grid-template-columns: repeat(2, 1fr); }
|
||||
.ifk-stat-num { font-size: 1.5rem; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="ifk-stats">
|
||||
<div class="ifk-stat">
|
||||
<div class="ifk-stat-num" style="color:#667eea">{{ $enforced }}</div>
|
||||
<div class="ifk-stat-label">{{ if eq $lang "de" }}In Kraft{{ else if eq $lang "fr" }}En vigueur{{ else }}Enforced{{ end }}</div>
|
||||
</div>
|
||||
<div class="ifk-stat">
|
||||
<div class="ifk-stat-num" style="color:#764ba2">{{ $passed }}</div>
|
||||
<div class="ifk-stat-label">{{ if eq $lang "de" }}Verabschiedet{{ else if eq $lang "fr" }}Adoptées{{ else }}Passed{{ end }}</div>
|
||||
</div>
|
||||
<div class="ifk-stat">
|
||||
<div class="ifk-stat-num" style="color:#a5b4fc">{{ $progress }}</div>
|
||||
<div class="ifk-stat-label">{{ if eq $lang "de" }}In Bearbeitung{{ else if eq $lang "fr" }}En cours{{ else }}In Progress{{ end }}</div>
|
||||
</div>
|
||||
<div class="ifk-stat">
|
||||
<div class="ifk-stat-num" style="color:#e0e7ff">{{ $guidelines }}</div>
|
||||
<div class="ifk-stat-label">{{ if eq $lang "de" }}Richtlinien{{ else if eq $lang "fr" }}Directives{{ else }}Guidelines{{ end }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -7,7 +7,7 @@
|
||||
Agiliton VPN provides content filtering, device protection, and safe browsing for the whole family.
|
||||
{{ end }}
|
||||
</p>
|
||||
<a href="https://go.agiliton.eu/vpn" style="display: inline-block; background: #fff; color: #1a365d; padding: 0.75rem 2rem; border-radius: 8px; text-decoration: none; font-weight: 600;">
|
||||
<a href="https://go.agiliton.eu/vpn-app" style="display: inline-block; background: #fff; color: #1a365d; padding: 0.75rem 2rem; border-radius: 8px; text-decoration: none; font-weight: 600;">
|
||||
{{ if eq .Page.Language.Lang "de" }}Mehr erfahren{{ else }}Learn More{{ end }}
|
||||
</a>
|
||||
</aside>
|
||||
|
||||
28
layouts/shortcodes/world-map.html
Normal file
28
layouts/shortcodes/world-map.html
Normal file
@@ -0,0 +1,28 @@
|
||||
{{ $lang := .Page.Language.Lang }}
|
||||
|
||||
<style>
|
||||
.ifk-map-wrap { max-width: 100%; margin: 2rem 0; }
|
||||
.ifk-map-wrap h3 { text-align: center; margin-bottom: 0.5rem; font-size: 1.25rem; }
|
||||
.ifk-map-subtitle { text-align: center; color: #666; font-size: 0.85rem; margin-bottom: 1rem; }
|
||||
#ifk-world-map { width: 100%; height: 420px; border-radius: 8px; border: none; }
|
||||
.ifk-map-legend {
|
||||
display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center;
|
||||
margin-top: 1rem; font-size: 0.8rem;
|
||||
}
|
||||
.ifk-map-legend-item { display: flex; align-items: center; gap: 0.35rem; }
|
||||
.ifk-map-legend-swatch { width: 14px; height: 14px; border-radius: 3px; border: 1px solid rgba(0,0,0,0.1); }
|
||||
@media (max-width: 640px) { #ifk-world-map { height: 280px; } }
|
||||
</style>
|
||||
|
||||
<div class="ifk-map-wrap">
|
||||
<h3>{{ if eq $lang "de" }}Interaktive Weltkarte: Kinderschutzgesetze{{ else if eq $lang "fr" }}Carte interactive : lois de protection de l'enfance{{ else }}Interactive Map: Child Protection Laws{{ end }}</h3>
|
||||
<p class="ifk-map-subtitle">{{ if eq $lang "de" }}Klicken Sie auf ein Land für Details{{ else if eq $lang "fr" }}Cliquez sur un pays pour plus de détails{{ else }}Click a country for details{{ end }}</p>
|
||||
<iframe id="ifk-world-map" src="{{ "map-embed.html" | relURL }}" loading="lazy" allow="fullscreen"></iframe>
|
||||
<div class="ifk-map-legend">
|
||||
<div class="ifk-map-legend-item"><div class="ifk-map-legend-swatch" style="background:#764ba2"></div>{{ if eq $lang "de" }}In Kraft{{ else if eq $lang "fr" }}En vigueur{{ else }}Enforced{{ end }}</div>
|
||||
<div class="ifk-map-legend-item"><div class="ifk-map-legend-swatch" style="background:#4a5ec7"></div>{{ if eq $lang "de" }}Verabschiedet{{ else if eq $lang "fr" }}Adopté{{ else }}Passed{{ end }}</div>
|
||||
<div class="ifk-map-legend-item"><div class="ifk-map-legend-swatch" style="background:#8b9cf0"></div>{{ if eq $lang "de" }}In Bearbeitung{{ else if eq $lang "fr" }}En cours{{ else }}In Progress{{ end }}</div>
|
||||
<div class="ifk-map-legend-item"><div class="ifk-map-legend-swatch" style="background:#c5cefd"></div>{{ if eq $lang "de" }}Richtlinien{{ else if eq $lang "fr" }}Directives{{ else }}Guidelines{{ end }}</div>
|
||||
<div class="ifk-map-legend-item"><div class="ifk-map-legend-swatch" style="background:#e2e8f0"></div>{{ if eq $lang "de" }}Keine Daten{{ else if eq $lang "fr" }}Pas de données{{ else }}No Data{{ end }}</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,3 +1,8 @@
|
||||
map $http_x_forwarded_proto $real_scheme {
|
||||
default $scheme;
|
||||
https https;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
@@ -35,8 +40,8 @@ server {
|
||||
}
|
||||
|
||||
# Redirect unprefixed paths to /en/
|
||||
location ~ "^/(?!en/|de/|fr/|css/|js/|img/|favicon|android|apple|site|llms|health|robots|index\.xml|[0-9a-f]{32}\.txt)" {
|
||||
return 302 /en$request_uri;
|
||||
location ~ "^/(?!en/|de/|fr/|css/|js/|data/|fonts/|img/|favicon|android|apple|site|llms|health|robots|index\.xml|BingSiteAuth|[0-9a-f]{32}\.txt)" {
|
||||
return 302 $real_scheme://$host/en$request_uri;
|
||||
}
|
||||
|
||||
# Clean URLs
|
||||
|
||||
0
static/.deploy-trigger
Normal file
0
static/.deploy-trigger
Normal file
4
static/BingSiteAuth.xml
Normal file
4
static/BingSiteAuth.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0"?>
|
||||
<users>
|
||||
<user>7B8CDCFD8FC8D5E226BD9E01CEE80814</user>
|
||||
</users>
|
||||
8
static/css/leaflet.min.css
vendored
Normal file
8
static/css/leaflet.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
333
static/css/main.css
Normal file
333
static/css/main.css
Normal file
@@ -0,0 +1,333 @@
|
||||
/* Custom font imports */
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: italic;
|
||||
font-weight: 400 500;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-italic-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Newsreader';
|
||||
font-style: italic;
|
||||
font-weight: 400 500;
|
||||
font-display: swap;
|
||||
src: url(/fonts/newsreader/newsreader-italic-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
|
||||
/* CSS Variables */
|
||||
:root {
|
||||
--ifk-font: 'Newsreader', 'Times New Roman', serif;
|
||||
--ifk-text: #1c1917;
|
||||
--ifk-bg: #fafaf9;
|
||||
--ifk-accent: #667eea;
|
||||
--ifk-accent-hover: #764ba2;
|
||||
--ifk-secondary: #667eea;
|
||||
}
|
||||
|
||||
/* Utility classes for colors */
|
||||
.text-ifk-accent { color: var(--ifk-accent); }
|
||||
.text-ifk-text { color: var(--ifk-text); }
|
||||
.bg-ifk-bg { background-color: var(--ifk-bg); }
|
||||
.hover\:text-ifk-accent:hover { color: var(--ifk-accent); }
|
||||
.hover\:text-ifk-accent-hover:hover { color: var(--ifk-accent-hover); }
|
||||
|
||||
/* Font family utility */
|
||||
.font-newsreader { font-family: var(--ifk-font); }
|
||||
|
||||
/* Tailwind-equivalent utilities */
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
.flex { display: flex; }
|
||||
.flex-1 { flex: 1 1 0%; }
|
||||
.flex-wrap { flex-wrap: wrap; }
|
||||
.inline-block { display: inline-block; }
|
||||
.grid { display: grid; }
|
||||
.grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
|
||||
.justify-between { justify-content: space-between; }
|
||||
.items-center { align-items: center; }
|
||||
.gap-4 { gap: 1rem; }
|
||||
.gap-8 { gap: 2rem; }
|
||||
.mx-auto { margin-left: auto; margin-right: auto; }
|
||||
.max-w-2xl { max-width: 42rem; }
|
||||
.max-w-3xl { max-width: 48rem; }
|
||||
.max-w-4xl { max-width: 56rem; }
|
||||
.px-4 { padding-left: 1rem; padding-right: 1rem; }
|
||||
.py-4 { padding-top: 1rem; padding-bottom: 1rem; }
|
||||
.py-12 { padding-top: 3rem; padding-bottom: 3rem; }
|
||||
.p-4 { padding: 1rem; }
|
||||
.pt-8 { padding-top: 2rem; }
|
||||
.mb-2 { margin-bottom: 0.5rem; }
|
||||
.mb-3 { margin-bottom: 0.75rem; }
|
||||
.mb-4 { margin-bottom: 1rem; }
|
||||
.mb-8 { margin-bottom: 2rem; }
|
||||
.mb-12 { margin-bottom: 3rem; }
|
||||
.mr-2 { margin-right: 0.5rem; }
|
||||
.mt-12 { margin-top: 3rem; }
|
||||
.mt-20 { margin-top: 5rem; }
|
||||
.sticky { position: sticky; }
|
||||
.top-0 { top: 0; }
|
||||
.z-40 { z-index: 40; }
|
||||
.border { border: 1px solid #e5e7eb; }
|
||||
.border-t { border-top: 1px solid #e5e7eb; }
|
||||
.border-b { border-bottom: 1px solid #e5e7eb; }
|
||||
.rounded { border-radius: 0.25rem; }
|
||||
.bg-white { background-color: #fff; }
|
||||
.bg-gray-50 { background-color: #f9fafb; }
|
||||
.text-center { text-align: center; }
|
||||
.text-left { text-align: left; }
|
||||
.text-right { text-align: right; }
|
||||
.text-xs { font-size: 0.75rem; line-height: 1rem; }
|
||||
.text-sm { font-size: 0.875rem; line-height: 1.25rem; }
|
||||
.text-lg { font-size: 1.125rem; line-height: 1.75rem; }
|
||||
.text-xl { font-size: 1.25rem; line-height: 1.75rem; }
|
||||
.text-4xl { font-size: 2.75rem; line-height: 1.15; }
|
||||
.font-semibold { font-weight: 600; }
|
||||
.uppercase { text-transform: uppercase; }
|
||||
.tracking-wide { letter-spacing: 0.025em; }
|
||||
.leading-tight { line-height: 1.25; }
|
||||
.leading-relaxed { line-height: 1.625; }
|
||||
.text-gray-600 { color: #4b5563; }
|
||||
.hover\:bg-gray-50:hover { background-color: #f9fafb; }
|
||||
@media (min-width: 768px) { .md\:grid-cols-3 { grid-template-columns: repeat(3, 1fr); } }
|
||||
|
||||
/* Global typography */
|
||||
body {
|
||||
background-color: var(--ifk-bg);
|
||||
color: var(--ifk-text);
|
||||
font-family: system-ui, -apple-system, 'Segoe UI', sans-serif;
|
||||
}
|
||||
|
||||
article, .prose {
|
||||
font-family: var(--ifk-font);
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: var(--ifk-font);
|
||||
color: var(--ifk-text);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
h1, .article-title {
|
||||
font-size: 2.75rem;
|
||||
line-height: 1.15;
|
||||
letter-spacing: -0.01em;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.85rem;
|
||||
line-height: 1.25;
|
||||
margin-top: 3rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.3;
|
||||
margin-top: 2.5rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
/* Article content */
|
||||
article p {
|
||||
font-size: 1.375rem;
|
||||
line-height: 1.6;
|
||||
margin-bottom: 1.5rem;
|
||||
font-family: var(--ifk-font);
|
||||
}
|
||||
|
||||
/* Links */
|
||||
article a {
|
||||
color: var(--ifk-accent);
|
||||
text-decoration: underline;
|
||||
text-decoration-thickness: 1px;
|
||||
text-underline-offset: 2px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
article a:hover {
|
||||
color: var(--ifk-accent-hover);
|
||||
text-decoration-thickness: 2px;
|
||||
}
|
||||
|
||||
/* Blockquotes */
|
||||
blockquote {
|
||||
font-family: var(--ifk-font);
|
||||
font-style: italic;
|
||||
font-size: 1.5rem;
|
||||
line-height: 1.6;
|
||||
border-left: 3px solid var(--ifk-secondary);
|
||||
padding-left: 1.5rem;
|
||||
margin: 2rem 0;
|
||||
color: var(--ifk-text);
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
code {
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 0.9rem;
|
||||
background: #f3f4f6;
|
||||
padding: 0.1rem 0.4rem;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
pre {
|
||||
background: #1f2937;
|
||||
color: #f3f4f6;
|
||||
padding: 1.5rem;
|
||||
border-radius: 0.5rem;
|
||||
overflow-x: auto;
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 0.9rem;
|
||||
line-height: 1.5;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
pre code {
|
||||
background: none;
|
||||
color: inherit;
|
||||
padding: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 1.5rem 0;
|
||||
font-family: var(--ifk-font);
|
||||
font-size: 1.1rem;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
th, td {
|
||||
padding: 0.75rem 1rem;
|
||||
border: 1px solid #e5e7eb;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #f3f4f6;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
/* Lists */
|
||||
ul, ol {
|
||||
margin-left: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom: 0.5rem;
|
||||
font-family: var(--ifk-font);
|
||||
font-size: 1.375rem;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
/* Navigation */
|
||||
nav, header, footer {
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
}
|
||||
|
||||
nav a {
|
||||
text-decoration: none;
|
||||
transition: color 0.2s ease;
|
||||
}
|
||||
|
||||
nav a:hover {
|
||||
color: var(--ifk-accent);
|
||||
}
|
||||
|
||||
/* Article metadata */
|
||||
.article-meta, .post-meta, time, .reading-time {
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
font-size: 0.95rem;
|
||||
color: #6b7280;
|
||||
}
|
||||
|
||||
/* Tags */
|
||||
.taxonomy-term, [href*="/tags/"], [href*="/categories/"] {
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
font-size: 0.8rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
color: var(--ifk-accent);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.taxonomy-term:hover, [href*="/tags/"]:hover, [href*="/categories/"]:hover {
|
||||
color: var(--ifk-accent-hover);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Table of Contents */
|
||||
#TableOfContents, #TableOfContents li, #TableOfContents a, #sidebar-toc, #sidebar-toc li, #sidebar-toc a {
|
||||
font-family: system-ui, -apple-system, sans-serif !important;
|
||||
font-size: 0.8rem !important;
|
||||
line-height: 1.6 !important;
|
||||
}
|
||||
|
||||
#TableOfContents a, #sidebar-toc a {
|
||||
color: #4b5563;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#TableOfContents a:hover, #sidebar-toc a:hover {
|
||||
color: var(--ifk-text);
|
||||
}
|
||||
|
||||
#TableOfContents a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* Status badges (for shortcodes) */
|
||||
.csm-enforced { background: #667eea; color: white; }
|
||||
.csm-passed { background: #764ba2; color: white; }
|
||||
.csm-progress { background: #a5b4fc; color: #312e81; }
|
||||
.csm-guidelines { background: #e0e7ff; color: #3730a3; }
|
||||
|
||||
/* Offset anchors for sticky header */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
scroll-margin-top: 5rem;
|
||||
}
|
||||
|
||||
/* Shortcode-specific overrides */
|
||||
.ifk-stat-num { font-family: var(--ifk-font); }
|
||||
.ifk-stat-label { font-family: system-ui, -apple-system, sans-serif; }
|
||||
.ifk-chart-card h4 { font-family: system-ui, -apple-system, sans-serif; }
|
||||
|
||||
/* Responsive design */
|
||||
@media (max-width: 768px) {
|
||||
h1, .article-title {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
article p, li {
|
||||
font-size: 1.1rem;
|
||||
}
|
||||
}
|
||||
7
static/css/maplibre-gl.min.css
vendored
Normal file
7
static/css/maplibre-gl.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
static/data/countries-110m.json
Normal file
1
static/data/countries-110m.json
Normal file
File diff suppressed because one or more lines are too long
1
static/data/countries-50m.json
Normal file
1
static/data/countries-50m.json
Normal file
File diff suppressed because one or more lines are too long
86
static/data/countries.json
Normal file
86
static/data/countries.json
Normal file
@@ -0,0 +1,86 @@
|
||||
[
|
||||
{"iso3": "AUS", "isoNum": "036", "flag": "🇦🇺", "status": "enforced", "year": 2024, "ageLimitSocial": 16,
|
||||
"en": {"name": "Australia", "law": "Social Media Minimum Age Act 2024", "detail": "Social media ban for under-16s. Fines up to AUD 49.5M."},
|
||||
"de": {"name": "Australien", "law": "Social Media Minimum Age Act 2024", "detail": "Social-Media-Verbot für unter 16-Jährige. Bußgelder bis 49,5 Mio. AUD."},
|
||||
"fr": {"name": "Australie", "law": "Social Media Minimum Age Act 2024", "detail": "Interdiction des réseaux sociaux pour les moins de 16 ans. Amendes jusqu'à 49,5 M AUD."}},
|
||||
|
||||
{"iso3": "GBR", "isoNum": "826", "flag": "🇬🇧", "status": "enforced", "year": 2023, "ageLimitSocial": 13,
|
||||
"en": {"name": "United Kingdom", "law": "Online Safety Act 2023", "detail": "Comprehensive online safety regime. Age verification required."},
|
||||
"de": {"name": "Vereinigtes Königreich", "law": "Online Safety Act 2023", "detail": "Umfassendes Online-Sicherheitsregime. Altersverifikation erforderlich."},
|
||||
"fr": {"name": "Royaume-Uni", "law": "Online Safety Act 2023", "detail": "Régime complet de sécurité en ligne. Vérification d'âge obligatoire."}},
|
||||
|
||||
{"iso3": "DEU", "isoNum": "276", "flag": "🇩🇪", "status": "enforced", "year": 2021, "ageLimitSocial": 13,
|
||||
"en": {"name": "Germany", "law": "Jugendschutzgesetz (JuSchG)", "detail": "Youth Protection Act extended to online platforms. BzKJ monitoring."},
|
||||
"de": {"name": "Deutschland", "law": "Jugendschutzgesetz (JuSchG)", "detail": "Auf Online-Plattformen ausgeweitet. BzKJ überwacht aktiv die Einhaltung."},
|
||||
"fr": {"name": "Allemagne", "law": "Jugendschutzgesetz (JuSchG)", "detail": "Loi sur la protection de la jeunesse étendue aux plateformes en ligne. Surveillance BzKJ."}},
|
||||
|
||||
{"iso3": "CHN", "isoNum": "156", "flag": "🇨🇳", "status": "enforced", "year": 2021, "ageLimitSocial": 14,
|
||||
"en": {"name": "China", "law": "Minor Protection Law", "detail": "1hr/day gaming for minors. Real-name verification mandatory."},
|
||||
"de": {"name": "China", "law": "Minderjährigenschutzgesetz", "detail": "1 Std./Tag Gaming für Minderjährige. Echtnamen-Verifizierung verpflichtend."},
|
||||
"fr": {"name": "Chine", "law": "Loi sur la protection des mineurs", "detail": "1h/jour de jeux vidéo pour les mineurs. Vérification d'identité obligatoire."}},
|
||||
|
||||
{"iso3": "KOR", "isoNum": "410", "flag": "🇰🇷", "status": "enforced", "year": 2020, "ageLimitSocial": 14,
|
||||
"en": {"name": "South Korea", "law": "Youth Protection Act", "detail": "Long-standing youth protection framework. Real-name verification."},
|
||||
"de": {"name": "Südkorea", "law": "Jugendschutzgesetz", "detail": "Langjähriger Jugendschutzrahmen. Echtnamen-Verifizierung für Online-Dienste."},
|
||||
"fr": {"name": "Corée du Sud", "law": "Loi sur la protection de la jeunesse", "detail": "Cadre de protection de la jeunesse établi de longue date. Vérification d'identité."}},
|
||||
|
||||
{"iso3": "IRL", "isoNum": "372", "flag": "🇮🇪", "status": "enforced", "year": 2022, "ageLimitSocial": 13,
|
||||
"en": {"name": "Ireland", "law": "Online Safety and Media Regulation Act", "detail": "Coimisiún na Meán regulates online safety with binding codes."},
|
||||
"de": {"name": "Irland", "law": "Online Safety and Media Regulation Act", "detail": "Coimisiún na Meán reguliert Online-Sicherheit mit verbindlichen Kodizes."},
|
||||
"fr": {"name": "Irlande", "law": "Online Safety and Media Regulation Act", "detail": "Coimisiún na Meán régule la sécurité en ligne avec des codes contraignants."}},
|
||||
|
||||
{"iso3": "NLD", "isoNum": "528", "flag": "🇳🇱", "status": "enforced", "year": 2024, "ageLimitSocial": 16,
|
||||
"en": {"name": "Netherlands", "law": "DSA + Children's Code", "detail": "Dutch DPA actively enforcing children's data protection."},
|
||||
"de": {"name": "Niederlande", "law": "DSA + Kinderkodex", "detail": "Datenschutzbehörde setzt Kinderdatenschutz aktiv durch."},
|
||||
"fr": {"name": "Pays-Bas", "law": "DSA + Code de l'enfance", "detail": "Autorité de protection des données applique activement la protection des données des enfants."}},
|
||||
|
||||
{"iso3": "SWE", "isoNum": "752", "flag": "🇸🇪", "status": "enforced", "year": 2024, "ageLimitSocial": 13,
|
||||
"en": {"name": "Sweden", "law": "DSA + National Youth Guidelines", "detail": "EU DSA framework plus national youth protection guidelines."},
|
||||
"de": {"name": "Schweden", "law": "DSA + Nationale Jugendrichtlinien", "detail": "EU-DSA-Rahmen plus nationale Jugendschutzrichtlinien."},
|
||||
"fr": {"name": "Suède", "law": "DSA + Directives nationales jeunesse", "detail": "Cadre DSA de l'UE plus directives nationales de protection de la jeunesse."}},
|
||||
|
||||
{"iso3": "FRA", "isoNum": "250", "flag": "🇫🇷", "status": "passed", "year": 2026, "ageLimitSocial": 15,
|
||||
"en": {"name": "France", "law": "Loi SREN + Social Media Ban", "detail": "Senate votes to ban social media for under-15s (April 2026). Arcom blacklist."},
|
||||
"de": {"name": "Frankreich", "law": "Loi SREN + Social-Media-Verbot", "detail": "Senat stimmt für Social-Media-Verbot unter 15 (April 2026). Arcom-Blacklist."},
|
||||
"fr": {"name": "France", "law": "Loi SREN + Interdiction réseaux sociaux", "detail": "Le Sénat vote l'interdiction des réseaux sociaux pour les moins de 15 ans (avril 2026)."}},
|
||||
|
||||
{"iso3": "BRA", "isoNum": "076", "flag": "🇧🇷", "status": "passed", "year": 2025, "ageLimitSocial": 12,
|
||||
"en": {"name": "Brazil", "law": "ECA Digital", "detail": "Loot box ban for minors. Age-appropriate design requirements."},
|
||||
"de": {"name": "Brasilien", "law": "ECA Digital", "detail": "Lootbox-Verbot für Minderjährige. Altersgerechtes Design."},
|
||||
"fr": {"name": "Brésil", "law": "ECA Digital", "detail": "Interdiction des loot boxes pour les mineurs. Exigences de design adapté à l'âge."}},
|
||||
|
||||
{"iso3": "IND", "isoNum": "356", "flag": "🇮🇳", "status": "passed", "year": 2023, "ageLimitSocial": 18,
|
||||
"en": {"name": "India", "law": "DPDP Act 2023", "detail": "Verifiable parental consent for under-18s."},
|
||||
"de": {"name": "Indien", "law": "DPDP Act 2023", "detail": "Verifizierbare elterliche Einwilligung für unter 18-Jährige."},
|
||||
"fr": {"name": "Inde", "law": "DPDP Act 2023", "detail": "Consentement parental vérifiable pour les moins de 18 ans."}},
|
||||
|
||||
{"iso3": "ITA", "isoNum": "380", "flag": "🇮🇹", "status": "passed", "year": 2025, "ageLimitSocial": 14,
|
||||
"en": {"name": "Italy", "law": "DSA + Parental Consent Law", "detail": "Digital age of consent set to 14."},
|
||||
"de": {"name": "Italien", "law": "DSA + Einwilligungsgesetz", "detail": "Digitales Einwilligungsalter auf 14 festgelegt."},
|
||||
"fr": {"name": "Italie", "law": "DSA + Loi sur le consentement parental", "detail": "Âge de consentement numérique fixé à 14 ans."}},
|
||||
|
||||
{"iso3": "ESP", "isoNum": "724", "flag": "🇪🇸", "status": "passed", "year": 2025, "ageLimitSocial": 14,
|
||||
"en": {"name": "Spain", "law": "Child Protection in Digital Environments", "detail": "Comprehensive child digital protection law."},
|
||||
"de": {"name": "Spanien", "law": "Organisches Kinderschutzgesetz", "detail": "Umfassendes digitales Kinderschutzgesetz."},
|
||||
"fr": {"name": "Espagne", "law": "Protection de l'enfance dans les environnements numériques", "detail": "Loi complète de protection numérique de l'enfance."}},
|
||||
|
||||
{"iso3": "NOR", "isoNum": "578", "flag": "🇳🇴", "status": "passed", "year": 2025, "ageLimitSocial": 15,
|
||||
"en": {"name": "Norway", "law": "Social Media Age Limit", "detail": "Proposed social media age limit of 15."},
|
||||
"de": {"name": "Norwegen", "law": "Social-Media-Altersgrenze", "detail": "Geplante Altersgrenze von 15 Jahren."},
|
||||
"fr": {"name": "Norvège", "law": "Limite d'âge réseaux sociaux", "detail": "Limite d'âge proposée à 15 ans."}},
|
||||
|
||||
{"iso3": "USA", "isoNum": "840", "flag": "🇺🇸", "status": "progress", "year": 2026, "ageLimitSocial": 13,
|
||||
"en": {"name": "United States", "law": "KOSA + COPPA Update", "detail": "KOSA passed Senate 91-3. COPPA update by Apr 2026."},
|
||||
"de": {"name": "Vereinigte Staaten", "law": "KOSA + COPPA-Update", "detail": "KOSA im Senat angenommen. COPPA-Update bis Apr. 2026."},
|
||||
"fr": {"name": "États-Unis", "law": "KOSA + Mise à jour COPPA", "detail": "KOSA adopté au Sénat 91-3. Mise à jour COPPA prévue avr. 2026."}},
|
||||
|
||||
{"iso3": "CAN", "isoNum": "124", "flag": "🇨🇦", "status": "progress", "year": 2026, "ageLimitSocial": 13,
|
||||
"en": {"name": "Canada", "law": "Online Harms Act (C-63)", "detail": "Proposed duty of care for platforms."},
|
||||
"de": {"name": "Kanada", "law": "Online Harms Act (C-63)", "detail": "Sorgfaltspflicht für Plattformen in Prüfung."},
|
||||
"fr": {"name": "Canada", "law": "Online Harms Act (C-63)", "detail": "Devoir de diligence proposé pour les plateformes."}},
|
||||
|
||||
{"iso3": "JPN", "isoNum": "392", "flag": "🇯🇵", "status": "guidelines", "year": 2024, "ageLimitSocial": 13,
|
||||
"en": {"name": "Japan", "law": "Act on Regulation of Soliciting Children", "detail": "Platform self-regulation encouraged."},
|
||||
"de": {"name": "Japan", "law": "Regulierung der Kontaktaufnahme", "detail": "Selbstregulierung der Plattformen empfohlen."},
|
||||
"fr": {"name": "Japon", "law": "Loi sur la régulation de la sollicitation des enfants", "detail": "Autorégulation des plateformes encouragée."}}
|
||||
]
|
||||
BIN
static/fonts/newsreader/newsreader-italic-latin-ext.woff2
Normal file
BIN
static/fonts/newsreader/newsreader-italic-latin-ext.woff2
Normal file
Binary file not shown.
BIN
static/fonts/newsreader/newsreader-italic-latin.woff2
Normal file
BIN
static/fonts/newsreader/newsreader-italic-latin.woff2
Normal file
Binary file not shown.
BIN
static/fonts/newsreader/newsreader-latin-ext.woff2
Normal file
BIN
static/fonts/newsreader/newsreader-latin-ext.woff2
Normal file
Binary file not shown.
BIN
static/fonts/newsreader/newsreader-latin.woff2
Normal file
BIN
static/fonts/newsreader/newsreader-latin.woff2
Normal file
Binary file not shown.
20
static/js/chart.umd.min.js
vendored
Normal file
20
static/js/chart.umd.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
12
static/js/leaflet.min.js
vendored
Normal file
12
static/js/leaflet.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
12
static/js/maplibre-gl.min.js
vendored
Normal file
12
static/js/maplibre-gl.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3298
static/js/mermaid.min.js
vendored
Normal file
3298
static/js/mermaid.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
2
static/js/topojson-client.min.js
vendored
Normal file
2
static/js/topojson-client.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -15,12 +15,13 @@ This blog covers:
|
||||
|
||||
## Languages
|
||||
|
||||
Content is available in English (/en/) and German (/de/).
|
||||
Content is available in English (/en/), German (/de/), and French (/fr/).
|
||||
|
||||
## Sections
|
||||
|
||||
- /en/ — Articles on child protection and online safety (English)
|
||||
- /de/ — Artikel zum Kinderschutz und Online-Sicherheit (Deutsch)
|
||||
- /fr/ — Articles sur la protection de l'enfance et la sécurité en ligne (Français)
|
||||
- /en/about/ — About this publication
|
||||
- /en/tags/ — Browse by topic
|
||||
|
||||
|
||||
237
static/map-embed.html
Normal file
237
static/map-embed.html
Normal file
@@ -0,0 +1,237 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="/css/maplibre-gl.min.css" />
|
||||
<style>
|
||||
body { margin: 0; overflow: hidden; }
|
||||
#map { width: 100%; height: 100vh; }
|
||||
.maplibregl-ctrl-attrib { font-size: 10px; }
|
||||
.maplibregl-popup-content { font-size: 0.85rem; max-width: 260px; line-height: 1.4; }
|
||||
.ifk-popup-status { display: inline-block; padding: 0.15rem 0.5rem; border-radius: 4px; font-weight: 600; font-size: 0.8rem; color: white; margin: 0.3rem 0; }
|
||||
.ifk-popup-age { display: flex; align-items: center; gap: 0.35rem; margin: 0.3rem 0; font-size: 0.8rem; color: #555; }
|
||||
.ifk-popup-detail { margin: 0.4rem 0; font-size: 0.82rem; color: #444; }
|
||||
.ifk-popup-link { display: inline-block; margin-top: 0.4rem; font-size: 0.8rem; color: #667eea; text-decoration: none; font-weight: 600; }
|
||||
.ifk-popup-link:hover { text-decoration: underline; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="map"></div>
|
||||
<script src="/js/maplibre-gl.min.js"></script>
|
||||
<script src="/js/topojson-client.min.js"></script>
|
||||
<script>
|
||||
(function() {
|
||||
var LANG = 'en';
|
||||
try { var m = parent.location.pathname.match(/^\/(de|fr|en)\//); if (m) LANG = m[1]; } catch(e) {}
|
||||
|
||||
// Enforced = darkest, Guidelines = lightest
|
||||
var STATUS_COLORS = { enforced: '#764ba2', passed: '#4a5ec7', progress: '#8b9cf0', guidelines: '#c5cefd' };
|
||||
var STATUS_LABELS = {
|
||||
en: { enforced: 'Enforced', passed: 'Passed', progress: 'In Progress', guidelines: 'Guidelines' },
|
||||
de: { enforced: 'In Kraft', passed: 'Verabschiedet', progress: 'In Bearbeitung', guidelines: 'Richtlinien' },
|
||||
fr: { enforced: 'En vigueur', passed: 'Adopté', progress: 'En cours', guidelines: 'Directives' }
|
||||
};
|
||||
var AGE_LABELS = { en: 'Min. social media age', de: 'Min. Social-Media-Alter', fr: 'Âge min. réseaux sociaux' };
|
||||
var ARTICLE_ANCHORS = { AUS: 'australia', DEU: 'germany', USA: 'the-united-states', FRA: 'france', BRA: 'brazil' };
|
||||
if (LANG === 'de') { ARTICLE_ANCHORS.AUS = 'australien'; ARTICLE_ANCHORS.USA = 'die-vereinigten-staaten'; ARTICLE_ANCHORS.DEU = 'deutschland'; ARTICLE_ANCHORS.BRA = 'brasilien'; }
|
||||
|
||||
var byIsoNum = {};
|
||||
|
||||
window._ifkMap = new maplibregl.Map({
|
||||
container: 'map',
|
||||
center: [20, 25],
|
||||
zoom: 2,
|
||||
scrollZoom: false,
|
||||
fadeDuration: 0,
|
||||
maxZoom: 4,
|
||||
style: 'https://maps.clicksports.de/styles/klokantech-basic/style.json'
|
||||
});
|
||||
_ifkMap.addControl(new maplibregl.NavigationControl({ showCompass: false }), 'top-right');
|
||||
_ifkMap.addControl(new maplibregl.FullscreenControl(), 'top-right');
|
||||
|
||||
document.addEventListener('fullscreenchange', function() {
|
||||
if (document.fullscreenElement) _ifkMap.scrollZoom.enable();
|
||||
else _ifkMap.scrollZoom.disable();
|
||||
});
|
||||
|
||||
_ifkMap.on('load', function() {
|
||||
// White land, gray sea
|
||||
_ifkMap.setPaintProperty('background', 'background-color', '#ffffff');
|
||||
try { _ifkMap.setPaintProperty('water', 'fill-color', '#c8d3df'); } catch(e) {}
|
||||
// Clean map: white land, no roads, no city labels — only country names + borders
|
||||
_ifkMap.getStyle().layers.forEach(function(l) {
|
||||
if (l.id.includes('land') && l.type === 'fill') _ifkMap.setPaintProperty(l.id, 'fill-color', '#ffffff');
|
||||
// Hide roads/transport
|
||||
if (l.type === 'line' && (l.id.includes('road') || l.id.includes('rail') || l.id.includes('transit') || l.id.includes('tunnel') || l.id.includes('bridge') || l.id.includes('transport') || l.id.includes('highway') || l.id.includes('path') || l.id.includes('aeroway'))) {
|
||||
try { _ifkMap.setLayoutProperty(l.id, 'visibility', 'none'); } catch(e) {}
|
||||
}
|
||||
// Hide all symbol layers except country labels (show at zoom 3+)
|
||||
if (l.type === 'symbol') {
|
||||
if (l.id.includes('country')) {
|
||||
try { _ifkMap.setLayerZoomRange(l.id, 3, 24); } catch(e) {}
|
||||
} else {
|
||||
try { _ifkMap.setLayoutProperty(l.id, 'visibility', 'none'); } catch(e) {}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Promise.all([
|
||||
fetch('/data/countries.json').then(function(r) { return r.json(); }),
|
||||
fetch('/data/countries-50m.json').then(function(r) { return r.json(); })
|
||||
]).then(function(results) {
|
||||
var countries = results[0];
|
||||
var topo = results[1];
|
||||
|
||||
countries.forEach(function(c) { byIsoNum[c.isoNum] = c; });
|
||||
|
||||
var geo = topojson.feature(topo, topo.objects.countries);
|
||||
geo.features.forEach(function(f) {
|
||||
var id = String(f.id).padStart(3, '0');
|
||||
var c = byIsoNum[id];
|
||||
f.properties.fillColor = c ? STATUS_COLORS[c.status] : 'transparent';
|
||||
f.properties.fillOpacity = c ? 1 : 0;
|
||||
f.properties.isoNum = id;
|
||||
});
|
||||
|
||||
// Render choropleth as image overlay — re-renders at high res for visible area
|
||||
var MAX_LAT = 85.051129;
|
||||
var offscreen = document.createElement('canvas');
|
||||
var dpr = window.devicePixelRatio || 1;
|
||||
|
||||
function mercY(lat, north, south, H) {
|
||||
var toMerc = function(l) { var r = l * Math.PI / 180; return Math.log(Math.tan(Math.PI/4 + r/2)); };
|
||||
var mTop = toMerc(north), mBot = toMerc(south);
|
||||
return (toMerc(north) - toMerc(lat)) / (mTop - mBot) * H;
|
||||
}
|
||||
|
||||
function renderChoropleth() {
|
||||
var bounds = _ifkMap.getBounds();
|
||||
var west = Math.max(-180, bounds.getWest());
|
||||
var east = Math.min(180, bounds.getEast());
|
||||
var south = Math.max(-MAX_LAT, bounds.getSouth());
|
||||
var north = Math.min(MAX_LAT, bounds.getNorth());
|
||||
// Large padding so small pans don't trigger re-render
|
||||
var lonPad = (east - west) * 0.5;
|
||||
var latPad = (north - south) * 0.5;
|
||||
west = Math.max(-180, west - lonPad);
|
||||
east = Math.min(180, east + lonPad);
|
||||
south = Math.max(-MAX_LAT, south - latPad);
|
||||
north = Math.min(MAX_LAT, north + latPad);
|
||||
|
||||
var container = _ifkMap.getContainer();
|
||||
var W = Math.round(container.clientWidth * dpr);
|
||||
var H = Math.round(container.clientHeight * dpr);
|
||||
offscreen.width = W; offscreen.height = H;
|
||||
var ctx = offscreen.getContext('2d');
|
||||
ctx.clearRect(0, 0, W, H);
|
||||
|
||||
geo.features.forEach(function(f) {
|
||||
var id = String(f.id).padStart(3, '0');
|
||||
var c = byIsoNum[id];
|
||||
if (!c) return;
|
||||
ctx.fillStyle = STATUS_COLORS[c.status];
|
||||
ctx.beginPath();
|
||||
var coords = f.geometry.type === 'Polygon' ? [f.geometry.coordinates] : f.geometry.coordinates;
|
||||
coords.forEach(function(poly) {
|
||||
poly.forEach(function(ring) {
|
||||
for (var i = 0; i < ring.length; i++) {
|
||||
var lon = ring[i][0], lat = Math.max(-MAX_LAT, Math.min(MAX_LAT, ring[i][1]));
|
||||
var x = (lon - west) / (east - west) * W;
|
||||
var y = mercY(lat, north, south, H);
|
||||
if (i === 0) ctx.moveTo(x, y);
|
||||
else ctx.lineTo(x, y);
|
||||
}
|
||||
ctx.closePath();
|
||||
});
|
||||
});
|
||||
ctx.fill();
|
||||
});
|
||||
|
||||
var url = offscreen.toDataURL('image/png');
|
||||
var coords = [[west, north], [east, north], [east, south], [west, south]];
|
||||
lastBounds = [west, north, east, south];
|
||||
|
||||
if (_ifkMap.getSource('choropleth-img')) {
|
||||
_ifkMap.getSource('choropleth-img').updateImage({ url: url, coordinates: coords });
|
||||
} else {
|
||||
_ifkMap.addSource('choropleth-img', { type: 'image', url: url, coordinates: coords });
|
||||
// Find first label/symbol layer to insert choropleth below it
|
||||
var firstLabel = null;
|
||||
_ifkMap.getStyle().layers.forEach(function(l) {
|
||||
if (!firstLabel && (l.type === 'symbol')) firstLabel = l.id;
|
||||
});
|
||||
_ifkMap.addLayer({
|
||||
id: 'choropleth-fill', type: 'raster', source: 'choropleth-img',
|
||||
paint: { 'raster-opacity': 0.85, 'raster-fade-duration': 0 }
|
||||
}, firstLabel);
|
||||
}
|
||||
}
|
||||
|
||||
var lastBounds = null;
|
||||
function needsRerender() {
|
||||
if (!lastBounds) return true;
|
||||
var b = _ifkMap.getBounds();
|
||||
// Only re-render if viewport moved >30% outside last rendered area
|
||||
var threshold = 0.3;
|
||||
var lw = lastBounds[2] - lastBounds[0], lh = lastBounds[1] - lastBounds[3];
|
||||
return b.getWest() < lastBounds[0] + lw * threshold ||
|
||||
b.getEast() > lastBounds[2] - lw * threshold ||
|
||||
b.getNorth() > lastBounds[1] - lh * threshold ||
|
||||
b.getSouth() < lastBounds[3] + lh * threshold;
|
||||
}
|
||||
renderChoropleth();
|
||||
_ifkMap.on('moveend', function() { if (needsRerender()) renderChoropleth(); });
|
||||
|
||||
// Invisible GeoJSON layer for hover/click interaction
|
||||
_ifkMap.addSource('countries', { type: 'geojson', data: geo });
|
||||
_ifkMap.addLayer({
|
||||
id: 'countries-interaction', type: 'fill', source: 'countries',
|
||||
paint: { 'fill-color': '#000000', 'fill-opacity': 0, 'fill-antialias': false }
|
||||
});
|
||||
_ifkMap.addLayer({
|
||||
id: 'choropleth-hover', type: 'fill', source: 'countries',
|
||||
paint: { 'fill-color': '#667eea', 'fill-opacity': 0.2, 'fill-antialias': false },
|
||||
filter: ['==', 'isoNum', '']
|
||||
});
|
||||
|
||||
var popup = new maplibregl.Popup({ closeButton: true, closeOnClick: false, maxWidth: '280px' });
|
||||
|
||||
_ifkMap.on('mousemove', 'countries-interaction', function(e) {
|
||||
var id = e.features[0].properties.isoNum;
|
||||
var c = byIsoNum[id];
|
||||
_ifkMap.getCanvas().style.cursor = c ? 'pointer' : '';
|
||||
_ifkMap.setFilter('choropleth-hover', c ? ['==', 'isoNum', id] : ['==', 'isoNum', '']);
|
||||
});
|
||||
_ifkMap.on('mouseleave', 'countries-interaction', function() {
|
||||
_ifkMap.getCanvas().style.cursor = '';
|
||||
_ifkMap.setFilter('choropleth-hover', ['==', 'isoNum', '']);
|
||||
});
|
||||
|
||||
_ifkMap.on('click', 'countries-interaction', function(e) {
|
||||
var id = e.features[0].properties.isoNum;
|
||||
var c = byIsoNum[id];
|
||||
if (!c) return;
|
||||
var loc = c[LANG] || c.en;
|
||||
var labels = STATUS_LABELS[LANG] || STATUS_LABELS.en;
|
||||
var ageLabel = AGE_LABELS[LANG] || AGE_LABELS.en;
|
||||
var html = '<strong>' + c.flag + ' ' + loc.name + '</strong><br>' +
|
||||
'<em>' + loc.law + '</em><br>' +
|
||||
'<span class="ifk-popup-status" style="background:' + STATUS_COLORS[c.status] + '">' + labels[c.status] + ' (' + c.year + ')</span>' +
|
||||
'<div class="ifk-popup-age">👤 ' + ageLabel + ': <strong>' + c.ageLimitSocial + '+</strong></div>' +
|
||||
'<div class="ifk-popup-detail">' + loc.detail + '</div>';
|
||||
var anchor = ARTICLE_ANCHORS[c.iso3];
|
||||
if (anchor) {
|
||||
var overviewPaths = { en: '/en/child-protection-laws-2026-global-overview/', de: '/de/kinderschutzgesetze-2026-weltweiter-ueberblick/', fr: '/fr/lois-protection-enfance-2026-panorama-mondial/' };
|
||||
var articleUrl = (overviewPaths[LANG] || overviewPaths.en) + '#' + anchor;
|
||||
var readMore = { en: 'Read more →', de: 'Weiterlesen →', fr: 'En savoir plus →' };
|
||||
html += '<a class="ifk-popup-link" href="' + articleUrl + '" target="_parent">' + (readMore[LANG] || readMore.en) + '</a>';
|
||||
}
|
||||
popup.setLngLat(e.lngLat).setHTML(html).addTo(_ifkMap);
|
||||
});
|
||||
}).catch(function(e) { console.error('Choropleth load error:', e); });
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
21
static/site.webmanifest
Normal file
21
static/site.webmanifest
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"name": "Internet for Kids",
|
||||
"short_name": "IFK",
|
||||
"description": "Expert insights on child protection laws, online safety, and digital family protection worldwide.",
|
||||
"start_url": "/en/",
|
||||
"display": "standalone",
|
||||
"background_color": "#ffffff",
|
||||
"theme_color": "#1a365d",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
}
|
||||
Submodule themes/congo deleted from b426bf91b0
Reference in New Issue
Block a user