Анализ сайта aiolingua.com
Основное Готовность: 100%
Домен
aiolingua.com
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Сервер настроен корректно.
Цепочка редиректов:
http://aiolingua.com
301 MovedPermanently
https://aiopop.com/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
Не настроен HSTS (Strict-Transport-Security) — рекомендуется включить.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 04.10.2026 22:45:22.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
UTF-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице UTF-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~0,63сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 0,63сек оптимальна.
Объем документа
58Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 58Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 2
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 2 достаточно.
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| js | aiopop-i18n.js | |
| js | aiopop-applang.js |
Серверные заголовки
Кол-во: 7
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 7шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| x-ws-origin | available |
| x-ws-ratelimit-limit | 1000 |
| x-ws-ratelimit-remaining | 998 |
| Date | Tue, 25 Aug 2026 02:44:15 GMT |
| Server | Apache |
| ETag | "efd8-654eaa9da4b40" |
| Accept-Ranges | bytes |
CMS
Не определена
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
CMS не определена. Вероятно, сайт самописный либо движок надёжно скрыт. Это не ошибка.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере Apache.
Мета-теги Готовность: 23%
Title
aioPop — Free Language Courses for the World
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Дублей словоформ в title не найдено.
Число символов в title 44 оптимально (норма: от 40 до 45).
Description
Learn English, Spanish, French, Italian, Portuguese or Chinese free. No app. No account. No payment. Ever. Just open it and listen.
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо уменьшить число символов в description (текущее значение: 131, оптимально: от 120 до 130)
Keywords
learn languages free, free language courses, language learning online, English, Spanish, French, Italian, Portuguese, Chinese, Powerplay method, free language learning, duolingo alternative, free language app alternative
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Keywords установлены.
Канонический Url
https://aiopop.com
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Канонический Url прописан корректно.
Robots
index, follow
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots со значениями index, follow не накладывает ограничений на индексирование и показ контента.
Адаптивность
width=device-width, initial-scale=1.0
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Кол-во: 7
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:type | website |
| og:url | https://aiopop.com |
| og:title | aioPop — Free Language Courses for the World |
| og:description | Learn English, Spanish, French, Italian, Portuguese or Chinese free. No app. No account. No payment. Ever. Just open it and listen. |
| og:image | https://aiopop.com/img/og-aiopop.jpg |
| og:site_name | aioPop |
| og:locale | en_US |
Все мета-теги
Кол-во: 19
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 19шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | viewport | width=device-width, initial-scale=1.0 |
| name | description | Learn English, Spanish, French, Italian, Portuguese or Chinese free. No app. No account. No payment. Ever. Just open it and listen. |
| name | keywords | learn languages free, free language courses, language learning online, English, Spanish, French, Italian, Portuguese, Chinese, Powerplay method, free language learning, duolingo alternative, free language app alternative |
| name | author | Patricia Bourcillier and Bernd Sebastian Kamps |
| name | robots | index, follow |
| name | twitter:card | summary_large_image |
| name | twitter:url | https://aiopop.com |
| name | twitter:title | aioPop — Free Language Learning |
| name | twitter:description | Learn 6 languages free. No app. No account. No payment. Ever. |
| name | twitter:image | https://aiopop.com/img/og-aiopop.jpg |
| name | twitter:creator | @aiopop |
| name | theme-color | #06283D |
| property | og:type | website |
| property | og:url | https://aiopop.com |
| property | og:title | aioPop — Free Language Courses for the World |
| property | og:description | Learn English, Spanish, French, Italian, Portuguese or Chinese free. No app. No account. No payment. Ever. Just open it and listen. |
| property | og:image | https://aiopop.com/img/og-aiopop.jpg |
| property | og:site_name | aioPop |
| property | og:locale | en_US |
Оптимизация Готовность: 90%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют по одному на документ).
Контент
Есть ошибки
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Кол-во слов 704 не очень много. Добавьте побольше текста (хотя бы 800 слов)!
Слова из title 8 встречаются в тексте достаточно.
Абзацев с текстом 22 достаточно.
Среднее число слов в абзаце 22 достаточно.
Кол-во знаков контента 4343 на странице оптимально.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
На странице присутствуют заголовки <h2> 6. Это хорошо.
На странице присутствуют заголовки <h3> 3.
Тошнота
3,74
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота превышает норму 3. Измените текст страницы!
Академич. тошнота
10,65%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота страницы в пределах нормы.
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| edition | 14 | 1,99% |
| english | 10 | 1,42% |
| language | 9 | 1,28% |
| italian | 9 | 1,28% |
| chinese | 9 | 1,28% |
| spanish | 7 | 0,99% |
| languages | 7 | 0,99% |
| french | 6 | 0,85% |
| portuguese | 6 | 0,85% |
| aiopop | 5 | 0,71% |
| powerplay | 4 | 0,57% |
| sentence | 4 | 0,57% |
| project | 3 | 0,43% |
| amedeo | 3 | 0,43% |
| german | 3 | 0,43% |
| bourcillier | 3 | 0,43% |
| method | 3 | 0,43% |
| repeat | 3 | 0,43% |
| episodes | 3 | 0,43% |
| characters | 3 | 0,43% |
Индексация Готовность: 30%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 24 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Robots.txt настроен корректно. Размер файла: 59859 байт. Загружен за: 1сек.
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://aiolingua.com/robots.txt
301 MovedPermanently
https://aiopop.com/
200 OK
Показать содержимое robots.txt
<!DOCTYPE html>
<html lang="en">
<head>
<!--************************************************************************************************************-->
<!--********************************************** aioPop Player ***********************************************-->
<!--*********************************************** Version 1.0 ************************************************-->
<!--********************************************** June 13, 2026 ***********************************************-->
<!--************************************************************************************************************-->
<!---------------------------------------------------------------------------------------------------------------->
<!---------------------------------------- Code by: Bernd Sebastian Kamps ---------------------------------------->
<!---------------------------------------------------------------------------------------------------------------->
<!-- Description: aioPop is a free multilingual audio language player using the Powerplay method. -->
<!-- Listen to sentences in six languages, repeat aloud, and follow along in 30 translation languages. -->
<!-- Twenty episodes per language, all set in Sardinia. Free PDF downloads. No account required. -->
<!-- -->
<!-- Features: -->
<!-- • Powerplay: sentence plays — you repeat aloud — sentence plays again. At your own pace. -->
<!-- • 6 Audio Languages: English, Spanish, French, Italian, Portuguese, Chinese -->
<!-- • 30 Translation Languages: read along in your own language -->
<!-- • 20 Episodes per language, all set in Sardinia -->
<!-- • Continuous and Loop modes, adjustable speed and pause duration -->
<!-- • Megaloop: drill across multiple lessons in sequence -->
<!-- • PDF download for every language pair — no account, no registration -->
<!-- • Responsive: optimised for desktop and mobile -->
<!-- -->
<!-- Repository: https://github.com/bsk54/aioPop.git ------------------------------------------------------>
<!-- Web site: https://aiopop.com -->
<!--************************************************************************************************************-->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>aioPop — Free Language Courses for the World</title>
<meta name="description" content="Learn English, Spanish, French, Italian, Portuguese or Chinese free. No app. No account. No payment. Ever. Just open it and listen.">
<!-- ═══════ INVISIBLE SEO: Meta Tags ═══════ -->
<meta name="keywords" content="learn languages free, free language courses, language learning online, English, Spanish, French, Italian, Portuguese, Chinese, Powerplay method, free language learning, duolingo alternative, free language app alternative">
<meta name="author" content="Patricia Bourcillier and Bernd Sebastian Kamps">
<meta name="robots" content="index, follow">
<link rel="canonical" href="https://aiopop.com">
<!-- ═══════ INVISIBLE SEO: Open Graph (Social Sharing) ═══════ -->
<meta property="og:type" content="website">
<meta property="og:url" content="https://aiopop.com">
<meta property="og:title" content="aioPop — Free Language Courses for the World">
<meta property="og:description" content="Learn English, Spanish, French, Italian, Portuguese or Chinese free. No app. No account. No payment. Ever. Just open it and listen.">
<meta property="og:image" content="https://aiopop.com/img/og-aiopop.jpg">
<meta property="og:site_name" content="aioPop">
<meta property="og:locale" content="en_US">
<!-- ═══════ INVISIBLE SEO: Twitter/X Tags ═══════ -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:url" content="https://aiopop.com">
<meta name="twitter:title" content="aioPop — Free Language Learning">
<meta name="twitter:description" content="Learn 6 languages free. No app. No account. No payment. Ever.">
<meta name="twitter:image" content="https://aiopop.com/img/og-aiopop.jpg">
<meta name="twitter:creator" content="@aiopop">
<!-- Favicons (site root) -->
<link rel="icon" href="/favicons/favicon.ico" sizes="any">
<link rel="icon" type="image/svg+xml" href="/favicons/favicon.svg">
<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicons/favicon-16x16.png">
<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
<link rel="manifest" href="/favicons/site.webmanifest">
<meta name="theme-color" content="#06283D">
<style>
@font-face {
font-family: 'Outfit';
src: url('fonts/Outfit[wght].ttf') format('truetype');
font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
font-family: 'Cormorant Garamond';
src: url('fonts/CormorantGaramond[wght].ttf') format('truetype');
font-weight: 100 900; font-style: normal; font-display: swap;
}
@font-face {
font-family: 'Cormorant Garamond';
src: url('fonts/CormorantGaramond-Italic[wght].ttf') format('truetype');
font-weight: 100 900; font-style: italic; font-display: swap;
}
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { font-family:'Outfit',sans-serif; background:#fff; color:#1a1a1a; overflow-x:hidden; }
/* ══════════ NAV ══════════ */
.nav {
position: fixed; top:0; left:0; right:0; z-index:1000;
background: rgba(11,34,64,0.97);
backdrop-filter: blur(8px);
border-bottom: 1px solid rgba(255,255,255,0.07);
height: 52px;
display: flex; align-items: center;
padding: 0 2rem;
}
.nav-logo {
font-family:'Cormorant Garamond',serif;
font-size:1.5rem; font-weight:600;
color:#fff; text-decoration:none; letter-spacing:0.01em;
}
.nav-logo span { color:#E8C448; }
.nav-spacer { flex:1; }
.aio-lang-wrap { position: relative; }
.aio-lang-btn { background: rgba(255,255,255,0.14); border: 1px solid rgba(255,255,255,0.28); color: #fff; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em; padding: 0.3rem 0.55rem; border-radius: 4px; cursor: pointer; min-width: 2.4rem; text-align: center; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; transition: background 0.15s; }
.aio-lang-btn:hover { background: rgba(255,255,255,0.26); }
.aio-lang-panel { display: none; position: absolute; top: calc(100% + 0.35rem); right: 0; background: #fff; border: 1px solid rgba(0,0,0,0.10); border-radius: 8px; box-shadow: 0 6px 24px rgba(0,0,0,0.14); min-width: 150px; max-height: 260px; overflow-y: auto; padding: 0.3rem 0; z-index: 1100; }
.aio-lang-panel.open { display: block; }
.aio-lang-list { display: flex; flex-direction: column; }
.aio-lang-item { display: block; width: 100%; text-align: left; background: none; border: none; padding: 0.5rem 1rem; font-size: 0.88rem; color: #222; cursor: pointer; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; transition: background 0.1s; }
.aio-lang-item:hover { background: #f4f4f4; }
.aio-lang-item.active { background: #e8f2fb; color: #063A5B; font-weight: 600; }
.nav-hamburger {
background:none; border:none; cursor:pointer;
display:flex; flex-direction:column; gap:5px;
padding:6px; border-radius:4px;
transition: background 0.15s;
}
.nav-hamburger:hover { background: rgba(255,255,255,0.08); }
.nav-hamburger span {
display:block; width:22px; height:2px;
background:#fff; border-radius:2px;
transition: transform 0.25s, opacity 0.25s;
}
.nav-hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-hamburger.open span:nth-child(2) { opacity:0; }
.nav-hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.nav-drawer {
position:fixed; top:52px; right:0; bottom:0;
width:260px; background:#0B2240;
border-left:1px solid rgba(255,255,255,0.08);
z-index:999;
display:flex; flex-direction:column;
padding:2rem 1.5rem;
transform: translateX(100%);
transition: transform 0.28s cubic-bezier(0.4,0,0.2,1);
}
.nav-drawer.open { transform: translateX(0); }
.nav-drawer a {
color:rgba(255,255,255,0.75);
text-decoration:none;
font-size:0.95rem; font-weight:500;
padding:0.8rem 0;
border-bottom:1px solid rgba(255,255,255,0.07);
transition: color 0.15s;
display:flex; align-items:center; gap:10px;
}
.nav-drawer a:hover { color:#E8C448; }
.nav-drawer a:last-child { border-bottom:none; }
.nav-drawer-cta {
margin-top:auto;
padding:0.9rem 1.2rem;
background:#E8C448; color:#0B2240 !important;
border-radius:5px; font-weight:700 !important;
text-align:center; justify-content:center !important;
border-bottom:none !important;
}
.nav-drawer-cta:hover { background:#f5d460; color:#0B2240 !important; }
.nav-overlay {
position:fixed; inset:0; background:rgba(0,0,0,0.4);
z-index:998; opacity:0; pointer-events:none;
transition: opacity 0.28s;
}
.nav-overlay.open { opacity:1; pointer-events:all; }
.hero {
background: #0B2240;
min-height: 100svh;
display: flex;
flex-direction: column;
justify-content: center;
padding: 7rem 4rem 4rem;
position: relative;
overflow: hidden;
}
.hero-sardinia {
position: absolute; right: -2%; top: 0; bottom: 0;
width: 38%; max-width: 420px;
opacity: 0.06; pointer-events: none; z-index: 0;
}
.hero-sardinia path { stroke:#fff; stroke-width:8; fill:none; stroke-linejoin:round; stroke-linecap:round; }
.hero-ghost {
position: absolute; right: -0.03em; bottom: -0.12em;
font-family:'Cormorant Garamond',serif; font-style:italic; font-weight:700;
font-size: clamp(7rem,26vw,20rem); line-height:1;
color: rgba(255,255,255,0.025); pointer-events:none; user-select:none; white-space:nowrap; z-index:0;
}
.hero-inner { position:relative; z-index:1; max-width:820px; }
.hero-eyebrow {
font-size:0.7rem; font-weight:600; letter-spacing:0.28em; text-transform:uppercase;
color:#E8C448; margin-bottom:1.8rem; display:flex; align-items:center; gap:10px;
}
.hero-eyebrow::before {
content:''; display:block; width:28px; height:2px; background:#E8C448; flex-shrink:0;
}
.hero-headline {
font-family:'Cormorant Garamond',serif;
font-size: clamp(3.2rem,7vw,7rem);
font-weight:600; line-height:0.9;
letter-spacing:-0.02em; color:#fff;
margin-bottom:0.6rem;
}
.hero-headline em {
font-style:italic; color:#E8C448;
}
.hero-languages {
margin:1.5rem 0 2.2rem 0;
font-size:1.05rem;
color:rgba(255,255,255,0.75);
letter-spacing:0.04em;
line-height:1.8;
font-weight:500;
}
.hero-honest {
font-family:'Cormorant Garamond',serif;
font-style:italic;
font-size: clamp(1.1rem,2.2vw,1.5rem);
color:rgba(255,255,255,0.45);
line-height:1.5; margin:1.8rem 0 0.8rem;
border-left:2px solid rgba(232,196,72,0.4);
padding-left:1rem;
}
.hero-claims {
display:flex; flex-wrap:wrap; gap:0.5rem 1.5rem;
margin-bottom:2.8rem;
}
.hero-claim {
font-size:0.82rem; font-weight:500;
color:rgba(255,255,255,0.5);
display:flex; align-items:center; gap:6px;
}
.hero-claim::before {
content:''; display:block; width:5px; height:5px;
border-radius:50%; background:#E8C448; flex-shrink:0;
}
/* ── Language Picker ── */
.picker-label {
font-size:0.75rem; font-weight:600; letter-spacing:0.15em; text-transform:uppercase;
color:rgba(255,255,255,0.4); margin-bottom:0.8rem;
}
.picker {
display:flex; align-items:stretch; gap:0; flex-wrap:wrap;
background:rgba(255,255,255,0.06);
border:1px solid rgba(255,255,255,0.15);
border-radius:8px; overflow:hidden;
width:fit-content; max-width:100%;
}
.picker-group {
display:flex; flex-direction:column;
padding:0.8rem 1.2rem;
border-right:1px solid rgba(255,255,255,0.1);
min-width:160px;
}
.picker-group-label {
font-size:0.62rem; font-weight:600; letter-spacing:0.15em;
text-transform:uppercase; color:rgba(255,255,255,0.3);
margin-bottom:0.4rem;
}
.picker select {
background:transparent; border:none; outline:none;
color:#fff; font-family:'Outfit',sans-serif;
font-size:1rem; font-weight:600;
cursor:pointer; appearance:none;
padding-right:1.2rem;
background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='rgba(255,255,255,0.4)' d='M7 8l3 3 3-3H7z'/%3E%3C/svg%3E");
background-repeat:no-repeat; background-position:right 0 center; background-size:1.1em;
}
.picker select option { background:#0B2240; color:#fff; }
.picker-go {
display:flex; align-items:center; justify-content:center;
padding:1rem 2rem;
background:#E8C448; color:#0B2240;
font-family:'Outfit',sans-serif;
font-size:0.95rem; font-weight:700;
border:none; cursor:pointer;
transition:background 0.18s;
white-space:nowrap; gap:8px;
text-decoration:none;
}
.picker-go:hover { background:#f5d460; }
.picker-go svg { flex-shrink:0; }
.hero-since {
margin-top:2rem;
font-size:0.75rem; color:rgba(255,255,255,0.25);
letter-spacing:0.08em;
}
/* ══════════ HOW IT WORKS ══════════ */
.how {
background:#f7f6f2;
padding:5rem 4rem;
}
.how-inner { max-width:1100px; margin:0 auto; }
.section-eyebrow {
font-size:0.7rem; font-weight:600; letter-spacing:0.28em; text-transform:uppercase;
color:#E8C448; margin-bottom:1.2rem;
display:flex; align-items:center; gap:10px;
}
.section-eyebrow::before { content:''; display:block; width:28px; height:2px; background:#E8C448; flex-shrink:0; }
.how-headline {
font-family:'Cormorant Garamond',serif;
font-size:clamp(2rem,4vw,3.2rem);
font-weight:600; color:#0B2240; margin-bottom:0.6rem;
}
.how-sub {
font-size:0.9rem; color:#888; line-height:1.7; max-width:520px; margin-bottom:3rem;
}
.steps {
display:grid; grid-template-columns:repeat(3,1fr); gap:0;
border:1.5px solid #e0ddd5; border-radius:10px; overflow:hidden;
}
.step {
padding:2rem 2rem 2.2rem;
border-right:1.5px solid #e0ddd5;
background:#fff;
}
.step:last-child { border-right:none; }
.step-num {
font-family:'Cormorant Garamond',serif;
font-size:3.5rem; font-weight:700; line-height:1;
color:#E8C448; margin-bottom:1rem;
opacity:0.8;
}
.step-title {
font-size:1rem; font-weight:700; color:#0B2240;
margin-bottom:0.5rem;
}
.step-desc {
font-size:0.85rem; color:#666; line-height:1.65;
}
.step-desc em {
font-style:italic; color:#0B2240; font-weight:500;
}
.how-note {
margin-top:2rem;
padding:1.2rem 1.5rem;
background:#fff; border:1.5px solid #e0ddd5; border-radius:8px;
font-family:'Cormorant Garamond',serif; font-style:italic;
font-size:1.1rem; color:#555; line-height:1.6;
max-width:640px;
}
/* ══════════ NUMBERS ══════════ */
.numbers { background:#0B2240; }
.numbers-inner {
max-width:1100px; margin:0 auto;
display:grid; grid-template-columns:repeat(5,1fr);
border-left:1px solid rgba(255,255,255,0.07);
}
.number-item {
padding:3rem 2rem;
border-right:1px solid rgba(255,255,255,0.07);
border-bottom:1px solid rgba(255,255,255,0.07);
}
.number-big {
font-family:'Cormorant Garamond',serif;
font-size:3.5rem; font-weight:700; line-height:1;
color:#E8C448; margin-bottom:0.4rem;
}
.number-label { font-size:0.8rem; color:rgba(255,255,255,0.45); font-weight:500; line-height:1.4; }
.number-since { font-size:0.7rem; color:rgba(255,255,255,0.25); margin-top:0.3rem; }
/* ══════════ SARDINIA STORY ══════════ */
.sardinia {
padding:5rem 4rem;
display:grid; grid-template-columns:1fr 1fr; gap:6rem; align-items:center;
max-width:1100px; margin:0 auto;
}
.sardinia-text .section-eyebrow { color:#0B2240; }
.sardinia-text .section-eyebrow::before { background:#0B2240; }
.sardinia-headline {
font-family:'Cormorant Garamond',serif;
font-size:clamp(2rem,3.5vw,2.8rem);
font-weight:600; color:#0B2240; line-height:1.05;
margin-bottom:1.2rem;
}
.sardinia-headline em { font-style:italic; color:#E8C448; }
.sardinia-body {
font-size:0.9rem; color:#555; line-height:1.8; margin-bottom:1.5rem;
}
.sardinia-svg {
opacity:0.15;
}
.sardinia-svg path { stroke:#0B2240; stroke-width:8; fill:none; stroke-linejoin:round; stroke-linecap:round; }
/* ══════════ PROJECTS SECTION ══════════ */
.projects-section {
background:#f7f6f2;
padding:5rem 4rem;
border-top:1px solid #e8e5dd;
}
.projects-inner { max-width:1100px; margin:0 auto; }
/* Featured Projects */
.projects-featured { margin-bottom:5rem; }
.projects-featured-title {
font-family:'Cormorant Garamond',serif;
font-size:clamp(1.6rem, 3vw, 2.2rem);
font-weight:600; color:#0B2240; margin-bottom:2.5rem;
font-style:italic;
}
.featured-grid {
display:grid; grid-template-columns:repeat(auto-fit, minmax(360px, 1fr));
gap:2rem; margin-bottom:3rem;
}
.featured-card {
background:#fff;
border:1.5px solid #e0ddd5;
border-radius:10px;
overflow:hidden;
text-decoration:none; color:inherit;
display:flex; flex-direction:column;
transition:box-shadow 0.22s, transform 0.18s;
}
.featured-card:hover {
box-shadow:0 8px 32px rgba(0,0,0,0.09);
transform:translateY(-3px);
}
.featured-header {
height:4px;
background:var(--grad1);
}
.featured-body {
padding:1.2rem; flex:1; display:flex; flex-direction:column; gap:5px;
}
.featured-year {
font-size:0.65rem; font-weight:600; letter-spacing:0.12em;
text-transform:uppercase; color:#bbb;
}
.featured-name {
font-family:'Cormorant Garamond',serif;
font-size:1.35rem; font-weight:600; color:#111; line-height:1.1;
}
.featured-name em {
font-style:italic; color:var(--grad1);
}
.featured-desc {
font-size:0.78rem; color:#888; line-height:1.6; flex:1;
}
.featured-meta {
font-size:0.8rem; color:#999;
display:flex; gap:1rem; flex-wrap:wrap;
}
.featured-cta {
font-size:0.74rem; font-weight:600;
color:var(--grad1); margin-top:0.5rem;
text-decoration:none;
transition:color 0.18s;
}
.featured-card:hover .featured-cta {
color:var(--accent-dark);
opacity:0.8;
}
/* Archive Projects */
.projects-archive-title {
font-size:0.75rem; font-weight:600; letter-spacing:0.18em;
text-transform:uppercase; color:#999; margin-bottom:1.5rem;
padding-bottom:1rem; border-bottom:1px solid #e0ddd5;
}
.archive-grid {
display:grid;
grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));
gap:1.2rem;
}
.archive-card {
background:#fff;
border:1.5px solid #e0ddd5;
border-radius:10px;
overflow:hidden;
text-decoration:none; color:inherit;
display:flex; flex-direction:column;
transition:box-shadow 0.22s, transform 0.18s;
}
.archive-card:hover {
box-shadow:0 8px 32px rgba(0,0,0,0.09);
transform:translateY(-3px);
}
.archive-card-top { height:4px; background:var(--accent); }
.archive-card-body {
padding:1.2rem; flex:1; display:flex;
flex-direction:column; gap:5px;
}
.archive-year {
font-size:0.65rem; font-weight:600; letter-spacing:0.12em;
text-transform:uppercase; color:#bbb;
}
.archive-name {
font-family:'Cormorant Garamond',serif;
font-size:1.35rem; font-weight:600; color:#111; line-height:1.1;
}
.archive-name em { font-style:italic; color:var(--accent); }
.archive-desc {
font-size:0.78rem; color:#888; line-height:1.6; flex:1;
}
.archive-link {
font-size:0.74rem; font-weight:600;
color:var(--accent); margin-top:0.5rem;
transition:color 0.18s;
}
.archive-card:hover .archive-link { color:var(--accent-dark); opacity:0.8; }
/* ══════════ AMEDEO CALLOUT ══════════ */
.amedeo {
background:#0B2240;
padding:4rem;
}
.amedeo-inner {
max-width:1100px; margin:0 auto;
display:flex; align-items:center; gap:4rem;
}
.amedeo-text { flex:1; }
.amedeo-eyebrow {
font-size:0.7rem; font-weight:600; letter-spacing:0.28em; text-transform:uppercase;
color:#FF6B2B; margin-bottom:1rem;
}
.amedeo-headline {
font-family:'Cormorant Garamond',serif;
font-size:clamp(2rem,3.5vw,3rem);
font-weight:600; color:#fff; line-height:1; margin-bottom:0.8rem;
}
.amedeo-headline em { font-style:italic; color:#FF6B2B; }
.amedeo-sub { font-size:0.88rem; color:rgba(255,255,255,0.5); line-height:1.7; max-width:480px; margin-bottom:1.5rem; }
.amedeo-cta {
display:inline-flex; align-items:center; gap:8px;
background:#FF6B2B; color:#fff;
text-decoration:none; padding:12px 24px; border-radius:5px;
font-size:0.88rem; font-weight:600;
transition:background 0.18s;
}
.amedeo-cta:hover { background:#e55a1f; }
.amedeo-stats {
display:flex; flex-direction:column; gap:1.5rem;
border-left:1px solid rgba(255,255,255,0.1);
padding-left:4rem; flex-shrink:0;
}
.amedeo-stat-num {
font-family:'Cormorant Garamond',serif;
font-size:2.8rem; font-weight:700; color:#FF6B2B; line-height:1;
}
.amedeo-stat-label { font-size:0.75rem; color:rgba(255,255,255,0.35); margin-top:2px; }
/* ══════════ ACKNOWLEDGEMENTS ══════════ */
.ack-section { background:#060f1a; color:rgba(255,255,255,0.5); }
.ack-inner { max-width:1100px; margin:0 auto; padding:4rem 4rem; }
.ack-inner h2 { font-family:'Cormorant Garamond',serif; font-size:1.6rem; font-weight:600; color:#fff; margin-bottom:1.5rem; }
.ack-inner h2 em { font-style:italic; color:#E8C448; }
.ack-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:0.4rem 2rem; margin-bottom:2rem; }
.ack-item { font-size:0.8rem; line-height:1.9; }
.ack-item a { color:rgba(255,255,255,0.55); text-decoration:none; }
.ack-item a:hover { color:#E8C448; }
.ack-special { list-style:none; font-size:0.8rem; line-height:1.9; margin-bottom:1.5rem; }
.ack-special a { color:rgba(255,255,255,0.55); text-decoration:none; }
.ack-special a:hover { color:#E8C448; }
/* ══════════ FOOTER ══════════ */
footer {
background:#060f1a; color:rgba(255,255,255,0.28);
text-align:center; padding:1.5rem;
font-size:0.77rem; line-height:2.2;
border-top:1px solid rgba(255,255,255,0.05);
}
footer a { color:rgba(255,255,255,0.38); text-decoration:none; }
footer a:hover { color:#E8C448; }
.sep { margin:0 0.5rem; }
/* ══════════ LESSONS ══════════ */
.lessons-section {
background:#fff;
padding:5rem 4rem;
border-top:1px solid #e8e5dd;
}
.lessons-inner { max-width:1100px; margin:0 auto; }
.lessons-headline {
font-family:'Cormorant Garamond',serif;
font-size:clamp(2rem,4vw,3.2rem);
font-weight:600; color:#0B2240; margin-bottom:0.6rem;
}
.lessons-sub {
font-size:0.9rem; color:#888; line-height:1.7; max-width:520px; margin-bottom:3rem;
}
.lessons-grid {
display:grid;
grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
gap:1.5rem;
}
.lesson-card {
background:#fff;
border:1.5px solid #e0ddd5;
border-radius:10px;
padding:1.8rem;
text-decoration:none;
color:inherit;
display:flex;
flex-direction:column;
gap:0.8rem;
transition:box-shadow 0.22s, transform 0.18s;
}
.lesson-card:hover {
box-shadow:0 8px 32px rgba(0,0,0,0.09);
transform:translateY(-2px);
}
.lesson-num {
font-size:0.65rem; font-weight:600; letter-spacing:0.12em;
text-transform:uppercase; color:#bbb;
}
.lesson-title {
font-family:'Cormorant Garamond',serif;
font-size:1.4rem; font-weight:600; color:#0B2240; line-height:1.15;
}
.lesson-title em {
font-style:italic; color:#E8C448;
}
.lesson-subtitle {
font-size:0.85rem; color:#999; font-weight:500;
}
.lesson-desc {
font-size:0.8rem; color:#777; line-height:1.6; flex:1;
}
.lesson-listen {
font-size:0.75rem; font-weight:600;
color:#0B2240;
text-transform:uppercase;
letter-spacing:0.1em;
margin-top:0.5rem;
transition:color 0.18s;
}
.lesson-card:hover .lesson-listen {
color:#E8C448;
}
/* ══════════ RESPONSIVE ══════════ */
@media (max-width:900px) {
.hero { padding:5rem 1.5rem 3rem; }
.how { padding:3.5rem 1.5rem; }
.steps { grid-template-columns:1fr; border-radius:10px; }
.step { border-right:none; border-bottom:1.5px solid #e0ddd5; }
.step:last-child { border-bottom:none; }
.numbers-inner { grid-template-columns:1fr 1fr; }
.sardinia { grid-template-columns:1fr; padding:3.5rem 1.5rem; gap:2rem; }
.sardinia-svg { display:none; }
.projects-section { padding:3.5rem 1.5rem; }
.featured-grid { grid-template-columns:1fr; }
.amedeo { padding:3rem 1.5rem; }
.amedeo-inner { flex-direction:column; gap:2rem; }
.amedeo-stats { flex-direction:row; border-left:none; padding-left:0; border-top:1px solid rgba(255,255,255,0.1); padding-top:1.5rem; }
.ack-inner { padding:3rem 1.5rem; }
.picker { width:100%; }
.picker-group { min-width:0; flex:1; }
}
@media (max-width:600px) {
.numbers-inner { grid-template-columns:1fr 1fr; }
.picker { flex-direction:column; }
.picker-group { border-right:none; border-bottom:1px solid rgba(255,255,255,0.1); }
.picker-go { padding:1rem; }
.featured-header { height:120px; }
.featured-name { font-size:1.5rem; }
}
/* ── Modal Picker ── */
.picker-button {
background: transparent; border: none; color: #fff;
padding: 0; font-size: 1rem; font-weight: 600;
cursor: pointer; display: flex; align-items: center;
gap: 0.5rem; font-family: 'Outfit', sans-serif; width: 100%;
}
.picker-button:hover { color: rgba(255,255,255,0.85); }
.picker-button svg { margin-left: auto; flex-shrink: 0; }
.modal-overlay {
display: none; position: fixed; inset: 0;
background: rgba(0,0,0,0.55); backdrop-filter: blur(4px); z-index: 2000;
}
.modal-overlay.open { display: block; }
.language-modal {
display: none; position: fixed;
top: 50%; left: 50%; transform: translate(-50%, -50%);
background: #fff; border-radius: 12px;
box-shadow: 0 20px 60px rgba(0,0,0,0.3);
z-index: 2001; width: 90vw; max-width: 640px; max-height: 85vh;
}
.language-modal.open {
display: block;
animation: modalIn 0.25s cubic-bezier(0.4,0,0.2,1);
}
@keyframes modalIn {
from { opacity: 0; transform: translate(-50%, -44%); }
to { opacity: 1; transform: translate(-50%, -50%); }
}
.modal-header {
display: flex; justify-content: space-between; align-items: center;
padding: 1.25rem 1.5rem; border-bottom: 1px solid #eee;
}
.modal-header h3 {
font-family: 'Cormorant Garamond', serif;
font-size: 1.15rem; font-weight: 600; color: #0B2240; margin: 0;
}
.modal-close {
background: none; border: none; font-size: 1.8rem; line-height: 1;
color: #aaa; cursor: pointer; padding: 0; transition: color 0.2s;
}
.modal-close:hover { color: #0B2240; }
.modal-body { overflow-y: auto; max-height: calc(85vh - 70px); padding: 1.25rem; }
.modal-grid {
display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 0.6rem;
}
.modal-option {
background: #f7f7f7; border: 1.5px solid #e5e5e5; border-radius: 8px;
padding: 0.75rem 0.5rem; font-size: 0.88rem; font-weight: 500; color: #0B2240;
cursor: pointer; font-family: 'Outfit', sans-serif; text-align: center;
transition: all 0.18s;
}
.modal-option:hover {
background: #fff; border-color: #0B2240;
box-shadow: 0 3px 10px rgba(11,34,64,0.1); transform: translateY(-1px);
}
.modal-option.selected { background: #E8C448; border-color: #E8C448; }
/* ── Ecosystem line (hero) ── */
.hero-ecosystem { font-size:0.78rem; color:rgba(255,255,255,0.38); margin:0.4rem 0 1.8rem; letter-spacing:0.02em; }
.hero-ecosystem a { color:rgba(255,255,255,0.5); text-decoration:none; transition:color 0.15s; }
.hero-ecosystem a:hover { color:#E8C448; }
/* ── Nav projects link ── */
.nav-projects { color:rgba(255,255,255,0.55); text-decoration:none; font-size:0.82rem; font-weight:500; margin-right:1.2rem; transition:color 0.15s; letter-spacing:0.02em; }
.nav-projects:hover { color:#E8C448; }
</style>
</head>
<body>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
_paq.push(['disableCookies']); _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']);
(function() {
var u="https://aiopop.com/matnogo/";
_paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '3']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- ══ NAV ══ -->
<nav class="nav">
<a class="nav-logo" href="/"><span>aio</span>Pop</a>
<div class="nav-spacer"></div>
<a class="nav-projects" href="#projects">Projects</a>
<div class="aio-lang-wrap">
<button class="aio-lang-btn" id="aio-lang-btn" aria-haspopup="listbox">EN</button>
<div class="aio-lang-panel" id="aio-lang-panel" role="listbox">
<div class="aio-lang-list" id="aio-lang-list"></div>
</div>
</div>
</nav>
<!-- ══ HERO ══ -->
<header class="hero">
<div class="hero-ghost">Powerplay</div>
<svg class="hero-sardinia" viewBox="395 0 575 1075" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<g fill="none">
<path d="M 775 32 L 742 38 L 750 72 L 733 85 L 699 89 L 670 126 L 649 136 L 651 146 L 627 176 L 589 182 L 549 218 L 514 224 L 501 214 L 469 213 L 441 189 L 431 157 L 446 150 L 442 131 L 451 119 L 475 116 L 468 88 L 450 97 L 454 109 L 432 128 L 417 172 L 432 198 L 402 262 L 426 284 L 404 314 L 413 338 L 424 314 L 425 335 L 455 324 L 469 363 L 483 370 L 492 400 L 485 433 L 507 440 L 518 457 L 509 512 L 520 535 L 511 552 L 481 561 L 494 571 L 489 621 L 503 639 L 512 622 L 527 620 L 543 641 L 524 701 L 510 679 L 503 683 L 511 752 L 485 801 L 493 821 L 479 843 L 499 875 L 475 907 L 490 922 L 495 951 L 502 946 L 513 959 L 510 974 L 540 982 L 538 1003 L 556 1022 L 552 1047 L 563 1049 L 564 1062 L 571 1043 L 590 1031 L 615 1052 L 638 1055 L 689 1011 L 698 978 L 686 950 L 715 914 L 739 928 L 755 907 L 786 913 L 832 952 L 853 946 L 868 970 L 862 957 L 881 942 L 885 885 L 906 864 L 893 839 L 909 797 L 903 774 L 925 631 L 920 612 L 931 602 L 920 584 L 936 536 L 914 517 L 898 476 L 918 430 L 947 404 L 966 345 L 941 316 L 939 281 L 912 235 L 930 212 L 900 197 L 901 178 L 886 186 L 875 180 L 892 145 L 902 153 L 910 147 L 892 135 L 876 142 L 876 129 L 861 138 L 879 92 L 862 77 L 845 84 L 841 97 L 833 66 L 812 56 L 790 62 L 793 50 Z"/>
<path d="M 470 951 L 468 953 L 469 961 L 466 966 L 466 974 L 471 991 L 473 993 L 473 997 L 477 1001 L 477 1003 L 483 1014 L 484 1020 L 486 1022 L 491 1019 L 496 1021 L 498 1012 L 502 1008 L 502 1005 L 500 1002 L 501 993 L 504 984 L 508 980 L 509 976 L 505 972 L 505 970 L 502 967 L 501 962 L 499 960 L 493 957 L 485 955 L 476 957 L 475 952 Z"/>
<path d="M 828 33 L 827 34 L 828 39 L 826 41 L 821 40 L 820 42 L 821 45 L 819 49 L 820 52 L 819 55 L 823 58 L 832 57 L 836 60 L 839 57 L 840 58 L 839 62 L 840 64 L 845 65 L 844 69 L 845 70 L 850 69 L 851 68 L 850 65 L 851 57 L 853 55 L 853 51 L 850 46 L 850 42 L 848 40 L 846 41 L 846 44 L 842 50 L 843 53 L 841 55 L 839 53 L 840 41 L 838 39 L 838 35 L 836 33 L 833 34 Z"/>
</g>
</svg>
<div class="hero-inner">
<p class="hero-eyebrow" id="aio-eyebrow">aiopop.com — A European language project since 2022</p>
<h1 class="hero-headline">
<span id="aio-line1">Sounds too good</span><br><span id="aio-line2">to be true.</span><br><em id="aio-line3">It isn't.</em>
</h1>
<p class="hero-languages" id="aio-languages">
English · Spanish · French · Italian · Portuguese · Chinese
</p>
<p style="margin: 1.5rem 0; font-size: 1rem; color: rgba(255,255,255,0.8); font-style: italic;">
Free forever. No registration. No cookies.
</p>
<p class="hero-ecosystem">Also on aioPop: <a href="https://sardinian.aiopop.com" target="_blank">GigaSardinian</a> · <a href="https://amedeochinese.com" target="_blank">Amedeo Chinese</a> · <a href="https://4elisa.aiopop.com" target="_blank">Italian with Elisa</a> · <a href="https://gigafrench.aiopop.com" target="_blank">GigaFrench</a></p>
<div class="picker" id="picker">
<div class="picker-group">
<span class="picker-group-label" id="aio-picker-learn-label">I want to learn</span>
<button class="picker-button" id="learnButton" onclick="openModal('learnModal')">
<span id="learnButtonText">English</span>
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"/></svg>
</button>
</div>
<div class="picker-group">
<span class="picker-group-label" id="aio-picker-read-label">I read along in</span>
<button class="picker-button" id="readButton" onclick="openModal('readModal')">
<span id="readButtonText">Spanish</span>
<svg width="11" height="11" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"/></svg>
</button>
</div>
<a class="picker-go" id="pickerGo" href="#" target="_blank" onclick="sessionStorage.setItem('aiopop-from-homepage','1')">
<svg width="15" height="15" viewBox="0 0 24 24" fill="currentColor"><polygon points="5 3 19 12 5 21 5 3"/></svg>
<span id="aio-picker-start-btn">Start now</span>
</a>
</div>
<!-- Modal Overlay -->
<div class="modal-overlay" id="modalOverlay" onclick="closeAllModals()"></div>
<!-- Learn Modal -->
<div class="language-modal" id="learnModal">
<div class="modal-header">
<h3>Choose a language to learn</h3>
<button class="modal-close" onclick="closeAllModals()">×</button>
</div>
<div class="modal-body">
<div class="modal-grid">
<button class="modal-option" onclick="selectLearn('cn','Chinese')">🇨🇳 Chinese</button>
<button class="modal-option" onclick="selectLearn('en','English')">🇬🇧 English</button>
<button class="modal-option" onclick="selectLearn('fr','French')">🇫🇷 French</button>
<button class="modal-option" onclick="selectLearn('it','Italian')">🇮🇹 Italian</button>
<button class="modal-option" onclick="selectLearn('pt','Portuguese')">🇵🇹 Portuguese</button>
<button class="modal-option" onclick="selectLearn('es','Spanish')">🇪🇸 Spanish</button>
</div>
</div>
</div>
<!-- Read Modal -->
<div class="language-modal" id="readModal">
<div class="modal-header">
<h3>Choose a language to read along in</h3>
<button class="modal-close" onclick="closeAllModals()">×</button>
</div>
<div class="modal-body">
<div class="modal-grid">
<button class="modal-option" onclick="selectRead('ar','Arabic')">🇸🇦 Arabic</button>
<button class="modal-option" onclick="selectRead('bn','Bengali')">🇧🇩 Bengali</button>
<button class="modal-option" onclick="selectRead('zh','Chinese')">🇨🇳 Chinese</button>
<button class="modal-option" onclick="selectRead('hr','Croatian')">🇭🇷 Croatian</button>
<button class="modal-option" onclick="selectRead('cs','Czech')">🇨🇿 Czech</button>
<button class="modal-option" onclick="selectRead('da','Danish')">🇩🇰 Danish</button>
<button class="modal-option" onclick="selectRead('nl','Dutch')">🇳🇱 Dutch</button>
<button class="modal-option" onclick="selectRead('en','English')">🇬🇧 English</button>
<button class="modal-option" onclick="selectRead('fi','Finnish')">🇫🇮 Finnish</button>
<button class="modal-option" onclick="selectRead('fr','French')">🇫🇷 French</button>
<button class="modal-option" onclick="selectRead('de','German')">🇩🇪 German</button>
<button class="modal-option" onclick="selectRead('el','Greek')">🇬🇷 Greek</button>
<button class="modal-option" onclick="selectRead('he','Hebrew')">🇮🇱 Hebrew</button>
<button class="modal-option" onclick="selectRead('hi','Hindi')">🇮🇳 Hindi</button>
<button class="modal-option" onclick="selectRead('hu','Hungarian')">🇭🇺 Hungarian</button>
<button class="modal-option" onclick="selectRead('id','Indonesian')">🇮🇩 Indonesian</button>
<button class="modal-option" onclick="selectRead('it','Italian')">🇮🇹 Italian</button>
<button class="modal-option" onclick="selectRead('ja','Japanese')">🇯🇵 Japanese</button>
<button class="modal-option" onclick="selectRead('ko','Korean')">🇰🇷 Korean</button>
<button class="modal-option" onclick="selectRead('nb','Norwegian')">🇳🇴 Norwegian</button>
<button class="modal-option" onclick="selectRead('fa','Persian')">🇮🇷 Persian</button>
<button class="modal-option" onclick="selectRead('pl','Polish')">🇵🇱 Polish</button>
<button class="modal-option" onclick="selectRead('pt','Portuguese')">🇵🇹 Portuguese</button>
<button class="modal-option" onclick="selectRead('ro','Romanian')">🇷🇴 Romanian</button>
<button class="modal-option" onclick="selectRead('ru','Russian')">🇷🇺 Russian</button>
<button class="modal-option" onclick="selectRead('sr','Serbian')">🇷🇸 Serbian</button>
<button class="modal-option" onclick="selectRead('sk','Slovak')">🇸🇰 Slovak</button>
<button class="modal-option" onclick="selectRead('es','Spanish')">🇪🇸 Spanish</button>
<button class="modal-option" onclick="selectRead('sv','Swedish')">🇸🇪 Swedish</button>
<button class="modal-option" onclick="selectRead('th','Thai')">🇹🇭 Thai</button>
<button class="modal-option" onclick="selectRead('tr','Turkish')">🇹🇷 Turkish</button>
<button class="modal-option" onclick="selectRead('uk','Ukrainian')">🇺🇦 Ukrainian</button>
<button class="modal-option" onclick="selectRead('vi','Vietnamese')">🇻🇳 Vietnamese</button>
</div>
</div>
</div>
<p class="hero-since">By Patricia Bourcillier and Bernd Sebastian Kamps · 200+ contributors worldwide</p>
</div>
</header>
<!-- ══ HOW IT WORKS ══ -->
<section class="how" id="how">
<div class="how-inner">
<p class="section-eyebrow" id="aio-how-eyebrow">The Powerplay method</p>
<h2 class="how-headline" id="aio-how-headline">Three steps. No grammar drills. No tests.</h2>
<p class="how-sub" id="aio-how-sub">The whole method fits in a sentence: listen, repeat aloud, listen again. Your brain does the rest — automatically, at your own pace.</p>
<div class="steps">
<div class="step">
<div class="step-num">1</div>
<div class="step-title" id="aio-how-step1-title">Audio plays</div>
<div class="step-desc" id="aio-how-step1-desc">A sentence plays in the language you want to learn. You read along in your own language. <em>No rushing.</em></div>
</div>
<div class="step">
<div class="step-num">2</div>
<div class="step-title" id="aio-how-step2-title">Silence. Your turn.</div>
<div class="step-desc" id="aio-how-step2-desc">The audio pauses. You repeat the sentence aloud. As many times as you want. <em>No one is listening. No one is judging.</em></div>
</div>
<div class="step">
<div class="step-num">3</div>
<div class="step-title" id="aio-how-step3-title">Audio plays again</div>
<div class="step-desc" id="aio-how-step3-desc">The sentence plays once more. You compare what you said to what you hear. <em>That gap is where language enters your brain.</em></div>
</div>
</div>
<p class="how-note" id="aio-how-quote">
"The Powerplay method is brutally simple: the audio plays, waits — you repeat the sentence aloud — then it plays again. Automatically. At your speed. As many times as it takes."
</p>
</div>
</section>
<!-- ══ NUMBERS ══ -->
<div class="numbers">
<div class="numbers-inner">
<div class="number-item">
<div class="number-big">6</div>
<div class="number-label" id="aio-num1-label">Languages to learn</div>
<div class="number-since" id="aio-num1-sub">English · Spanish · French · Italian · Portuguese · Chinese</div>
</div>
<div class="number-item">
<div class="number-big">20</div>
<div class="number-label" id="aio-num2-label">Episodes per language</div>
<div class="number-since" id="aio-num2-sub">All set in Sardinia</div>
</div>
<div class="number-item">
<div class="number-big">30</div>
<div class="number-label" id="aio-num3-label">Translation languages</div>
<div class="number-since" id="aio-num3-sub">Read along in your own language</div>
</div>
<div class="number-item">
<div class="number-big">30+</div>
<div class="number-label" id="aio-num4-label">Free PDFs</div>
<div class="number-since" id="aio-num4-sub">No email · No registration</div>
</div>
<div class="number-item">
<div class="number-big">∞</div>
<div class="number-label" id="aio-num5-label">Always free</div>
<div class="number-since" id="aio-num5-sub">No account · No ads · Since 2022</div>
</div>
</div>
</div>
<!-- ══ LESSONS ══ -->
<section class="lessons-section" id="lessons">
<div class="lessons-inner">
<h2 class="lessons-headline" id="aio-lessons-headline">Twenty episodes.</h2>
<p class="lessons-sub" id="aio-lessons-sub">One coherent story. Real characters. Real conversations. This is what you'll experience in aioPop.</p>
<div class="lessons-grid" id="lessonsGrid"></div>
</div>
</section>
<!-- ══ SARDINIA STORY ══ -->
<section>
<div class="sardinia">
<div class="sardinia-text">
<p class="section-eyebrow" id="aio-sardinia-eyebrow">The setting</p>
<h2 class="sardinia-headline" id="aio-sardinia-headline">One island.<br><em>Six languages.</em></h2>
<p class="sardinia-body" id="aio-sardinia-body1">
aioPop takes place in Sardinia. Leonardo wakes up in Cagliari, where his grandfather points out a quarantined boat off the port carrying an Ebola patient. Then his phone rings — it's his girlfriend, and things between them are complicated.
</p>
<p class="sardinia-body" id="aio-sardinia-body2">
Twenty episodes, a coherent story, a defined cast of characters who reappear throughout. The same story — the same characters, the same world — told in six languages.
</p>
</div>
<svg class="sardinia-svg" viewBox="395 0 575 1075" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" style="width:100%; max-width:320px; margin:0 auto; display:block;">
<g fill="none">
<path d="M 775 32 L 742 38 L 750 72 L 733 85 L 699 89 L 670 126 L 649 136 L 651 146 L 627 176 L 589 182 L 549 218 L 514 224 L 501 214 L 469 213 L 441 189 L 431 157 L 446 150 L 442 131 L 451 119 L 475 116 L 468 88 L 450 97 L 454 109 L 432 128 L 417 172 L 432 198 L 402 262 L 426 284 L 404 314 L 413 338 L 424 314 L 425 335 L 455 324 L 469 363 L 483 370 L 492 400 L 485 433 L 507 440 L 518 457 L 509 512 L 520 535 L 511 552 L 481 561 L 494 571 L 489 621 L 503 639 L 512 622 L 527 620 L 543 641 L 524 701 L 510 679 L 503 683 L 511 752 L 485 801 L 493 821 L 479 843 L 499 875 L 475 907 L 490 922 L 495 951 L 502 946 L 513 959 L 510 974 L 540 982 L 538 1003 L 556 1022 L 552 1047 L 563 1049 L 564 1062 L 571 1043 L 590 1031 L 615 1052 L 638 1055 L 689 1011 L 698 978 L 686 950 L 715 914 L 739 928 L 755 907 L 786 913 L 832 952 L 853 946 L 868 970 L 862 957 L 881 942 L 885 885 L 906 864 L 893 839 L 909 797 L 903 774 L 925 631 L 920 612 L 931 602 L 920 584 L 936 536 L 914 517 L 898 476 L 918 430 L 947 404 L 966 345 L 941 316 L 939 281 L 912 235 L 930 212 L 900 197 L 901 178 L 886 186 L 875 180 L 892 145 L 902 153 L 910 147 L 892 135 L 876 142 L 876 129 L 861 138 L 879 92 L 862 77 L 845 84 L 841 97 L 833 66 L 812 56 L 790 62 L 793 50 Z"/>
</g>
</svg>
</div>
</section>
<!-- ══ SPECIAL PROJECTS ══ -->
<section class="projects-section" id="projects">
<div class="projects-inner">
<p class="section-eyebrow" id="aio-projects-eyebrow">Special projects</p>
<h2 class="how-headline" id="aio-projects-headline">Our other courses</h2>
<!-- Featured Projects -->
<div class="projects-featured">
<h3 class="projects-featured-title" id="aio-projects-featured">Featured editions</h3>
<div class="featured-grid" id="featuredGrid"></div>
</div>
<!-- Living Voices -->
<div class="projects-archive">
<h4 class="projects-archive-title" id="aio-projects-voices">Living Voices</h4>
<p style="font-size:0.95rem; color:#555; margin-bottom:1.5rem; max-width:700px; line-height:1.7;" id="aio-projects-voices-desc">
Sardinian and Martinique Creole are magnificent languages—rich with history, culture, and beauty.
They deserve to be heard, learned, and celebrated. Here's where you can discover them.
</p>
<div class="archive-grid" id="voicesGrid"></div>
</div>
<!-- Archive -->
<div class="projects-archive" style="margin-top:4rem; padding-top:3rem; border-top:1px solid #e8e5dd;">
<h4 class="projects-archive-title" id="aio-projects-archive">From the archive</h4>
<p style="font-size:0.88rem; color:#999; margin-bottom:1.5rem; max-width:700px; line-height:1.6;" id="aio-projects-archive-desc">
A legendary course that shaped language learning. Preserved and offered freely online.
</p>
<div class="archive-grid" id="archiveGrid" style="max-width:320px;"></div>
</div>
</div>
</section>
<!-- ══ AMEDEO CHINESE ══ -->
<section class="amedeo" id="amedeo">
<div class="amedeo-inner">
<div class="amedeo-text">
<p class="amedeo-eyebrow" id="aio-amedeo-eyebrow">Full learning platform · HSK 1</p>
<h2 class="amedeo-headline" id="aio-amedeo-headline">Amedeo <em>Chinese</em></h2>
<p class="amedeo-sub" id="aio-amedeo-sub">Powerplay plus: vocabulary games, grammar notes, exercises, spaced repetition, and a Megaloop drill — for anyone who wants a rigorous, complete introduction to Mandarin. Available in 21 languages.</p>
<a class="amedeo-cta" href="https://amedeochinese.com" target="_blank" id="aio-amedeo-cta">
<svg width="13" height="13" viewBox="0 0 24 24" fill="currentColor"><polygon points="5 3 19 12 5 21 5 3"/></svg>
Open Amedeo Chinese
</a>
</div>
<div class="amedeo-stats">
<div>
<div class="amedeo-stat-num">21</div>
<div class="amedeo-stat-label" id="aio-amedeo-stat1">interface languages</div>
</div>
<div>
<div class="amedeo-stat-num">7</div>
<div class="amedeo-stat-label" id="aio-amedeo-stat2">study modes</div>
</div>
<div>
<div class="amedeo-stat-num">∞</div>
<div class="amedeo-stat-label" id="aio-amedeo-stat3">always free</div>
</div>
</div>
</div>
</section>
<!-- ══ ACKNOWLEDGEMENTS ══ -->
<div class="ack-section">
<div class="ack-inner">
<h2 id="aio-ack-title">Acknowledgements — <em>200+ contributors</em></h2>
<p style="font-size:0.82rem;margin-bottom:1.5rem;color:rgba(255,255,255,0.38)" id="aio-ack-sub">Among the more than 200 people who collaborated in this project, we are particularly indebted to:</p>
<ul class="ack-special">
<li class="ack-item">STK — App programming</li>
<li class="ack-item"><a href="http://baghino.com/" target="_blank">Attilio Baghino</a> — Designer</li>
<li class="ack-item"><a href="https://www.linkedin.com/in/rob-camp-1a444817/" target="_blank">Rob Camp</a> — Associate Editor</li>
<li class="ack-item"><a href="https://www.jeandidieraissy.com/en/" target="_blank">Jean-Didier Aïssy</a> — Project Manager Multilangue</li>
<li class="ack-item"><a href="https://www.logosound.it/en-gb/home" target="_blank">Logosound</a> — Sound Consulting</li>
</ul>
<div class="ack-grid">
<div class="ack-item"><a href="https://www.bodalgo.com/it/speaker/andrea-melis" target="_blank">Andrea Melis</a> — Ukrainian–Italian Edition</div>
<div class="ack-item">Betti Batalla — Spanish Edition</div>
<div class="ack-item">Daniel Francis-Berenson — English Edition</div>
<div class="ack-item">Dermot Arrigan — English Edition</div>
<div class="ack-item">Elisa Cadinu — Italian Edition</div>
<div class="ack-item">Faye Hadley Espero — English Edition</div>
<div class="ack-item">Françoise Bourcillier — French Edition</div>
<div class="ack-item">Gerolamo Cuomo — Italian Edition</div>
<div class="ack-item">Giulia Deiana — Italian Edition</div>
<div class="ack-item">Inês Morais — Portuguese Edition</div>
<div class="ack-item">Jasper Kamradt — German Edition</div>
<div class="ack-item">Julie Nash — English Edition</div>
<div class="ack-item">Maxie Sinner — German Edition</div>
<div class="ack-item">Siegfried März — Web Security</div>
<div class="ack-item">王珊珊 / Shanshan Wang — Chinese Edition</div>
</div>
</div>
</div>
<footer>
<p>© 2022–<span id="yr"></span> aioPop / aioLingua —
<a href="http://aiopop.com">aiopop.com</a> ·
<a href="https://aiolingua.com">aiolingua.com</a></p>
<p id="aio-footer-credits">By Patricia Bourcillier and Bernd Sebastian Kamps</p>
<p>
<a href="/learn-english-free/">Learn English free</a>
<span class="sep">·</span>
<a href="/zh/learn-english-free/" lang="zh-CN">中文:免费在线学英语</a>
<span class="sep">·</span>
<a href="/learn-spanish-free/">Learn Spanish free</a>
<span class="sep">·</span>
<a href="/learn-french-free/">Learn French free</a>
<span class="sep">·</span>
<a href="/learn-italian-free/">Learn Italian free</a>
<span class="sep">·</span>
<a href="/learn-portuguese-free/">Learn Portuguese free</a>
<span class="sep">·</span>
<a href="/learn-chinese-free/">Learn Chinese free</a>
</p>
<p>
<a href="https://amedeo.com/privacy.html" id="aio-footer-privacy">Privacy</a>
<span class="sep">|</span>
<a href="https://amedeo.com/impressum.html" id="aio-footer-imprint">Imprint</a>
</p>
</footer>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- ═══════ INVISIBLE SEO: Schema Markup Only ═══════ -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- Organization Schema (for Knowledge Graph) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "aioPop",
"url": "https://aiopop.com",
"logo": "https://aiopop.com/img/aiopop-logo.png",
"description": "Free language learning platform. Learn 6 languages through one coherent story set in Sardinia. No app, no account, no payment.",
"sameAs": [
"https://www.facebook.com/aiopop",
"https://twitter.com/aiopop",
"https://www.linkedin.com/company/aiopop"
],
"founder": [
{ "@type": "Person", "name": "Patricia Bourcillier" },
{ "@type": "Person", "name": "Bernd Sebastian Kamps" }
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "Customer Support",
"url": "https://aiopop.com"
}
}
</script>
<!-- FAQ Schema (Rich Snippets in Search Results) -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Is aioPop really completely free?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, aioPop is 100% free forever. No app required, no account needed, no payment ever. All lessons, PDFs, and translations are completely free."
}
},
{
"@type": "Question",
"name": "What languages can I learn on aioPop?",
"acceptedAnswer": {
"@type": "Answer",
"text": "You can learn English, Spanish, French, Italian, Portuguese, or Chinese. Each language has 20 episodes of the same story set in Sardinia."
}
},
{
"@type": "Question",
"name": "How many languages can I read along in?",
"acceptedAnswer": {
"@type": "Answer",
"text": "You can read along in 30+ languages including English, Spanish, French, Italian, Portuguese, German, Russian, Japanese, Arabic, Chinese, and many more."
}
},
{
"@type": "Question",
"name": "Do I need an app to use aioPop?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No, aioPop works in your web browser on any phone, tablet, or computer. No app download needed."
}
},
{
"@type": "Question",
"name": "What is the Powerplay method?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Powerplay is simple: Audio plays → you repeat aloud → audio plays again. That's it. No grammar drills, no tests, just natural language learning."
}
}
]
}
</script>
<script>
// Year
document.getElementById('yr').textContent = new Date().getFullYear();
// Modal language picker
var _learn = 'en', _read = 'es';
// ── Code mapping: homepage modal ↔ player URL params ──────────────────────
// Some codes differ (zh↔CN, nb↔NO). Codes not in the homepage read modal
// (BG, ET, LV, LT, SL, BR, PY) fall back to the current _read value.
function toPlayerLang(code) {
var map = { zh: 'CN', nb: 'NO' };
return (map[code] || code).toUpperCase();
}
var PLAYER_TO_READ = {
CN: 'zh', NO: 'nb',
PY: null, BG: null, ET: null, LV: null, LT: null, SL: null, BR: null
};
var READ_LABELS = {
ar:'Arabic', bn:'Bengali', zh:'Chinese', cs:'Czech', da:'Danish',
nl:'Dutch', en:'English', fi:'Finnish', fr:'French', de:'German',
el:'Greek', he:'Hebrew', hi:'Hindi', hr:'Croatian', hu:'Hungarian',
id:'Indonesian', it:'Italian', ja:'Japanese', ko:'Korean', nb:'Norwegian',
fa:'Persian', pl:'Polish', pt:'Portuguese', ro:'Romanian', ru:'Russian',
sr:'Serbian', sk:'Slovak', es:'Spanish', sv:'Swedish', th:'Thai',
tr:'Turkish', uk:'Ukrainian', vi:'Vietnamese'
};
var LEARN_LABELS = {
cn:'Chinese', en:'English', fr:'French',
it:'Italian', pt:'Portuguese', es:'Spanish'
};
// ── Core picker URL ────────────────────────────────────────────────────────
function updatePickerUrl() {
document.getElementById('pickerGo').href =
'https://aiopop.com/player/?source=' + _learn.toUpperCase() +
'&lang=' + toPlayerLang(_read) + '&lesson=1';
}
// ── Lesson card links — kept in sync with picker at all times ─────────────
function updateLessonCardLinks() {
var links = document.querySelectorAll('a.lesson-listen');
for (var i = 0; i < links.length; i++) {
var m = (links[i].getAttribute('href') || '').match(/lesson=(\d+)/);
var n = m ? m[1] : String(i + 1);
links[i].href =
'https://aiopop.com/player/?source=' + _learn.toUpperCase() +
'&lang=' + toPlayerLang(_read) + '&lesson=' + n;
// Tell the player this was a deliberate click, suppress tap-to-start overlay
links[i].setAttribute('onclick', 'sessionStorage.setItem("aiopop-from-homepage","1")');
}
}
// ── Modal controls ────────────────────────────────────────────────────────
function openModal(id) {
document.getElementById('modalOverlay').classList.add('open');
document.getElementById(id).classList.add('open');
}
function closeAllModals() {
document.getElementById('modalOverlay').classList.remove('open');
document.getElementById('learnModal').classList.remove('open');
document.getElementById('readModal').classList.remove('open');
}
function selectLearn(code, label) {
_learn = code;
document.getElementById('learnButtonText').textContent = label;
closeAllModals();
updatePickerUrl();
updateLessonCardLinks();
}
function selectRead(code, label) {
_read = code;
document.getElementById('readButtonText').textContent = label;
closeAllModals();
updatePickerUrl();
updateLessonCardLinks();
}
// ── Restore player's last-used languages from localStorage ────────────────
(function() {
var savedSource = localStorage.getItem('ap-source-lang');
var savedLang = localStorage.getItem('ap-translation-lang');
if (savedSource) {
var lc = savedSource.toLowerCase();
if (LEARN_LABELS[lc]) {
_learn = lc;
document.getElementById('learnButtonText').textContent = LEARN_LABELS[lc];
}
}
if (savedLang) {
var upper = savedLang.toUpperCase();
var readCode;
if (Object.prototype.hasOwnProperty.call(PLAYER_TO_READ, upper)) {
readCode = PLAYER_TO_READ[upper]; // null = unsupported in homepage, keep default
} else {
readCode = savedLang.toLowerCase();
}
if (readCode && READ_LABELS[readCode]) {
_read = readCode;
document.getElementById('readButtonText').textContent = READ_LABELS[readCode];
}
}
updatePickerUrl();
})();
// All course and lesson data is now in aiopop-i18n.js and rendered by applang.js
</script>
<script src="aiopop-i18n.js"></script>
<script src="aiopop-applang.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function() {
// Runs AFTER applang's DOMContentLoaded (registered first), so grid is fully populated
var grid = document.getElementById('lessonsGrid');
if (!grid) return;
// Inject GigaSardinian discovery card after lesson 4
var card = document.createElement('div');
card.style.cssText = [
'background:linear-gradient(135deg,#0B2240 0%,#163660 100%)',
'border:1.5px solid rgba(232,196,72,0.25)',
'border-radius:10px',
'padding:1.8rem',
'display:flex',
'flex-direction:column',
'gap:0.8rem'
].join(';');
card.innerHTML =
'<div style="font-size:0.65rem;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;color:rgba(232,196,72,0.65);">Also on aioPop</div>' +
'<div style="font-family:\'Cormorant Garamond\',serif;font-size:1.4rem;font-weight:600;color:#fff;line-height:1.15;">GigaSardinian</div>' +
'<div style="font-size:0.8rem;color:rgba(255,255,255,0.55);line-height:1.6;flex:1;">14 lessons in authentic Sardinian — one of Europe\'s most beautiful minority languages. Read along in 40 languages. Free, as always.</div>' +
'<a href="https://sardinian.aiopop.com" target="_blank" style="font-size:0.75rem;font-weight:600;color:#E8C448;text-transform:uppercase;letter-spacing:0.1em;text-decoration:none;margin-top:0.5rem;">Discover GigaSardinian →</a>';
var children = grid.children;
if (children.length >= 4) {
grid.insertBefore(card, children[4]);
} else {
grid.appendChild(card);
}
// Now all 20 lesson cards exist — rewrite their links with correct language/translation
if (typeof updateLessonCardLinks === 'function') updateLessonCardLinks();
// Watch for future rebuilds (e.g. system language change calls renderLessons())
// and immediately reapply correct source/lang to all card links
var observer = new MutationObserver(function() {
if (typeof updateLessonCardLinks === 'function') updateLessonCardLinks();
});
observer.observe(grid, { childList: true });
});
</script>
</body>
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 9
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 9 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
Показать внутренние ссылки
| Url | Анкор | Состояние | Анализировать |
|---|---|---|---|
| / |
<span>aio</span>Pop
|
|
Анализировать url |
|
aiolingua.com
|
|
Анализировать url | |
| /learn-english-free/ |
Learn English free
|
|
Анализировать url |
| /zh/learn-english-free/ |
中文:免费在线学英语
|
|
Анализировать url |
| /learn-spanish-free/ |
Learn Spanish free
|
|
Анализировать url |
| /learn-french-free/ |
Learn French free
|
|
Анализировать url |
| /learn-italian-free/ |
Learn Italian free
|
|
Анализировать url |
| /learn-portuguese-free/ |
Learn Portuguese free
|
|
Анализировать url |
| /learn-chinese-free/ |
Learn Chinese free
|
|
Анализировать url |
Внешние ссылки
Кол-во: 13
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 13 слишком много. Спрячьте лишние ссылки в тег noindex или атрибут rel='nofollow'!
Показать внешние ссылки
| Url | Анкор | Анализировать |
|---|---|---|
| sardinian.aiopop.com |
GigaSardinian
|
Анализировать url |
| amedeochinese.com |
Amedeo Chinese
|
Анализировать url |
| 4elisa.aiopop.com |
Italian with Elisa
|
Анализировать url |
| gigafrench.aiopop.com |
GigaFrench
|
Анализировать url |
| amedeochinese.com |
<svg width="13" height="13" viewbox="0 0 24 24" fill="currentColor"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
Open Amedeo Chinese
|
Анализировать url |
| baghino.com |
Attilio Baghino
|
Анализировать url |
| linkedin.com |
Rob Camp
|
Анализировать url |
| jeandidieraissy.com |
Jean-Didier Aïssy
|
Анализировать url |
| logosound.it |
Logosound
|
Анализировать url |
| bodalgo.com |
Andrea Melis
|
Анализировать url |
| aiopop.com |
aiopop.com
|
Анализировать url |
| amedeo.com |
Privacy
|
Анализировать url |
| amedeo.com |
Imprint
|
Анализировать url |
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Анализ сайта aiolingua.com, слабо оптимизирован на 61%. Для хорошей оптимизации и выхода на первые места в поиске требуется:
Исправьте ошибки в мета-тегах.
Исправьте ошибки индексации.
Поделитесь с друзьями: