diff --git a/docs/main/web/progressive-wappseb-.md b/docs/main/web/progressive-wappseb-.md
new file mode 100644
index 000000000..81cfa4f1e
--- /dev/null
+++ b/docs/main/web/progressive-wappseb-.md
@@ -0,0 +1,432 @@
+import { useState, useRef, useEffect } from "react";
+
+const jobs = [
+{ id: 1, title: "Үйлдвэрийн ажилчин", company: "Samsung Electronics", location: "Сувон хот", salary: "2,800,000 ₩", type: "EPS", category: "Үйлдвэр", visa: "E-9", deadline: "2024-03-15", desc: "Электрон бүтээгдэхүүн угсрах ажил. Туршлага шаардахгүй." },
+{ id: 2, title: "Барилгын ажилчин", company: "Hyundai Construction", location: "Сөүл", salary: "3,200,000 ₩", type: "EPS", category: "Барилга", visa: "E-9", deadline: "2024-03-20", desc: "Барилгын туслах ажилчин. Биеийн чадал шаардлагатай." },
+{ id: 3, title: "Сувилагч туслах", company: "Seoul Medical Center", location: "Сөүл", salary: "2,500,000 ₩", type: "Хувийн", category: "Эрүүл мэнд", visa: "E-6", deadline: "2024-04-01", desc: "Өндөр настны асаргаа. Солонгос хэл мэдвэл давуу." },
+{ id: 4, title: "Ресторанд тогооч туслах", company: "K-Food Chain", location: "Инчон", salary: "2,200,000 ₩", type: "Хувийн", category: "Хоол", visa: "E-9", deadline: "2024-03-25", desc: "Корей хоол бэлтгэх туслах ажил. Сургалт олгоно." },
+{ id: 5, title: "Хөдөө аж ахуйн ажилчин", company: "Jeju Farm Co.", location: "Жэжү арал", salary: "2,600,000 ₩", type: "EPS", category: "Хөдөө аж ахуй", visa: "E-9", deadline: "2024-04-10", desc: "Жимс хураах, тариалангийн ажил. Орон байраар хангана." },
+{ id: 6, title: "Логистик ажилчин", company: "Coupang Logistics", location: "Инчон", salary: "3,000,000 ₩", type: "Хувийн", category: "Логистик", visa: "E-9", deadline: "2024-03-30", desc: "Агуулахад ачаа зөөх, эрэмбэлэх ажил. Шөнийн ээлж боломжтой." },
+];
+
+const categories = ["Бүгд", "Үйлдвэр", "Барилга", "Эрүүл мэнд", "Хоол", "Хөдөө аж ахуй", "Логистик"];
+
+const epsQuestions = [
+{ q: "안녕하세요 — Энэ юу гэсэн үг вэ?", options: ["Баяртай", "Сайн байна уу", "Талархал", "Уучлаарай"], answer: 1 },
+{ q: "감사합니다 — Энэ юу гэсэн үг вэ?", options: ["Уучлаарай", "Сайн байна уу", "Баярлалаа", "Тийм"], answer: 2 },
+{ q: "화장실이 어디에 있어요? — Юу асуусан бэ?", options: ["Хоол хаана байна вэ", "Жорлон хаана байна вэ", "Ажил хаана байна вэ", "Гэр хаана байна вэ"], answer: 1 },
+{ q: "일 — Энэ үгийн утга юу вэ?", options: ["Гэр", "Хоол", "Ажил", "Машин"], answer: 2 },
+{ q: "얼마예요? — Юу гэсэн үг вэ?", options: ["Хэдэн цаг вэ", "Хаана байна вэ", "Хэдэн төгрөг вэ", "Хэн бэ"], answer: 2 },
+{ q: "병원 — Энэ үгийн утга юу вэ?", options: ["Сургууль", "Эмнэлэг", "Дэлгүүр", "Банк"], answer: 1 },
+];
+
+const reviews = [
+{ name: "Батбаяр", city: "Сувон", company: "Samsung", rating: 5, text: "Цалин цагтаа орж ирдэг, ажлын нөхцөл маш сайн. Орон байр компани олгодог.", months: 14 },
+{ name: "Оюунцэцэг", city: "Сөүл", company: "Seoul Medical", rating: 4, text: "Солонгос хэл мэдэхгүй байсан ч ажилд авсан. Сургалт сайн байсан.", months: 8 },
+{ name: "Төмөрбаатар", city: "Инчон", company: "Coupang", rating: 3, text: "Шөнийн ээлж хэцүү байдаг. Гэхдээ цалин сайн, нэмэлт цагийн мөнгө өгдөг.", months: 6 },
+{ name: "Номин", city: "Жэжү", company: "Jeju Farm", rating: 5, text: "Жэжү арал үзэсгэлэнтэй! Ажил хэцүү ч орон байр, хоол үнэгүй.", months: 10 },
+];
+
+const visaChecklist = {
+"E-9 (EPS)": [
+"EPS-TOPIK шалгалт өгсөн", "Паспорт хүчинтэй (6 сараас дээш)",
+"Эрүүл мэндийн үзлэг хийлгэсэн", "Эрүүгийн лавлагаа авсан",
+"Бүртгэлийн маягт бөглөсөн", "Гэрэл зураг бэлтгэсэн (3.5x4.5)",
+"Банкны дансны хуулга", "Ажлын гэрээ хүлээн авсан",
+],
+"E-6 (Хувийн)": [
+"Ажил олгогчтой гэрээ байгуулсан", "Паспорт хүчинтэй",
+"Эрүүл мэндийн үзлэг", "Эрүүгийн лавлагаа",
+"Дипломны хуулбар (шаардлагатай бол)", "Гэрэл зураг бэлтгэсэн",
+"Виз өргөдлийн маягт бөглөсөн", "Элчин сайдын яаманд очсон",
+],
+};
+
+const QUICK_QUESTIONS = ["EPS шалгалт хэзээ болох вэ?", "Виз авахад хэдэн төгрөг хэрэгтэй вэ?", "Хамгийн их цалинтай ажил аль вэ?", "Солонгост монголчуудад хандах хандлага ямар байдаг вэ?"];
+
+function AiChat() {
+const [messages, setMessages] = useState([
+{ role: "assistant", text: "Сайн байна уу! 👋 Би таны Солонгост ажил хайх AI зөвлөгч. Виз, цалин, ажлын нөхцөл, бичиг баримтын талаар асуугаарай!" }
+]);
+const [input, setInput] = useState("");
+const [loading, setLoading] = useState(false);
+const bottomRef = useRef(null);
+useEffect(() => { bottomRef.current?.scrollIntoView({ behavior: "smooth" }); }, [messages, loading]);
+
+const sendMessage = async (text) => {
+const userText = text || input.trim();
+if (!userText || loading) return;
+setInput("");
+setMessages(prev => [...prev, { role: "user", text: userText }]);
+setLoading(true);
+try {
+const history = messages.map(m => ({ role: m.role === "assistant" ? "assistant" : "user", content: m.text }));
+const res = await fetch("https://api.anthropic.com/v1/messages", {
+method: "POST",
+headers: { "Content-Type": "application/json" },
+body: JSON.stringify({
+model: "claude-sonnet-4-20250514", max_tokens: 1000,
+system: `Чи Солонгост ажил хайж буй монголчуудад зориулсан AI туслагч. Монгол хэлээр богино, тодорхой, найрсаг хариулт өг. EPS виз, цалин, ажлын нөхцөл, бичиг баримтын мэдээлэл мэднэ. Хариулт 3-5 өгүүлбэрт багтаа. Emoji хэрэглэж болно.`,
+messages: [...history, { role: "user", content: userText }]
+})
+});
+const data = await res.json();
+const reply = data.content?.map(c => c.text || "").join("") || "Уучлаарай, алдаа гарлаа.";
+setMessages(prev => [...prev, { role: "assistant", text: reply }]);
+} catch { setMessages(prev => [...prev, { role: "assistant", text: "Сүлжээний алдаа гарлаа." }]); }
+setLoading(false);
+};
+
+return (
+
+
+
🤖
+
+
AI Зөвлөгч
+
● Онлайн — Монгол хэлээр асуу
+
+
+
+{QUICK_QUESTIONS.map((q, i) => (
+ sendMessage(q)} style={{ whiteSpace: "nowrap", padding: "6px 12px", borderRadius: 20, border: "1px solid rgba(125,211,252,0.25)", background: "rgba(125,211,252,0.08)", color: "#7dd3fc", fontSize: 11, cursor: "pointer" }}>{q}
+))}
+
+
+{messages.map((msg, i) => (
+
+{msg.role === "assistant" &&
🤖
}
+
{msg.text}
+
+))}
+{loading && (
+
+)}
+
+
+
+ setInput(e.target.value)} onKeyDown={e => e.key === "Enter" && sendMessage()} placeholder="Асуултаа бич..." style={{ flex: 1, background: "transparent", border: "none", outline: "none", color: "#e8e4dc", fontSize: 13 }} />
+ sendMessage()} disabled={loading || !input.trim()} style={{ width: 36, height: 36, borderRadius: 12, background: input.trim() && !loading ? "linear-gradient(135deg, #7dd3fc, #6366f1)" : "rgba(255,255,255,0.1)", border: "none", cursor: "pointer", color: "#fff", fontSize: 16 }}>➤
+
+
+
+);
+}
+
+function EpsQuiz() {
+const [current, setCurrent] = useState(0);
+const [score, setScore] = useState(0);
+const [selected, setSelected] = useState(null);
+const [done, setDone] = useState(false);
+
+const handleAnswer = (idx) => {
+if (selected !== null) return;
+setSelected(idx);
+if (idx === epsQuestions[current].answer) setScore(s => s + 1);
+setTimeout(() => {
+if (current + 1 >= epsQuestions.length) setDone(true);
+else { setCurrent(c => c + 1); setSelected(null); }
+}, 900);
+};
+
+const restart = () => { setCurrent(0); setScore(0); setSelected(null); setDone(false); };
+
+if (done) return (
+
+
{score >= 5 ? "🏆" : score >= 3 ? "👍" : "📚"}
+
{score}/{epsQuestions.length}
+
= 5 ? "#4ade80" : score >= 3 ? "#fbbf24" : "#f87171", marginBottom: 24 }}>
+{score >= 5 ? "Гайхалтай! Шалгалтад бэлэн байна!" : score >= 3 ? "Сайн байна, бага зэрэг сур!" : "Илүү их дасгал хийх хэрэгтэй!"}
+
+
Дахин эхлэх
+
+);
+
+const q = epsQuestions[current];
+return (
+
+
+
{current + 1} / {epsQuestions.length}
+
Оноо: {score}
+
+
+
+
Солонгос үг
+
{q.q.split("—")[0].trim()}
+
{q.q.split("—")[1]?.trim()}
+
+
+{q.options.map((opt, i) => {
+let bg = "rgba(255,255,255,0.05)";
+let border = "1px solid rgba(255,255,255,0.08)";
+let color = "#ddd";
+if (selected !== null) {
+if (i === q.answer) { bg = "rgba(74,222,128,0.2)"; border = "1px solid #4ade80"; color = "#4ade80"; }
+else if (i === selected && i !== q.answer) { bg = "rgba(248,113,113,0.2)"; border = "1px solid #f87171"; color = "#f87171"; }
+}
+return (
+ handleAnswer(i)} style={{ padding: "14px 16px", borderRadius: 12, border, background: bg, color, fontSize: 14, cursor: "pointer", textAlign: "left", transition: "all 0.2s", fontWeight: selected !== null && i === q.answer ? 700 : 400 }}>
+{opt}
+
+);
+})}
+
+
+);
+}
+
+function Reviews() {
+return (
+
+
Солонгост ажиллаж буй монголчуудын үнэн туршлага 🇲🇳
+{reviews.map((r, i) => (
+
+
+
+
{r.name[0]}
+
+
{r.name}
+
{r.company} · {r.city}
+
+
+
{r.months} сар
+
+
{"⭐".repeat(r.rating)}
+
"{r.text}"
+
+))}
+
+
📝 Та ч туршлагаа хуваалцаарай
+
Бусад монголчуудад тусал
+
+
+);
+}
+
+function Checklist() {
+const [visaType, setVisaType] = useState("E-9 (EPS)");
+const [checked, setChecked] = useState({});
+const toggle = (key) => setChecked(p => ({ ...p, [key]: !p[key] }));
+const items = visaChecklist[visaType];
+const done = items.filter(item => checked[visaType+item]).length;
+
+return (
+
+
+{Object.keys(visaChecklist).map(v => (
+ setVisaType(v)} style={{ flex: 1, padding: "10px 8px", borderRadius: 12, border: "1px solid", borderColor: visaType === v ? "#7dd3fc" : "rgba(255,255,255,0.1)", background: visaType === v ? "rgba(125,211,252,0.15)" : "transparent", color: visaType === v ? "#7dd3fc" : "#999", fontSize: 11, cursor: "pointer", fontWeight: visaType === v ? 700 : 400 }}>{v}
+))}
+
+
+
+
Гүйцэтгэл
+
{done}/{items.length}
+
+
+{done === items.length ? "✅" : "📋"}
+
+
+{items.map((item, i) => {
+const key = visaType + item;
+return (
+
toggle(key)} style={{ display: "flex", alignItems: "center", gap: 14, padding: "14px 16px", background: checked[key] ? "rgba(74,222,128,0.08)" : "rgba(255,255,255,0.04)", borderRadius: 12, marginBottom: 8, border: `1px solid ${checked[key] ? "rgba(74,222,128,0.3)" : "rgba(255,255,255,0.07)"}`, cursor: "pointer", transition: "all 0.2s" }}>
+
+{checked[key] ? "✓" : ""}
+
+
{item}
+
+);
+})}
+
+);
+}
+
+function Calculator() {
+const [won, setWon] = useState("2800000");
+const rate = 2.1;
+const tugrug = won ? Math.round(parseInt(won.replace(/,/g, "")) * rate).toLocaleString() : "0";
+const monthly = won ? parseInt(won.replace(/,/g, "")) : 0;
+const yearly = monthly * 12;
+const savings = Math.round(monthly * 0.6);
+
+return (
+
+
Солонгосын вон → Монгол төгрөг хөрвүүлэгч 💱
+
+
САРЫН ЦАЛИН (₩)
+
setWon(e.target.value.replace(/[^0-9]/g, ""))} style={{ width: "100%", background: "transparent", border: "none", outline: "none", fontSize: 32, fontWeight: 800, color: "#fff", boxSizing: "border-box" }} placeholder="2800000" />
+
Хязгаараас хасалгүй дүн
+
+
+{[
+{ label: "Сарын орлого", value: `${tugrug}₮`, color: "#4ade80" },
+{ label: "Жилийн орлого", value: `${Math.round(yearly * rate).toLocaleString()}₮`, color: "#7dd3fc" },
+{ label: "Хадгалалт (60%)", value: `${Math.round(savings * rate).toLocaleString()}₮`, color: "#fbbf24" },
+{ label: "3 жилд хуримтлал", value: `${Math.round(savings * rate * 36).toLocaleString()}₮`, color: "#f472b6" },
+].map((item, i) => (
+
+
{item.label}
+
{item.value}
+
+))}
+
+
+
💡 Ханшийн мэдээлэл
+
1 вон ≈ 2.1 төгрөг (ойролцоо). Жинхэнэ ханшийг банкнаас лавлаарай.
+
+
+);
+}
+
+export default function App() {
+const [activeTab, setActiveTab] = useState("jobs");
+const [subTab, setSubTab] = useState("ai");
+const [selectedCat, setSelectedCat] = useState("Бүгд");
+const [selectedJob, setSelectedJob] = useState(null);
+const [search, setSearch] = useState("");
+const [saved, setSaved] = useState([]);
+
+const filtered = jobs.filter(j =>
+(selectedCat === "Бүгд" || j.category === selectedCat) &&
+(j.title.toLowerCase().includes(search.toLowerCase()) || j.company.toLowerCase().includes(search.toLowerCase()))
+);
+const toggleSave = (id) => setSaved(s => s.includes(id) ? s.filter(x => x !== id) : [...s, id]);
+
+const TABS = [
+{ key: "jobs", icon: "💼", label: "Ажил" },
+{ key: "tools", icon: "🛠️", label: "Хэрэгсэл" },
+{ key: "saved", icon: "❤️", label: saved.length ? `(${saved.length})` : "Хадгалсан" },
+];
+
+const SUBTOOLS = [
+{ key: "ai", icon: "🤖", label: "AI Зөвлөгч" },
+{ key: "quiz", icon: "🎓", label: "EPS Тест" },
+{ key: "reviews", icon: "⭐", label: "Туршлага" },
+{ key: "checklist", icon: "📋", label: "Чеклист" },
+{ key: "calc", icon: "💰", label: "Тооцоолуур" },
+];
+
+return (
+
+{/* Header */}
+
+
+
🇰🇷
+
+
Go Korea 🇰🇷
+
Korea Job Guide for Mongolians
+
+
+{activeTab === "jobs" && (
+
+🔍
+ setSearch(e.target.value)} placeholder="Ажил, компани хайх..." style={{ background: "transparent", border: "none", outline: "none", color: "#e8e4dc", fontSize: 14, width: "100%" }} />
+
+)}
+
+
+{/* Main Tabs */}
+
+{TABS.map(tab => (
+
setActiveTab(tab.key)} style={{ flex: 1, padding: "12px 4px", border: "none", background: "transparent", color: activeTab === tab.key ? "#7dd3fc" : "#666", fontSize: 10, fontWeight: activeTab === tab.key ? 700 : 400, cursor: "pointer", borderBottom: activeTab === tab.key ? "2px solid #7dd3fc" : "2px solid transparent" }}>
+{tab.icon}
{tab.label}
+
+))}
+
+
+
+
+{/* JOBS */}
+{activeTab === "jobs" && (
+<>
+
+{categories.map(cat => (
+ setSelectedCat(cat)} style={{ whiteSpace: "nowrap", padding: "6px 14px", borderRadius: 20, border: "1px solid", borderColor: selectedCat === cat ? "#7dd3fc" : "rgba(255,255,255,0.1)", background: selectedCat === cat ? "rgba(125,211,252,0.15)" : "transparent", color: selectedCat === cat ? "#7dd3fc" : "#999", fontSize: 12, cursor: "pointer" }}>{cat}
+))}
+
+
{filtered.length} ажлын байр
+{filtered.map(job => (
+
setSelectedJob(job)} style={{ background: "linear-gradient(135deg, #1a1a2e, #16213e)", borderRadius: 16, padding: 16, marginBottom: 12, border: "1px solid rgba(255,255,255,0.07)", cursor: "pointer" }}>
+
+
+
+{job.type}
+
+
{job.title}
+
{job.company}
+
📍 {job.location}
+
+
{ e.stopPropagation(); toggleSave(job.id); }} style={{ background: "transparent", border: "none", fontSize: 20, cursor: "pointer", opacity: saved.includes(job.id) ? 1 : 0.3 }}>❤️
+
+
+
{job.salary}
+
{job.deadline}
+
+
+))}
+>
+)}
+
+{/* TOOLS */}
+{activeTab === "tools" && (
+<>
+
+{SUBTOOLS.map(t => (
+ setSubTab(t.key)} style={{ whiteSpace: "nowrap", padding: "8px 14px", borderRadius: 20, border: "1px solid", borderColor: subTab === t.key ? "#7dd3fc" : "rgba(255,255,255,0.1)", background: subTab === t.key ? "rgba(125,211,252,0.15)" : "transparent", color: subTab === t.key ? "#7dd3fc" : "#999", fontSize: 12, cursor: "pointer", fontWeight: subTab === t.key ? 700 : 400 }}>
+{t.icon} {t.label}
+
+))}
+
+{subTab === "ai" &&
}
+{subTab === "quiz" &&
}
+{subTab === "reviews" &&
}
+{subTab === "checklist" &&
}
+{subTab === "calc" &&
}
+>
+)}
+
+{/* SAVED */}
+{activeTab === "saved" && (
+saved.length === 0 ? (
+
+
❤️
+
Хадгалсан ажил байхгүй
+
Ажлын зарнаас ❤️ дарж хадгалаарай
+
+) : jobs.filter(j => saved.includes(j.id)).map(job => (
+
+
{job.title}
+
{job.company}
+
{job.salary}
+
+))
+)}
+
+
+{/* Job Modal */}
+{selectedJob && (
+
setSelectedJob(null)}>
+
e.stopPropagation()} style={{ background: "linear-gradient(180deg, #1a1a2e, #0f0f1a)", borderRadius: "24px 24px 0 0", padding: 24, width: "100%", maxWidth: 430, margin: "0 auto", border: "1px solid rgba(255,255,255,0.1)" }}>
+
+
{selectedJob.title}
+
{selectedJob.company}
+
📍 {selectedJob.location}
+
{selectedJob.salary}/сар
+
{selectedJob.desc}
+
+ toggleSave(selectedJob.id)} style={{ flex: 1, padding: 14, borderRadius: 12, border: "1px solid rgba(255,255,255,0.15)", background: "transparent", color: "#fff", fontSize: 14, cursor: "pointer" }}>{saved.includes(selectedJob.id) ? "❤️ Хадгалсан" : "🤍 Хадгалах"}
+Өргөдөл гаргах →
+
+
+
+)}
+
+);
+}
+
diff --git a/docs/main/web/progressive-web-apps.md b/docs/main/web/progressive-web-apps.md
deleted file mode 100644
index 39987851a..000000000
--- a/docs/main/web/progressive-web-apps.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: Building Progressive Web Apps
-description: How to build Progressive Web Apps with Capacitor
-contributors:
- - jcesarmobile
- - dotNetkow
-slug: /web/progressive-web-apps
----
-
-# Building Progressive Web Apps
-
-Capacitor has first-class support for Progressive Web Apps, making it easy to build an app that runs natively on iOS and Android, but also on the web as a mobile web app or "Progressive Web App."
-
-## What is a Progressive Web App?
-
-Put simply, a Progressive Web App (PWA) is a web app that uses modern web capabilities to deliver an app-like experience to users. These apps are deployed to traditional web servers, are accessible through URLs, and can be indexed by search engines.
-
-A Progressive Web App is, for all practical purposes, just another term for a website that has been optimized for mobile performance and that utilizes newly available Web APIs to deliver features that are similar to a traditional native app, such as push notifications and offline storage.
-
-## Capacitor and Progressive Web Apps
-
-Capacitor has first-class support for Progressive Web Apps _and_ native apps. That means that Capacitor's bridge supports running in either a native context or in the web, with many plugins available _in both contexts_ with the exact same API and calling conventions.
-
-This means you use `@capacitor/core` and Capacitor plugins as dependencies for both your native app _and_ your Progressive Web App, and Capacitor seamlessly calls web code when required and native code when available.
-
-Additionally, Capacitor offers a number of utilities for querying the current platform to provide customized experiences when running natively or on the web.
-
-## Adding Progressive Web App Support to your app
-
-Progressive Web Apps should have an App Manifest and a Service Worker.
-
-### App Manifest
-
-First, you'll need an [App Manifest](https://developer.mozilla.org/en-US/docs/Web/Manifest) file ([manifest.json](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json)) that sits alongside your `index.html` file and provides metadata about your app, such as its name, theme colors, and icons. This information will be used when your app is installed on the home screen, for example.
-
-### Service Worker
-
-Next, in order to send push notifications and store data offline, a [Service Worker](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API) will enable your web app to proxy network requests and perform background tasks needed to process and sync data.
-
-Service Workers are powerful, but complicated. Generally, writing them from scratch is not recommended. Instead, take a look at tools like [Workbox](https://developers.google.com/web/tools/workbox/) that provide common Service Worker recipes that you can easily incorporate into your app.
-
-Read more about using Service Workers, including how to register them, on the [Using Service Workers](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers) page on MDN.
-
-## Progressive Web App Performance
-
-Progressive Web Apps are judged by several performance standards, including [Time to Interactive](https://developers.google.com/web/tools/lighthouse/audits/time-to-interactive) and [First Meaningful Paint](https://developers.google.com/web/tools/lighthouse/audits/first-meaningful-paint).
-
-Follow the [Progressive Web App Checklist](https://developers.google.com/web/progressive-web-apps/checklist) before going live, and use [Lighthouse](https://developers.google.com/web/tools/lighthouse/) to audit and test your app.
-
-If you're struggling to meet Progressive Web App performance standards with your existing frontend stack, take a look at [Ionic Framework](http://ionicframework.com/) as an option for getting fast PWA support with nearly zero configuration.