{"id":570,"date":"2026-07-21T05:02:40","date_gmt":"2026-07-21T05:02:40","guid":{"rendered":"https:\/\/kimia-majateng.online\/wordpress\/?page_id=570"},"modified":"2026-07-21T08:30:30","modified_gmt":"2026-07-21T08:30:30","slug":"larutan-dan-konsentrasi-larutan","status":"publish","type":"page","link":"https:\/\/kimia-majateng.online\/wordpress\/e-konten\/larutan-dan-konsentrasi-larutan\/","title":{"rendered":"Larutan dan Konsentrasi Larutan"},"content":{"rendered":"\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Konsentrasi Larutan\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/cwoMm1RaKRo?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"id\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Ringkasan Konsentrasi Larutan | Kimia SMA<\/title>\n  <style>\n    \/* ===== RESET & BASE ===== *\/\n    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n    :root {\n      --teal: #0d7377;\n      --teal-light: #14919b;\n      --teal-dark: #095456;\n      --orange: #e67e22;\n      --green: #27ae60;\n      --purple: #8e44ad;\n      --blue: #2980b9;\n      --red: #c0392b;\n      --bg: #f4f9f9;\n      --card: #ffffff;\n      --text: #2c3e50;\n      --muted: #7f8c8d;\n      --border: #d0e8e8;\n      --shadow: 0 4px 20px rgba(13,115,119,0.10);\n      --radius: 16px;\n    }\n    body {\n      font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;\n      background: var(--bg);\n      color: var(--text);\n      line-height: 1.7;\n      padding: 0;\n    }\n\n    \/* ===== WRAPPER (agar aman di WordPress) ===== *\/\n    .kl-wrapper {\n      max-width: 900px;\n      margin: 0 auto;\n      padding: 24px 16px 60px;\n    }\n\n    \/* ===== HEADER ===== *\/\n    .kl-header {\n      background: linear-gradient(135deg, var(--teal-dark) 0%, var(--teal) 50%, var(--teal-light) 100%);\n      color: #fff;\n      border-radius: var(--radius);\n      padding: 36px 28px;\n      text-align: center;\n      margin-bottom: 32px;\n      box-shadow: 0 10px 30px rgba(13,115,119,0.25);\n      position: relative;\n      overflow: hidden;\n    }\n    .kl-header::before {\n      content: '';\n      position: absolute;\n      top: -40px; right: -40px;\n      width: 160px; height: 160px;\n      background: rgba(255,255,255,0.08);\n      border-radius: 50%;\n    }\n    .kl-header h1 {\n      font-size: 2.52rem;\n      font-weight: 800;\n      margin-bottom: 8px;\n      letter-spacing: -0.5px;\n    }\n    .kl-header p {\n      font-size: 1.47rem;\n      opacity: 0.92;\n      max-width: 520px;\n      margin: 0 auto;\n    }\n    .kl-badge {\n      display: inline-block;\n      background: rgba(255,255,255,0.18);\n      padding: 5px 16px;\n      border-radius: 30px;\n      font-size: 1.15rem;\n      margin-top: 14px;\n      font-weight: 600;\n    }\n\n    \/* ===== NAV PILLS ===== *\/\n    .kl-nav {\n      display: flex;\n      flex-wrap: wrap;\n      gap: 8px;\n      justify-content: center;\n      margin-bottom: 36px;\n    }\n    .kl-nav a {\n      text-decoration: none;\n      background: var(--card);\n      color: var(--teal);\n      border: 1.5px solid var(--border);\n      padding: 7px 16px;\n      border-radius: 30px;\n      font-size: 1.19rem;\n      font-weight: 600;\n      transition: all 0.2s;\n    }\n    .kl-nav a:hover {\n      background: var(--teal);\n      color: #fff;\n      border-color: var(--teal);\n    }\n\n    \/* ===== SECTION CARD ===== *\/\n    .kl-section {\n      background: var(--card);\n      border-radius: var(--radius);\n      padding: 28px 24px;\n      margin-bottom: 28px;\n      box-shadow: var(--shadow);\n      border: 1px solid var(--border);\n    }\n    .kl-section-header {\n      display: flex;\n      align-items: center;\n      gap: 14px;\n      margin-bottom: 18px;\n    }\n    .kl-icon {\n      width: 48px; height: 48px;\n      border-radius: 14px;\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      font-size: 2.1rem;\n      flex-shrink: 0;\n    }\n    .kl-section h2 {\n      font-size: 1.82rem;\n      font-weight: 700;\n      color: var(--teal-dark);\n    }\n    .kl-section h3 {\n      font-size: 1.47rem;\n      font-weight: 700;\n      color: var(--teal);\n      margin: 18px 0 8px;\n    }\n    .kl-section p, .kl-section li {\n      font-size: 1.36rem;\n      color: var(--text);\n    }\n    .kl-section ul {\n      margin: 8px 0 12px 20px;\n    }\n    .kl-section li { margin-bottom: 4px; }\n\n    \/* ===== FORMULA BOX ===== *\/\n    .kl-formula {\n      background: linear-gradient(135deg, #e8f6f6 0%, #d4efef 100%);\n      border-left: 5px solid var(--teal);\n      border-radius: 0 12px 12px 0;\n      padding: 16px 20px;\n      margin: 16px 0;\n      font-family: 'Courier New', Consolas, monospace;\n      font-size: 1.47rem;\n      font-weight: 600;\n      color: var(--teal-dark);\n      text-align: center;\n      line-height: 1.8;\n    }\n    .kl-formula .label {\n      display: block;\n      font-family: 'Segoe UI', sans-serif;\n      font-size: 1.12rem;\n      font-weight: 600;\n      color: var(--muted);\n      margin-bottom: 4px;\n      letter-spacing: 0.5px;\n      text-transform: uppercase;\n    }\n\n    \/* ===== EXAMPLE BOX ===== *\/\n    .kl-contoh {\n      background: #fff8e7;\n      border-left: 5px solid var(--orange);\n      border-radius: 0 12px 12px 0;\n      padding: 14px 18px;\n      margin: 14px 0;\n      font-size: 1.30rem;\n    }\n    .kl-contoh strong {\n      color: #b9770e;\n      display: block;\n      margin-bottom: 4px;\n    }\n\n    \/* ===== TIP BOX ===== *\/\n    .kl-tip {\n      background: #eafaf1;\n      border-left: 5px solid var(--green);\n      border-radius: 0 12px 12px 0;\n      padding: 14px 18px;\n      margin: 14px 0;\n      font-size: 1.30rem;\n    }\n    .kl-tip strong { color: var(--green); }\n\n    \/* ===== TABLE ===== *\/\n    .kl-table-wrap { overflow-x: auto; margin: 16px 0; }\n    .kl-table {\n      width: 100%;\n      border-collapse: collapse;\n      font-size: 1.26rem;\n    }\n    .kl-table th {\n      background: var(--teal);\n      color: #fff;\n      padding: 11px 12px;\n      text-align: center;\n      font-weight: 600;\n    }\n    .kl-table td {\n      padding: 10px 12px;\n      border: 1px solid var(--border);\n      text-align: center;\n    }\n    .kl-table tr:nth-child(even) td { background: #f0f9f9; }\n    .kl-table tr:hover td { background: #e0f2f2; }\n\n    \/* ===== DIAGRAM \/ ILLUSTRATION ===== *\/\n    .kl-diagram {\n      background: #f0f9f9;\n      border: 2px dashed var(--teal-light);\n      border-radius: 12px;\n      padding: 20px;\n      margin: 16px 0;\n      text-align: center;\n    }\n    .kl-diagram-title {\n      font-size: 1.19rem;\n      color: var(--muted);\n      margin-bottom: 12px;\n      font-style: italic;\n    }\n    .kl-beaker {\n      display: inline-flex;\n      flex-direction: column;\n      align-items: center;\n      margin: 0 18px;\n      vertical-align: bottom;\n    }\n    .kl-beaker-body {\n      width: 70px;\n      height: 90px;\n      border: 3px solid var(--teal);\n      border-top: none;\n      border-radius: 0 0 12px 12px;\n      position: relative;\n      overflow: hidden;\n      background: #e0f2f2;\n    }\n    .kl-beaker-fill {\n      position: absolute;\n      bottom: 0; left: 0; right: 0;\n      background: linear-gradient(180deg, #5dade2, #3498db);\n    }\n    .kl-beaker-solute {\n      position: absolute;\n      bottom: 0; left: 0; right: 0;\n      background: linear-gradient(180deg, #e74c3c, #c0392b);\n      opacity: 0.7;\n    }\n    .kl-beaker-label {\n      font-size: 1.09rem;\n      font-weight: 700;\n      color: var(--teal-dark);\n      margin-top: 6px;\n    }\n\n    \/* ===== COMPARISON CARDS ===== *\/\n    .kl-compare {\n      display: grid;\n      grid-template-columns: 1fr 1fr;\n      gap: 14px;\n      margin: 16px 0;\n    }\n    @media (max-width: 560px) {\n      .kl-compare { grid-template-columns: 1fr; }\n    }\n    .kl-compare-card {\n      border-radius: 12px;\n      padding: 16px;\n      border: 1.5px solid var(--border);\n    }\n    .kl-compare-card h4 {\n      font-size: 1.33rem;\n      margin-bottom: 6px;\n    }\n    .kl-compare-card p {\n      font-size: 1.23rem;\n      color: var(--muted);\n    }\n\n    \/* ===== FOOTER ===== *\/\n    .kl-footer {\n      text-align: center;\n      font-size: 1.15rem;\n      color: var(--muted);\n      margin-top: 20px;\n      padding-top: 16px;\n      border-top: 1px solid var(--border);\n    }\n\n    \/* ===== RESPONSIVE ===== *\/\n    @media (max-width: 560px) {\n      .kl-header h1 { font-size: 1.96rem; }\n      .kl-section { padding: 20px 16px; }\n      .kl-formula { font-size: 1.33rem; }\n    }\n  <\/style>\n<\/head>\n<body>\n<div class=\"kl-wrapper\">\n\n  <!-- ===== HEADER ===== -->\n  <div class=\"kl-header\">\n    <h1>Konsentrasi Larutan<\/h1>\n    <p>Ringkasan lengkap: Persen, Fraksi Mol, Molaritas, Molalitas &amp; ppm<\/p>\n    <span class=\"kl-badge\">Kimia SMA Kelas XI<\/span>\n  <\/div>\n\n  <!-- ===== NAV ===== -->\n  <nav class=\"kl-nav\">\n    <a href=\"#pengertian\">Pengertian<\/a>\n    <a href=\"#persen\">Persen<\/a>\n    <a href=\"#fraksi-mol\">Fraksi Mol<\/a>\n    <a href=\"#molaritas\">Molaritas<\/a>\n    <a href=\"#molalitas\">Molalitas<\/a>\n    <a href=\"#ppm\">ppm \/ bpj<\/a>\n    <a href=\"#perbandingan\">Perbandingan<\/a>\n  <\/nav>\n\n  <!-- ===== 1. PENGERTIAN ===== -->\n  <section class=\"kl-section\" id=\"pengertian\">\n    <div class=\"kl-section-header\">\n      <div class=\"kl-icon\" style=\"background:#e8f6f6;color:var(--teal);\">\ud83e\uddea<\/div>\n      <h2>Apa itu Konsentrasi Larutan?<\/h2>\n    <\/div>\n    <p>\n      <strong>Konsentrasi larutan<\/strong> menyatakan jumlah zat terlarut yang terdapat dalam sejumlah pelarut atau larutan.\n      Semakin banyak zat terlarut, semakin pekat larutannya.\n    <\/p>\n\n    <div class=\"kl-diagram\">\n      <div class=\"kl-diagram-title\">Ilustrasi: Larutan encer vs Larutan pekat<\/div>\n      <div class=\"kl-beaker\">\n        <div class=\"kl-beaker-body\">\n          <div class=\"kl-beaker-fill\" style=\"height:70%;\"><\/div>\n          <div class=\"kl-beaker-solute\" style=\"height:15%;\"><\/div>\n        <\/div>\n        <div class=\"kl-beaker-label\">Encer<br>(sedikit zat terlarut)<\/div>\n      <\/div>\n      <div class=\"kl-beaker\">\n        <div class=\"kl-beaker-body\">\n          <div class=\"kl-beaker-fill\" style=\"height:70%;\"><\/div>\n          <div class=\"kl-beaker-solute\" style=\"height:45%;\"><\/div>\n        <\/div>\n        <div class=\"kl-beaker-label\">Pekat<br>(banyak zat terlarut)<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"kl-tip\">\n      <strong>\ud83d\udca1 Ingat!<\/strong> Zat terlarut = zat yang dilarutkan &nbsp;|&nbsp; Pelarut = zat yang melarutkan &nbsp;|&nbsp; Larutan = campuran homogen keduanya.\n    <\/div>\n  <\/section>\n\n  <!-- ===== 2. PERSEN ===== -->\n  <section class=\"kl-section\" id=\"persen\">\n    <div class=\"kl-section-header\">\n      <div class=\"kl-icon\" style=\"background:#fef5e7;color:var(--orange);\">\ud83d\udcca<\/div>\n      <h2>1. Persen Kandungan Zat<\/h2>\n    <\/div>\n    <p>Persen menyatakan jumlah zat terlarut dalam 100 bagian larutan. Ada tiga jenis:<\/p>\n\n    <h3>a. Persen Massa (% massa)<\/h3>\n    <div class=\"kl-formula\">\n      <span class=\"label\">Rumus<\/span>\n      % massa = (massa zat terlarut \/ massa larutan) \u00d7 100%\n    <\/div>\n    <div class=\"kl-contoh\">\n      <strong>\ud83d\udcdd Contoh:<\/strong>\n      20 g gula dilarutkan dalam 80 g air.<br>\n      Massa larutan = 20 + 80 = 100 g<br>\n      % massa = (20 \/ 100) \u00d7 100% = <strong>20%<\/strong>\n    <\/div>\n\n    <h3>b. Persen Volume (% volume)<\/h3>\n    <div class=\"kl-formula\">\n      <span class=\"label\">Rumus<\/span>\n      % volume = (volume zat terlarut \/ volume larutan) \u00d7 100%\n    <\/div>\n    <p style=\"font-size:1.26rem;color:var(--muted);\">Sering digunakan untuk larutan cairan dalam cairan atau gas dalam gas (contoh: kadar alkohol).<\/p>\n\n    <h3>c. Persen Massa\/Volume (% m\/v)<\/h3>\n    <div class=\"kl-formula\">\n      <span class=\"label\">Rumus<\/span>\n      % m\/v = (massa zat terlarut (g) \/ volume larutan (mL)) \u00d7 100%\n    <\/div>\n  <\/section>\n\n  <!-- ===== 3. FRAKSI MOL ===== -->\n  <section class=\"kl-section\" id=\"fraksi-mol\">\n    <div class=\"kl-section-header\">\n      <div class=\"kl-icon\" style=\"background:#f5eef8;color:var(--purple);\">\ud83d\udd22<\/div>\n      <h2>2. Fraksi Mol (X)<\/h2>\n    <\/div>\n    <p>\n      Fraksi mol adalah perbandingan jumlah mol suatu komponen terhadap jumlah mol seluruh komponen dalam larutan.\n      Fraksi mol <strong>tidak memiliki satuan<\/strong> (tak berdimensi).\n    <\/p>\n\n    <div class=\"kl-formula\">\n      <span class=\"label\">Rumus<\/span>\n      X<sub>zat terlarut<\/sub> = n<sub>terlarut<\/sub> \/ (n<sub>terlarut<\/sub> + n<sub>pelarut<\/sub>)<br>\n      X<sub>pelarut<\/sub> = n<sub>pelarut<\/sub> \/ (n<sub>terlarut<\/sub> + n<sub>pelarut<\/sub>)\n    <\/div>\n\n    <div class=\"kl-tip\">\n      <strong>\ud83d\udca1 Sifat penting:<\/strong> X<sub>terlarut<\/sub> + X<sub>pelarut<\/sub> = <strong>1<\/strong> (untuk larutan dua komponen)\n    <\/div>\n\n    <div class=\"kl-contoh\">\n      <strong>\ud83d\udcdd Contoh:<\/strong>\n      Larutan mengandung 0,2 mol glukosa dan 1,8 mol air.<br>\n      X<sub>glukosa<\/sub> = 0,2 \/ (0,2 + 1,8) = 0,2 \/ 2,0 = <strong>0,1<\/strong><br>\n      X<sub>air<\/sub> = 1,8 \/ 2,0 = <strong>0,9<\/strong><br>\n      Cek: 0,1 + 0,9 = 1 \u2713\n    <\/div>\n  <\/section>\n\n  <!-- ===== 4. MOLARITAS ===== -->\n  <section class=\"kl-section\" id=\"molaritas\">\n    <div class=\"kl-section-header\">\n      <div class=\"kl-icon\" style=\"background:#eaf2f8;color:var(--blue);\">\u2697\ufe0f<\/div>\n      <h2>3. Molaritas (M)<\/h2>\n    <\/div>\n    <p>\n      Molaritas menyatakan jumlah mol zat terlarut dalam 1 liter larutan.\n      Satuan: <strong>mol\/L<\/strong> atau disingkat <strong>M<\/strong>.\n    <\/p>\n\n    <div class=\"kl-formula\">\n      <span class=\"label\">Rumus<\/span>\n      M = n \/ V &nbsp;&nbsp;atau&nbsp;&nbsp; M = (massa \/ Mr) \u00d7 (1000 \/ V<sub>mL<\/sub>)\n    <\/div>\n    <p style=\"font-size:1.26rem;color:var(--muted);text-align:center;\">\n      n = mol zat terlarut &nbsp;|&nbsp; V = volume larutan (liter) &nbsp;|&nbsp; Mr = massa molekul relatif\n    <\/p>\n\n    <div class=\"kl-contoh\">\n      <strong>\ud83d\udcdd Contoh:<\/strong>\n      5,85 g NaCl (Mr = 58,5) dilarutkan hingga volume 250 mL.<br>\n      n = 5,85 \/ 58,5 = 0,1 mol<br>\n      V = 250 mL = 0,25 L<br>\n      M = 0,1 \/ 0,25 = <strong>0,4 M<\/strong>\n    <\/div>\n\n    <div class=\"kl-tip\">\n      <strong>\ud83d\udca1 Pengenceran:<\/strong> M\u2081 \u00d7 V\u2081 = M\u2082 \u00d7 V\u2082 &nbsp;(jumlah mol sebelum = sesudah pengenceran)\n    <\/div>\n  <\/section>\n\n  <!-- ===== 5. MOLALITAS ===== -->\n  <section class=\"kl-section\" id=\"molalitas\">\n    <div class=\"kl-section-header\">\n      <div class=\"kl-icon\" style=\"background:#eafaf1;color:var(--green);\">\ud83c\udf21\ufe0f<\/div>\n      <h2>4. Molalitas (m)<\/h2>\n    <\/div>\n    <p>\n      Molalitas menyatakan jumlah mol zat terlarut dalam 1 kg pelarut.\n      Satuan: <strong>mol\/kg<\/strong> atau disingkat <strong>m<\/strong>.\n    <\/p>\n\n    <div class=\"kl-formula\">\n      <span class=\"label\">Rumus<\/span>\n      m = n \/ p &nbsp;&nbsp;atau&nbsp;&nbsp; m = (massa \/ Mr) \u00d7 (1000 \/ massa pelarut<sub>g<\/sub>)\n    <\/div>\n    <p style=\"font-size:1.26rem;color:var(--muted);text-align:center;\">\n      n = mol zat terlarut &nbsp;|&nbsp; p = massa pelarut (kg)\n    <\/p>\n\n    <div class=\"kl-contoh\">\n      <strong>\ud83d\udcdd Contoh:<\/strong>\n      10 g NaOH (Mr = 40) dilarutkan dalam 250 g air.<br>\n      n = 10 \/ 40 = 0,25 mol<br>\n      p = 250 g = 0,25 kg<br>\n      m = 0,25 \/ 0,25 = <strong>1 m<\/strong>\n    <\/div>\n\n    <div class=\"kl-compare\">\n      <div class=\"kl-compare-card\" style=\"background:#eaf2f8;border-color:#aed6f1;\">\n        <h4 style=\"color:var(--blue);\">Molaritas (M)<\/h4>\n        <p>Berdasarkan <strong>volume larutan<\/strong>. Dipengaruhi suhu (volume berubah jika suhu berubah).<\/p>\n      <\/div>\n      <div class=\"kl-compare-card\" style=\"background:#eafaf1;border-color:#a9dfbf;\">\n        <h4 style=\"color:var(--green);\">Molalitas (m)<\/h4>\n        <p>Berdasarkan <strong>massa pelarut<\/strong>. Tidak dipengaruhi suhu (massa tetap).<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 6. PPM ===== -->\n  <section class=\"kl-section\" id=\"ppm\">\n    <div class=\"kl-section-header\">\n      <div class=\"kl-icon\" style=\"background:#fdedec;color:var(--red);\">\ud83d\udd0d<\/div>\n      <h2>5. Bagian per Juta (bpj \/ ppm)<\/h2>\n    <\/div>\n    <p>\n      <strong>ppm<\/strong> (parts per million) atau <strong>bpj<\/strong> (bagian per juta) digunakan untuk menyatakan konsentrasi yang sangat kecil,\n      misalnya kadar polutan dalam air atau udara.\n    <\/p>\n\n    <div class=\"kl-formula\">\n      <span class=\"label\">Rumus<\/span>\n      ppm = (massa zat terlarut \/ massa larutan) \u00d7 10<sup>6<\/sup><br>\n      atau &nbsp; ppm \u2248 mg zat terlarut \/ L larutan &nbsp;(untuk larutan encer dalam air)\n    <\/div>\n\n    <div class=\"kl-contoh\">\n      <strong>\ud83d\udcdd Contoh:<\/strong>\n      2 mg zat pencemar dalam 1 liter air (\u2248 1 kg).<br>\n      ppm = (2 \u00d7 10<sup>\u22123<\/sup> g \/ 1000 g) \u00d7 10<sup>6<\/sup> = <strong>2 ppm<\/strong>\n    <\/div>\n\n    <div class=\"kl-tip\">\n      <strong>\ud83d\udca1 Hubungan:<\/strong> 1 ppm = 1 mg\/L (untuk larutan encer) &nbsp;|&nbsp; 1% = 10.000 ppm\n    <\/div>\n  <\/section>\n\n  <!-- ===== 7. TABEL PERBANDINGAN ===== -->\n  <section class=\"kl-section\" id=\"perbandingan\">\n    <div class=\"kl-section-header\">\n      <div class=\"kl-icon\" style=\"background:#e8f6f6;color:var(--teal);\">\ud83d\udccb<\/div>\n      <h2>Tabel Perbandingan Satuan Konsentrasi<\/h2>\n    <\/div>\n\n    <div class=\"kl-table-wrap\">\n      <table class=\"kl-table\">\n        <thead>\n          <tr>\n            <th>Satuan<\/th>\n            <th>Rumus Singkat<\/th>\n            <th>Satuan<\/th>\n            <th>Dasar Perhitungan<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td><strong>% massa<\/strong><\/td>\n            <td>(m<sub>terlarut<\/sub> \/ m<sub>larutan<\/sub>) \u00d7 100%<\/td>\n            <td>%<\/td>\n            <td>Massa<\/td>\n          <\/tr>\n          <tr>\n            <td><strong>% volume<\/strong><\/td>\n            <td>(V<sub>terlarut<\/sub> \/ V<sub>larutan<\/sub>) \u00d7 100%<\/td>\n            <td>%<\/td>\n            <td>Volume<\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Fraksi mol (X)<\/strong><\/td>\n            <td>n<sub>komponen<\/sub> \/ n<sub>total<\/sub><\/td>\n            <td>tanpa satuan<\/td>\n            <td>Mol<\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Molaritas (M)<\/strong><\/td>\n            <td>n \/ V<sub>larutan<\/sub> (L)<\/td>\n            <td>mol\/L<\/td>\n            <td>Volume larutan<\/td>\n          <\/tr>\n          <tr>\n            <td><strong>Molalitas (m)<\/strong><\/td>\n            <td>n \/ massa<sub>pelarut<\/sub> (kg)<\/td>\n            <td>mol\/kg<\/td>\n            <td>Massa pelarut<\/td>\n          <\/tr>\n          <tr>\n            <td><strong>ppm (bpj)<\/strong><\/td>\n            <td>(m<sub>terlarut<\/sub> \/ m<sub>larutan<\/sub>) \u00d7 10<sup>6<\/sup><\/td>\n            <td>ppm<\/td>\n            <td>Massa (sangat encer)<\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n\n    <div class=\"kl-tip\">\n      <strong>\ud83d\udca1 Tips Mengingat:<\/strong><br>\n      \u2022 <strong>Molaritas<\/strong> \u2192 \u201cL\u201d dari Liter (volume larutan)<br>\n      \u2022 <strong>Molalitas<\/strong> \u2192 \u201ckg\u201d dari kilogram pelarut<br>\n      \u2022 <strong>Fraksi mol<\/strong> \u2192 hasilnya selalu antara 0 dan 1, dan jumlahnya = 1<br>\n      \u2022 <strong>ppm<\/strong> \u2192 untuk konsentrasi sangat kecil (polusi, kadar logam, dll.)\n    <\/div>\n  <\/section>\n\n  <!-- ===== FOOTER ===== -->\n  <div class=\"kl-footer\">\n    Ringkasan Konsentrasi Larutan \u2013 Kimia SMA Kelas XI<br>\n    Siap digunakan di WordPress (salin seluruh kode HTML ini ke blok Custom HTML)\n  <\/div>\n\n<\/div>\n<\/body>\n<\/html>\n\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<!DOCTYPE html>\n<html lang=\"id\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Kuis Interaktif \u2013 Larutan dan Konsentrasi Larutan<\/title>\n  <style>\n    :root {\n      --primary: #0d7377;\n      --primary-light: #14919b;\n      --accent: #27ae60;\n      --accent-dark: #1e8449;\n      --warning: #e67e22;\n      --danger: #c0392b;\n      --bg: #f0f7f7;\n      --card: #ffffff;\n      --text: #2c3e50;\n      --muted: #7f8c8d;\n      --border: #c5dede;\n      --correct-bg: #e8f8f0;\n      --wrong-bg: #fdedec;\n    }\n    * { box-sizing: border-box; margin: 0; padding: 0; }\n    body { font-family: 'Segoe UI', system-ui, sans-serif; background: var(--bg); color: var(--text); line-height: 1.6; padding: 20px 12px 60px; }\n    .quiz-container { max-width: 840px; margin: 0 auto; }\n    .quiz-header {\n      background: linear-gradient(135deg, var(--primary), var(--primary-light));\n      color: #fff; border-radius: 16px; padding: 28px 24px; text-align: center; margin-bottom: 24px;\n      box-shadow: 0 8px 24px rgba(13,115,119,0.25);\n    }\n    .quiz-header h1 { font-size: 1.5rem; font-weight: 700; margin-bottom: 6px; }\n    .quiz-header p { font-size: 0.95rem; opacity: 0.9; }\n    .quiz-badge { display: inline-block; background: rgba(255,255,255,0.2); padding: 4px 14px; border-radius: 20px; font-size: 0.8rem; margin-top: 10px; }\n    .petunjuk { background: #fff8e7; border-left: 5px solid var(--warning); border-radius: 0 12px 12px 0; padding: 16px 18px; margin-bottom: 28px; font-size: 0.92rem; }\n    .petunjuk strong { color: #b9770e; }\n    .petunjuk ul { margin: 8px 0 0 18px; }\n    .progress-text { text-align: center; font-size: 0.85rem; color: var(--muted); margin-bottom: 8px; }\n    .progress-bar-wrap { background: var(--border); border-radius: 10px; height: 10px; margin-bottom: 28px; overflow: hidden; }\n    .progress-bar { height: 100%; background: linear-gradient(90deg, var(--primary-light), var(--accent)); width: 0%; transition: width 0.4s; border-radius: 10px; }\n    .soal-card { background: var(--card); border-radius: 14px; padding: 22px 20px 18px; margin-bottom: 20px; box-shadow: 0 2px 12px rgba(0,0,0,0.06); border: 1px solid var(--border); }\n    .soal-card.answered-correct { border-color: var(--accent); background: var(--correct-bg); }\n    .soal-card.answered-wrong { border-color: var(--danger); background: var(--wrong-bg); }\n    .soal-nomor { display: inline-block; background: var(--primary); color: #fff; font-size: 0.8rem; font-weight: 700; padding: 3px 12px; border-radius: 20px; margin-bottom: 10px; }\n    .soal-pertanyaan { font-size: 1.02rem; font-weight: 600; margin-bottom: 14px; }\n    .soal-ilustrasi { margin: 12px 0 16px; overflow-x: auto; }\n    .soal-ilustrasi table { width: 100%; border-collapse: collapse; font-size: 0.9rem; background: #f0f9f9; }\n    .soal-ilustrasi th, .soal-ilustrasi td { border: 1px solid #a0cfcf; padding: 8px 10px; text-align: center; }\n    .soal-ilustrasi th { background: var(--primary); color: #fff; font-weight: 600; }\n    .soal-ilustrasi caption { font-size: 0.85rem; color: var(--muted); margin-bottom: 6px; font-style: italic; }\n    .diagram-box { background: #e6f5f5; border: 1px dashed var(--primary-light); border-radius: 10px; padding: 14px; text-align: center; font-family: 'Courier New', monospace; font-size: 0.92rem; margin: 12px 0 16px; white-space: pre-line; }\n    .pilihan-item { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; margin-bottom: 6px; border-radius: 10px; border: 1.5px solid var(--border); cursor: pointer; transition: background 0.2s; user-select: none; }\n    .pilihan-item:hover { background: #e8f6f6; border-color: var(--primary-light); }\n    .pilihan-item input[type=\"checkbox\"] { margin-top: 3px; width: 18px; height: 18px; accent-color: var(--primary); flex-shrink: 0; cursor: pointer; }\n    .pilihan-item .huruf { font-weight: 700; color: var(--primary); min-width: 22px; }\n    .pilihan-item .teks { flex: 1; font-size: 0.95rem; }\n    .feedback { display: none; margin-top: 12px; padding: 10px 14px; border-radius: 8px; font-size: 0.9rem; font-weight: 600; }\n    .feedback.show { display: block; }\n    .feedback.benar { background: #d5f5e3; color: var(--accent-dark); }\n    .feedback.salah { background: #fadbd8; color: var(--danger); }\n    .feedback .kunci-text { font-weight: 400; margin-top: 4px; font-size: 0.85rem; }\n    .btn-area { display: flex; flex-wrap: wrap; gap: 12px; justify-content: center; margin: 32px 0 20px; }\n    .btn { padding: 13px 32px; border: none; border-radius: 10px; font-size: 1rem; font-weight: 700; cursor: pointer; font-family: inherit; transition: transform 0.15s, background 0.2s; }\n    .btn:active { transform: scale(0.97); }\n    .btn-check { background: var(--primary); color: #fff; box-shadow: 0 4px 14px rgba(13,115,119,0.3); }\n    .btn-check:hover { background: #0a5a5d; }\n    .btn-reset { background: #ecf0f1; color: var(--text); }\n    .btn-reset:hover { background: #d5dbdb; }\n    .hasil-box { display: none; background: var(--card); border-radius: 16px; padding: 28px 24px; text-align: center; margin-bottom: 28px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); border: 2px solid var(--primary-light); }\n    .hasil-box.show { display: block; animation: fadeIn 0.5s ease; }\n    @keyframes fadeIn { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } }\n    .hasil-score { font-size: 3rem; font-weight: 800; color: var(--primary); line-height: 1.1; }\n    .hasil-label { font-size: 1.1rem; color: var(--muted); margin-bottom: 8px; }\n    .hasil-pesan { font-size: 1.05rem; margin-top: 12px; font-weight: 600; }\n    .hasil-detail { margin-top: 16px; font-size: 0.9rem; color: var(--muted); }\n    .quiz-footer { text-align: center; font-size: 0.8rem; color: var(--muted); margin-top: 30px; padding-top: 16px; border-top: 1px solid var(--border); }\n    @media (max-width: 560px) { .quiz-header h1 { font-size: 1.25rem; } .soal-card { padding: 16px 14px; } .btn { width: 100%; } }\n  <\/style>\n<\/head>\n<body>\n  <div class=\"quiz-container\">\n    <div class=\"quiz-header\">\n      <h1>Kuis Interaktif<\/h1>\n      <p>Larutan dan Konsentrasi Larutan<\/p>\n      <span class=\"quiz-badge\">Kelas XI \u2022 15 Soal \u2022 Molaritas \u2022 Fraksi Mol \u2022 Persen<\/span>\n    <\/div>\n    <div class=\"petunjuk\">\n      <strong>Petunjuk Pengerjaan<\/strong>\n      <ul>\n        <li>Setiap soal memiliki <strong>satu, dua, atau tiga<\/strong> jawaban yang benar.<\/li>\n        <li>Centang semua pilihan (A\u2013E) yang menurut Anda benar.<\/li>\n        <li>Beberapa soal dilengkapi tabel data untuk membantu perhitungan.<\/li>\n        <li>Setelah selesai, klik tombol <strong>Periksa Jawaban<\/strong>.<\/li>\n      <\/ul>\n    <\/div>\n    <div class=\"progress-text\" id=\"progressText\">0 dari 15 soal terjawab<\/div>\n    <div class=\"progress-bar-wrap\"><div class=\"progress-bar\" id=\"progressBar\"><\/div><\/div>\n    <div class=\"hasil-box\" id=\"hasilBox\">\n      <div class=\"hasil-label\">Skor Anda<\/div>\n      <div class=\"hasil-score\" id=\"hasilScore\">0\/15<\/div>\n      <div class=\"hasil-pesan\" id=\"hasilPesan\"><\/div>\n      <div class=\"hasil-detail\" id=\"hasilDetail\"><\/div>\n    <\/div>\n    <div id=\"soalContainer\"><\/div>\n    <div class=\"btn-area\">\n      <button class=\"btn btn-check\" id=\"btnCheck\" onclick=\"periksaJawaban()\">Periksa Jawaban<\/button>\n      <button class=\"btn btn-reset\" id=\"btnReset\" onclick=\"resetKuis()\">Ulangi Kuis<\/button>\n    <\/div>\n    <div class=\"quiz-footer\">Materi: Larutan &#038; Konsentrasi \u2013 Modul Kimia Kelas XI<\/div>\n  <\/div>\n  <script>\n    const soalData = [\n      { \/\/ 1 \u2192 A, C, E\n        id: 1,\n        pertanyaan: \"Manakah pernyataan yang benar mengenai pengertian larutan dan komponennya?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Larutan adalah campuran homogen antara zat terlarut dan pelarut\",\n          \"Zat terlarut selalu berwujud padat, sedangkan pelarut selalu berwujud cair\",\n          \"Pelarut adalah komponen yang jumlahnya lebih banyak dalam larutan\",\n          \"Larutan hanya dapat terbentuk dari zat padat yang dilarutkan dalam air\",\n          \"Konsentrasi menyatakan jumlah zat terlarut dalam sejumlah tertentu larutan atau pelarut\"\n        ],\n        kunci: [0, 2, 4]\n      },\n      { \/\/ 2 \u2192 B, D\n        id: 2,\n        pertanyaan: \"Manakah rumus yang benar untuk menyatakan molaritas suatu larutan?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Molaritas = massa zat terlarut (gram) \/ volume larutan (L)\",\n          \"Molaritas = jumlah mol zat terlarut \/ volume larutan (L)\",\n          \"Molaritas = jumlah mol zat terlarut \/ massa pelarut (kg)\",\n          \"Satuan molaritas adalah mol\/L atau M\",\n          \"Molaritas tidak bergantung pada suhu larutan\"\n        ],\n        kunci: [1, 3]\n      },\n      { \/\/ 3 \u2192 A, B, D\n        id: 3,\n        pertanyaan: \"Sebanyak 5,85 gram NaCl (Mr = 58,5) dilarutkan dalam air hingga volume 250 mL. Manakah pernyataan yang benar?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Jumlah mol NaCl = 5,85 \/ 58,5 = 0,1 mol\",\n          \"Molaritas larutan = 0,1 mol \/ 0,25 L = 0,4 M\",\n          \"Molaritas larutan = 0,1 mol \/ 250 mL = 0,0004 M\",\n          \"Larutan ini mengandung 0,4 mol NaCl dalam setiap liter larutan\",\n          \"Volume larutan harus diubah ke liter sebelum menghitung molaritas\"\n        ],\n        kunci: [0, 1, 3]\n      },\n      { \/\/ 4 \u2192 A, C, E\n        id: 4,\n        pertanyaan: \"Manakah pernyataan yang benar mengenai fraksi mol dalam larutan?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Fraksi mol zat terlarut = mol zat terlarut \/ (mol zat terlarut + mol pelarut)\",\n          \"Jumlah fraksi mol semua komponen dalam larutan selalu sama dengan 2\",\n          \"Fraksi mol tidak memiliki satuan (besaran tak berdimensi)\",\n          \"Fraksi mol hanya dapat dihitung jika pelarutnya air\",\n          \"X\u2090 + X\u1d66 = 1 untuk larutan yang terdiri atas dua komponen A dan B\"\n        ],\n        kunci: [0, 2, 4]\n      },\n      { \/\/ 5 \u2192 B, C, E\n        id: 5,\n        pertanyaan: \"Suatu larutan mengandung 0,2 mol glukosa dan 1,8 mol air. Manakah perhitungan fraksi mol yang benar?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Fraksi mol glukosa = 0,2 \/ 1,8 = 0,11\",\n          \"Fraksi mol glukosa = 0,2 \/ (0,2 + 1,8) = 0,1\",\n          \"Fraksi mol air = 1,8 \/ 2,0 = 0,9\",\n          \"Fraksi mol air = 1,8 \/ 0,2 = 9\",\n          \"Jumlah fraksi mol glukosa dan air sama dengan 1\"\n        ],\n        kunci: [1, 2, 4]\n      },\n      { \/\/ 6 \u2192 A, D\n        id: 6,\n        pertanyaan: \"Manakah rumus yang benar untuk menyatakan persen massa (% massa) suatu larutan?\",\n        ilustrasi: null,\n        pilihan: [\n          \"% massa = (massa zat terlarut \/ massa larutan) \u00d7 100%\",\n          \"% massa = (massa zat terlarut \/ volume larutan) \u00d7 100%\",\n          \"% massa = (mol zat terlarut \/ mol larutan) \u00d7 100%\",\n          \"Massa larutan = massa zat terlarut + massa pelarut\",\n          \"% massa selalu sama dengan % volume untuk semua jenis larutan\"\n        ],\n        kunci: [0, 3]\n      },\n      { \/\/ 7 \u2192 A, B, E\n        id: 7,\n        pertanyaan: \"Larutan dibuat dengan melarutkan 20 gram NaOH dalam 80 gram air. Manakah pernyataan yang benar?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Massa larutan = 20 g + 80 g = 100 g\",\n          \"% massa NaOH = (20\/100) \u00d7 100% = 20%\",\n          \"% massa NaOH = (20\/80) \u00d7 100% = 25%\",\n          \"Fraksi mol NaOH lebih besar daripada fraksi mol air\",\n          \"Larutan ini mengandung 20 gram NaOH dalam setiap 100 gram larutan\"\n        ],\n        kunci: [0, 1, 4]\n      },\n      { \/\/ 8 \u2192 B, D, E\n        id: 8,\n        pertanyaan: \"Manakah pernyataan yang benar mengenai persen volume (% volume) larutan?\",\n        ilustrasi: null,\n        pilihan: [\n          \"% volume hanya digunakan untuk larutan zat padat dalam cairan\",\n          \"% volume = (volume zat terlarut \/ volume larutan) \u00d7 100%\",\n          \"% volume selalu sama dengan % massa karena massa jenis sama\",\n          \"Satuan volume zat terlarut dan larutan harus sama (misalnya mL)\",\n          \"% volume sering digunakan untuk larutan gas dalam gas atau cairan dalam cairan\"\n        ],\n        kunci: [1, 3, 4]\n      },\n      { \/\/ 9 \u2192 A, C, D\n        id: 9,\n        pertanyaan: \"Perhatikan data pembuatan larutan berikut. Manakah perhitungan yang tepat?\",\n        ilustrasi: `<div class=\"soal-ilustrasi\">\n          <table>\n            <caption>Data Pembuatan Larutan H\u2082SO\u2084<\/caption>\n            <tr><th>Parameter<\/th><th>Nilai<\/th><\/tr>\n            <tr><td>Massa H\u2082SO\u2084 murni<\/td><td>9,8 gram<\/td><\/tr>\n            <tr><td>Mr H\u2082SO\u2084<\/td><td>98 g\/mol<\/td><\/tr>\n            <tr><td>Volume larutan<\/td><td>500 mL<\/td><\/tr>\n          <\/table>\n        <\/div>`,\n        pilihan: [\n          \"Mol H\u2082SO\u2084 = 9,8 \/ 98 = 0,1 mol\",\n          \"Molaritas = 0,1 \/ 500 = 0,0002 M\",\n          \"Molaritas = 0,1 mol \/ 0,5 L = 0,2 M\",\n          \"Larutan ini disebut larutan H\u2082SO\u2084 0,2 M\",\n          \"Volume harus tetap dalam mL saat menghitung molaritas\"\n        ],\n        kunci: [0, 2, 3]\n      },\n      { \/\/ 10 \u2192 A, B, D\n        id: 10,\n        pertanyaan: \"Manakah yang benar mengenai proses pengenceran larutan dan rumus yang digunakan?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Pada pengenceran, jumlah mol zat terlarut sebelum dan sesudah tetap sama\",\n          \"Rumus pengenceran: M\u2081 \u00d7 V\u2081 = M\u2082 \u00d7 V\u2082\",\n          \"Pengenceran membuat molaritas larutan menjadi lebih besar\",\n          \"Volume larutan bertambah karena penambahan pelarut\",\n          \"Massa zat terlarut berkurang selama proses pengenceran\"\n        ],\n        kunci: [0, 1, 3]\n      },\n      { \/\/ 11 \u2192 B, C, E\n        id: 11,\n        pertanyaan: \"Sebanyak 100 mL larutan HCl 2 M diencerkan hingga volume 500 mL. Manakah pernyataan yang benar?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Molaritas akhir = 2 M \u00d7 500 \/ 100 = 10 M\",\n          \"Molaritas akhir = (2 \u00d7 100) \/ 500 = 0,4 M\",\n          \"Jumlah mol HCl sebelum pengenceran = 0,2 mol\",\n          \"Konsentrasi larutan menjadi lebih pekat setelah diencerkan\",\n          \"Volume pelarut yang ditambahkan adalah 400 mL\"\n        ],\n        kunci: [1, 2, 4]\n      },\n      { \/\/ 12 \u2192 A, C\n        id: 12,\n        pertanyaan: \"Manakah hubungan yang benar antara molaritas, molalitas, dan fraksi mol?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Molaritas bergantung pada volume larutan, sedangkan molalitas pada massa pelarut\",\n          \"Fraksi mol dan molaritas selalu memiliki nilai numerik yang sama\",\n          \"Molalitas tidak dipengaruhi oleh perubahan suhu, sedangkan molaritas dipengaruhi\",\n          \"Semakin encer larutan, semakin besar nilai fraksi mol zat terlarut\",\n          \"Ketiga besaran tersebut selalu dinyatakan dalam satuan mol\/L\"\n        ],\n        kunci: [0, 2]\n      },\n      { \/\/ 13 \u2192 A, B, E\n        id: 13,\n        pertanyaan: \"Larutan dibuat dari 0,5 mol gula dalam 2 mol air. Manakah perhitungan yang tepat?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Fraksi mol gula = 0,5 \/ (0,5 + 2) = 0,2\",\n          \"Fraksi mol air = 2 \/ 2,5 = 0,8\",\n          \"Fraksi mol gula = 0,5 \/ 2 = 0,25\",\n          \"Jumlah fraksi mol = 0,2 + 0,8 = 1,5\",\n          \"X_gula + X_air = 1\"\n        ],\n        kunci: [0, 1, 4]\n      },\n      { \/\/ 14 \u2192 A, C, D\n        id: 14,\n        pertanyaan: \"Manakah pernyataan yang benar tentang larutan 10% massa NaCl?\",\n        ilustrasi: null,\n        pilihan: [\n          \"Dalam 100 gram larutan terdapat 10 gram NaCl\",\n          \"Dalam 100 mL larutan terdapat 10 gram NaCl\",\n          \"Massa pelarut dalam 100 gram larutan adalah 90 gram\",\n          \"Perbandingan massa NaCl terhadap massa larutan adalah 1 : 10\",\n          \"Larutan 10% massa sama dengan larutan 10 M\"\n        ],\n        kunci: [0, 2, 3]\n      },\n      { \/\/ 15 \u2192 B, D, E\n        id: 15,\n        pertanyaan: \"Perhatikan data konversi konsentrasi berikut. Manakah yang tepat untuk larutan encer?\",\n        ilustrasi: `<div class=\"soal-ilustrasi\">\n          <table>\n            <caption>Hubungan Satuan Konsentrasi (pendekatan larutan encer dalam air)<\/caption>\n            <tr><th>Besaran<\/th><th>Hubungan (hampiran)<\/th><\/tr>\n            <tr><td>Molaritas (M)<\/td><td>\u2248 molalitas (m)<\/td><\/tr>\n            <tr><td>% massa<\/td><td>\u2248 (M \u00d7 Mr) \/ 10<\/td><\/tr>\n          <\/table>\n        <\/div>`,\n        pilihan: [\n          \"Molaritas selalu tepat sama dengan molalitas pada semua konsentrasi\",\n          \"Pada larutan encer, massa jenis larutan mendekati 1 g\/mL sehingga M \u2248 m\",\n          \"Rumus % massa \u2248 (M \u00d7 Mr)\/10 hanya berlaku untuk larutan sangat pekat\",\n          \"Semakin encer larutan, semakin mendekati kesamaan nilai M dan m\",\n          \"Konversi antar satuan konsentrasi memerlukan data massa jenis untuk ketelitian\"\n        ],\n        kunci: [1, 3, 4]\n      }\n    ];\n\n    const huruf = ['A','B','C','D','E'];\n\n    function renderSoal() {\n      const c = document.getElementById('soalContainer');\n      c.innerHTML = '';\n      soalData.forEach(s => {\n        const card = document.createElement('div');\n        card.className = 'soal-card';\n        card.id = 'soal-' + s.id;\n        let ph = '';\n        s.pilihan.forEach((t,i) => {\n          ph += '<label class=\"pilihan-item\"><input type=\"checkbox\" name=\"soal'+s.id+'\" value=\"'+i+'\" onchange=\"updateProgress()\"><span class=\"huruf\">'+huruf[i]+'.<\/span><span class=\"teks\">'+t+'<\/span><\/label>';\n        });\n        card.innerHTML = '<span class=\"soal-nomor\">Soal '+s.id+'<\/span><div class=\"soal-pertanyaan\">'+s.pertanyaan+'<\/div>'+(s.ilustrasi||'')+'<div class=\"pilihan-list\">'+ph+'<\/div><div class=\"feedback\" id=\"feedback-'+s.id+'\"><\/div>';\n        c.appendChild(card);\n      });\n    }\n\n    function updateProgress() {\n      let n = 0;\n      soalData.forEach(s => { if (document.querySelectorAll('input[name=\"soal'+s.id+'\"]:checked').length > 0) n++; });\n      document.getElementById('progressBar').style.width = (n\/15*100)+'%';\n      document.getElementById('progressText').textContent = n + ' dari 15 soal terjawab';\n    }\n\n    function periksaJawaban() {\n      let benar = 0;\n      soalData.forEach(s => {\n        const card = document.getElementById('soal-'+s.id);\n        const fb = document.getElementById('feedback-'+s.id);\n        const checked = Array.from(document.querySelectorAll('input[name=\"soal'+s.id+'\"]:checked')).map(e => parseInt(e.value)).sort((a,b)=>a-b);\n        const kunci = [...s.kunci].sort((a,b)=>a-b);\n        const ok = checked.length === kunci.length && checked.every((v,i)=>v===kunci[i]);\n        document.querySelectorAll('input[name=\"soal'+s.id+'\"]').forEach(cb => cb.disabled = true);\n        if (ok) {\n          benar++;\n          card.classList.add('answered-correct');\n          fb.className = 'feedback show benar';\n          fb.innerHTML = '\u2713 Jawaban Anda benar!';\n        } else {\n          card.classList.add('answered-wrong');\n          fb.className = 'feedback show salah';\n          fb.innerHTML = '\u2717 Jawaban kurang tepat.<div class=\"kunci-text\">Kunci: '+kunci.map(i=>huruf[i]).join(', ')+'<\/div>';\n        }\n      });\n      const p = Math.round(benar\/15*100);\n      document.getElementById('hasilScore').textContent = benar+'\/15';\n      document.getElementById('hasilDetail').textContent = 'Persentase: '+p+'%';\n      document.getElementById('hasilPesan').textContent = p===100?'Sempurna! Anda menguasai materi konsentrasi larutan.':p>=80?'Sangat baik! Sedikit lagi menuju sempurna.':p>=60?'Cukup baik. Pelajari kembali bagian yang masih keliru.':'Perlu belajar lebih giat. Ulangi materi konsentrasi larutan.';\n      document.getElementById('hasilBox').classList.add('show');\n      document.getElementById('hasilBox').scrollIntoView({behavior:'smooth',block:'center'});\n      document.getElementById('btnCheck').style.display = 'none';\n    }\n\n    function resetKuis() {\n      soalData.forEach(s => {\n        document.getElementById('soal-'+s.id).classList.remove('answered-correct','answered-wrong');\n        document.getElementById('feedback-'+s.id).className = 'feedback';\n        document.getElementById('feedback-'+s.id).innerHTML = '';\n        document.querySelectorAll('input[name=\"soal'+s.id+'\"]').forEach(cb => { cb.checked=false; cb.disabled=false; });\n      });\n      document.getElementById('hasilBox').classList.remove('show');\n      document.getElementById('btnCheck').style.display = 'inline-block';\n      updateProgress();\n      window.scrollTo({top:0,behavior:'smooth'});\n    }\n\n    renderSoal();\n    updateProgress();\n  <\/script>\n<\/body>\n<\/html>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ringkasan Konsentrasi Larutan | Kimia SMA Konsentrasi Larutan Ringkasan lengkap: Persen, Fraksi Mol, Molaritas, Molalitas &amp; ppm Kimia SMA Kelas<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":55,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"colormag_page_container_layout":"no_sidebar_full_width","colormag_page_sidebar_layout":"right_sidebar","footnotes":""},"class_list":["post-570","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/pages\/570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/comments?post=570"}],"version-history":[{"count":7,"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/pages\/570\/revisions"}],"predecessor-version":[{"id":599,"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/pages\/570\/revisions\/599"}],"up":[{"embeddable":true,"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/pages\/55"}],"wp:attachment":[{"href":"https:\/\/kimia-majateng.online\/wordpress\/wp-json\/wp\/v2\/media?parent=570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}