diff --git a/index.html b/index.html
index 2e4826e..1cf4c41 100644
--- a/index.html
+++ b/index.html
@@ -227,6 +227,22 @@ body {
direction: ltr; text-align: center; font-family: 'Inter', sans-serif;
}
+.audio-btn-sm {
+ width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--border);
+ background: var(--bg-card); cursor: pointer; display: inline-flex; align-items: center;
+ justify-content: center; font-size: 16px; transition: all 0.2s;
+}
+.audio-btn-sm:hover { background: var(--quran-gold); border-color: var(--quran-gold); color: #fff; transform: scale(1.1); }
+
+.learn-btn {
+ padding: 8px 16px; border-radius: 8px; border: 1px solid var(--border);
+ background: var(--bg-card); cursor: pointer; font-size: 12px; font-weight: 600;
+ color: var(--text-secondary); transition: all 0.2s; margin-left: auto; white-space: nowrap;
+}
+.learn-btn:hover { background: var(--quran-green); border-color: var(--quran-green); color: #fff; }
+
+.letter-card:hover .letter-big { color: var(--quran-gold); }
+
.ayat-example {
background: var(--bg); border-radius: 16px; padding: 32px;
border: 2px solid var(--quran-gold); margin: 24px 0; text-align: center;
@@ -682,6 +698,10 @@ body {
+
+
+
Нажмите на букву или 🔊 чтобы услышать произношение
+
@@ -1218,10 +1238,13 @@ function renderAlphabet() {
const grid = document.getElementById('alphabetGrid');
const p = getProgress();
grid.innerHTML = alphabetData.map((l, i) => `
-
-
${l.letter}
+
+
${l.letter}
-
${l.name}
+
[${l.transcription}]
${l.description}
@@ -1230,10 +1253,65 @@ function renderAlphabet() {
${l.positions.final}конец
+
`).join('');
}
+function speakLetter(idx) {
+ const letter = alphabetData[idx].letter;
+ if ('speechSynthesis' in window) {
+ window.speechSynthesis.cancel();
+ const utterance = new SpeechSynthesisUtterance(letter);
+ utterance.lang = 'ar-SA';
+ utterance.rate = 0.5;
+ utterance.pitch = 1;
+ window.speechSynthesis.speak(utterance);
+ }
+ showToast('Произношение: ' + alphabetData[idx].name, 'info');
+}
+
+function playAllLetters() {
+ if (!('speechSynthesis' in window)) {
+ showToast('Ваш браузер не поддерживает аудио', 'error');
+ return;
+ }
+
+ window.speechSynthesis.cancel();
+ let index = 0;
+
+ function speakNext() {
+ if (index < alphabetData.length) {
+ const utterance = new SpeechSynthesisUtterance(alphabetData[index].letter);
+ utterance.lang = 'ar-SA';
+ utterance.rate = 0.5;
+ utterance.pitch = 1;
+
+ // Highlight current letter
+ const cards = document.querySelectorAll('.letter-card');
+ cards.forEach(c => c.style.borderColor = 'var(--border)');
+ if (cards[index]) {
+ cards[index].style.borderColor = 'var(--quran-gold)';
+ cards[index].scrollIntoView({ behavior: 'smooth', block: 'center' });
+ }
+
+ utterance.onend = () => {
+ index++;
+ setTimeout(speakNext, 300);
+ };
+
+ window.speechSynthesis.speak(utterance);
+ showToast('Буква ' + alphabetData[index].name + ' (' + (index + 1) + '/28)', 'info');
+ } else {
+ showToast('Все буквы прослушаны!', 'success');
+ const cards = document.querySelectorAll('.letter-card');
+ cards.forEach(c => c.style.borderColor = 'var(--border)');
+ }
+ }
+
+ speakNext();
+}
+
function learnLetter(idx) {
const p = getProgress();
const key = 'letter-' + idx;
@@ -1245,8 +1323,10 @@ function learnLetter(idx) {
saveProgress(p);
showToast('Буква ' + alphabetData[idx].name + ' изучена!', 'success');
checkAchievements();
+ } else {
+ showToast('Буква ' + alphabetData[idx].name + ' уже изучена', 'info');
}
- speak(alphabetData[idx].letter);
+ speakLetter(idx);
}
function renderHarakaat() {
@@ -1262,6 +1342,7 @@ function renderHarakaat() {
${h.description}
${h.example}
${h.exampleWord}
+
`).join('');
@@ -1273,10 +1354,22 @@ function renderHarakaat() {
${h.description}
${h.example}
${h.exampleWord}
+
`).join('');
}
+function speakHaraka(text, name) {
+ if ('speechSynthesis' in window) {
+ window.speechSynthesis.cancel();
+ const utterance = new SpeechSynthesisUtterance(text);
+ utterance.lang = 'ar-SA';
+ utterance.rate = 0.5;
+ window.speechSynthesis.speak(utterance);
+ }
+ showToast('Произношение: ' + name, 'info');
+}
+
function learnHaraka(idx) {
const p = getProgress();
const key = 'haraka-' + idx;