{"id":16974,"date":"2026-01-28T11:34:46","date_gmt":"2026-01-28T11:34:46","guid":{"rendered":"https:\/\/smartedujo.com\/?page_id=16974"},"modified":"2026-01-28T11:34:50","modified_gmt":"2026-01-28T11:34:50","slug":"%d8%a7%d9%84%d8%af%d8%b1%d8%b3-%d8%a7%d9%84%d8%ab%d8%a7%d9%86%d9%8a-%d8%ae%d8%b5%d8%a7%d8%a6%d8%b5-%d8%a7%d9%84%d9%85%d8%ad%d8%a7%d9%84%d9%8a%d9%84","status":"publish","type":"page","link":"https:\/\/smartedujo.com\/ar\/%d8%a7%d9%84%d8%af%d8%b1%d8%b3-%d8%a7%d9%84%d8%ab%d8%a7%d9%86%d9%8a-%d8%ae%d8%b5%d8%a7%d8%a6%d8%b5-%d8%a7%d9%84%d9%85%d8%ad%d8%a7%d9%84%d9%8a%d9%84\/","title":{"rendered":"\u0627\u0644\u062f\u0631\u0633 \u0627\u0644\u062b\u0627\u0646\u064a: \u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"ar\" dir=\"rtl\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>\u0627\u0644\u062f\u0631\u0633 \u0627\u0644\u062b\u0627\u0646\u064a: \u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644 &#8211; \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629<\/title>\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Cairo:wght@300;400;500;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\n    <style>\n        \/* \u0645\u0644\u0641 \u062a\u0646\u0633\u064a\u0642 \u0627\u0644\u062f\u0631\u0648\u0633 \u0627\u0644\u062a\u0639\u0644\u064a\u0645\u064a\u0629 - \u0645\u0646\u0635\u0629 \u062a\u0639\u0644\u0645 \u0628\u0630\u0643\u0627\u0621 *\/\n        \/* 1. \u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0627\u0644\u062e\u0637 (Cairo) *\/\n        @import url('https:\/\/fonts.googleapis.com\/css2?family=Cairo:wght@300;400;500;600;700;800&display=swap');\n\n        \/* 2. \u0627\u0644\u0645\u062a\u063a\u064a\u0631\u0627\u062a \u0627\u0644\u0639\u0627\u0645\u0629 (\u0627\u0644\u0623\u0644\u0648\u0627\u0646) *\/\n        :root {\n          \/* \u0627\u0644\u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0644\u0644\u062e\u0644\u0641\u064a\u0629 *\/\n          --bg-gradient-start: #312e81; \/* Indigo 900 *\/\n          --bg-gradient-end: #581c87;   \/* Purple 900 *\/\n          \n          \/* \u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u0646\u0635\u0648\u0635 *\/\n          --text-primary: #f1f5f9;      \/* Slate 100 *\/\n          --text-secondary: #cbd5e1;    \/* Slate 300 *\/\n          --text-accent: #e9d5ff;       \/* Purple 200 *\/\n          \n          \/* \u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062a \u0648\u0627\u0644\u0639\u0646\u0627\u0635\u0631 *\/\n          --card-bg: rgba(30, 41, 59, 0.6);        \/* Slate 800 (Transparent) *\/\n          --card-border: rgba(255, 255, 255, 0.1); \/* White alpha *\/\n          --header-gradient: linear-gradient(to right, #312e81, #581c87);\n          \n          \/* \u0623\u0644\u0648\u0627\u0646 \u0627\u0644\u062a\u0645\u064a\u064a\u0632 (\u0644\u0644\u0639\u0646\u0627\u0648\u064a\u0646 \u0648\u0627\u0644\u0646\u0642\u0627\u0637) *\/\n          --accent-purple: #a855f7;\n          --accent-blue: #3b82f6;\n          --accent-green: #22c55e;\n          --accent-yellow: #eab308;\n          --accent-red: #ef4444;\n        }\n\n        \/* 3. \u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 *\/\n        body {\n          font-family: 'Cairo', sans-serif;\n          background: linear-gradient(to bottom right, var(--bg-gradient-start), var(--bg-gradient-end));\n          color: var(--text-primary);\n          margin: 0;\n          padding: 0;\n          line-height: 1.6;\n          direction: rtl; \/* \u0627\u062a\u062c\u0627\u0647 \u0627\u0644\u0646\u0635 \u0645\u0646 \u0627\u0644\u064a\u0645\u064a\u0646 \u0644\u0644\u064a\u0633\u0627\u0631 *\/\n          min-height: 100vh;\n        }\n\n        \/* 4. \u0627\u0644\u062d\u0627\u0648\u064a\u0629 \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629 \u0644\u0644\u062f\u0631\u0633 *\/\n        .lesson-container {\n          max-width: 900px;\n          margin: 0 auto;\n          padding: 24px;\n        }\n\n        \/* 5. \u062a\u0631\u0648\u064a\u0633\u0629 \u0627\u0644\u062f\u0631\u0633 (Header) *\/\n        .lesson-header {\n          background: var(--header-gradient);\n          border: 1px solid var(--card-border);\n          border-radius: 16px;\n          padding: 24px;\n          text-align: center;\n          margin-bottom: 32px;\n          box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3);\n        }\n\n        .lesson-title {\n          font-size: 2.25rem; \/* 36px *\/\n          font-weight: 800;\n          margin: 0 0 8px 0;\n          background: linear-gradient(to right, #bfdbfe, #e9d5ff);\n          -webkit-background-clip: text;\n          -webkit-text-fill-color: transparent;\n        }\n\n        .lesson-subtitle {\n          color: var(--text-accent);\n          font-size: 1.125rem; \/* 18px *\/\n        }\n\n        \/* 6. \u0627\u0644\u0623\u0642\u0633\u0627\u0645 (Sections) *\/\n        .lesson-section {\n          margin-bottom: 24px;\n          border-top: 1px solid var(--card-border);\n          padding-top: 24px;\n        }\n\n        .section-title {\n          display: flex;\n          align-items: center;\n          gap: 8px;\n          font-size: 1.5rem; \/* 24px *\/\n          font-weight: 700;\n          color: #fff;\n          margin-bottom: 16px;\n        }\n\n        .section-icon {\n          font-size: 1.5rem;\n        }\n\n        \/* 7. \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062a \u0648\u0627\u0644\u0645\u0631\u0628\u0639\u0627\u062a (Cards & Boxes) *\/\n        .info-card {\n          background-color: var(--card-bg);\n          border: 1px solid var(--card-border);\n          border-radius: 12px;\n          padding: 20px;\n          margin-bottom: 16px;\n        }\n\n        \/* \u0628\u0637\u0627\u0642\u0627\u062a \u0645\u0644\u0648\u0646\u0629 \u0645\u0645\u064a\u0632\u0629 *\/\n        .card-purple { border-right: 4px solid var(--accent-purple); }\n        .card-blue { border-right: 4px solid var(--accent-blue); }\n        .card-green { border-right: 4px solid var(--accent-green); }\n        .card-red { border-right: 4px solid var(--accent-red); }\n\n        .card-title {\n          font-weight: 700;\n          margin-bottom: 8px;\n          display: block;\n        }\n\n        .text-purple { color: #d8b4fe; }\n        .text-blue { color: #93c5fd; }\n        .text-green { color: #86efac; }\n        .text-yellow { color: #fde047; }\n\n        \/* 8. \u0627\u0644\u0642\u0648\u0627\u0626\u0645 (Lists) *\/\n        .lesson-list {\n          list-style-type: disc;\n          list-style-position: inside;\n          color: var(--text-secondary);\n          font-size: 0.95rem;\n          padding-right: 10px;\n        }\n\n        .lesson-list li {\n          margin-bottom: 6px;\n        }\n\n        .lesson-list li::marker {\n          color: var(--accent-purple);\n        }\n\n        \/* 9. \u0627\u0644\u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0648\u0627\u0644\u0646\u0635\u0648\u0635 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 (Code\/Formulas) *\/\n        .formula-box {\n          font-family: monospace;\n          background-color: rgba(0, 0, 0, 0.3);\n          padding: 8px 12px;\n          border-radius: 6px;\n          color: var(--accent-yellow);\n          direction: ltr; \/* \u0627\u0644\u0645\u0639\u0627\u062f\u0644\u0627\u062a \u062a\u0643\u062a\u0628 \u0645\u0646 \u0627\u0644\u064a\u0633\u0627\u0631 \u0644\u0644\u064a\u0645\u064a\u0646 *\/\n          display: inline-block;\n          margin: 4px 0;\n        }\n\n        \/* 10. \u0627\u0644\u062c\u062f\u0627\u0648\u0644 (Tables) *\/\n        .lesson-table-wrapper {\n          overflow-x: auto;\n          border: 1px solid var(--card-border);\n          border-radius: 8px;\n          background-color: rgba(0, 0, 0, 0.2);\n        }\n\n        .lesson-table {\n          width: 100%;\n          text-align: right;\n          border-collapse: collapse;\n          color: var(--text-secondary);\n          font-size: 0.9rem;\n        }\n\n        .lesson-table thead {\n          background-color: rgba(255, 255, 255, 0.05);\n          color: #fff;\n          text-transform: uppercase;\n          font-size: 0.85rem;\n        }\n\n        .lesson-table th, .lesson-table td {\n          padding: 12px 16px;\n          border-bottom: 1px solid var(--card-border);\n        }\n\n        .lesson-table tr:hover {\n          background-color: rgba(255, 255, 255, 0.02);\n        }\n\n        \/* 11. \u062d\u0627\u0648\u064a\u0629 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629 (Simulation Container) *\/\n        .simulation-box {\n          background-color: rgba(15, 23, 42, 0.6); \/* Slate 900 *\/\n          border: 1px solid var(--card-border);\n          border-radius: 16px;\n          padding: 24px;\n          margin: 24px 0;\n          text-align: center;\n          box-shadow: inset 0 2px 4px 0 rgba(0, 0, 0, 0.2);\n        }\n\n        \/* \u062a\u0646\u0633\u064a\u0642 \u0634\u0631\u064a\u0637 \u0627\u0644\u062a\u0645\u0631\u064a\u0631 (Scrollbar) *\/\n        ::-webkit-scrollbar {\n          width: 8px;\n        }\n        ::-webkit-scrollbar-track {\n          background: #1e1b4b;\n        }\n        ::-webkit-scrollbar-thumb {\n          background: #4f46e5;\n          border-radius: 4px;\n        }\n        \n        \/* \u062a\u0646\u0633\u064a\u0642\u0627\u062a \u0625\u0636\u0627\u0641\u064a\u0629 \u0644\u0644\u0639\u0646\u0627\u0635\u0631 \u0627\u0644\u062a\u0641\u0627\u0639\u0644\u064a\u0629 *\/\n        button {\n          cursor: pointer;\n          font-family: 'Cairo', sans-serif;\n        }\n        \n        input[type=\"range\"] {\n          cursor: pointer;\n        }\n        \n        .simulation-controls {\n          margin-top: 15px;\n        }\n        \n        .canvas-container {\n          display: flex;\n          justify-content: center;\n          margin: 15px 0;\n        }\n        \n        .simulation-canvas {\n          border-radius: 8px;\n          background-color: rgba(15, 23, 42, 0.8);\n        }\n        \n        .flex {\n          display: flex;\n        }\n        \n        .grid {\n          display: grid;\n        }\n        \n        .gap-2 { gap: 0.5rem; }\n        .gap-3 { gap: 0.75rem; }\n        .gap-4 { gap: 1rem; }\n        .gap-6 { gap: 1.5rem; }\n        \n        .justify-center { justify-content: center; }\n        .justify-between { justify-content: space-between; }\n        .items-center { align-items: center; }\n        \n        .w-full { width: 100%; }\n        .max-w-md { max-width: 28rem; }\n        .max-w-sm { max-width: 24rem; }\n        .max-w-lg { max-width: 32rem; }\n        \n        .mx-auto { margin-right: auto; margin-left: auto; }\n        .mt-1 { margin-top: 0.25rem; }\n        .mt-2 { margin-top: 0.5rem; }\n        .mt-3 { margin-top: 0.75rem; }\n        .mt-4 { margin-top: 1rem; }\n        .mt-6 { margin-top: 1.5rem; }\n        .mb-1 { margin-bottom: 0.25rem; }\n        .mb-2 { margin-bottom: 0.5rem; }\n        .mb-3 { margin-bottom: 0.75rem; }\n        .mb-4 { margin-bottom: 1rem; }\n        .mb-8 { margin-bottom: 2rem; }\n        .my-8 { margin-top: 2rem; margin-bottom: 2rem; }\n        \n        .p-1 { padding: 0.25rem; }\n        .p-2 { padding: 0.5rem; }\n        .p-3 { padding: 0.75rem; }\n        .p-4 { padding: 1rem; }\n        .p-6 { padding: 1.5rem; }\n        \n        .rounded { border-radius: 0.25rem; }\n        .rounded-md { border-radius: 0.375rem; }\n        .rounded-lg { border-radius: 0.5rem; }\n        .rounded-full { border-radius: 9999px; }\n        \n        .bg-slate-700 { background-color: #334155; }\n        .bg-slate-700\\\/50 { background-color: rgba(51, 65, 85, 0.5); }\n        .bg-slate-800 { background-color: #1e293b; }\n        .bg-slate-800\\\/30 { background-color: rgba(30, 41, 59, 0.3); }\n        .bg-slate-800\\\/40 { background-color: rgba(30, 41, 59, 0.4); }\n        .bg-slate-800\\\/50 { background-color: rgba(30, 41, 59, 0.5); }\n        .bg-slate-900 { background-color: #0f172a; }\n        \n        .bg-black\\\/20 { background-color: rgba(0, 0, 0, 0.2); }\n        .bg-black\\\/40 { background-color: rgba(0, 0, 0, 0.4); }\n        .bg-white\\\/5 { background-color: rgba(255, 255, 255, 0.05); }\n        .bg-white\\\/10 { background-color: rgba(255, 255, 255, 0.1); }\n        \n        .bg-purple-600 { background-color: #7c3aed; }\n        .bg-teal-600 { background-color: #0d9488; }\n        \n        .border { border-width: 1px; }\n        .border-2 { border-width: 2px; }\n        .border-t { border-top-width: 1px; }\n        .border-l-4 { border-left-width: 4px; }\n        .border-r-4 { border-right-width: 4px; }\n        .border-white\\\/10 { border-color: rgba(255, 255, 255, 0.1); }\n        .border-slate-600 { border-color: #475569; }\n        .border-slate-700 { border-color: #334155; }\n        .border-yellow-400 { border-color: #facc15; }\n        .border-blue-500 { border-color: #3b82f6; }\n        .border-green-500 { border-color: #22c55e; }\n        .border-indigo-500\\\/30 { border-color: rgba(99, 102, 241, 0.3); }\n        \n        .text-center { text-align: center; }\n        .text-sm { font-size: 0.875rem; }\n        .text-base { font-size: 1rem; }\n        .text-lg { font-size: 1.125rem; }\n        .text-xl { font-size: 1.25rem; }\n        .text-2xl { font-size: 1.5rem; }\n        .text-3xl { font-size: 1.875rem; }\n        \n        .text-white { color: #ffffff; }\n        .text-white\\\/90 { color: rgba(255, 255, 255, 0.9); }\n        .text-slate-300 { color: #cbd5e1; }\n        .text-slate-400 { color: #94a3b8; }\n        .text-slate-500 { color: #64748b; }\n        .text-slate-200 { color: #e2e8f0; }\n        .text-purple-300 { color: #d8b4fe; }\n        .text-purple-400 { color: #c084fc; }\n        .text-blue-300 { color: #93c5fd; }\n        .text-green-400 { color: #4ade80; }\n        .text-yellow-300 { color: #fde047; }\n        .text-yellow-200 { color: #fef08a; }\n        .text-red-400 { color: #f87171; }\n        .text-teal-300 { color: #5eead4; }\n        .text-indigo-300 { color: #a5b4fc; }\n        \n        .font-bold { font-weight: 700; }\n        .font-semibold { font-weight: 600; }\n        .font-mono { font-family: monospace; }\n        \n        .transition-colors { transition-property: color, background-color, border-color; transition-duration: 150ms; }\n        .transition-all { transition-property: all; transition-duration: 150ms; }\n        \n        .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }\n        .grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n        .md\\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n        .md\\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n        \n        .flex-col { flex-direction: column; }\n        .md\\:flex-row { flex-direction: row; }\n        \n        .space-y-1 > * + * { margin-top: 0.25rem; }\n        .space-y-2 > * + * { margin-top: 0.5rem; }\n        .space-y-3 > * + * { margin-top: 0.75rem; }\n        .space-y-4 > * + * { margin-top: 1rem; }\n        .space-y-6 > * + * { margin-top: 1.5rem; }\n        \n        .leading-relaxed { line-height: 1.625; }\n        \n        .appearance-none { appearance: none; }\n        \n        .accent-purple-400 { accent-color: #c084fc; }\n        .accent-teal-400 { accent-color: #2dd4bf; }\n        \n        .hover\\:bg-slate-600:hover { background-color: #475569; }\n        .hover\\:bg-slate-600\\\/50:hover { background-color: rgba(71, 85, 105, 0.5); }\n        .hover\\:bg-white\\\/10:hover { background-color: rgba(255, 255, 255, 0.1); }\n        .hover\\:bg-purple-700:hover { background-color: #6d28d9; }\n        \n        @media (min-width: 768px) {\n          .md\\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n          .md\\:flex-row { flex-direction: row; }\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"lesson-container\">\n        <header class=\"lesson-header\">\n            <h1 class=\"lesson-title\">\u0627\u0644\u062f\u0631\u0633 \u0627\u0644\u062b\u0627\u0646\u064a: \u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644<\/h1>\n            <p class=\"lesson-subtitle\">\u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0644\u0644\u0645\u062d\u0627\u0644\u064a\u0644 (Colligative Properties)<\/p>\n        <\/header>\n        \n        <main dir=\"rtl\">\n            <div class=\"space-y-6\">\n                <section class=\"info-card\">\n                    <h2 class=\"section-title\">\n                        <i class=\"fas fa-flask-vial section-icon\"><\/i>\n                        \u0661. \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0644\u0644\u0645\u062d\u0627\u0644\u064a\u0644 (Colligative Properties)\n                    <\/h2>\n                    <div class=\"bg-slate-800\/50 p-4 rounded-lg border border-slate-700\">\n                        <h3 class=\"font-bold text-white\/90\">\u0627\u0644\u062a\u0639\u0631\u064a\u0641:<\/h3>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 marker:text-purple-400 text-sm sm:text-base mt-2\">\n                            <li>\u062e\u0635\u0627\u0626\u0635 \u0641\u064a\u0632\u064a\u0627\u0626\u064a\u0629 \u0644\u0644\u0645\u062d\u0627\u0644\u064a\u0644 \u062a\u0639\u062a\u0645\u062f \u0639\u0644\u0649 <strong class=\"text-white\">\u0639\u062f\u062f \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u0630\u0627\u0628<\/strong> \u0648\u0644\u064a\u0633 \u0639\u0644\u0649 \u0637\u0628\u064a\u0639\u062a\u0647\u0627 \u0627\u0644\u0643\u064a\u0645\u064a\u0627\u0626\u064a\u0629.<\/li>\n                            <li>\u0623\u064a \u0623\u0646\u0647\u0627 \u062a\u0639\u062a\u0645\u062f \u0639\u0644\u0649 \u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0648\u0644\u0627\u0644\u064a \u0644\u0644\u0645\u0630\u0627\u0628.<\/li>\n                        <\/ul>\n                        <h3 class=\"font-bold text-white\/90 mt-4\">\u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0627\u0644\u0623\u0631\u0628\u0639 \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629:<\/h3>\n                        <ol class=\"lesson-list space-y-1 text-slate-300 marker:text-purple-400 text-sm sm:text-base mt-2\">\n                            <li>\u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a<\/li>\n                            <li>\u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646<\/li>\n                            <li>\u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f<\/li>\n                            <li>\u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a<\/li>\n                        <\/ol>\n                    <\/div>\n                <\/section>\n\n                <section class=\"info-card\">\n                    <h2 class=\"section-title\">\n                        <i class=\"fas fa-tachometer-alt section-icon\"><\/i>\n                        \u0662. \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a (Vapor Pressure Lowering)\n                    <\/h2>\n                    <div class=\"bg-slate-800\/50 p-4 rounded-lg\">\n                        <h3 class=\"font-bold text-white\/90 mb-2\">\u0627\u0644\u062a\u0641\u0633\u064a\u0631 \u0627\u0644\u0639\u0644\u0645\u064a:<\/h3>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm\">\n                            <li>\u0639\u0646\u062f \u0625\u0636\u0627\u0641\u0629 \u0645\u0630\u0627\u0628 \u063a\u064a\u0631 \u0645\u062a\u0637\u0627\u064a\u0631 \u0625\u0644\u0649 \u0645\u0630\u064a\u0628\u060c \u062a\u062d\u062a\u0644 \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u0630\u0627\u0628 \u0645\u0648\u0627\u0642\u0639 \u0639\u0644\u0649 \u0633\u0637\u062d \u0627\u0644\u0633\u0627\u0626\u0644.<\/li>\n                            <li>\u062a\u0642\u0644 \u0639\u062f\u062f \u062c\u0632\u064a\u0626\u0627\u062a \u0627\u0644\u0645\u0630\u064a\u0628 \u0627\u0644\u0642\u0627\u062f\u0631\u0629 \u0639\u0644\u0649 \u0627\u0644\u062a\u0628\u062e\u0631.<\/li>\n                            <li>\u064a\u0624\u062f\u064a \u0630\u0644\u0643 \u0625\u0644\u0649 \u0627\u0646\u062e\u0641\u0627\u0636 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a \u0644\u0644\u0645\u062d\u0644\u0648\u0644 \u0645\u0642\u0627\u0631\u0646\u0629 \u0628\u0627\u0644\u0645\u0630\u064a\u0628 \u0627\u0644\u0646\u0642\u064a.<\/li>\n                        <\/ul>\n                        <p class=\"mt-3 text-sm\"><strong class=\"text-white\">\u0627\u0644\u0639\u0644\u0627\u0642\u0629:<\/strong> \u0643\u0644\u0645\u0627 \u0632\u0627\u062f \u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0630\u0627\u0628\u060c \u0632\u0627\u062f \u0627\u0646\u062e\u0641\u0627\u0636 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a. \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644 \u0627\u0644\u0645\u0631\u0643\u0632\u0629 \u0644\u0647\u0627 \u0636\u063a\u0637 \u0628\u062e\u0627\u0631\u064a \u0623\u0642\u0644 \u0645\u0646 \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644 \u0627\u0644\u0645\u062e\u0641\u0641\u0629.<\/p>\n                    <\/div>\n                    \n                    <!-- \u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a -->\n                    <div class=\"simulation-box\" id=\"vapor-pressure-lowering-graph-container\">\n                        <h3 class=\"text-xl font-bold text-white\/90 mb-4\">\u0631\u0633\u0645 \u0628\u064a\u0627\u0646\u064a: \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a<\/h3>\n                        <div id=\"vapor-pressure-lowering-graph\"><\/div>\n                    <\/div>\n                <\/section>\n\n                <section class=\"info-card\">\n                    <h2 class=\"section-title\">\n                        <i class=\"fas fa-thermometer-three-quarters section-icon\"><\/i>\n                        \u0663. \u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 (Boiling Point Elevation)\n                    <\/h2>\n                    <div class=\"bg-slate-800\/50 p-4 rounded-lg\">\n                        <h3 class=\"font-bold text-white\/90 mb-2\">\u0627\u0644\u062a\u0641\u0633\u064a\u0631 \u0627\u0644\u0639\u0644\u0645\u064a:<\/h3>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm\">\n                            <li>\u064a\u063a\u0644\u064a \u0627\u0644\u0633\u0627\u0626\u0644 \u0639\u0646\u062f\u0645\u0627 \u064a\u0633\u0627\u0648\u064a \u0636\u063a\u0637\u0647 \u0627\u0644\u0628\u062e\u0627\u0631\u064a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u062c\u0648\u064a.<\/li>\n                            <li>\u0628\u0633\u0628\u0628 \u0627\u0646\u062e\u0641\u0627\u0636 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a \u0644\u0644\u0645\u062d\u0644\u0648\u0644\u060c \u064a\u062d\u062a\u0627\u062c \u0625\u0644\u0649 \u062f\u0631\u062c\u0629 \u062d\u0631\u0627\u0631\u0629 \u0623\u0639\u0644\u0649 \u0644\u064a\u0635\u0644 \u0636\u063a\u0637\u0647 \u0627\u0644\u0628\u062e\u0627\u0631\u064a \u0625\u0644\u0649 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u062c\u0648\u064a.<\/li>\n                        <\/ul>\n                        <h3 class=\"font-bold text-white\/90 mt-4 mb-2\">\u0627\u0644\u0639\u0644\u0627\u0642\u0629 \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629:<\/h3>\n                        <div class=\"my-2 p-3 bg-black\/20 rounded font-mono text-yellow-300 text-center text-lg\" dir=\"ltr\">\u0394T<sub>b<\/sub> = K<sub>b<\/sub> \u00d7 m \u00d7 i<\/div>\n                        <p class=\"text-sm text-slate-300\">\u062d\u064a\u062b:<\/p>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm mt-1\">\n                            <li><code class=\"formula-box\">\u0394T<sub>b<\/sub><\/code>: \u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646<\/li>\n                            <li><code class=\"formula-box\">K<sub>b<\/sub><\/code>: \u062b\u0627\u0628\u062a \u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 \u0644\u0644\u0645\u0630\u064a\u0628<\/li>\n                            <li><code class=\"formula-box\">m<\/code>: \u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0648\u0644\u0627\u0644\u064a (\u0645\u0648\u0644\/\u0643\u062c\u0645)<\/li>\n                            <li><code class=\"formula-box\">i<\/code>: \u0645\u0639\u0627\u0645\u0644 \u0641\u0627\u0646\u062a \u0647\u0648\u0641 (\u0639\u062f\u062f \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0646\u0627\u062a\u062c\u0629 \u0645\u0646 \u0627\u0644\u0645\u0630\u0627\u0628)<\/li>\n                        <\/ul>\n                    <\/div>\n                    \n                    <div class=\"bg-slate-800\/50 p-4 rounded-lg mt-4\">\n                        <h3 class=\"font-bold text-white\/90 mb-2\">\u0627\u0644\u0642\u0648\u0627\u0646\u064a\u0646 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0644\u0644\u062a\u0631\u0643\u064a\u0632:<\/h3>\n                        <div class=\"space-y-2\">\n                            <div class=\"my-2 p-3 bg-black\/20 rounded font-mono text-yellow-300 text-center text-sm\" dir=\"ltr\">\u0639\u062f\u062f \u0627\u0644\u0645\u0648\u0644\u0627\u062a (mol) = \u0643\u062a\u0644\u0629 \u0627\u0644\u0645\u0630\u0627\u0628 (g) \/ \u0627\u0644\u0643\u062a\u0644\u0629 \u0627\u0644\u0645\u0648\u0644\u064a\u0629 (g\/mol)<\/div>\n                            <div class=\"my-2 p-3 bg-black\/20 rounded font-mono text-yellow-300 text-center text-sm\" dir=\"ltr\">\u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0648\u0644\u0627\u0644\u064a (m) = \u0639\u062f\u062f \u0645\u0648\u0644\u0627\u062a \u0627\u0644\u0645\u0630\u0627\u0628 (mol) \/ \u0643\u062a\u0644\u0629 \u0627\u0644\u0645\u0630\u064a\u0628 (kg)<\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"bg-slate-800\/50 p-4 rounded-lg mt-4\">\n                        <h3 class=\"font-bold text-white\/90 mb-2\">\u0634\u0631\u062d \u0645\u0639\u0627\u0645\u0644 \u0641\u0627\u0646\u062a \u0647\u0648\u0641 (i)<\/h3>\n                        <p class=\"text-sm text-slate-300 mb-3\">\u064a\u0645\u062b\u0644 \u0645\u0639\u0627\u0645\u0644 \u0641\u0627\u0646\u062a \u0647\u0648\u0641 \u0639\u062f\u062f \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a (\u0623\u064a\u0648\u0646\u0627\u062a \u0623\u0648 \u062c\u0632\u064a\u0626\u0627\u062a) \u0627\u0644\u0641\u0639\u0644\u064a\u0629 \u0627\u0644\u062a\u064a \u062a\u0646\u062a\u062c \u0645\u0646 \u0630\u0648\u0628\u0627\u0646 \u0648\u062d\u062f\u0629 \u0635\u064a\u063a\u0629 \u0648\u0627\u062d\u062f\u0629 \u0645\u0646 \u0627\u0644\u0645\u0630\u0627\u0628 \u0641\u064a \u0627\u0644\u0645\u0630\u064a\u0628. \u0648\u0647\u0648 \u0645\u0642\u064a\u0627\u0633 \u0644\u0645\u062f\u0649 \u062a\u0641\u0643\u0643 \u0627\u0644\u0645\u0630\u0627\u0628.<\/p>\n                        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n                            <div class=\"bg-black\/20 p-3 rounded-lg\">\n                                <h4 class=\"font-semibold text-white mb-1\">\u0627\u0644\u0645\u0648\u0627\u062f \u063a\u064a\u0631 \u0627\u0644\u0645\u062a\u0623\u064a\u0646\u0629 (Non-electrolytes)<\/h4>\n                                <p class=\"text-xs text-slate-400 mb-2\">\u062a\u0628\u0642\u0649 \u0639\u0644\u0649 \u0634\u0643\u0644 \u062c\u0632\u064a\u0626\u0627\u062a \u0648\u0644\u0627 \u062a\u062a\u0641\u0643\u0643.<\/p>\n                                <p class=\"font-mono text-yellow-300\">i = 1<\/p>\n                                <p class=\"text-xs text-slate-300 mt-1\"><strong>\u0623\u0645\u062b\u0644\u0629:<\/strong> \u0627\u0644\u0633\u0643\u0631 (C\u2081\u2082H\u2082\u2082O\u2081\u2081), \u0627\u0644\u064a\u0648\u0631\u064a\u0627 (CO(NH\u2082)\u2082)<\/p>\n                            <\/div>\n                            <div class=\"bg-black\/20 p-3 rounded-lg\">\n                                <h4 class=\"font-semibold text-white mb-1\">\u0627\u0644\u0645\u0648\u0627\u062f \u0627\u0644\u0645\u062a\u0623\u064a\u0646\u0629 (Electrolytes)<\/h4>\n                                <p class=\"text-xs text-slate-400 mb-2\">\u062a\u062a\u0641\u0643\u0643 \u0625\u0644\u0649 \u0623\u064a\u0648\u0646\u0627\u062a.<\/p>\n                                <p class=\"font-mono text-yellow-300\">i > 1<\/p>\n                                <p class=\"text-xs text-slate-300 mt-1\"><strong>\u0623\u0645\u062b\u0644\u0629:<\/strong><\/p>\n                                <ul class=\"text-xs text-slate-300 mt-1 space-y-1 font-mono\" dir=\"ltr\">\n                                    <li>NaCl \u2192 Na\u207a + Cl\u207b  (i=2)<\/li>\n                                    <li>CaCl\u2082 \u2192 Ca\u00b2\u207a + 2Cl\u207b (i=3)<\/li>\n                                <\/ul>\n                            <\/div>\n                        <\/div>\n                        <p class=\"mt-3 text-xs text-slate-400 p-2 bg-slate-900\/40 rounded-md\"><strong>\u0627\u0644\u0623\u0647\u0645\u064a\u0629:<\/strong> \u0643\u0644\u0645\u0627 \u0632\u0627\u062f\u062a \u0642\u064a\u0645\u0629 &#8216;i&#8217;\u060c \u0632\u0627\u062f \u0639\u062f\u062f \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a \u0641\u064a \u0627\u0644\u0645\u062d\u0644\u0648\u0644\u060c \u0648\u0628\u0627\u0644\u062a\u0627\u0644\u064a \u0632\u0627\u062f \u0627\u0644\u062a\u0623\u062b\u064a\u0631 \u0639\u0644\u0649 \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 (\u0645\u062b\u0644 \u0627\u0631\u062a\u0641\u0627\u0639 \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 \u0648\u0627\u0646\u062e\u0641\u0627\u0636 \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f).<\/p>\n                    <\/div>\n                    \n                    <!-- \u062c\u062f\u0648\u0644 \u062b\u0648\u0627\u0628\u062a \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 -->\n                    <div class=\"simulation-box\" id=\"boiling-point-constants-table-container\">\n                        <h3 class=\"text-xl font-bold text-white\/90 mb-4\">\u062b\u0648\u0627\u0628\u062a \u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0627\u0644\u0645\u0648\u0644\u0627\u0644\u064a \u0644\u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 (K_b) \u0644\u0628\u0639\u0636 \u0627\u0644\u0645\u0630\u064a\u0628\u0627\u062a \u0627\u0644\u0634\u0627\u0626\u0639\u0629<\/h3>\n                        <div id=\"boiling-point-constants-table\"><\/div>\n                    <\/div>\n                    \n                    <!-- \u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0631\u062a\u0641\u0627\u0639 \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 -->\n                    <div class=\"simulation-box\" id=\"boiling-point-elevation-simulation-container\">\n                        <h3 class=\"text-xl font-bold text-white\/90 mb-4\">\u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0631\u062a\u0641\u0627\u0639 \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646<\/h3>\n                        <div id=\"boiling-point-elevation-simulation\"><\/div>\n                    <\/div>\n                    \n                    <div class=\"mt-4 bg-slate-800 p-4 rounded-lg border-r-4 border-green-500\">\n                        <h4 class=\"font-bold text-green-400 mb-2 flex items-center gap-2 text-sm\">\n                            <i class=\"fas fa-pen\"><\/i> \u0623\u0645\u062b\u0644\u0629 \u062d\u0633\u0627\u0628\u064a\u0629\n                        <\/h4>\n                        <div class=\"space-y-4\">\n                            <div>\n                                <p class=\"text-slate-300 mb-2 text-sm\"><strong>\u0645\u062b\u0627\u0644 1 (\u0645\u0630\u0627\u0628 \u0644\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0644\u064a\u062a\u064a):<\/strong> \u0627\u062d\u0633\u0628 \u062f\u0631\u062c\u0629 \u063a\u0644\u064a\u0627\u0646 \u0645\u062d\u0644\u0648\u0644 \u0645\u062d\u0636\u0631 \u0628\u0625\u0630\u0627\u0628\u0629 34.2 \u062c\u0631\u0627\u0645 \u0645\u0646 \u0627\u0644\u0633\u0643\u0631 (\u0627\u0644\u0633\u0643\u0631\u0648\u0632\u060c C\u2081\u2082H\u2082\u2082O\u2081\u2081, \u0627\u0644\u0643\u062a\u0644\u0629 \u0627\u0644\u0645\u0648\u0644\u064a\u0629 = 342 g\/mol) \u0641\u064a 200 \u062c\u0631\u0627\u0645 \u0645\u0646 \u0627\u0644\u0645\u0627\u0621. (K<sub>b<\/sub> \u0644\u0644\u0645\u0627\u0621 = 0.512 \u00b0C\u00b7kg\/mol)<\/p>\n                                <div class=\"font-mono text-xs sm:text-sm text-green-100 bg-black\/40 p-3 rounded-md leading-relaxed\" dir=\"ltr\">\n                                    <p>1. Moles of solute = 34.2 g \/ 342 g\/mol = 0.1 mol<\/p>\n                                    <p>2. Mass of solvent (kg) = 200 g \/ 1000 = 0.2 kg<\/p>\n                                    <p>3. Molality (m) = 0.1 mol \/ 0.2 kg = 0.5 m<\/p>\n                                    <p>4. Van &#8216;t Hoff factor (i) = 1 (since sucrose is a non-electrolyte)<\/p>\n                                    <p>5. \u0394T<sub>b<\/sub> = K<sub>b<\/sub> \u00d7 m \u00d7 i = 0.512 \u00d7 0.5 \u00d7 1 = 0.256 \u00b0C<\/p>\n                                    <p>6. New Boiling Point = 100 \u00b0C + 0.256 \u00b0C = 100.256 \u00b0C<\/p>\n                                <\/div>\n                            <\/div>\n                            <div>\n                                <p class=\"text-slate-300 mb-2 text-sm\"><strong>\u0645\u062b\u0627\u0644 2 (\u0645\u0630\u0627\u0628 \u0625\u0644\u0643\u062a\u0631\u0648\u0644\u064a\u062a\u064a):<\/strong> \u0645\u0627 \u0647\u064a \u062f\u0631\u062c\u0629 \u063a\u0644\u064a\u0627\u0646 \u0645\u062d\u0644\u0648\u0644 \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 11.7 \u062c\u0631\u0627\u0645 \u0645\u0646 \u0645\u0644\u062d \u0627\u0644\u0637\u0639\u0627\u0645 (NaCl\u060c \u0627\u0644\u0643\u062a\u0644\u0629 \u0627\u0644\u0645\u0648\u0644\u064a\u0629 = 58.5 g\/mol) \u0645\u0630\u0627\u0628\u0629 \u0641\u064a 500 \u062c\u0631\u0627\u0645 \u0645\u0646 \u0627\u0644\u0645\u0627\u0621\u061f<\/p>\n                                <div class=\"font-mono text-xs sm:text-sm text-green-100 bg-black\/40 p-3 rounded-md leading-relaxed\" dir=\"ltr\">\n                                    <p>1. Moles of solute = 11.7 g \/ 58.5 g\/mol = 0.2 mol<\/p>\n                                    <p>2. Mass of solvent (kg) = 500 g \/ 1000 = 0.5 kg<\/p>\n                                    <p>3. Molality (m) = 0.2 mol \/ 0.5 kg = 0.4 m<\/p>\n                                    <p>4. Van &#8216;t Hoff factor (i) = 2 (since NaCl \u2192 Na\u207a + Cl\u207b)<\/p>\n                                    <p>5. \u0394T<sub>b<\/sub> = K<sub>b<\/sub> \u00d7 m \u00d7 i = 0.512 \u00d7 0.4 \u00d7 2 = 0.4096 \u00b0C<\/p>\n                                    <p>6. New Boiling Point = 100 \u00b0C + 0.4096 \u00b0C \u2248 100.41 \u00b0C<\/p>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/section>\n\n                <section class=\"info-card\">\n                    <h2 class=\"section-title\">\n                        <i class=\"fas fa-snowflake section-icon\"><\/i>\n                        \u0664. \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f (Freezing Point Depression)\n                    <\/h2>\n                    <div class=\"bg-slate-800\/50 p-4 rounded-lg\">\n                        <h3 class=\"font-bold text-white\/90 mb-2\">\u0627\u0644\u062a\u0641\u0633\u064a\u0631 \u0627\u0644\u0639\u0644\u0645\u064a:<\/h3>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm\">\n                            <li>\u062a\u0639\u064a\u0642 \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u0630\u0627\u0628 \u0627\u0646\u062a\u0638\u0627\u0645 \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u0630\u064a\u0628 \u0641\u064a \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0628\u0644\u0648\u0631\u064a\u0629.<\/li>\n                            <li>\u064a\u062d\u062a\u0627\u062c \u0627\u0644\u0645\u0630\u064a\u0628 \u0625\u0644\u0649 \u062f\u0631\u062c\u0629 \u062d\u0631\u0627\u0631\u0629 \u0623\u0642\u0644 \u0644\u062a\u062a\u062c\u0645\u062f \u062c\u0633\u064a\u0645\u0627\u062a\u0647.<\/li>\n                        <\/ul>\n                        <h3 class=\"font-bold text-white\/90 mt-4 mb-2\">\u0627\u0644\u0639\u0644\u0627\u0642\u0629 \u0627\u0644\u0631\u064a\u0627\u0636\u064a\u0629:<\/h3>\n                        <div class=\"my-2 p-3 bg-black\/20 rounded font-mono text-yellow-300 text-center text-lg\" dir=\"ltr\">\u0394T<sub>f<\/sub> = K<sub>f<\/sub> \u00d7 m \u00d7 i<\/div>\n                        <p class=\"text-sm text-slate-300\">\u062d\u064a\u062b:<\/p>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm mt-1\">\n                            <li><code class=\"formula-box\">\u0394T<sub>f<\/sub><\/code>: \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f<\/li>\n                            <li><code class=\"formula-box\">K<sub>f<\/sub><\/code>: \u062b\u0627\u0628\u062a \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f \u0644\u0644\u0645\u0630\u064a\u0628<\/li>\n                        <\/ul>\n                        <h3 class=\"font-bold text-white\/90 mt-4 mb-2\">\u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629:<\/h3>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm\">\n                            <li>\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062c\u0644\u064a\u062f \u0645\u0646 \u0627\u0644\u0637\u0631\u0642: \u0628\u0631\u0634 \u0627\u0644\u0645\u0644\u062d (NaCl) \u0623\u0648 \u0643\u0644\u0648\u0631\u064a\u062f \u0627\u0644\u0643\u0627\u0644\u0633\u064a\u0648\u0645 (CaCl\u2082).<\/li>\n                            <li>\u0645\u0628\u0631\u062f\u0627\u062a \u0627\u0644\u0633\u064a\u0627\u0631\u0627\u062a: \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0625\u064a\u062b\u064a\u0644\u064a\u0646 \u062c\u0644\u0627\u064a\u0643\u0648\u0644 \u0644\u0645\u0646\u0639 \u062a\u062c\u0645\u062f \u0627\u0644\u0645\u0627\u0621.<\/li>\n                        <\/ul>\n                    <\/div>\n                    \n                    <!-- \u062c\u062f\u0648\u0644 \u062b\u0648\u0627\u0628\u062a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f -->\n                    <div class=\"simulation-box\" id=\"freezing-point-constants-table-container\">\n                        <h3 class=\"text-xl font-bold text-white\/90 mb-4\">\u062b\u0648\u0627\u0628\u062a \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0627\u0644\u0645\u0648\u0644\u0627\u0644\u064a \u0644\u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f (K_f) \u0644\u0628\u0639\u0636 \u0627\u0644\u0645\u0630\u064a\u0628\u0627\u062a \u0627\u0644\u0634\u0627\u0626\u0639\u0629<\/h3>\n                        <div id=\"freezing-point-constants-table\"><\/div>\n                    <\/div>\n                    \n                    <!-- \u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f -->\n                    <div class=\"simulation-box\" id=\"freezing-point-depression-simulation-container\">\n                        <h3 class=\"text-xl font-bold text-white\/90 mb-4\">\u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f<\/h3>\n                        <div id=\"freezing-point-depression-simulation\"><\/div>\n                    <\/div>\n                    \n                    <div class=\"mt-4 bg-slate-800 p-4 rounded-lg border-r-4 border-green-500\">\n                        <h4 class=\"font-bold text-green-400 mb-2 flex items-center gap-2 text-sm\">\n                            <i class=\"fas fa-pen\"><\/i> \u0623\u0645\u062b\u0644\u0629 \u062d\u0633\u0627\u0628\u064a\u0629\n                        <\/h4>\n                        <div class=\"space-y-4\">\n                            <div>\n                                <p class=\"text-slate-300 mb-2 text-sm\"><strong>\u0645\u062b\u0627\u0644 1 (\u0645\u0630\u0627\u0628 \u0644\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0644\u064a\u062a\u064a):<\/strong> \u0627\u062d\u0633\u0628 \u062f\u0631\u062c\u0629 \u062a\u062c\u0645\u062f \u0645\u062d\u0644\u0648\u0644 \u0645\u062d\u0636\u0631 \u0628\u0625\u0630\u0627\u0628\u0629 18 \u062c\u0631\u0627\u0645 \u0645\u0646 \u0627\u0644\u062c\u0644\u0648\u0643\u0648\u0632 (C\u2086H\u2081\u2082O\u2086\u060c \u0627\u0644\u0643\u062a\u0644\u0629 \u0627\u0644\u0645\u0648\u0644\u064a\u0629 = 180 g\/mol) \u0641\u064a 250 \u062c\u0631\u0627\u0645 \u0645\u0646 \u0627\u0644\u0645\u0627\u0621. (K<sub>f<\/sub> \u0644\u0644\u0645\u0627\u0621 = 1.86 \u00b0C\u00b7kg\/mol)<\/p>\n                                <div class=\"font-mono text-xs sm:text-sm text-green-100 bg-black\/40 p-3 rounded-md leading-relaxed\" dir=\"ltr\">\n                                    <p>1. Moles of solute = 18 g \/ 180 g\/mol = 0.1 mol<\/p>\n                                    <p>2. Mass of solvent (kg) = 250 g \/ 1000 = 0.25 kg<\/p>\n                                    <p>3. Molality (m) = 0.1 mol \/ 0.25 kg = 0.4 m<\/p>\n                                    <p>4. Van &#8216;t Hoff factor (i) = 1 (non-electrolyte)<\/p>\n                                    <p>5. \u0394T<sub>f<\/sub> = K<sub>f<\/sub> \u00d7 m \u00d7 i = 1.86 \u00d7 0.4 \u00d7 1 = 0.744 \u00b0C<\/p>\n                                    <p>6. New Freezing Point = 0 \u00b0C &#8211; 0.744 \u00b0C = -0.744 \u00b0C<\/p>\n                                <\/div>\n                            <\/div>\n                            <div>\n                                <p class=\"text-slate-300 mb-2 text-sm\"><strong>\u0645\u062b\u0627\u0644 2 (\u0645\u0630\u0627\u0628 \u0625\u0644\u0643\u062a\u0631\u0648\u0644\u064a\u062a\u064a):<\/strong> \u0627\u062d\u0633\u0628 \u062f\u0631\u062c\u0629 \u062a\u062c\u0645\u062f \u0645\u062d\u0644\u0648\u0644 \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 11.1 \u062c\u0631\u0627\u0645 \u0645\u0646 \u0643\u0644\u0648\u0631\u064a\u062f \u0627\u0644\u0643\u0627\u0644\u0633\u064a\u0648\u0645 (CaCl\u2082\u060c \u0627\u0644\u0643\u062a\u0644\u0629 \u0627\u0644\u0645\u0648\u0644\u064a\u0629 = 111 g\/mol) \u0645\u0630\u0627\u0628\u0629 \u0641\u064a 500 \u062c\u0631\u0627\u0645 \u0645\u0646 \u0627\u0644\u0645\u0627\u0621.<\/p>\n                                <div class=\"font-mono text-xs sm:text-sm text-green-100 bg-black\/40 p-3 rounded-md leading-relaxed\" dir=\"ltr\">\n                                    <p>1. Moles of solute = 11.1 g \/ 111 g\/mol = 0.1 mol<\/p>\n                                    <p>2. Mass of solvent (kg) = 500 g \/ 1000 = 0.5 kg<\/p>\n                                    <p>3. Molality (m) = 0.1 mol \/ 0.5 kg = 0.2 m<\/p>\n                                    <p>4. Van &#8216;t Hoff factor (i) = 3 (since CaCl\u2082 \u2192 Ca\u00b2\u207a + 2Cl\u207b)<\/p>\n                                    <p>5. \u0394T<sub>f<\/sub> = K<sub>f<\/sub> \u00d7 m \u00d7 i = 1.86 \u00d7 0.2 \u00d7 3 = 1.116 \u00b0C<\/p>\n                                    <p>6. New Freezing Point = 0 \u00b0C &#8211; 1.116 \u00b0C = -1.116 \u00b0C<\/p>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/section>\n\n                <section class=\"info-card\">\n                    <h2 class=\"section-title\">\n                        <i class=\"fas fa-exchange-alt section-icon\"><\/i>\n                        \u0665. \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a (Osmotic Pressure)\n                    <\/h2>\n                    <div class=\"bg-slate-800\/50 p-4 rounded-lg\">\n                        <h3 class=\"font-bold text-white\/90 mb-2\">\u0627\u0644\u062a\u0641\u0633\u064a\u0631 \u0627\u0644\u0639\u0644\u0645\u064a:<\/h3>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm\">\n                            <li><strong class=\"text-white\">\u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a\u0629:<\/strong> \u0627\u0646\u062a\u0634\u0627\u0631 \u0627\u0644\u0645\u0630\u064a\u0628 \u0639\u0628\u0631 \u063a\u0634\u0627\u0621 \u0634\u0628\u0647 \u0645\u0646\u0641\u0630 \u0645\u0646 \u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0623\u0642\u0644 \u062a\u0631\u0643\u064a\u0632\u0627\u064b \u0625\u0644\u0649 \u0627\u0644\u0645\u0646\u0637\u0642\u0629 \u0627\u0644\u0623\u0639\u0644\u0649 \u062a\u0631\u0643\u064a\u0632\u0627\u064b.<\/li>\n                            <li><strong class=\"text-white\">\u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a:<\/strong> \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0644\u0627\u0632\u0645 \u0644\u0645\u0646\u0639 \u062d\u062f\u0648\u062b \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a\u0629.<\/li>\n                        <\/ul>\n                        <h3 class=\"font-bold text-white\/90 mt-4 mb-2\">\u0623\u0647\u0645\u064a\u062a\u0647 \u0627\u0644\u062d\u064a\u0648\u064a\u0629:<\/h3>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm\">\n                            <li>\u0627\u0645\u062a\u0635\u0627\u0635 \u0627\u0644\u0645\u0627\u0621 \u0641\u064a \u0627\u0644\u0646\u0628\u0627\u062a\u0627\u062a.<\/li>\n                            <li>\u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0627\u0644\u062d\u064a\u0648\u064a\u0629 \u0641\u064a \u062e\u0644\u0627\u064a\u0627 \u0627\u0644\u062c\u0633\u0645.<\/li>\n                        <\/ul>\n                    <\/div>\n                    \n                    <!-- \u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a -->\n                    <div class=\"simulation-box\" id=\"osmosis-simulation-container\">\n                        <h3 class=\"text-xl font-bold text-white\/90 mb-4\">\u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a<\/h3>\n                        <div id=\"osmosis-simulation\"><\/div>\n                    <\/div>\n                <\/section>\n\n                <section class=\"info-card\">\n                    <h2 class=\"section-title\">\n                        <i class=\"fas fa-atom section-icon\"><\/i>\n                        \u0666. \u062a\u0623\u062b\u064a\u0631 \u0646\u0648\u0639 \u0627\u0644\u0645\u0630\u0627\u0628 (\u0645\u062a\u0623\u064a\u0646 vs \u063a\u064a\u0631 \u0645\u062a\u0623\u064a\u0646)\n                    <\/h2>\n                    <div class=\"bg-slate-800\/50 p-4 rounded-lg\">\n                        <h3 class=\"font-bold text-white\/90 mb-2\">\u0645\u0642\u0627\u0631\u0646\u0629 \u0645\u0647\u0645\u0629:<\/h3>\n                        <ul class=\"lesson-list space-y-1 text-slate-300 text-sm\">\n                            <li><strong class=\"text-white\">\u0627\u0644\u0645\u0627\u062f\u0629 \u0627\u0644\u0645\u062a\u0623\u064a\u0646\u0629 (\u0645\u062b\u0644 NaCl):<\/strong> \u062a\u062a\u0641\u0643\u0643 \u0625\u0644\u0649 \u0623\u064a\u0648\u0646\u0627\u062a \u2190 \u0639\u062f\u062f \u062c\u0633\u064a\u0645\u0627\u062a \u0623\u0643\u0628\u0631 \u2190 \u062a\u0623\u062b\u064a\u0631 \u0623\u0643\u0628\u0631 \u0639\u0644\u0649 \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629.<\/li>\n                            <li><strong class=\"text-white\">\u0627\u0644\u0645\u0627\u062f\u0629 \u063a\u064a\u0631 \u0627\u0644\u0645\u062a\u0623\u064a\u0646\u0629 (\u0645\u062b\u0644 \u0633\u0643\u0631 \u0627\u0644\u062c\u0644\u0648\u0643\u0648\u0632):<\/strong> \u062a\u0628\u0642\u0649 \u0643\u062c\u0632\u064a\u0626\u0627\u062a \u2190 \u0639\u062f\u062f \u062c\u0633\u064a\u0645\u0627\u062a \u0623\u0642\u0644 \u2190 \u062a\u0623\u062b\u064a\u0631 \u0623\u0642\u0644.<\/li>\n                        <\/ul>\n                        <div class=\"mt-4 bg-slate-800 p-4 rounded-lg border-r-4 border-green-500\">\n                            <h4 class=\"font-bold text-green-400 mb-2 flex items-center gap-2 text-sm\">\n                                <i class=\"fas fa-pen\"><\/i> \u0645\u062b\u0627\u0644 \u062a\u0648\u0636\u064a\u062d\u064a\n                            <\/h4>\n                            <div class=\"font-mono text-xs sm:text-sm text-green-100 bg-black\/40 p-3 rounded-md space-y-2\" dir=\"ltr\">\n                                <p>\u0645\u062d\u0644\u0648\u0644 NaCl (0.1 m):<br> i = 2 \u2192 \u0394T<sub>b<\/sub> = 0.512 \u00d7 0.1 \u00d7 2 = 0.1024 \u00b0C<\/p>\n                                <p>\u0645\u062d\u0644\u0648\u0644 C\u2086H\u2081\u2082O\u2086 (0.1 m):<br> i = 1 \u2192 \u0394T<sub>b<\/sub> = 0.512 \u00d7 0.1 \u00d7 1 = 0.0512 \u00b0C<\/p>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/section>\n\n                <section class=\"info-card\">\n                    <h2 class=\"section-title\">\n                        <i class=\"fas fa-cogs section-icon\"><\/i>\n                        \u0667. \u0627\u0644\u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u064a\u0629 \u0641\u064a \u0627\u0644\u062d\u064a\u0627\u0629 \u0627\u0644\u064a\u0648\u0645\u064a\u0629:\n                    <\/h2>\n                    <ol class=\"lesson-list space-y-2 text-slate-300 marker:text-purple-400 bg-slate-800\/50 p-4 rounded-lg text-sm sm:text-base\">\n                        <li><strong>\u0637\u0647\u064a \u0627\u0644\u0637\u0639\u0627\u0645 \u0641\u064a \u0627\u0644\u0645\u0631\u062a\u0641\u0639\u0627\u062a:<\/strong> \u064a\u0646\u0636\u062c \u0627\u0644\u0637\u0639\u0627\u0645 \u0628\u062f\u0631\u062c\u0629 \u062d\u0631\u0627\u0631\u0629 \u0623\u0642\u0644 \u0628\u0633\u0628\u0628 \u0627\u0646\u062e\u0641\u0627\u0636 \u062f\u0631\u062c\u0629 \u063a\u0644\u064a\u0627\u0646 \u0627\u0644\u0645\u0627\u0621.<\/li>\n                        <li><strong>\u0625\u0632\u0627\u0644\u0629 \u0627\u0644\u062c\u0644\u064a\u062f \u0645\u0646 \u0627\u0644\u0637\u0631\u0642\u0627\u062a:<\/strong> \u064a\u0645\u0646\u0639 \u0627\u0644\u0645\u0644\u062d \u062a\u0643\u0648\u0646 \u0627\u0644\u062c\u0644\u064a\u062f \u0628\u0627\u0646\u062e\u0641\u0627\u0636\u0647 \u062f\u0631\u062c\u0629 \u062a\u062c\u0645\u062f \u0627\u0644\u0645\u0627\u0621.<\/li>\n                        <li><strong>\u0635\u0646\u0627\u0639\u0629 \u0627\u0644\u0645\u062b\u0644\u062c\u0627\u062a:<\/strong> \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0645\u0644\u062d \u0625\u0644\u0649 \u0627\u0644\u062b\u0644\u062c \u064a\u062e\u0641\u0636 \u062f\u0631\u062c\u0629 \u062a\u062c\u0645\u062f\u0647 \u0641\u064a\u0645\u0643\u0646\u0647 \u0627\u0645\u062a\u0635\u0627\u0635 \u062d\u0631\u0627\u0631\u0629 \u0623\u0643\u062b\u0631.<\/li>\n                        <li><strong>\u0627\u0644\u0637\u0628\u062e \u0628\u0633\u0631\u0639\u0629:<\/strong> \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0645\u0644\u062d \u0625\u0644\u0649 \u0627\u0644\u0645\u0627\u0621 \u064a\u0631\u0641\u0639 \u0642\u0644\u064a\u0644\u0627\u064b \u0645\u0646 \u062f\u0631\u062c\u0629 \u063a\u0644\u064a\u0627\u0646\u0647.<\/li>\n                    <\/ol>\n                <\/section>\n\n                <section class=\"info-card\">\n                    <h2 class=\"section-title\">\n                        <i class=\"fas fa-calculator section-icon\"><\/i>\n                        &#x1f4dd; \u0645\u0644\u062e\u0635 \u0627\u0644\u0645\u0639\u0627\u062f\u0644\u0627\u062a \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629\n                    <\/h2>\n                    <div class=\"overflow-x-auto bg-black\/20 rounded-lg border border-white\/10\">\n                        <table class=\"lesson-table\">\n                            <thead class=\"bg-white\/10 text-xs text-slate-200 uppercase tracking-wider\">\n                                <tr>\n                                    <th scope=\"col\" class=\"px-6 py-3\">\u0627\u0644\u062e\u0627\u0635\u064a\u0629<\/th>\n                                    <th scope=\"col\" class=\"px-6 py-3\">\u0627\u0644\u0645\u0639\u0627\u062f\u0644\u0629<\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody>\n                                <tr class=\"border-b border-white\/10\">\n                                    <td class=\"px-6 py-4 font-bold\">\u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646<\/td>\n                                    <td class=\"px-6 py-4 font-mono text-yellow-300\" dir=\"ltr\">\u0394T<sub>b<\/sub> = K<sub>b<\/sub> \u00d7 m \u00d7 i<\/td>\n                                <\/tr>\n                                <tr>\n                                    <td class=\"px-6 py-4 font-bold\">\u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f<\/td>\n                                    <td class=\"px-6 py-4 font-mono text-yellow-300\" dir=\"ltr\">\u0394T<sub>f<\/sub> = K<sub>f<\/sub> \u00d7 m \u00d7 i<\/td>\n                                <\/tr>\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                <\/section>\n\n                <section class=\"bg-yellow-900\/20 p-4 rounded-xl border-l-4 border-yellow-400 mt-6\">\n                    <h2 class=\"text-xl font-semibold text-yellow-300 mb-3 flex items-center gap-2\">\n                        <i class=\"fas fa-question-circle\"><\/i>\n                        &#x1f50d; \u0623\u0633\u0626\u0644\u0629 \u0645\u0631\u0627\u062c\u0639\u0629 \u0645\u0647\u0645\u0629\n                    <\/h2>\n                    <div class=\"space-y-4 text-slate-300 text-sm\">\n                        <p>1. \u0644\u0645\u0627\u0630\u0627 \u064a\u063a\u0644\u064a \u0645\u062d\u0644\u0648\u0644 \u0627\u0644\u0645\u0644\u062d \u0641\u064a \u0627\u0644\u0645\u0627\u0621 \u0639\u0646\u062f \u062f\u0631\u062c\u0629 \u062d\u0631\u0627\u0631\u0629 \u0623\u0639\u0644\u0649 \u0645\u0646 \u0627\u0644\u0645\u0627\u0621 \u0627\u0644\u0646\u0642\u064a\u061f<\/p>\n                        <p>2. \u0643\u064a\u0641 \u062a\u0641\u0633\u0631 \u0623\u0646 \u0625\u0636\u0627\u0641\u0629 \u0627\u0644\u0645\u0644\u062d \u0625\u0644\u0649 \u0627\u0644\u062b\u0644\u062c \u062a\u0633\u0628\u0628 \u0641\u064a \u0627\u0646\u0635\u0647\u0627\u0631\u0647\u061f<\/p>\n                        <p>3. \u0645\u0627 \u0627\u0644\u0641\u0631\u0642 \u0641\u064a \u062a\u0623\u062b\u064a\u0631 \u0643\u0644 \u0645\u0646 NaCl \u0648C\u2086H\u2081\u2082O\u2086 \u0639\u0644\u0649 \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0644\u0644\u0645\u062d\u0627\u0644\u064a\u0644\u061f<\/p>\n                        <p>4. \u0643\u064a\u0641 \u064a\u062a\u0645 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0638\u0627\u0647\u0631\u0629 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a\u0629 \u0641\u064a \u062a\u0646\u0642\u064a\u0629 \u0627\u0644\u0645\u064a\u0627\u0647 (\u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a\u0629 \u0627\u0644\u0639\u0643\u0633\u064a\u0629)\u061f<\/p>\n                    <\/div>\n                <\/section>\n\n                <section class=\"bg-blue-900\/20 p-4 rounded-xl border-l-4 border-blue-400 mt-6\">\n                    <h2 class=\"text-xl font-semibold text-blue-300 mb-3 flex items-center gap-2\">\n                        <i class=\"fas fa-lightbulb\"><\/i>\n                        &#x1f3af; \u0646\u0635\u0627\u0626\u062d \u0644\u0644\u062f\u0631\u0627\u0633\u0629\n                    <\/h2>\n                    <div class=\"space-y-4 text-slate-300 text-sm\">\n                        <p><strong>\u0661. \u0627\u0631\u0633\u0645 \u0645\u062e\u0637\u0637 \u0645\u0642\u0627\u0631\u0646:<\/strong> \u0627\u0644\u0645\u0630\u064a\u0628 \u0627\u0644\u0646\u0642\u064a \u2190 \u0636\u063a\u0637 \u0628\u062e\u0627\u0631\u064a \u0639\u0627\u0644\u064a | \u0627\u0644\u0645\u062d\u0644\u0648\u0644 \u2190 \u0636\u063a\u0637 \u0628\u062e\u0627\u0631\u064a \u0645\u0646\u062e\u0641\u0636 \u2190 \u064a\u062d\u062a\u0627\u062c \u062d\u0631\u0627\u0631\u0629 \u0623\u0639\u0644\u0649 \u0644\u064a\u063a\u0644\u064a.<\/p>\n                        <div>\n                            <h3 class=\"font-bold text-white\">\u0662. \u0627\u0633\u062a\u062e\u062f\u0645 \u062c\u062f\u0648\u0644 \u0627\u0644\u0645\u0642\u0627\u0631\u0646\u0629:<\/h3>\n                            <table class=\"w-full text-xs text-center text-slate-300 mt-1\">\n                                <thead class=\"bg-black\/20\"><tr><th class=\"p-1\">\u0627\u0644\u062e\u0627\u0635\u064a\u0629<\/th><th class=\"p-1\">\u0627\u0644\u0645\u0630\u064a\u0628 \u0627\u0644\u0646\u0642\u064a<\/th><th class=\"p-1\">\u0627\u0644\u0645\u062d\u0644\u0648\u0644<\/th><\/tr><\/thead>\n                                <tbody>\n                                    <tr><td class=\"p-1\">\u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646<\/td><td class=\"p-1\">\u0623\u0642\u0644<\/td><td class=\"p-1\">\u0623\u0639\u0644\u0649<\/td><\/tr>\n                                    <tr><td class=\"p-1\">\u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f<\/td><td class=\"p-1\">\u0623\u0639\u0644\u0649<\/td><td class=\"p-1\">\u0623\u0642\u0644<\/td><\/tr>\n                                    <tr><td class=\"p-1\">\u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a<\/td><td class=\"p-1\">\u0623\u0639\u0644\u0649<\/td><td class=\"p-1\">\u0623\u0642\u0644<\/td><\/tr>\n                                <\/tbody>\n                            <\/table>\n                        <\/div>\n                        <p><strong>\u0663. \u062a\u062f\u0631\u0651\u0628 \u0639\u0644\u0649 \u062a\u0645\u064a\u064a\u0632 \u0646\u0648\u0639 \u0627\u0644\u0645\u0630\u0627\u0628:<\/strong> \u0645\u062a\u0623\u064a\u0646 (NaCl, CaCl\u2082) \u2190 i > 1 \u2190 \u062a\u0623\u062b\u064a\u0631 \u0623\u0643\u0628\u0631 | \u063a\u064a\u0631 \u0645\u062a\u0623\u064a\u0646 (\u0633\u0643\u0631) \u2190 i = 1 \u2190 \u062a\u0623\u062b\u064a\u0631 \u0623\u0642\u0644.<\/p>\n                        <div>\n                            <h3 class=\"font-bold text-white\">\u0664. \u0646\u0635\u0627\u0626\u062d \u0644\u062d\u0644 \u0627\u0644\u0645\u0633\u0627\u0626\u0644:<\/h3>\n                            <ol class=\"lesson-list mt-1\">\n                                <li>\u0627\u0643\u062a\u0628 \u0627\u0644\u0645\u0639\u0637\u064a\u0627\u062a \u0648\u0627\u0644\u0645\u0637\u0644\u0648\u0628.<\/li>\n                                <li>\u0627\u062e\u062a\u0631 \u0627\u0644\u0642\u0627\u0646\u0648\u0646 \u0627\u0644\u0645\u0646\u0627\u0633\u0628.<\/li>\n                                <li>\u062a\u0623\u0643\u062f \u0645\u0646 \u0627\u0644\u0648\u062d\u062f\u0627\u062a (\u062e\u0627\u0635\u0629 \u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629 \u0628\u0627\u0644\u0643\u0644\u0641\u0646 \u0644\u0644\u0645\u0633\u0627\u0626\u0644 \u0627\u0644\u062a\u064a \u0644\u0627 \u062a\u0633\u062a\u062e\u062f\u0645 \u0394T).<\/li>\n                                <li>\u062a\u062d\u0642\u0642 \u0645\u0646 \u0645\u0639\u0627\u0645\u0644 \u0641\u0627\u0646\u062a \u0647\u0648\u0641 (i).<\/li>\n                            <\/ol>\n                        <\/div>\n                        <div>\n                            <h3 class=\"font-bold text-white\">&#x26a1; \u0646\u0635\u0627\u0626\u062d \u0633\u0631\u064a\u0639\u0629 \u0644\u0644\u062d\u0641\u0638:<\/h3>\n                            <ul class=\"lesson-list mt-1\">\n                                <li>\u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a \u2190 <strong class=\"text-white\">\u064a\u0642\u0644<\/strong> \u0641\u064a \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644.<\/li>\n                                <li>\u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 \u2190 <strong class=\"text-white\">\u062a\u0632\u064a\u062f<\/strong> \u0641\u064a \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644.<\/li>\n                                <li>\u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f \u2190 <strong class=\"text-white\">\u062a\u0642\u0644<\/strong> \u0641\u064a \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644.<\/li>\n                                <li>\u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644 \u0627\u0644\u0645\u0631\u0643\u0632\u0629 \u2190 \u062a\u0623\u062b\u064a\u0631 \u0623\u0643\u0628\u0631 \u0639\u0644\u0649 \u0627\u0644\u062e\u0635\u0627\u0626\u0635.<\/li>\n                            <\/ul>\n                        <\/div>\n                    <\/div>\n                <\/section>\n            <\/div>\n        <\/main>\n    <\/div>\n\n    <!-- \u062c\u0645\u064a\u0639 \u0623\u0643\u0648\u0627\u062f JavaScript \u0644\u0644\u0645\u062d\u0627\u0643\u064a\u0627\u062a -->\n    <script>\n        \/\/ ============================================\n        \/\/ 1. \u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0631\u062a\u0641\u0627\u0639 \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646\n        \/\/ ============================================\n        (function() {\n            const container = document.getElementById('boiling-point-elevation-simulation');\n            if (!container) return;\n            \n            container.innerHTML = `\n                <div class=\"not-prose my-8 p-4 sm:p-6 bg-black\/20 rounded-lg border border-white\/10\">\n                    <div class=\"flex justify-between items-center mb-2\">\n                        <h3 class=\"text-xl font-bold text-white\/90\">\u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0631\u062a\u0641\u0627\u0639 \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646<\/h3>\n                        <button id=\"bp-reset-btn\" class=\"p-2 rounded-full hover:bg-white\/10 transition-colors text-2xl font-bold text-slate-400\" aria-label=\"\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646\">\u27f3<\/button>\n                    <\/div>\n                    <div class=\"relative flex justify-center items-center\">\n                        <canvas id=\"bp-canvas\" width=\"450\" height=\"350\" class=\"rounded-md\"><\/canvas>\n                        <div class=\"absolute top-2 left-1\/2 -translate-x-1\/2\" id=\"bp-pressure-gauge\"><\/div>\n                        <div class=\"absolute -bottom-8 left-1\/2 -translate-x-1\/2\">\n                            <span id=\"bp-fire-icon\" class=\"text-orange-400 text-4xl transition-all duration-300\" style=\"opacity: 0; transform: scale(0.5)\">&#x1f525;<\/span>\n                        <\/div>\n                    <\/div>\n                    <div id=\"bp-status-text\" class=\"mt-4 text-center p-3 rounded-md transition-colors bg-slate-800\/40\">\n                        <p id=\"bp-status-text-content\" class=\"font-bold text-slate-300\">\u0627\u0644\u0633\u0627\u0626\u0644 \u0641\u064a \u062f\u0631\u062c\u0629 \u062d\u0631\u0627\u0631\u0629 \u0627\u0644\u063a\u0631\u0641\u0629.<\/p>\n                    <\/div>\n                    <div class=\"grid grid-cols-1 md:grid-cols-3 gap-4 mt-4 border-t border-white\/10 pt-4\">\n                        <div>\n                            <label for=\"bp-heating-slider\" class=\"font-semibold mb-2 text-slate-300 text-center block\">\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u062a\u0633\u062e\u064a\u0646<\/label>\n                            <div class=\"flex items-center gap-3\">\n                                <button id=\"bp-heating-decrease\" class=\"p-1 rounded-full bg-slate-700 hover:bg-slate-600 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\" aria-label=\"\u062a\u0642\u0644\u064a\u0644 \u0627\u0644\u062a\u0633\u062e\u064a\u0646\">\n                                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-5 w-5 text-slate-200\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n                                        <path fillRule=\"evenodd\" d=\"M5 10a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1z\" clipRule=\"evenodd\" \/>\n                                    <\/svg>\n                                <\/button>\n                                <input id=\"bp-heating-slider\" type=\"range\" min=\"0\" max=\"10\" step=\"1\" value=\"0\" class=\"w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-red-400\" \/>\n                                <button id=\"bp-heating-increase\" class=\"p-1 rounded-full bg-slate-700 hover:bg-slate-600 disabled:opacity-50 disabled:cursor-not-allowed transition-colors\" aria-label=\"\u0632\u064a\u0627\u062f\u0629 \u0627\u0644\u062a\u0633\u062e\u064a\u0646\">\n                                    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-5 w-5 text-slate-200\" viewBox=\"0 0 20 20\" fill=\"currentColor\">\n                                        <path fillRule=\"evenodd\" d=\"M10 5a1 1 0 011 1v3h3a1 1 0 110 2h-3v3a1 1 0 11-2 0v-3H6a1 1 0 110-2h3V6a1 1 0 011-1z\" clipRule=\"evenodd\" \/>\n                                    <\/svg>\n                                <\/button>\n                            <\/div>\n                            <p id=\"bp-temperature-display\" class=\"text-center text-sm mt-1\">\u0627\u0644\u062d\u0631\u0627\u0631\u0629: <span class=\"font-mono font-bold text-white\">20 \u00b0C<\/span><\/p>\n                        <\/div>\n                        <div>\n                            <label for=\"bp-solute-amount\" class=\"font-semibold mb-2 text-slate-300 text-center block\">\u0643\u0645\u064a\u0629 \u0627\u0644\u0645\u0630\u0627\u0628<\/label>\n                            <input id=\"bp-solute-amount\" type=\"range\" min=\"0\" max=\"10\" step=\"1\" value=\"0\" class=\"w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-orange-400\" \/>\n                            <p id=\"bp-boiling-point-display\" class=\"text-center text-sm mt-1\">\u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646: <span class=\"font-mono font-bold text-white\">100.0 \u00b0C<\/span><\/p>\n                        <\/div>\n                        <div>\n                            <label class=\"font-semibold mb-2 text-slate-300 text-center block\">\u0646\u0648\u0639 \u0627\u0644\u0645\u0630\u0627\u0628<\/label>\n                            <div id=\"bp-solute-buttons\" class=\"flex gap-1 p-1 bg-slate-700\/50 rounded-lg\">\n                                <!-- \u0633\u064a\u062a\u0645 \u0645\u0644\u0624\u0647\u0627 \u062f\u064a\u0646\u0627\u0645\u064a\u0643\u064a\u064b\u0627 -->\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <p class=\"mt-4 text-sm text-center text-slate-400 p-3 bg-slate-800\/40 rounded-md\">\n                        \u0627\u0644\u063a\u0644\u064a\u0627\u0646 \u064a\u062d\u062f\u062b \u0639\u0646\u062f\u0645\u0627 \u064a\u0635\u0644 <span class=\"font-bold text-green-300\">\u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a<\/span> \u0625\u0644\u0649 <span class=\"font-bold text-white\">\u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u062c\u0648\u064a<\/span>. \u0644\u0627\u062d\u0638 \u0643\u064a\u0641 \u0623\u0646 \u0625\u0636\u0627\u0641\u0629 <span class=\"font-bold text-orange-400\">\u0627\u0644\u0645\u0630\u0627\u0628<\/span> \u064a\u0639\u064a\u0642 \u062c\u0632\u064a\u0626\u0627\u062a \u0627\u0644\u0645\u0630\u064a\u0628 \u0645\u0646 \u0627\u0644\u062a\u0628\u062e\u0631\u060c \u0645\u0645\u0627 \u064a\u062a\u0637\u0644\u0628 \u062f\u0631\u062c\u0629 \u062d\u0631\u0627\u0631\u0629 \u0623\u0639\u0644\u0649 \u0644\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u063a\u0644\u064a\u0627\u0646.\n                    <\/p>\n                <\/div>\n            `;\n            \n            \/\/ \u062a\u0639\u0631\u064a\u0641 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0630\u0627\u0628\n            const SOLUTES = {\n                sucrose: { name: '\u0627\u0644\u0633\u0643\u0631', formula: 'C\u2081\u2082H\u2082\u2082O\u2081\u2081', i: 1, color: '#f97316' },\n                nacl: { name: '\u0627\u0644\u0645\u0644\u062d', formula: 'NaCl', i: 2, color: '#fde047' }\n            };\n            \n            \/\/ \u062a\u0647\u064a\u0626\u0629 \u0648\u0627\u062c\u0647\u0629 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0630\u0627\u0628\n            const soluteButtonsContainer = document.getElementById('bp-solute-buttons');\n            Object.keys(SOLUTES).forEach(key => {\n                const solute = SOLUTES[key];\n                const button = document.createElement('button');\n                button.className = 'flex-1 px-2 py-1 text-xs rounded-md transition-colors text-slate-300 hover:bg-slate-600\/50';\n                button.textContent = `${solute.name} (i=${solute.i})`;\n                button.dataset.key = key;\n                soluteButtonsContainer.appendChild(button);\n            });\n            \n            \/\/ \u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            let state = {\n                heatingLevel: 0,\n                soluteConcentration: 0,\n                soluteType: 'sucrose',\n                vaporPressure: 0,\n                temperature: 20,\n                particles: [],\n                animationId: null\n            };\n            \n            \/\/ \u062b\u0648\u0627\u0628\u062a \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            const ATMOSPHERIC_PRESSURE = 100;\n            const width = 450;\n            const height = 350;\n            const liquidSurfaceY = height - 150;\n            const numSolventSurfaceSpots = 20;\n            \n            \/\/ \u0645\u0642\u064a\u0627\u0633 \u0627\u0644\u0636\u063a\u0637\n            const pressureGaugeContainer = document.getElementById('bp-pressure-gauge');\n            pressureGaugeContainer.innerHTML = `\n                <div class=\"relative w-40 h-24 flex flex-col items-center\">\n                    <svg id=\"bp-gauge-svg\" viewBox=\"0 0 100 55\" class=\"w-full h-full\">\n                        <path d=\"M 10 50 A 40 40 0 0 1 90 50\" stroke=\"#475569\" strokeWidth=\"8\" fill=\"none\" strokeLinecap=\"round\" \/>\n                        <path id=\"bp-gauge-value\" d=\"M 10 50 A 40 40 0 0 1 90 50\" stroke=\"url(#bp-vpGradientElev)\" strokeWidth=\"8\" fill=\"none\" strokeLinecap=\"round\" strokeDasharray=\"125.6\" strokeDashoffset=\"125.6\" class=\"transition-all duration-300\" \/>\n                        <g id=\"bp-atmospheric-marker\" transform=\"rotate(-90 50 50)\">\n                            <line x1=\"50\" y1=\"10\" x2=\"50\" y2=\"2\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" \/>\n                        <\/g>\n                        <g id=\"bp-needle\" transform=\"rotate(-90 50 50)\" class=\"transition-transform duration-300\">\n                            <path d=\"M 50 50 L 50 15\" stroke=\"white\" strokeWidth=\"2\" strokeLinecap=\"round\" \/>\n                        <\/g>\n                        <circle cx=\"50\" cy=\"50\" r=\"4\" fill=\"white\" \/>\n                        <defs>\n                            <linearGradient id=\"bp-vpGradientElev\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n                                <stop offset=\"0%\" stopColor=\"#34d399\" \/>\n                                <stop offset=\"100%\" stopColor=\"#ef4444\" \/>\n                            <\/linearGradient>\n                        <\/defs>\n                    <\/svg>\n                    <div class=\"absolute -bottom-8 text-center\">\n                        <p class=\"text-sm font-semibold text-slate-300\">\u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a<\/p>\n                        <p id=\"bp-vapor-pressure-display\" class=\"text-lg font-mono font-bold text-green-300\">0<\/p>\n                    <\/div>\n                <\/div>\n            `;\n            \n            \/\/ \u062d\u0633\u0627\u0628 \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646\n            function calculateBoilingPoint() {\n                const Kb = 0.512;\n                const molality = (state.soluteConcentration \/ 10) * 2;\n                const elevation = SOLUTES[state.soluteType].i * Kb * molality;\n                return 100 + elevation;\n            }\n            \n            \/\/ \u062a\u062d\u062f\u064a\u062b \u0645\u0642\u064a\u0627\u0633 \u0627\u0644\u0636\u063a\u0637\n            function updatePressureGauge() {\n                const maxGauge = ATMOSPHERIC_PRESSURE * 1.5;\n                const vpAngle = Math.min(180, (state.vaporPressure \/ maxGauge) * 180) - 90;\n                const apAngle = Math.min(180, (ATMOSPHERIC_PRESSURE \/ maxGauge) * 180) - 90;\n                \n                const gaugeValue = document.getElementById('bp-gauge-value');\n                const atmosphericMarker = document.getElementById('bp-atmospheric-marker');\n                const needle = document.getElementById('bp-needle');\n                const vaporPressureDisplay = document.getElementById('bp-vapor-pressure-display');\n                \n                const strokeDashoffset = 125.6 * (1 - Math.min(1, state.vaporPressure \/ maxGauge));\n                gaugeValue.style.strokeDashoffset = strokeDashoffset;\n                \n                atmosphericMarker.setAttribute('transform', `rotate(${apAngle} 50 50)`);\n                needle.setAttribute('transform', `rotate(${vpAngle} 50 50)`);\n                vaporPressureDisplay.textContent = state.vaporPressure.toFixed(0);\n            }\n            \n            \/\/ \u062a\u062d\u062f\u064a\u062b \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\n            function updateUI() {\n                const boilingPoint = calculateBoilingPoint();\n                const isBoiling = state.vaporPressure >= ATMOSPHERIC_PRESSURE;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629\n                const temperatureDisplay = document.getElementById('bp-temperature-display');\n                temperatureDisplay.innerHTML = `\u0627\u0644\u062d\u0631\u0627\u0631\u0629: <span class=\"font-mono font-bold text-white\">${state.temperature.toFixed(0)} \u00b0C<\/span>`;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646\n                const boilingPointDisplay = document.getElementById('bp-boiling-point-display');\n                boilingPointDisplay.innerHTML = `\u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646: <span class=\"font-mono font-bold text-white\">${boilingPoint.toFixed(1)} \u00b0C<\/span>`;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u0646\u0635 \u0627\u0644\u062d\u0627\u0644\u0629\n                const statusText = document.getElementById('bp-status-text-content');\n                const statusContainer = document.getElementById('bp-status-text');\n                \n                let status = '';\n                if (isBoiling) {\n                    status = `\u063a\u0644\u064a\u0627\u0646 \u0639\u0646\u062f ${state.temperature.toFixed(0)}\u00b0C!`;\n                    statusContainer.className = 'mt-4 text-center p-3 rounded-md transition-colors bg-green-500\/20';\n                    statusText.className = 'font-bold text-green-300 animate-pulse';\n                } else if (state.temperature >= boilingPoint) {\n                    status = `\u0639\u0644\u0649 \u0648\u0634\u0643 \u0627\u0644\u063a\u0644\u064a\u0627\u0646... \u0632\u062f \u0627\u0644\u062a\u0633\u062e\u064a\u0646 \u0642\u0644\u064a\u0644\u0627\u064b!`;\n                    statusContainer.className = 'mt-4 text-center p-3 rounded-md transition-colors bg-slate-800\/40';\n                    statusText.className = 'font-bold text-slate-300';\n                } else if (state.heatingLevel > 0) {\n                    status = '\u062c\u0632\u064a\u0626\u0627\u062a \u0627\u0644\u0645\u0630\u064a\u0628 \u062a\u062a\u0628\u062e\u0631 \u0645\u0646 \u0627\u0644\u0633\u0637\u062d.';\n                    statusContainer.className = 'mt-4 text-center p-3 rounded-md transition-colors bg-slate-800\/40';\n                    statusText.className = 'font-bold text-slate-300';\n                } else {\n                    status = '\u0627\u0644\u0633\u0627\u0626\u0644 \u0641\u064a \u062f\u0631\u062c\u0629 \u062d\u0631\u0627\u0631\u0629 \u0627\u0644\u063a\u0631\u0641\u0629.';\n                    statusContainer.className = 'mt-4 text-center p-3 rounded-md transition-colors bg-slate-800\/40';\n                    statusText.className = 'font-bold text-slate-300';\n                }\n                statusText.textContent = status;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u0623\u064a\u0642\u0648\u0646\u0629 \u0627\u0644\u0646\u0627\u0631\n                const fireIcon = document.getElementById('bp-fire-icon');\n                fireIcon.style.opacity = state.heatingLevel \/ 15;\n                fireIcon.style.transform = `scale(${0.5 + state.heatingLevel * 0.1})`;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u0623\u0632\u0631\u0627\u0631 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0630\u0627\u0628\n                document.querySelectorAll('#bp-solute-buttons button').forEach(button => {\n                    const key = button.dataset.key;\n                    if (key === state.soluteType) {\n                        button.className = 'flex-1 px-2 py-1 text-xs rounded-md transition-colors text-black';\n                        button.style.backgroundColor = SOLUTES[key].color;\n                    } else {\n                        button.className = 'flex-1 px-2 py-1 text-xs rounded-md transition-colors text-slate-300 hover:bg-slate-600\/50';\n                        button.style.backgroundColor = '';\n                    }\n                });\n                \n                updatePressureGauge();\n            }\n            \n            \/\/ \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a\n            function initializeParticles() {\n                state.particles = [];\n                let idCounter = 0;\n                \n                const surfaceSpots = Array.from({ length: numSolventSurfaceSpots }, (_, i) => i);\n                const numSolute = Math.floor(state.soluteConcentration * 1.5);\n                \n                for (let i = 0; i < numSolute; i++) {\n                    const spotIndex = Math.floor(Math.random() * surfaceSpots.length);\n                    const spot = surfaceSpots.splice(spotIndex, 1)[0];\n                    if (spot === undefined) break;\n                    \n                    state.particles.push({\n                        id: idCounter++,\n                        x: (spot \/ (numSolventSurfaceSpots - 1)) * (width - 100) + 50,\n                        y: liquidSurfaceY,\n                        vx: 0, vy: 0,\n                        phase: 'solute_surface',\n                        radius: 6,\n                    });\n                }\n                \n                for (const spot of surfaceSpots) {\n                    state.particles.push({\n                        id: idCounter++,\n                        x: (spot \/ (numSolventSurfaceSpots - 1)) * (width - 100) + 50,\n                        y: liquidSurfaceY,\n                        vx: 0, vy: 0,\n                        phase: 'liquid_surface',\n                        radius: 4,\n                    });\n                }\n            }\n            \n            \/\/ \u0631\u0633\u0645 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            function render() {\n                const canvas = document.getElementById('bp-canvas');\n                const ctx = canvas.getContext('2d');\n                if (!ctx) return;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629\n                state.temperature = 90 + state.heatingLevel * 1.5;\n                \n                ctx.clearRect(0, 0, width, height);\n                \n                \/\/ \u0631\u0633\u0645 \u0627\u0644\u062f\u0648\u0631\u0642 \u0648\u0627\u0644\u0633\u0627\u0626\u0644\n                ctx.strokeStyle = '#9ca3af';\n                ctx.lineWidth = 3;\n                ctx.beginPath();\n                ctx.moveTo(10, 50);\n                ctx.lineTo(10, height - 40);\n                ctx.quadraticCurveTo(width \/ 2, height - 20, width - 10, height - 40);\n                ctx.lineTo(width - 10, 50);\n                ctx.stroke();\n                ctx.fillStyle = \"rgba(56, 189, 248, 0.2)\";\n                ctx.fillRect(12, liquidSurfaceY, width - 24, height - liquidSurfaceY - 30);\n                \n                const nextParticles = [];\n                let vaporCount = 0;\n                const boilingPoint = calculateBoilingPoint();\n                const selectedSolute = SOLUTES[state.soluteType];\n                \n                state.particles.forEach(p => {\n                    if (p.phase === 'liquid_surface') {\n                        p.y = liquidSurfaceY + Math.sin(p.x + Date.now() \/ 200) * (state.heatingLevel \/ 5);\n                        if (Math.random() < state.heatingLevel * 0.001) {\n                            nextParticles.push({ ...p, phase: 'vapor', vy: -1 - Math.random(), vx: (Math.random() - 0.5) * 2 });\n                        } else {\n                            nextParticles.push(p);\n                        }\n                    } else if (p.phase === 'solute_surface') {\n                        p.y = liquidSurfaceY + Math.sin(p.x + Date.now() \/ 300) * (state.heatingLevel \/ 10);\n                        nextParticles.push(p);\n                    } else if (p.phase === 'vapor') {\n                        p.x += p.vx;\n                        p.y += p.vy;\n                        if (p.y > liquidSurfaceY && Math.random() < 0.01) {\n                            const spotX = (Math.round(((p.x - 50) \/ (width - 100)) * (numSolventSurfaceSpots - 1)) \/ (numSolventSurfaceSpots - 1)) * (width - 100) + 50;\n                            const isOccupied = state.particles.some(sp => sp.phase !== 'vapor' && Math.abs(sp.x - spotX) < 10);\n                            if (!isOccupied) {\n                                nextParticles.push({ ...p, phase: 'liquid_surface', y: liquidSurfaceY, x: spotX, vx: 0, vy: 0 });\n                            } else {\n                                nextParticles.push(p);\n                            }\n                        } else if (p.y < 10 || p.x < 10 || p.x > width - 10) {\n                            \/\/ \u0627\u062e\u062a\u0641\u0627\u0621 \u0627\u0644\u062c\u0633\u064a\u0645\n                        } else {\n                            vaporCount++;\n                            nextParticles.push(p);\n                        }\n                    } else if (p.phase === 'bubble') {\n                        p.y += p.vy;\n                        p.radius += 0.2;\n                        if (p.life) p.life--;\n                        if (p.y < liquidSurfaceY || (p.life &#038;&#038; p.life <= 0)) {\n                            for (let i = 0; i < 3; i++) {\n                                nextParticles.push({ ...p, id: p.id + 1000 + i, phase: 'vapor', vy: -1 - Math.random(), vx: (Math.random() - 0.5) * 2, radius: 4 });\n                            }\n                        } else {\n                            nextParticles.push(p);\n                        }\n                    }\n                });\n                \n                \/\/ \u0625\u0636\u0627\u0641\u0629 \u0641\u0642\u0627\u0639\u0627\u062a \u0625\u0630\u0627 \u0643\u0627\u0646\u062a \u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629 \u0623\u0639\u0644\u0649 \u0645\u0646 \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646\n                if (state.temperature >= boilingPoint && Math.random() < state.heatingLevel * 0.02) {\n                    nextParticles.push({\n                        id: Date.now() + Math.random(),\n                        x: Math.random() * (width - 100) + 50,\n                        y: height - 50,\n                        vx: 0, vy: -1,\n                        phase: 'bubble',\n                        radius: 2,\n                        life: 100\n                    });\n                }\n                \n                state.particles = nextParticles;\n                state.vaporPressure = vaporCount * 2;\n                \n                \/\/ \u0631\u0633\u0645 \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a\n                state.particles.forEach(p => {\n                    ctx.beginPath();\n                    if (p.phase === 'liquid_surface') {\n                        ctx.fillStyle = '#38bdf8';\n                    } else if (p.phase === 'solute_surface') {\n                        ctx.fillStyle = selectedSolute.color;\n                    } else if (p.phase === 'vapor') {\n                        ctx.fillStyle = 'rgba(226, 232, 240, 0.7)';\n                    } else if (p.phase === 'bubble') {\n                        ctx.strokeStyle = 'rgba(255, 255, 255, 0.8)';\n                        ctx.lineWidth = 1.5;\n                        ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);\n                        ctx.stroke();\n                        return;\n                    }\n                    ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);\n                    ctx.fill();\n                });\n                \n                updateUI();\n                state.animationId = requestAnimationFrame(render);\n            }\n            \n            \/\/ \u0625\u0639\u062f\u0627\u062f \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u062a\u062d\u0643\u0645\n            function setupControls() {\n                \/\/ \u0634\u0631\u064a\u0637 \u0627\u0644\u062a\u0633\u062e\u064a\u0646\n                const heatingSlider = document.getElementById('bp-heating-slider');\n                const heatingDecrease = document.getElementById('bp-heating-decrease');\n                const heatingIncrease = document.getElementById('bp-heating-increase');\n                \n                heatingDecrease.addEventListener('click', () => {\n                    state.heatingLevel = Math.max(0, state.heatingLevel - 1);\n                    heatingSlider.value = state.heatingLevel;\n                    heatingDecrease.disabled = state.heatingLevel <= 0;\n                    heatingIncrease.disabled = state.heatingLevel >= 10;\n                });\n                \n                heatingIncrease.addEventListener('click', () => {\n                    state.heatingLevel = Math.min(10, state.heatingLevel + 1);\n                    heatingSlider.value = state.heatingLevel;\n                    heatingDecrease.disabled = state.heatingLevel <= 0;\n                    heatingIncrease.disabled = state.heatingLevel >= 10;\n                });\n                \n                heatingSlider.addEventListener('input', () => {\n                    state.heatingLevel = Number(heatingSlider.value);\n                    heatingDecrease.disabled = state.heatingLevel <= 0;\n                    heatingIncrease.disabled = state.heatingLevel >= 10;\n                });\n                \n                \/\/ \u0634\u0631\u064a\u0637 \u0643\u0645\u064a\u0629 \u0627\u0644\u0645\u0630\u0627\u0628\n                const soluteAmountSlider = document.getElementById('bp-solute-amount');\n                soluteAmountSlider.addEventListener('input', () => {\n                    state.soluteConcentration = Number(soluteAmountSlider.value);\n                    initializeParticles();\n                });\n                \n                \/\/ \u0623\u0632\u0631\u0627\u0631 \u0646\u0648\u0639 \u0627\u0644\u0645\u0630\u0627\u0628\n                document.querySelectorAll('#bp-solute-buttons button').forEach(button => {\n                    button.addEventListener('click', () => {\n                        state.soluteType = button.dataset.key;\n                        updateUI();\n                    });\n                });\n                \n                \/\/ \u0632\u0631 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0639\u064a\u064a\u0646\n                document.getElementById('bp-reset-btn').addEventListener('click', () => {\n                    state.heatingLevel = 0;\n                    state.soluteConcentration = 0;\n                    state.soluteType = 'sucrose';\n                    \n                    heatingSlider.value = state.heatingLevel;\n                    soluteAmountSlider.value = state.soluteConcentration;\n                    heatingDecrease.disabled = true;\n                    heatingIncrease.disabled = false;\n                    \n                    initializeParticles();\n                    updateUI();\n                });\n            }\n            \n            \/\/ \u0628\u062f\u0621 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            initializeParticles();\n            setupControls();\n            render();\n            \n            \/\/ \u062a\u0646\u0638\u064a\u0641\n            return () => {\n                if (state.animationId) {\n                    cancelAnimationFrame(state.animationId);\n                }\n            };\n        })();\n        \n        \/\/ ============================================\n        \/\/ 2. \u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f\n        \/\/ ============================================\n        (function() {\n            const container = document.getElementById('freezing-point-depression-simulation');\n            if (!container) return;\n            \n            container.innerHTML = `\n                <div class=\"not-prose my-8 p-4 sm:p-6 bg-black\/20 rounded-lg border border-white\/10\">\n                    <div class=\"flex justify-between items-center mb-4\">\n                        <h3 class=\"text-xl font-bold text-white\/90\">\u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f<\/h3>\n                        <button id=\"fp-reset-btn\" class=\"p-2 rounded-full hover:bg-white\/10 transition-colors text-2xl font-bold text-slate-400\" aria-label=\"\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646\">\u27f3<\/button>\n                    <\/div>\n                    <div class=\"relative\">\n                        <canvas id=\"fp-canvas\" width=\"450\" height=\"350\" class=\"rounded-md\"><\/canvas>\n                        <div class=\"absolute top-0 left-0 w-full h-full flex justify-around items-start pointer-events-none\">\n                            <div id=\"fp-beaker-left\" class=\"flex flex-col items-center\">\n                                <h4 class=\"text-lg font-bold text-white\/90\">\u0627\u0644\u0645\u062d\u0644\u0648\u0644<\/h4>\n                                <div class=\"mt-2 text-sm\">\n                                    <p class=\"text-slate-300\">\u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629: <span id=\"fp-temp-left\" class=\"font-mono font-bold text-white\">10.0 \u00b0C<\/span><\/p>\n                                    <p class=\"text-slate-400\">\u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f: <span id=\"fp-freezing-left\" class=\"font-mono font-bold text-white\/80\">-0.0 \u00b0C<\/span><\/p>\n                                <\/div>\n                                <div class=\"relative w-24 h-20 mt-1 flex justify-center items-center\">\n                                    <span id=\"fp-frost-left\" class=\"text-4xl text-blue-300 transition-all duration-300\" style=\"opacity: 0; transform: scale(0.5)\">&#x2744;&#xfe0f;<\/span>\n                                <\/div>\n                                <div id=\"fp-freezing-left-status\" class=\"mt-2 px-3 py-1 text-sm font-bold rounded-full hidden\"><\/div>\n                            <\/div>\n                            <div id=\"fp-beaker-right\" class=\"flex flex-col items-center\">\n                                <h4 class=\"text-lg font-bold text-white\/90\">\u0627\u0644\u0645\u0627\u0621 \u0627\u0644\u0646\u0642\u064a<\/h4>\n                                <div class=\"mt-2 text-sm\">\n                                    <p class=\"text-slate-300\">\u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629: <span id=\"fp-temp-right\" class=\"font-mono font-bold text-white\">10.0 \u00b0C<\/span><\/p>\n                                    <p class=\"text-slate-400\">\u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f: <span id=\"fp-freezing-right\" class=\"font-mono font-bold text-white\/80\">0.0 \u00b0C<\/span><\/p>\n                                <\/div>\n                                <div class=\"relative w-24 h-20 mt-1 flex justify-center items-center\">\n                                    <span id=\"fp-frost-right\" class=\"text-4xl text-blue-300 transition-all duration-300\" style=\"opacity: 0; transform: scale(0.5)\">&#x2744;&#xfe0f;<\/span>\n                                <\/div>\n                                <div id=\"fp-freezing-right-status\" class=\"mt-2 px-3 py-1 text-sm font-bold rounded-full hidden\"><\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"grid grid-cols-1 md:grid-cols-3 gap-4 mt-2 border-t border-white\/10 pt-4\">\n                        <div>\n                            <label for=\"fp-temperature-slider\" class=\"font-semibold mb-2 text-slate-300 text-center block\">\u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629<\/label>\n                            <input id=\"fp-temperature-slider\" type=\"range\" min=\"-20\" max=\"20\" step=\"0.5\" value=\"10\" class=\"w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-blue-400\" \/>\n                        <\/div>\n                        <div>\n                            <label for=\"fp-solute-conc\" class=\"font-semibold mb-2 text-slate-300 text-center block\">\u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0630\u0627\u0628<\/label>\n                            <input id=\"fp-solute-conc\" type=\"range\" min=\"0\" max=\"10\" step=\"1\" value=\"2\" class=\"w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-orange-400\" \/>\n                        <\/div>\n                        <div>\n                            <label class=\"font-semibold mb-2 text-slate-300 text-center block\">\u0646\u0648\u0639 \u0627\u0644\u0645\u0630\u0627\u0628 (\u0645\u0639\u0627\u0645\u0644 \u0641\u0627\u0646\u062a \u0647\u0648\u0641)<\/label>\n                            <div id=\"fp-solute-buttons\" class=\"flex gap-1 p-1 bg-slate-700\/50 rounded-lg\">\n                                <!-- \u0633\u064a\u062a\u0645 \u0645\u0644\u0624\u0647\u0627 \u062f\u064a\u0646\u0627\u0645\u064a\u0643\u064a\u064b\u0627 -->\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"mt-4 text-center p-3 bg-slate-800\/40 rounded-md\">\n                        <p id=\"fp-depression-display\" class=\"text-lg font-bold text-white\">\u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u062a\u062c\u0645\u062f \u0627\u0644\u0645\u062d\u0644\u0648\u0644: <span class=\"font-mono text-sky-300\">-0.00 \u00b0C<\/span><\/p>\n                        <p class=\"mt-2 text-sm text-slate-400\">\n                            \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u0630\u0627\u0628 \u062a\u0639\u064a\u0642 \u062a\u0643\u0648\u064a\u0646 \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0628\u0644\u0648\u0631\u064a\u0629 \u0644\u0644\u0645\u0627\u0621\u060c \u0645\u0645\u0627 \u064a\u062a\u0637\u0644\u0628 \u062f\u0631\u062c\u0627\u062a \u062d\u0631\u0627\u0631\u0629 \u0623\u0642\u0644 \u0644\u062d\u062f\u0648\u062b \u0627\u0644\u062a\u062c\u0645\u062f. \u0643\u0644\u0645\u0627 \u0632\u0627\u062f \u0639\u062f\u062f \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a (\u0628\u0632\u064a\u0627\u062f\u0629 \u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0623\u0648 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0630\u0627\u0628 \u064a\u062a\u0641\u0643\u0643 \u0644\u0623\u064a\u0648\u0646\u0627\u062a \u0623\u0643\u062b\u0631)\u060c \u0632\u0627\u062f \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f.\n                        <\/p>\n                    <\/div>\n                <\/div>\n            `;\n            \n            \/\/ \u062a\u0639\u0631\u064a\u0641 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0630\u0627\u0628\n            const SOLUTES = {\n                sucrose: { name: '\u0627\u0644\u0633\u0643\u0631 (\u0644\u0627 \u0625\u0644\u0643\u062a\u0631\u0648\u0644\u064a\u062a\u064a)', formula: 'C\u2081\u2082H\u2082\u2082O\u2081\u2081', i: 1, color: '#f97316' },\n                nacl: { name: '\u0645\u0644\u062d \u0627\u0644\u0637\u0639\u0627\u0645 (\u0625\u0644\u0643\u062a\u0631\u0648\u0644\u064a\u062a)', formula: 'NaCl', i: 2, color: '#fde047' },\n                cacl2: { name: '\u0643\u0644\u0648\u0631\u064a\u062f \u0627\u0644\u0643\u0627\u0644\u0633\u064a\u0648\u0645 (\u0625\u0644\u0643\u062a\u0631\u0648\u0644\u064a\u062a)', formula: 'CaCl\u2082', i: 3, color: '#ec4899' }\n            };\n            \n            \/\/ \u062a\u0647\u064a\u0626\u0629 \u0648\u0627\u062c\u0647\u0629 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0630\u0627\u0628\n            const soluteButtonsContainer = document.getElementById('fp-solute-buttons');\n            Object.keys(SOLUTES).forEach(key => {\n                const solute = SOLUTES[key];\n                const button = document.createElement('button');\n                button.className = 'flex-1 px-2 py-1 text-xs rounded-md transition-colors text-slate-300 hover:bg-slate-600\/50';\n                button.textContent = `${solute.formula} (i=${solute.i})`;\n                button.dataset.key = key;\n                soluteButtonsContainer.appendChild(button);\n            });\n            \n            \/\/ \u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            let state = {\n                temperature: 10,\n                soluteConcentration: 2,\n                soluteType: 'sucrose',\n                particles: [],\n                animationId: null\n            };\n            \n            \/\/ \u062b\u0648\u0627\u0628\u062a \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            const width = 450;\n            const height = 350;\n            const beakerWidth = 200;\n            const liquidLevel = height - 150;\n            const numSolventParticles = 50;\n            const maxSoluteParticles = 15;\n            \n            \/\/ \u062b\u0648\u0627\u0628\u062a \u0641\u064a\u0632\u064a\u0627\u0626\u064a\u0629\n            const freezingPointPure = 0;\n            const Kf = 1.86;\n            \n            \/\/ \u062d\u0633\u0627\u0628 \u062f\u0631\u062c\u0629 \u062a\u062c\u0645\u062f \u0627\u0644\u0645\u062d\u0644\u0648\u0644\n            function calculateFreezingPoint() {\n                const selectedSolute = SOLUTES[state.soluteType];\n                const molality = (state.soluteConcentration \/ 10) * 2;\n                const freezingPointDepression = selectedSolute.i * Kf * molality;\n                const freezingPointSolution = freezingPointPure - freezingPointDepression;\n                \n                return {\n                    depression: freezingPointDepression,\n                    solution: freezingPointSolution,\n                    pure: freezingPointPure\n                };\n            }\n            \n            \/\/ \u062a\u062d\u062f\u064a\u062b \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\n            function updateUI() {\n                const freezingPoints = calculateFreezingPoint();\n                const isPureFreezing = state.temperature <= freezingPoints.pure;\n                const isSolutionFreezing = state.temperature <= freezingPoints.solution;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629\n                document.getElementById('fp-temp-left').textContent = `${state.temperature.toFixed(1)} \u00b0C`;\n                document.getElementById('fp-temp-right').textContent = `${state.temperature.toFixed(1)} \u00b0C`;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f\n                document.getElementById('fp-freezing-left').textContent = `${freezingPoints.solution.toFixed(1)} \u00b0C`;\n                document.getElementById('fp-freezing-right').textContent = `${freezingPoints.pure.toFixed(1)} \u00b0C`;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636\n                document.getElementById('fp-depression-display').innerHTML = `\u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u062f\u0631\u062c\u0629 \u062a\u062c\u0645\u062f \u0627\u0644\u0645\u062d\u0644\u0648\u0644: <span class=\"font-mono text-sky-300\">-${freezingPoints.depression.toFixed(2)} \u00b0C<\/span>`;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u0623\u064a\u0642\u0648\u0646\u0627\u062a \u0627\u0644\u0635\u0642\u064a\u0639\n                const frostOpacityLeft = Math.max(0, (1 - (state.temperature + 10) \/ 20));\n                const frostOpacityRight = Math.max(0, (1 - (state.temperature + 10) \/ 20));\n                \n                document.getElementById('fp-frost-left').style.opacity = frostOpacityLeft * 1.5;\n                document.getElementById('fp-frost-left').style.transform = `scale(${0.5 + frostOpacityLeft})`;\n                \n                document.getElementById('fp-frost-right').style.opacity = frostOpacityRight * 1.5;\n                document.getElementById('fp-frost-right').style.transform = `scale(${0.5 + frostOpacityRight})`;\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u062d\u0627\u0644\u0629 \u0627\u0644\u062a\u062c\u0645\u062f\n                const freezingLeftStatus = document.getElementById('fp-freezing-left-status');\n                const freezingRightStatus = document.getElementById('fp-freezing-right-status');\n                \n                if (isSolutionFreezing) {\n                    freezingLeftStatus.className = 'mt-2 px-3 py-1 bg-blue-500\/20 text-blue-300 text-sm font-bold rounded-full animate-pulse';\n                    freezingLeftStatus.textContent = '\u0641\u064a \u062d\u0627\u0644\u0629 \u062a\u062c\u0645\u062f';\n                    freezingLeftStatus.classList.remove('hidden');\n                } else {\n                    freezingLeftStatus.classList.add('hidden');\n                }\n                \n                if (isPureFreezing) {\n                    freezingRightStatus.className = 'mt-2 px-3 py-1 bg-blue-500\/20 text-blue-300 text-sm font-bold rounded-full animate-pulse';\n                    freezingRightStatus.textContent = '\u0641\u064a \u062d\u0627\u0644\u0629 \u062a\u062c\u0645\u062f';\n                    freezingRightStatus.classList.remove('hidden');\n                } else {\n                    freezingRightStatus.classList.add('hidden');\n                }\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u0623\u0632\u0631\u0627\u0631 \u0623\u0646\u0648\u0627\u0639 \u0627\u0644\u0645\u0630\u0627\u0628\n                document.querySelectorAll('#fp-solute-buttons button').forEach(button => {\n                    const key = button.dataset.key;\n                    if (key === state.soluteType) {\n                        button.className = 'flex-1 px-2 py-1 text-xs rounded-md transition-colors text-black';\n                        button.style.backgroundColor = SOLUTES[key].color;\n                    } else {\n                        button.className = 'flex-1 px-2 py-1 text-xs rounded-md transition-colors text-slate-300 hover:bg-slate-600\/50';\n                        button.style.backgroundColor = '';\n                    }\n                });\n            }\n            \n            \/\/ \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a\n            function initializeParticles() {\n                state.particles = [];\n                let idCounter = 0;\n                \n                \/\/ \u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a \u0627\u0644\u0647\u062f\u0641 \u0644\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0628\u0644\u0648\u0631\u064a\u0629\n                const createGridTargets = (offsetX) => {\n                    const targets = [];\n                    const rows = 5, cols = 10, spacing = 20;\n                    for (let i = 0; i < rows; i++) {\n                        for (let j = 0; j < cols; j++) {\n                            targets.push({\n                                x: offsetX + 25 + j * spacing + (i % 2) * spacing \/ 2,\n                                y: liquidLevel + 20 + i * spacing\n                            });\n                        }\n                    }\n                    return targets;\n                };\n                \n                const solutionOffsetX = 0;\n                const pureOffsetX = width - beakerWidth;\n                \n                const pureTargets = createGridTargets(pureOffsetX);\n                const solutionTargets = createGridTargets(solutionOffsetX);\n                const selectedSolute = SOLUTES[state.soluteType];\n                const numSolute = Math.floor((state.soluteConcentration \/ 10) * maxSoluteParticles);\n                \n                \/\/ \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u062d\u0644\u0648\u0644 (\u0627\u0644\u062c\u0647\u0629 \u0627\u0644\u064a\u0633\u0631\u0649)\n                for (let i = 0; i < numSolventParticles; i++) {\n                    state.particles.push({\n                        id: idCounter++,\n                        beaker: 'solution',\n                        x: solutionOffsetX + 20 + Math.random() * (beakerWidth - 40),\n                        y: liquidLevel + Math.random() * (height - liquidLevel - 40),\n                        vx: (Math.random() - 0.5),\n                        vy: (Math.random() - 0.5),\n                        type: 'solvent',\n                        radius: 3.5,\n                        targetX: solutionTargets[i].x,\n                        targetY: solutionTargets[i].y,\n                    });\n                }\n                \n                for (let i = 0; i < numSolute; i++) {\n                    state.particles.push({\n                        id: idCounter++,\n                        beaker: 'solution',\n                        x: solutionOffsetX + 20 + Math.random() * (beakerWidth - 40),\n                        y: liquidLevel + Math.random() * (height - liquidLevel - 40),\n                        vx: (Math.random() - 0.5) * 0.2,\n                        vy: (Math.random() - 0.5) * 0.2,\n                        type: 'solute',\n                        radius: 5,\n                    });\n                }\n                \n                \/\/ \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u0627\u0621 \u0627\u0644\u0646\u0642\u064a (\u0627\u0644\u062c\u0647\u0629 \u0627\u0644\u064a\u0645\u0646\u0649)\n                for (let i = 0; i < numSolventParticles; i++) {\n                    state.particles.push({\n                        id: idCounter++,\n                        beaker: 'pure',\n                        x: pureOffsetX + 20 + Math.random() * (beakerWidth - 40),\n                        y: liquidLevel + Math.random() * (height - liquidLevel - 40),\n                        vx: (Math.random() - 0.5),\n                        vy: (Math.random() - 0.5),\n                        type: 'solvent',\n                        radius: 3.5,\n                        targetX: pureTargets[i].x,\n                        targetY: pureTargets[i].y,\n                    });\n                }\n            }\n            \n            \/\/ \u0631\u0633\u0645 \u0628\u0644\u0648\u0631\u0627\u062a \u0627\u0644\u062b\u0644\u062c\n            function drawIceCrystal(ctx, x, y, size, opacity) {\n                ctx.save();\n                ctx.translate(x, y);\n                ctx.strokeStyle = `rgba(200, 220, 255, ${opacity * 0.6})`;\n                ctx.lineWidth = size \/ 5;\n                for (let i = 0; i < 6; i++) {\n                    ctx.rotate(Math.PI \/ 3);\n                    ctx.beginPath();\n                    ctx.moveTo(0, 0);\n                    ctx.lineTo(0, size);\n                    ctx.stroke();\n                }\n                ctx.restore();\n            }\n            \n            \/\/ \u0631\u0633\u0645 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            function render() {\n                const canvas = document.getElementById('fp-canvas');\n                const ctx = canvas.getContext('2d');\n                if (!ctx) return;\n                \n                ctx.clearRect(0, 0, width, height);\n                \n                const freezingPoints = calculateFreezingPoint();\n                const isPureFreezing = state.temperature <= freezingPoints.pure;\n                const isSolutionFreezing = state.temperature <= freezingPoints.solution;\n                \n                const pureFreezeFactor = isPureFreezing ? Math.min(1, (freezingPoints.pure - state.temperature) \/ 5) : 0;\n                const solutionFreezeFactor = isSolutionFreezing ? Math.min(1, (freezingPoints.solution - state.temperature) \/ 5) : 0;\n                const selectedSolute = SOLUTES[state.soluteType];\n                \n                \/\/ \u0631\u0633\u0645 \u0627\u0644\u062f\u0648\u0631\u0642\n                const drawBeaker = (offsetX, freezeFactor) => {\n                    ctx.strokeStyle = '#9ca3af';\n                    ctx.lineWidth = 3;\n                    ctx.beginPath();\n                    ctx.moveTo(offsetX + 10, 50);\n                    ctx.lineTo(offsetX + 10, height - 40);\n                    ctx.quadraticCurveTo(offsetX + beakerWidth \/ 2, height - 20, offsetX + beakerWidth - 10, height - 40);\n                    ctx.lineTo(offsetX + beakerWidth - 10, 50);\n                    ctx.stroke();\n                    \n                    \/\/ \u0627\u0644\u0633\u0627\u0626\u0644\n                    ctx.fillStyle = `rgba(56, 189, 248, ${0.2 * (1 - freezeFactor)})`;\n                    ctx.fillRect(offsetX + 12, liquidLevel, beakerWidth - 24, height - liquidLevel - 30);\n                    \n                    \/\/ \u0627\u0644\u062b\u0644\u062c\n                    ctx.fillStyle = `rgba(200, 220, 255, ${0.3 * freezeFactor})`;\n                    ctx.fillRect(offsetX + 12, liquidLevel, beakerWidth - 24, height - liquidLevel - 30);\n                    \n                    if (freezeFactor > 0.1) {\n                        for (let i = 0; i < freezeFactor * 10; i++) {\n                            drawIceCrystal(ctx, offsetX + Math.random() * beakerWidth, liquidLevel + Math.random() * (height - liquidLevel - 40), 10 + Math.random() * 15, freezeFactor);\n                        }\n                    }\n                };\n                \n                drawBeaker(0, solutionFreezeFactor);\n                drawBeaker(width - beakerWidth, pureFreezeFactor);\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u0648\u0631\u0633\u0645 \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a\n                state.particles.forEach(p => {\n                    const beakerOffset = p.beaker === 'solution' ? 0 : width - beakerWidth;\n                    const freezeFactor = p.beaker === 'solution' ? solutionFreezeFactor : pureFreezeFactor;\n                    const speedMultiplier = Math.max(0.1, 1 - freezeFactor);\n                    \n                    if (freezeFactor > 0 && p.type === 'solvent') {\n                        \/\/ \u0627\u0644\u062a\u062d\u0631\u0643 \u0646\u062d\u0648 \u0645\u0648\u0627\u0642\u0639 \u0627\u0644\u0634\u0628\u0643\u0629 \u0627\u0644\u0628\u0644\u0648\u0631\u064a\u0629\n                        p.vx += (p.targetX - p.x) * 0.05 * freezeFactor;\n                        p.vy += (p.targetY - p.y) * 0.05 * freezeFactor;\n                        \/\/ \u0627\u0647\u062a\u0632\u0627\u0632 \u0641\u064a \u0627\u0644\u0645\u0643\u0627\u0646\n                        p.vx += (Math.random() - 0.5) * 0.2;\n                        p.vy += (Math.random() - 0.5) * 0.2;\n                    } else {\n                        p.vx += (Math.random() - 0.5) * 0.2;\n                        p.vy += (Math.random() - 0.5) * 0.2;\n                    }\n                    \n                    p.x += p.vx * speedMultiplier;\n                    p.y += p.vy * speedMultiplier;\n                    \n                    \/\/ \u062a\u0635\u0627\u062f\u0645 \u0645\u0639 \u0627\u0644\u062c\u062f\u0631\u0627\u0646\n                    const leftWall = beakerOffset + 15;\n                    const rightWall = beakerOffset + beakerWidth - 15;\n                    if (p.x < leftWall || p.x > rightWall) {\n                        p.vx *= -1;\n                        p.x = Math.max(leftWall, Math.min(p.x, rightWall));\n                    }\n                    if (p.y > height - 45 || p.y < liquidLevel) {\n                        p.vy *= -1;\n                        p.y = Math.max(liquidLevel, Math.min(p.y, height - 45));\n                    }\n                    \n                    p.vx *= 0.9;\n                    p.vy *= 0.9;\n                    \n                    \/\/ \u0631\u0633\u0645 \u0627\u0644\u062c\u0633\u064a\u0645\n                    ctx.beginPath();\n                    if (p.type === 'solute') {\n                        ctx.fillStyle = selectedSolute.color;\n                    } else {\n                        ctx.fillStyle = '#38bdf8';\n                    }\n                    \n                    ctx.globalAlpha = 1 - freezeFactor * 0.5;\n                    ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);\n                    ctx.fill();\n                    ctx.globalAlpha = 1;\n                });\n                \n                updateUI();\n                state.animationId = requestAnimationFrame(render);\n            }\n            \n            \/\/ \u0625\u0639\u062f\u0627\u062f \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u062a\u062d\u0643\u0645\n            function setupControls() {\n                \/\/ \u0634\u0631\u064a\u0637 \u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629\n                const temperatureSlider = document.getElementById('fp-temperature-slider');\n                temperatureSlider.addEventListener('input', () => {\n                    state.temperature = Number(temperatureSlider.value);\n                });\n                \n                \/\/ \u0634\u0631\u064a\u0637 \u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0630\u0627\u0628\n                const soluteConcSlider = document.getElementById('fp-solute-conc');\n                soluteConcSlider.addEventListener('input', () => {\n                    state.soluteConcentration = Number(soluteConcSlider.value);\n                    initializeParticles();\n                });\n                \n                \/\/ \u0623\u0632\u0631\u0627\u0631 \u0646\u0648\u0639 \u0627\u0644\u0645\u0630\u0627\u0628\n                document.querySelectorAll('#fp-solute-buttons button').forEach(button => {\n                    button.addEventListener('click', () => {\n                        state.soluteType = button.dataset.key;\n                        initializeParticles();\n                    });\n                });\n                \n                \/\/ \u0632\u0631 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0639\u064a\u064a\u0646\n                document.getElementById('fp-reset-btn').addEventListener('click', () => {\n                    state.temperature = 10;\n                    state.soluteConcentration = 2;\n                    state.soluteType = 'sucrose';\n                    \n                    temperatureSlider.value = state.temperature;\n                    soluteConcSlider.value = state.soluteConcentration;\n                    \n                    initializeParticles();\n                });\n            }\n            \n            \/\/ \u0628\u062f\u0621 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            initializeParticles();\n            setupControls();\n            render();\n            \n            \/\/ \u062a\u0646\u0638\u064a\u0641\n            return () => {\n                if (state.animationId) {\n                    cancelAnimationFrame(state.animationId);\n                }\n            };\n        })();\n        \n        \/\/ ============================================\n        \/\/ 3. \u0631\u0633\u0645 \u0628\u064a\u0627\u0646\u064a \u0644\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a\n        \/\/ ============================================\n        (function() {\n            const container = document.getElementById('vapor-pressure-lowering-graph');\n            if (!container) return;\n            \n            container.innerHTML = `\n                <div class=\"not-prose my-8 p-4 sm:p-6 bg-black\/20 rounded-lg border border-white\/10 flex flex-col items-center\">\n                    <h3 class=\"text-xl font-bold mb-2 text-center text-white\/90\">\n                        \u0631\u0633\u0645 \u0628\u064a\u0627\u0646\u064a: \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a\n                    <\/h3>\n                    <svg id=\"vp-graph-svg\" width=\"100%\" height=\"350\" viewBox=\"0 0 450 350\"><\/svg>\n                    <div class=\"flex justify-center gap-6 mt-4\">\n                        <div class=\"flex items-center gap-2\">\n                            <div class=\"w-4 h-1 bg-[#60a5fa]\"><\/div>\n                            <span class=\"text-sm text-slate-300\">\u0627\u0644\u0645\u0630\u064a\u0628 \u0627\u0644\u0646\u0642\u064a<\/span>\n                        <\/div>\n                        <div class=\"flex items-center gap-2\">\n                            <div class=\"w-4 h-1 bg-[#f97316]\"><\/div>\n                            <span class=\"text-sm text-slate-300\">\u0627\u0644\u0645\u062d\u0644\u0648\u0644<\/span>\n                        <\/div>\n                    <\/div>\n                    <div class=\"w-full max-w-sm mt-4\">\n                        <label for=\"vp-concentration-slider\" class=\"font-semibold mb-2 text-slate-300 text-center block\">\n                            \u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0630\u0627\u0628\n                        <\/label>\n                        <input id=\"vp-concentration-slider\" type=\"range\" min=\"0.0\" max=\"0.2\" step=\"0.01\" value=\"0.1\" class=\"w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-orange-400\" \/>\n                        <div class=\"flex justify-between mt-1 text-xs text-slate-400\">\n                            <span>\u0645\u0646\u062e\u0641\u0636<\/span>\n                            <span>\u0645\u0631\u062a\u0641\u0639<\/span>\n                        <\/div>\n                    <\/div>\n                    <p class=\"mt-4 text-sm text-center text-slate-400 p-3 bg-slate-800\/40 rounded-md\">\n                        \u062d\u0631\u0643 \u0634\u0631\u064a\u0637 \u0627\u0644\u062a\u0645\u0631\u064a\u0631 \u0644\u0632\u064a\u0627\u062f\u0629 \u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0630\u0627\u0628. \u0644\u0627\u062d\u0638 \u0643\u064a\u0641 \u064a\u0646\u062e\u0641\u0636 \u0645\u0646\u062d\u0646\u0649 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a \u0644\u0644\u0645\u062d\u0644\u0648\u0644 \u0639\u0646 \u0645\u0646\u062d\u0646\u0649 \u0627\u0644\u0645\u0630\u064a\u0628 \u0627\u0644\u0646\u0642\u064a.\n                    <\/p>\n                <\/div>\n            `;\n            \n            \/\/ \u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            let state = {\n                soluteConcentration: 0.1\n            };\n            \n            \/\/ \u062b\u0648\u0627\u0628\u062a \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064a\u0627\u0646\u064a\n            const width = 450;\n            const height = 350;\n            const padding = { top: 20, right: 30, bottom: 50, left: 60 };\n            const chartWidth = width - padding.left - padding.right;\n            const chartHeight = height - padding.top - padding.bottom;\n            \n            const minTemp = 20;\n            const maxTemp = 120;\n            const maxPressure = 2.5;\n            \n            \/\/ \u062b\u0648\u0627\u0628\u062a \u0645\u0639\u0627\u062f\u0644\u0629 \u0643\u0644\u0627\u0648\u0632\u064a\u0648\u0633-\u0643\u0644\u0627\u064a\u0628\u064a\u0631\u0648\u0646\n            const A = 965000;\n            const B = 5143;\n            \n            \/\/ \u062d\u0633\u0627\u0628 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a\n            function getVaporPressure(tempC) {\n                const tempK = tempC + 273.15;\n                return A * Math.exp(-B \/ tempK);\n            }\n            \n            \/\/ \u062a\u062d\u0648\u064a\u0644 \u0627\u0644\u0625\u062d\u062f\u0627\u062b\u064a\u0627\u062a\n            function getX(temp) {\n                return padding.left + ((temp - minTemp) \/ (maxTemp - minTemp)) * chartWidth;\n            }\n            \n            function getY(pressure) {\n                return padding.top + chartHeight - (pressure \/ maxPressure) * chartHeight;\n            }\n            \n            \/\/ \u0625\u0646\u0634\u0627\u0621 \u0645\u0633\u0627\u0631 \u0627\u0644\u0645\u0646\u062d\u0646\u0649\n            function createCurvePath(solventMoleFraction = 1) {\n                let path = '';\n                for (let t = minTemp; t <= maxTemp; t++) {\n                    const solventPressure = getVaporPressure(t);\n                    const solutionPressure = solventPressure * solventMoleFraction;\n                    const x = getX(t);\n                    const y = getY(solutionPressure);\n                    \n                    if (t === minTemp) {\n                        path += `M ${x.toFixed(2)} ${y.toFixed(2)}`;\n                    } else {\n                        path += ` L ${x.toFixed(2)} ${y.toFixed(2)}`;\n                    }\n                }\n                return path;\n            }\n            \n            \/\/ \u0631\u0633\u0645 \u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u0628\u064a\u0627\u0646\u064a\n            function renderGraph() {\n                const svg = document.getElementById('vp-graph-svg');\n                svg.innerHTML = '';\n                \n                const solventMoleFraction = 1 - state.soluteConcentration;\n                const solventPath = createCurvePath(1);\n                const solutionPath = createCurvePath(solventMoleFraction);\n                \n                \/\/ \u0627\u0644\u0645\u062d\u0627\u0648\u0631\n                const axes = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'g');\n                \n                \/\/ \u0627\u0644\u0645\u062d\u0648\u0631 X\n                const xAxis = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'line');\n                xAxis.setAttribute('x1', padding.left);\n                xAxis.setAttribute('y1', padding.top + chartHeight);\n                xAxis.setAttribute('x2', width - padding.right);\n                xAxis.setAttribute('y2', padding.top + chartHeight);\n                xAxis.setAttribute('stroke', '#6b7280');\n                xAxis.setAttribute('stroke-width', '2');\n                axes.appendChild(xAxis);\n                \n                \/\/ \u0627\u0644\u0645\u062d\u0648\u0631 Y\n                const yAxis = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'line');\n                yAxis.setAttribute('x1', padding.left);\n                yAxis.setAttribute('y1', padding.top + chartHeight);\n                yAxis.setAttribute('x2', padding.left);\n                yAxis.setAttribute('y2', padding.top);\n                yAxis.setAttribute('stroke', '#6b7280');\n                yAxis.setAttribute('stroke-width', '2');\n                axes.appendChild(yAxis);\n                \n                \/\/ \u062a\u0633\u0645\u064a\u0627\u062a \u0627\u0644\u0645\u062d\u0627\u0648\u0631\n                const xLabel = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'text');\n                xLabel.setAttribute('x', width \/ 2);\n                xLabel.setAttribute('y', height - 10);\n                xLabel.setAttribute('fill', '#9ca3af');\n                xLabel.setAttribute('text-anchor', 'middle');\n                xLabel.setAttribute('font-size', '12');\n                xLabel.textContent = '\u062f\u0631\u062c\u0629 \u0627\u0644\u062d\u0631\u0627\u0631\u0629 (\u00b0C)';\n                axes.appendChild(xLabel);\n                \n                const yLabel = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'text');\n                yLabel.setAttribute('x', padding.left - 45);\n                yLabel.setAttribute('y', height \/ 2);\n                yLabel.setAttribute('fill', '#9ca3af');\n                yLabel.setAttribute('text-anchor', 'middle');\n                yLabel.setAttribute('transform', `rotate(-90, ${padding.left - 45}, ${height\/2})`);\n                yLabel.setAttribute('font-size', '12');\n                yLabel.textContent = '\u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a (atm)';\n                axes.appendChild(yLabel);\n                \n                \/\/ \u062e\u0637\u0648\u0637 \u0627\u0644\u0634\u0628\u0643\u0629 \u0648\u0627\u0644\u062a\u0633\u0645\u064a\u0627\u062a\n                [0.5, 1.0, 1.5, 2.0].forEach(p => {\n                    const gridLine = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'line');\n                    gridLine.setAttribute('x1', padding.left);\n                    gridLine.setAttribute('y1', getY(p));\n                    gridLine.setAttribute('x2', width - padding.right);\n                    gridLine.setAttribute('y2', getY(p));\n                    gridLine.setAttribute('stroke', '#475569');\n                    gridLine.setAttribute('stroke-width', '0.5');\n                    gridLine.setAttribute('stroke-dasharray', '4');\n                    axes.appendChild(gridLine);\n                    \n                    const label = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'text');\n                    label.setAttribute('x', padding.left - 8);\n                    label.setAttribute('y', getY(p) + 4);\n                    label.setAttribute('fill', '#9ca3af');\n                    label.setAttribute('text-anchor', 'end');\n                    label.setAttribute('font-size', '10');\n                    label.textContent = p.toFixed(1);\n                    axes.appendChild(label);\n                });\n                \n                [20, 40, 60, 80, 100, 120].forEach(t => {\n                    const gridLine = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'line');\n                    gridLine.setAttribute('x1', getX(t));\n                    gridLine.setAttribute('y1', padding.top);\n                    gridLine.setAttribute('x2', getX(t));\n                    gridLine.setAttribute('y2', padding.top + chartHeight);\n                    gridLine.setAttribute('stroke', '#475569');\n                    gridLine.setAttribute('stroke-width', '0.5');\n                    gridLine.setAttribute('stroke-dasharray', '4');\n                    axes.appendChild(gridLine);\n                    \n                    const label = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'text');\n                    label.setAttribute('x', getX(t));\n                    label.setAttribute('y', padding.top + chartHeight + 15);\n                    label.setAttribute('fill', '#9ca3af');\n                    label.setAttribute('text-anchor', 'middle');\n                    label.setAttribute('font-size', '10');\n                    label.textContent = t.toString();\n                    axes.appendChild(label);\n                });\n                \n                \/\/ \u0627\u0644\u0645\u0646\u062d\u0646\u064a\u0627\u062a\n                const solventCurve = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'path');\n                solventCurve.setAttribute('d', solventPath);\n                solventCurve.setAttribute('fill', 'none');\n                solventCurve.setAttribute('stroke', '#60a5fa');\n                solventCurve.setAttribute('stroke-width', '3');\n                axes.appendChild(solventCurve);\n                \n                const solutionCurve = document.createElementNS('http:\/\/www.w3.org\/2000\/svg', 'path');\n                solutionCurve.setAttribute('d', solutionPath);\n                solutionCurve.setAttribute('fill', 'none');\n                solutionCurve.setAttribute('stroke', '#f97316');\n                solutionCurve.setAttribute('stroke-width', '3');\n                solutionCurve.setAttribute('class', 'transition-all duration-300');\n                axes.appendChild(solutionCurve);\n                \n                svg.appendChild(axes);\n            }\n            \n            \/\/ \u0625\u0639\u062f\u0627\u062f \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u062a\u062d\u0643\u0645\n            function setupControls() {\n                const concentrationSlider = document.getElementById('vp-concentration-slider');\n                concentrationSlider.addEventListener('input', () => {\n                    state.soluteConcentration = parseFloat(concentrationSlider.value);\n                    renderGraph();\n                });\n            }\n            \n            \/\/ \u0628\u062f\u0621 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            renderGraph();\n            setupControls();\n        })();\n        \n        \/\/ ============================================\n        \/\/ 4. \u062c\u062f\u0648\u0644 \u062b\u0648\u0627\u0628\u062a \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646\n        \/\/ ============================================\n        (function() {\n            const container = document.getElementById('boiling-point-constants-table');\n            if (!container) return;\n            \n            const tableData = [\n                { solvent: '\u0627\u0644\u0645\u0627\u0621', boilingPoint: 100.0, kb: 0.512 },\n                { solvent: '\u0627\u0644\u0625\u064a\u062b\u0627\u0646\u0648\u0644', boilingPoint: 78.4, kb: 1.22 },\n                { solvent: '\u0627\u0644\u0628\u0646\u0632\u064a\u0646', boilingPoint: 80.1, kb: 2.53 },\n                { solvent: '\u062d\u0645\u0636 \u0627\u0644\u062e\u0644\u064a\u0643', boilingPoint: 118.1, kb: 3.07 },\n                { solvent: '\u0631\u0628\u0627\u0639\u064a \u0643\u0644\u0648\u0631\u064a\u062f \u0627\u0644\u0643\u0631\u0628\u0648\u0646', boilingPoint: 76.8, kb: 5.03 }\n            ];\n            \n            container.innerHTML = `\n                <div class=\"overflow-x-auto\">\n                    <table class=\"lesson-table\">\n                        <thead class=\"bg-white\/10 text-xs text-slate-200 uppercase tracking-wider\">\n                            <tr>\n                                <th scope=\"col\" class=\"px-6 py-3\">\u0627\u0644\u0645\u0630\u064a\u0628<\/th>\n                                <th scope=\"col\" class=\"px-6 py-3\">\u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 (\u00b0C)<\/th>\n                                <th scope=\"col\" class=\"px-6 py-3\">\u062b\u0627\u0628\u062a \u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 (K_b) (\u00b0C\u00b7kg\/mol)<\/th>\n                            <\/tr>\n                        <\/thead>\n                        <tbody>\n                            ${tableData.map(row => `\n                                <tr class=\"border-b border-white\/10 hover:bg-white\/5\">\n                                    <th scope=\"row\" class=\"px-6 py-4 font-bold text-white\/90 whitespace-nowrap\">\n                                        ${row.solvent}\n                                    <\/th>\n                                    <td class=\"px-6 py-4 font-mono\">${row.boilingPoint.toFixed(1)}<\/td>\n                                    <td class=\"px-6 py-4 font-mono\">${row.kb.toFixed(3)}<\/td>\n                                <\/tr>\n                            `).join('')}\n                        <\/tbody>\n                    <\/table>\n                <\/div>\n                <p class=\"mt-4 text-xs text-center text-slate-400\">\n                    \u0645\u0644\u0627\u062d\u0638\u0629: \u062b\u0627\u0628\u062a \u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 (K_b) \u0647\u0648 \u062e\u0627\u0635\u064a\u0629 \u0645\u0645\u064a\u0632\u0629 \u0644\u0643\u0644 \u0645\u0630\u064a\u0628.\n                <\/p>\n            `;\n        })();\n        \n        \/\/ ============================================\n        \/\/ 5. \u062c\u062f\u0648\u0644 \u062b\u0648\u0627\u0628\u062a \u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f\n        \/\/ ============================================\n        (function() {\n            const container = document.getElementById('freezing-point-constants-table');\n            if (!container) return;\n            \n            const tableData = [\n                { solvent: '\u0627\u0644\u0645\u0627\u0621', freezingPoint: 0.0, kf: 1.86 },\n                { solvent: '\u0627\u0644\u0625\u064a\u062b\u0627\u0646\u0648\u0644', freezingPoint: -114.6, kf: 1.99 },\n                { solvent: '\u0627\u0644\u0628\u0646\u0632\u064a\u0646', freezingPoint: 5.5, kf: 5.12 },\n                { solvent: '\u062d\u0645\u0636 \u0627\u0644\u062e\u0644\u064a\u0643', freezingPoint: 16.6, kf: 3.90 },\n                { solvent: '\u0631\u0628\u0627\u0639\u064a \u0643\u0644\u0648\u0631\u064a\u062f \u0627\u0644\u0643\u0631\u0628\u0648\u0646', freezingPoint: -22.9, kf: 29.8 }\n            ];\n            \n            container.innerHTML = `\n                <div class=\"overflow-x-auto\">\n                    <table class=\"lesson-table\">\n                        <thead class=\"bg-white\/10 text-xs text-slate-200 uppercase tracking-wider\">\n                            <tr>\n                                <th scope=\"col\" class=\"px-6 py-3\">\u0627\u0644\u0645\u0630\u064a\u0628<\/th>\n                                <th scope=\"col\" class=\"px-6 py-3\">\u062f\u0631\u062c\u0629 \u0627\u0644\u062a\u062c\u0645\u062f (\u00b0C)<\/th>\n                                <th scope=\"col\" class=\"px-6 py-3\">\u062b\u0627\u0628\u062a \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 (K_f) (\u00b0C\u00b7kg\/mol)<\/th>\n                            <\/tr>\n                        <\/thead>\n                        <tbody>\n                            ${tableData.map(row => `\n                                <tr class=\"border-b border-white\/10 hover:bg-white\/5\">\n                                    <th scope=\"row\" class=\"px-6 py-4 font-bold text-white\/90 whitespace-nowrap\">\n                                        ${row.solvent}\n                                    <\/th>\n                                    <td class=\"px-6 py-4 font-mono\">${row.freezingPoint.toFixed(1)}<\/td>\n                                    <td class=\"px-6 py-4 font-mono\">${row.kf.toFixed(2)}<\/td>\n                                <\/tr>\n                            `).join('')}\n                        <\/tbody>\n                    <\/table>\n                <\/div>\n                <p class=\"mt-4 text-xs text-center text-slate-400\">\n                    \u0645\u0644\u0627\u062d\u0638\u0629: \u062b\u0627\u0628\u062a \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 (K_f) \u0647\u0648 \u062e\u0627\u0635\u064a\u0629 \u0645\u0645\u064a\u0632\u0629 \u0644\u0643\u0644 \u0645\u0630\u064a\u0628.\n                <\/p>\n            `;\n        })();\n        \n        \/\/ ============================================\n        \/\/ 6. \u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a\n        \/\/ ============================================\n        (function() {\n            const container = document.getElementById('osmosis-simulation');\n            if (!container) return;\n            \n            container.innerHTML = `\n                <div class=\"not-prose my-8 p-4 sm:p-6 bg-black\/20 rounded-lg border border-white\/10\">\n                    <div class=\"flex justify-between items-center mb-2\">\n                        <h3 class=\"text-xl font-bold text-white\/90\">\u0645\u062d\u0627\u0643\u0627\u0629 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a<\/h3>\n                        <button id=\"osmosis-reset-btn\" class=\"p-2 rounded-full hover:bg-white\/10\" aria-label=\"\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646\">\u27f3<\/button>\n                    <\/div>\n                    <div class=\"flex flex-col items-center\">\n                        <canvas id=\"osmosis-canvas\" width=\"300\" height=\"220\" class=\"rounded-md bg-slate-900\/50 max-w-full\"><\/canvas>\n                        <div class=\"flex justify-center gap-4 mt-2\">\n                            <div class=\"flex items-center gap-2\"><div class=\"w-3 h-3 rounded-full bg-[#60a5fa]\"><\/div><span class=\"text-sm text-slate-300\">\u0645\u0630\u064a\u0628 (\u0645\u0627\u0621)<\/span><\/div>\n                            <div class=\"flex items-center gap-2\"><div class=\"w-3 h-3 rounded-full bg-[#f97316]\"><\/div><span class=\"text-sm text-slate-300\">\u0645\u0630\u0627\u0628<\/span><\/div>\n                        <\/div>\n                    <\/div>\n                    <div class=\"grid grid-cols-1 md:grid-cols-2 gap-4 mt-4 border-t border-white\/10 pt-4\">\n                        <div>\n                            <label for=\"osmosis-concentration-slider\" class=\"font-semibold mb-2 text-slate-300 text-center block\">\n                                \u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0630\u0627\u0628 (\u064a\u0632\u064a\u062f \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a)\n                            <\/label>\n                            <input id=\"osmosis-concentration-slider\" type=\"range\" min=\"0\" max=\"10\" step=\"1\" value=\"4\" class=\"w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-orange-400\" \/>\n                        <\/div>\n                        <div>\n                            <label for=\"osmosis-pressure-slider\" class=\"font-semibold mb-2 text-slate-300 text-center block\">\n                                \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0645\u0637\u0628\u0642 (\u0639\u0644\u0649 \u0627\u0644\u0645\u062d\u0644\u0648\u0644)\n                            <\/label>\n                            <input id=\"osmosis-pressure-slider\" type=\"range\" min=\"0\" max=\"20\" step=\"1\" value=\"0\" class=\"w-full h-2 bg-slate-700 rounded-lg appearance-none cursor-pointer accent-teal-500\" \/>\n                        <\/div>\n                    <\/div>\n                    <p class=\"mt-4 text-sm text-center text-slate-400 p-3 bg-slate-800\/40 rounded-md\">\n                        \u0644\u0627\u062d\u0638 \u0643\u064a\u0641 \u064a\u0646\u062a\u0642\u0644 \u0627\u0644\u0645\u0630\u064a\u0628 (\u0627\u0644\u0645\u0627\u0621) \u0645\u0646 \u0627\u0644\u062c\u0627\u0646\u0628 \u0627\u0644\u0623\u0642\u0644 \u062a\u0631\u0643\u064a\u0632\u064b\u0627 \u0625\u0644\u0649 \u0627\u0644\u0623\u0639\u0644\u0649 \u062a\u0631\u0643\u064a\u0632\u064b\u0627 \u0644\u064a\u0639\u0627\u062f\u0644 \u0627\u0644\u0641\u0631\u0642. \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0645\u0637\u0628\u0642 \u064a\u0639\u0627\u0643\u0633 \u0647\u0630\u0647 \u0627\u0644\u0639\u0645\u0644\u064a\u0629\u060c \u0648\u0625\u0630\u0627 \u0643\u0627\u0646 \u0643\u0627\u0641\u064a\u064b\u0627\u060c \u064a\u0645\u0643\u0646\u0647 \u0639\u0643\u0633\u0647\u0627 (\u0627\u0644\u0623\u0633\u0645\u0648\u0632\u064a\u0629 \u0627\u0644\u0639\u0643\u0633\u064a\u0629).\n                    <\/p>\n                <\/div>\n            `;\n            \n            \/\/ \u062d\u0627\u0644\u0629 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            let state = {\n                soluteConcentration: 4,\n                appliedPressure: 0,\n                particles: [],\n                animationId: null\n            };\n            \n            \/\/ \u062b\u0648\u0627\u0628\u062a \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            const width = 300;\n            const height = 220;\n            const armWidth = 100;\n            const bottomThickness = 30;\n            const membraneWidth = 8;\n            const membraneX = width \/ 2;\n            const leftArmX = (width \/ 2) - (armWidth) - membraneWidth \/ 2;\n            const rightArmX = (width \/ 2) + membraneWidth \/ 2;\n            \n            \/\/ \u062a\u0647\u064a\u0626\u0629 \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a\n            function initializeParticles() {\n                state.particles = [];\n                let idCounter = 0;\n                \n                \/\/ \u0645\u0630\u064a\u0628 \u0641\u064a \u0627\u0644\u062c\u0627\u0646\u0628 \u0627\u0644\u0623\u064a\u0633\u0631 (\u0646\u0642\u064a)\n                for (let i = 0; i < 40; i++) {\n                    state.particles.push({\n                        id: idCounter++,\n                        type: 'solvent',\n                        x: leftArmX + Math.random() * armWidth,\n                        y: height \/ 2 + Math.random() * (height \/ 2 - bottomThickness),\n                        vx: (Math.random() - 0.5) * 0.5,\n                        vy: (Math.random() - 0.5) * 0.5,\n                        radius: 3.5,\n                        color: '#60a5fa'\n                    });\n                }\n                \n                \/\/ \u0645\u0630\u064a\u0628 \u0641\u064a \u0627\u0644\u062c\u0627\u0646\u0628 \u0627\u0644\u0623\u064a\u0645\u0646 (\u0641\u064a \u0627\u0644\u0645\u062d\u0644\u0648\u0644)\n                for (let i = 0; i < 40; i++) {\n                    state.particles.push({\n                        id: idCounter++,\n                        type: 'solvent',\n                        x: rightArmX + Math.random() * armWidth,\n                        y: height \/ 2 + Math.random() * (height \/ 2 - bottomThickness),\n                        vx: (Math.random() - 0.5) * 0.5,\n                        vy: (Math.random() - 0.5) * 0.5,\n                        radius: 3.5,\n                        color: '#60a5fa'\n                    });\n                }\n                \n                \/\/ \u0625\u0636\u0627\u0641\u0629 \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u0630\u0627\u0628\n                const numSolute = state.soluteConcentration * 3;\n                for (let i = 0; i < numSolute; i++) {\n                    state.particles.push({\n                        id: 1000 + i,\n                        type: 'solute',\n                        x: rightArmX + Math.random() * armWidth,\n                        y: height \/ 2 + Math.random() * (height \/ 2 - bottomThickness),\n                        vx: (Math.random() - 0.5) * 0.2,\n                        vy: (Math.random() - 0.5) * 0.2,\n                        radius: 5,\n                        color: '#f97316'\n                    });\n                }\n            }\n            \n            \/\/ \u0631\u0633\u0645 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            function render() {\n                const canvas = document.getElementById('osmosis-canvas');\n                const ctx = canvas.getContext('2d');\n                if (!ctx) return;\n                \n                const osmoticPressure = state.soluteConcentration * 2;\n                const netPressure = osmoticPressure - state.appliedPressure;\n                const targetHeightDiff = Math.max(-60, Math.min(60, netPressure * 3));\n                \n                \/\/ \u062d\u0633\u0627\u0628 \u0641\u0631\u0642 \u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0627\u0644\u062d\u0627\u0644\u064a (\u0628\u0633\u0644\u0627\u0633\u0629)\n                if (!state.currentHeightDiff) state.currentHeightDiff = 0;\n                state.currentHeightDiff += (targetHeightDiff - state.currentHeightDiff) * 0.05;\n                \n                const leftLevel = height \/ 2 + state.currentHeightDiff \/ 2;\n                const rightLevel = height \/ 2 - state.currentHeightDiff \/ 2;\n                \n                ctx.clearRect(0, 0, width, height);\n                \n                \/\/ \u0631\u0633\u0645 \u062c\u062f\u0631\u0627\u0646 \u0627\u0644\u062d\u0627\u0648\u064a\u0629\n                ctx.strokeStyle = '#9ca3af';\n                ctx.lineWidth = 3;\n                ctx.beginPath();\n                ctx.moveTo(leftArmX, 0);\n                ctx.lineTo(leftArmX, height - bottomThickness);\n                ctx.arcTo(leftArmX, height, leftArmX + bottomThickness, height, bottomThickness);\n                ctx.lineTo(rightArmX + armWidth - bottomThickness, height);\n                ctx.arcTo(rightArmX + armWidth, height, rightArmX + armWidth, height - bottomThickness, bottomThickness);\n                ctx.lineTo(rightArmX + armWidth, 0);\n                ctx.moveTo(leftArmX + armWidth, 0);\n                ctx.lineTo(leftArmX + armWidth, height);\n                ctx.stroke();\n                \n                \/\/ \u0631\u0633\u0645 \u0627\u0644\u0633\u0648\u0627\u0626\u0644\n                const drawLiquid = (levelY, startX, armW) => {\n                    ctx.beginPath();\n                    ctx.moveTo(startX, levelY);\n                    ctx.lineTo(startX, height - bottomThickness);\n                    ctx.arcTo(startX, height, startX + bottomThickness, height, bottomThickness);\n                    ctx.lineTo(startX + armW - bottomThickness, height);\n                    ctx.arcTo(startX + armW, height, startX + armW, height - bottomThickness, bottomThickness);\n                    ctx.lineTo(startX + armW, levelY);\n                    ctx.closePath();\n                    ctx.fillStyle = \"rgba(56, 189, 248, 0.4)\";\n                    ctx.fill();\n                };\n                \n                drawLiquid(leftLevel, leftArmX, armWidth);\n                drawLiquid(rightLevel, rightArmX, armWidth);\n                \n                \/\/ \u0631\u0633\u0645 \u0627\u0644\u063a\u0634\u0627\u0621\n                ctx.fillStyle = '#475569';\n                ctx.fillRect(membraneX - membraneWidth \/ 2, 0, membraneWidth, height);\n                \n                \/\/ \u062a\u062d\u062f\u064a\u062b \u0648\u0631\u0633\u0645 \u0627\u0644\u062c\u0633\u064a\u0645\u0627\u062a\n                state.particles.forEach(p => {\n                    p.x += p.vx;\n                    p.y += p.vy;\n                    \n                    const armStartX = p.x < membraneX ? leftArmX : rightArmX;\n                    const liquidLevel = p.x < membraneX ? leftLevel : rightLevel;\n                    \n                    \/\/ \u062a\u0635\u0627\u062f\u0645 \u0645\u0639 \u0627\u0644\u062c\u062f\u0631\u0627\u0646\n                    if (p.x < armStartX + p.radius || p.x > armStartX + armWidth - p.radius) {\n                        p.vx *= -1;\n                    }\n                    if (p.y > height - p.radius) {\n                        p.y = height - p.radius;\n                        p.vy *= -1;\n                    }\n                    if (p.y < liquidLevel + p.radius) {\n                        p.y = liquidLevel + p.radius;\n                        p.vy *= -1;\n                    }\n                    \n                    \/\/ \u062a\u0635\u0627\u062f\u0645 \u0645\u0639 \u0627\u0644\u063a\u0634\u0627\u0621 (\u0644\u0644\u0645\u0630\u0627\u0628 \u0641\u0642\u0637)\n                    if (p.x + p.radius > membraneX - membraneWidth \/ 2 && p.x - p.radius < membraneX + membraneWidth \/ 2) {\n                        if (p.type === 'solute') {\n                            p.vx *= -1;\n                            p.x = p.x < membraneX ? membraneX - membraneWidth \/ 2 - p.radius : membraneX + membraneWidth \/ 2 + p.radius;\n                        }\n                    }\n                    \n                    \/\/ \u0631\u0633\u0645 \u0627\u0644\u062c\u0633\u064a\u0645\n                    ctx.beginPath();\n                    ctx.arc(p.x, p.y, p.radius, 0, Math.PI * 2);\n                    ctx.fillStyle = p.color;\n                    ctx.fill();\n                });\n                \n                \/\/ \u0631\u0633\u0645 \u0645\u0624\u0634\u0631 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0645\u0637\u0628\u0642\n                if (state.appliedPressure > 0) {\n                    const pressureIndicatorY = rightLevel - 10;\n                    ctx.fillStyle = 'rgba(255, 255, 255, 0.5)';\n                    ctx.fillRect(rightArmX, pressureIndicatorY, armWidth, 5);\n                    \n                    ctx.font = '10px Cairo';\n                    ctx.textAlign = 'center';\n                    ctx.fillText('\u0636\u063a\u0637 \u0645\u0637\u0628\u0642', rightArmX + armWidth \/ 2, pressureIndicatorY - 5);\n                    \n                    \/\/ \u0631\u0633\u0645 \u0623\u0633\u0647\u0645 \u0627\u0644\u0636\u063a\u0637\n                    for (let i = 0; i < 5; i++) {\n                        ctx.beginPath();\n                        ctx.moveTo(rightArmX + armWidth \/ 2 - 15 + i * 7.5, pressureIndicatorY - 2);\n                        ctx.lineTo(rightArmX + armWidth \/ 2, pressureIndicatorY - 10);\n                        ctx.lineTo(rightArmX + armWidth \/ 2 + 15 - i * 7.5, pressureIndicatorY - 2);\n                        ctx.strokeStyle = 'rgba(255,255,255,0.5)';\n                        ctx.lineWidth = 1;\n                        ctx.stroke();\n                    }\n                }\n                \n                state.animationId = requestAnimationFrame(render);\n            }\n            \n            \/\/ \u0625\u0639\u062f\u0627\u062f \u0648\u0627\u062c\u0647\u0629 \u0627\u0644\u062a\u062d\u0643\u0645\n            function setupControls() {\n                \/\/ \u0634\u0631\u064a\u0637 \u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0630\u0627\u0628\n                const concentrationSlider = document.getElementById('osmosis-concentration-slider');\n                concentrationSlider.addEventListener('input', () => {\n                    state.soluteConcentration = Number(concentrationSlider.value);\n                    initializeParticles();\n                });\n                \n                \/\/ \u0634\u0631\u064a\u0637 \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0645\u0637\u0628\u0642\n                const pressureSlider = document.getElementById('osmosis-pressure-slider');\n                pressureSlider.addEventListener('input', () => {\n                    state.appliedPressure = Number(pressureSlider.value);\n                });\n                \n                \/\/ \u0632\u0631 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0639\u064a\u064a\u0646\n                document.getElementById('osmosis-reset-btn').addEventListener('click', () => {\n                    state.soluteConcentration = 4;\n                    state.appliedPressure = 0;\n                    \n                    concentrationSlider.value = state.soluteConcentration;\n                    pressureSlider.value = state.appliedPressure;\n                    \n                    initializeParticles();\n                });\n            }\n            \n            \/\/ \u0628\u062f\u0621 \u0627\u0644\u0645\u062d\u0627\u0643\u0627\u0629\n            initializeParticles();\n            setupControls();\n            render();\n            \n            \/\/ \u062a\u0646\u0638\u064a\u0641\n            return () => {\n                if (state.animationId) {\n                    cancelAnimationFrame(state.animationId);\n                }\n            };\n        })();\n        \n        console.log(\"\u062c\u0645\u064a\u0639 \u0645\u062d\u0627\u0643\u064a\u0627\u062a \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0644\u0644\u0645\u062d\u0627\u0644\u064a\u0644 \u062a\u0645 \u062a\u062d\u0645\u064a\u0644\u0647\u0627 \u0628\u0646\u062c\u0627\u062d!\");\n    <\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0644\u062f\u0631\u0633 \u0627\u0644\u062b\u0627\u0646\u064a: \u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644 &#8211; \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0627\u0644\u062f\u0631\u0633 \u0627\u0644\u062b\u0627\u0646\u064a: \u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u062d\u0627\u0644\u064a\u0644 \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0644\u0644\u0645\u062d\u0627\u0644\u064a\u0644 (Colligative Properties) \u0661. \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0644\u0644\u0645\u062d\u0627\u0644\u064a\u0644 (Colligative Properties) \u0627\u0644\u062a\u0639\u0631\u064a\u0641: \u062e\u0635\u0627\u0626\u0635 \u0641\u064a\u0632\u064a\u0627\u0626\u064a\u0629 \u0644\u0644\u0645\u062d\u0627\u0644\u064a\u0644 \u062a\u0639\u062a\u0645\u062f \u0639\u0644\u0649 \u0639\u062f\u062f \u062c\u0633\u064a\u0645\u0627\u062a \u0627\u0644\u0645\u0630\u0627\u0628 \u0648\u0644\u064a\u0633 \u0639\u0644\u0649 \u0637\u0628\u064a\u0639\u062a\u0647\u0627 \u0627\u0644\u0643\u064a\u0645\u064a\u0627\u0626\u064a\u0629. \u0623\u064a \u0623\u0646\u0647\u0627 \u062a\u0639\u062a\u0645\u062f \u0639\u0644\u0649 \u0627\u0644\u062a\u0631\u0643\u064a\u0632 \u0627\u0644\u0645\u0648\u0644\u0627\u0644\u064a \u0644\u0644\u0645\u0630\u0627\u0628. \u0627\u0644\u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u062c\u0627\u0645\u0639\u0629 \u0627\u0644\u0623\u0631\u0628\u0639 \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629: \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 \u0641\u064a \u0627\u0644\u0636\u063a\u0637 \u0627\u0644\u0628\u062e\u0627\u0631\u064a \u0627\u0644\u0627\u0631\u062a\u0641\u0627\u0639 \u0641\u064a \u062f\u0631\u062c\u0629 \u0627\u0644\u063a\u0644\u064a\u0627\u0646 \u0627\u0644\u0627\u0646\u062e\u0641\u0627\u0636 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-16974","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/smartedujo.com\/ar\/wp-json\/wp\/v2\/pages\/16974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smartedujo.com\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/smartedujo.com\/ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/smartedujo.com\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smartedujo.com\/ar\/wp-json\/wp\/v2\/comments?post=16974"}],"version-history":[{"count":1,"href":"https:\/\/smartedujo.com\/ar\/wp-json\/wp\/v2\/pages\/16974\/revisions"}],"predecessor-version":[{"id":16975,"href":"https:\/\/smartedujo.com\/ar\/wp-json\/wp\/v2\/pages\/16974\/revisions\/16975"}],"wp:attachment":[{"href":"https:\/\/smartedujo.com\/ar\/wp-json\/wp\/v2\/media?parent=16974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}